Hacker Newsnew | past | comments | ask | show | jobs | submit | kayson's commentslogin

I'm the opposite. I started as a die hard iPhone fan, eventually switched to Android and never looked back. My wife has an iPhone and every time I use her phone I find myself wondering wtf their UX designers are thinking.

I have no loyalty, I've switched back and forth several times. I haven't concluded that either is better than the other, just different (and these days, not really -that- different). Though I do appreciate the tight integration between the iPhone and my MBP, that is definitely a sticky feature.

Same here. Owned every initial iPhone but went to Pixel a little while back and it's a much better experience.

With that said, something Apple does very well is the ecosystem integration between devices across form factors. I miss that, but not enough to switch my phone back.


>wtf their UX designers are thinking

I am starting to believe that Apple got rid of any UX talent they had, replaced them with interns and spent the saved $ on marketing.


right now I have the same feeling; some time ago I felt that entering the iPhone "mindset" made sense as you could gain in ease of use by sacrificing some "control".

Well even if you think the iPhone UX is great, they'll change it for no reason in the next release.

Wild take. I use both and iOS (other than settings menu which is absolute garbage) makes much more sensible design decisions than Google. And even Androids good design decisions are just variations on things they took from iOS. OG android was better. Now they’re just trying to be iOS+

Me too. Android for the most part has much better UI.

The rotation thingy alone infuriates me on iPhones. The Android implementation is perfect.

Android keyboards are in a different class from iOS. And I use a source available privacy respecting one.

VPNs work much better on Android.

Settings is laid out better.

Haptics are used much more which I appreciate.

lack of back button is a crime.

can't customize home screen launcher.

clock alarms often doesn't work

I like Vanadium (Chromium) a lot more than Safari. Everything is so well thought out. For example, on iOS, the open in new tab brings you to that tab so if you want to open a bunch, you have to go back to the tab you're branching off of. On Chromium, it works like on desktop.

default apps arent as well implemented as android. Can't change a lot of them which seems anti-competitive. I'm talking about picking which apps open and stuff like messaging app, not the default apps that come with the OS's quality. Apple might get a win there. Apple notes is awesome.

The Android password manager integration is much better at autofilling and detection.


I prefer iOS UX wise but I agree with you on keyboards, settings, alarms

Edit: and rotation


> But without it if you run your own recursive resolver your ISP sees all your queries, and many others see portions of them, unencrypted.

This hopefully shouldn't be an issue for long with stuff like RFC 9539 and OOTS/SVCB.


Courtesy link for HN readers

https://www.rfc-editor.org/info/rfc9539/


I'm not very familiar with htmx but at first glance it seems similar to Angular. I thought Angular lost favor because of all the extra attributes and boilerplate. What makes htmx different?


htmx is based on the ideas of hypermedia, you can read the first chapter in our book on the topic here:

https://hypermedia.systems/hypermedia-a-reintroduction/


HTMX is a layer on top of server-side rendered HTML that gives you near-SPA-levels of interactivity without having to build a standalone SPA.


HTMX is a polar opposite to Angular in terms of complexity, for one.


How did you understand Angular to be similar to htmx? They are nearly polar opposites. Can achieve the same though.


I love this idea. A lot of repair knowledge is buried in non-English forums or unsearchable Discord servers (grr Discord). We need to localize it and rebuild community expertise.


I've been using Gotify [1] for a very long time and have been quite happy with it. Basically no impact on battery life. For devs - there are mature libraries like shoutrr [2] and apprise [3] that let you support multiple notification systems with no extra work.

1. https://gotify.net/

2. https://shoutrrr.nickfedor.com/v0.17.0/

3. https://github.com/caronc/apprise


Right, but if you use ntfy.sh you can get proper mobile push notifications (instead of keeping the app running and using long polling or websockets).

If you use the public version of ntfy.sh then you don't need to do anything to set this up. If you self-host, you need your own Firebase Cloud Messaging (FCM) account and (for iOS) your own Apple Developer account so you can use APN.


Also the docs point out >Using Firebase is optional and only works if you modify and build your own Android .apk. For a self-hosted instance, it's easier to just not bother with FCM.

https://docs.ntfy.sh/config/#firebase-fcm


Who cares? Battery consumption of Gotify is negligible (it uses websockets). Same with CPU/RAM. What's the benefit of giving Google your notifications?


Publicly hosted version is nearly useless if you'd like to use it to send notifications from your tiny workers/scripts/processes in the big datacentres - I have a minuscule worker in CF that needs to send one notification once every few days, and I *ALWAYS* get a 429. Always.

So this is good maybe if you're using it to sent from your laptop to your phone.


Personally I use FCM (Firebase push notifications) with a Capacitor plugin for push notifications, it works decently


I didn't know what you meant by Capacitor, but I now understand it's a modern replacement for Apache Cordova: https://capacitorjs.com/


Yes exactly, it's an easy way to build a web-based app and run it on iOS and Android, accessing the native API through a javascript bridge. There's also NativeScript in that space


- load bearing -


seams, boundaries, envelopes, etc


Getting a logic-gate-level netlist from a GDS is trivial with industry standard chip design tools. Circuit designers do this every day. The hardest part will be reverse engineering the functionality.

I wish I had more time and I'd throw Calibre at it.


Indeed, this is a problem for an energetic student who has free access to every tool in the Cadence, Synopsys, and Mentor portfolios: take the GDS-II layout, run it through extraction, generate a netlist, convert to higher-level blocks ("netlist-to-gate recovery"), translate to RTL HDL, then attempt to work out "what it does."

This is just a job posting in disguise for Jane Street: solve the puzzle, get a call from one of their recruiters.


The Last Starfighter :).


Nope. I work at Cadence and literally have free access to every one of our tools, but I didn't use a single one of them to solve the puzzle.


No need for Calibre. Me + KLayout + Claude had a verilog sim of the example vcd input and gate-level netlist 30 minutes after I cloned the repo.


It's even easier in this case because they've included the original verilog source ....


No, that's for the warmup. The real puzzle only has a .gds file available.


Yes. There is exactly that, and we call it an "extraction" tool. It takes a GDS (text representation of shapes in the physical layout), and gives you back a "netlist" (text representation of components and connections in a circuit schematic).

Circuit designers use these tools basically daily for two reasons - the first is Layout Versus Schematic. We want to make sure that the physical layout matches the schematic, so the tool turns the layout GDS into a netlist and compares that to the netlist created from the schematic (basically a diff, but more complicated). The second is so we can run simulations that take into account the "parasitic" resistances and capacitances of the wires and metal shapes in the physical layout. It's basically the same procedure as LVS with an extra step that analyzes the metal shapes to determine said R's and C's.


yes, but at the transistor level .... it has no idea at that level how those transistors are arranged into gates directly


I take it back, it's a sky130 .gds the gates are explicitly in there


The tools can definitely recognize static logic gates purely from the topology (nothing special in the GDS needed). I don't know that I've tested it for anything more complicated, but as you've pointed out, if the hierarchy is in the GDS it's trivial to recover


In fact if you have the sky130 libraries installed (it's where I'm working) you can get a spice netlist out of it in about 10 seconds - really they should have flattened it


That would have added a definite layer of complexity, but really just a token/cpu drain on the puzzle solver. Had they done that, I would have had Claude write a "gds matcher" that took the gds files of the sky std-cell lib, and located matches in the full gds, and produced a hierarchical def. It would have taken me 5 minutes to describe it to Claude/GPT (which they ok'd for "tool creation"). So it adds a lot of cost to solve the puzzle, but no real complexity. I'm glad they didn't flatten it.


I'd still rather use docker. I don't mind that the daemon runs as root because there are some things that you need root for anyways! Like binding to privileged ports or setting up networks (use `internal: true` and the daemon will automatically set up iptables rules that limit traffic).

I deploy docker compose files with ansible so everything comes with built in security defaults like rootless, dropped caps, no new privileges, etc. I wish more containers supported running read only (its usually pretty easy to add, just overlooked) and distroless (common for go apps, less so otherwise).

There was a pretty good comment on reddit a while back with a list of hardenings for compose files [1]

1. https://www.reddit.com/r/selfhosted/comments/1pr74r4/comment...


Rootless is definitely the way to go. You can forward ports manually on the host if you really need to use privileged ports. I generally expose my containers through a reverse proxy, running bare metal on the host, and that completely bypasses the privileged port issue.


Give your binary CAP_NET_BIND_SERVICE capability, and run it as a regular user. Almost no daemons need to run as root.


That privileged port thing is not true anymore for Docker created containers, since it lowers that limit and unprivileged containers can listen on any port.

  docker run -ti --rm --user 1000:1000 --privileged=false alpine:latest
  ~ $ cat /proc/sys/net/ipv4/ip_unprivileged_port_start
  0
  ~ $ id
  uid=1000 gid=1000 groups=1000
  ~ $ nc -lvp 80
  listening on [::]:80 ...
Also the iptable rules Docker creates is for routing traffic to container with destination NAT, to actually limit traffic you have to do it yourself by inserting rules in DOCKER_USER chain.


I get the savings of Distroless, but when you have an issue it's a pain to debug.


copy the single busybox statically linked binary into a container, and you can create a bunch of symlinks for its tools that you want to use (this is how busybox container itself works)

makes it trivial to do the dhi/rootless thing but do ad-hoc debugging and then remove the debugging tools entirely, leaving no trace/bloat behind (just one file)


just curious why you'd bind to a priv port inside of a container.


This whole privileged port thing is an outdated convention from the time when Linux ran on mainframes. Depending on your use case, it can be perfectly fine to lower it. I have set to `net.ipvX.ip_unprivileged_port_start = 80` on my server so that I can run rootless containers without extra privileges and have them bind to ports 80 and up.


Nits: It's a Unix convention (not just Linux), and Unix traditionally ran on minicomputers (not mainframes). Mainframes had their own specialized OSes, although some could run Unix in a partition or virtual machine.


I think that "Linux ran on mainframes" was said in jest. Even though Linux runs on mainframes pretty well even now.


I've read that privileged ports was created as a trust model, so users connecting to a service using a privileged port would know that service was started by root on that server and therefore could be trusted. I always felt this was a bit wierd though, maybe I was missinformed, or maybe priviliged ports was already a thing and was just leveraged this way?


lol the before times when Linux ran on mainframes.

It does run on IBM 370 type mainframes, but that port was done years after it first ran on the 386, and isn't in any way relevant to low port numbers.


I've been using it for a while. The insistence of keyboards on having a large bar of autocorrect suggestions taking valuable vertical space annoys me to no end.

I really liked using Fleksy which let you swipe up and down on the keyboard to change autocorrect results, including adding words to your dictionary. I'm still not sure if FUTO even has that option.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: