HNHacker News
TopNewBestAskShowJobs

snorremd

648 karma · joined April 21, 2016

[ my public key: https://keybase.io/snorremd; my proof: https://keybase.io/snorremd/sigs/RMlpyZzus8WnfpnjPjplPvhTa_TxyyAk1mx7lGDFo1Y ]
submissionscomments
snorremd··on Hacking my “smart” toothbrush
This actually tracks as the Wii Balance Boards needs good sensors to accurately sense how you are shifting your weight. I imagine they use better and more weight sensors than your average bathroom scale.

I have a "smart" scale from Polar that fortunately could be used as a regular dumb scale. I think Polar is really great in this regard. Their watches and other equipment can be used without syncing or connecting to their cloud, but the cloud does provide you extra value if you want to use it.

snorremd··on Yubico is merging with ACQ Bure and intends to go public
The current keys will of course work as before. It is more that their new offerings might change this model all together by tying authentication of the key into some cloud service requiring non-standard drivers. Probably unfounded fears as this would make the keys less attractive to their user base.

Yes, there are competitors. But I really don't want to be reliant on Google as a company. I guess Solo Keys and Nitro Keys could be good alternatives, but I really feel Yubico has a great reputation as far as hardware token companies go.

snorremd··on Yubico is merging with ACQ Bure and intends to go public
I really hope this does not affect their current mode of operation. The reason I bought my Yubikeys in the first place were the one off purchase cost and the promise that the keys would do their job without me having to interact with Yubico from that point onwards. This has worked great so far!

Now with shareholders in the mix I fear they will try to find recurring income models to increase profits. I guess we'll just have to see.

snorremd··on Don't write clean code, write CRISP code
This is my experience as well. GitHub Copilot has been very efficient at generating variants of boiler plate code. It allows you to efficiently repeat code so you can delay code abstraction or generalisations until you are confident a generalisation makes sense.

Having worked as a developer for many years I now much prefer to repeat code a bit to making the wrong abstractions to early. The tedium of writing out code is now reduced thanks to well performing language models.

snorremd··on We updated our RSA SSH host key
That is enough, given that you've fetched or compared the key from a trusted GitHub.com server.
snorremd··on Tunnelmole – give your local servers a public URL
A reverse proxy uses one of request forwarding. The downstream router in this case did not initiate the request and so does not know to which internal IP to pass the request to unless you set up port forwarding. Tunnel services such as this solve this issue by setting up a persistent connection between the client and server and relying on the NAT features of your router. Because the client initiates the socket connection your router knows which private IP to forward packets to when the upstream service (e.g. Tunnelmole) sends data. NAT traversal means you don't need port mapping.
snorremd··on Clojure Turns 15 panel discussion video
In Clojure ORMs aren't really that popular considering most Clojurists just use the built in datatypes (e.g. maps) to represent data. There are no classes as such (unless you use Java interop). If you need a query builder the honeysql library is really nice.
snorremd··on PayPal data breach notification
If I read this correctly this is a case of credential stuffing meaning the breach isn't really related to PayPal as much as people had credentials stolen other places and had used the same ones at PayPal. Maybe PayPal needs to enforce 2FA if they don't already do. 2FA SMS factor should be discontinued for any financial or otherwise important/sensitive service as SIM jacking is apparently quite easy.

But anyone with properly secured accounts seems to not have been affected by this breach.

snorremd··on Elastic Cloud password complexity has an “OR” condition
The only requirement for passwords these days should be that the entropy is high enough and that the password is not in password leak databases. Anything other than that is simply asking users to reuse passwords across sites or annoying people who use password managers that generate too complex passwords.

Passphrases are perfectly reasonable choices for passwords, but often run foul of the number and special character rules. Worst part is some sites even have very short max length rules for passwords. One can only suspect they either go around thinking people still memorize passwords, or worse, they store passwords in a varchar(12) DB column.

The best bet would be to eliminate passwords alltogether using some combination of webauthn key authentication and some other user friendly factor (e.g. TOTP). But as long as passwords are here to stay, make them user friendly.

snorremd··on LastPass users: Your info and vault data is now in hackers’ hands
Bitwarden offers both a hosted and self-hosting option. Though their code is open source unlike LastPass and 1Password.
snorremd··on Kite is saying farewell and open-sourcing its code
For someone working out of Silicon Valley? No. For someone working out of Bangalore, maybe?
snorremd··on Sonic: Fast, lightweight and schema-less search backend
Projects like Meili Search are already coming for Elastic Search's lunch: https://www.meilisearch.com. I think there is a market for fast, light weight alternatives like Meili that offers up a fully featured open source experience.

With Elastic Search many of the features, security being one, are locked away behind commercial licenses. With Meili it seems they are, for the time being anyway, going with a proper open source version. I understand Elastic needs to earn money, and I get their licensing model to accomplish this. But Meili will probably steal away a good portion of customers interested in self hosting their search solution.

snorremd··on Tailwind CSS v3.2: revisiting my “feature creep” warning
Exactly. Tailwind's utility classes correspond 1-1 with CSS attributes more or less. Then you have variants to help you target things like hover and focus states as well as pseudo elements like before and after. But Tailwind does nothing to hide away CSS in that you still have to understand flex and grid layouts, padding, z-indexing, margins, etc.

What Tailwind does give you is a way to build on top of a design system. The Tailwind config gives you a pretty good default design system in terms of spacings (padding and margins), colours (palettes and shades), etc. And you are free to modify or make your own design system, but once you do your design is much more likely to be consistent.

You can of course achieve the same design system with css custom properties (aka variables), but you have to be much more cognisant of using them. With Tailwind the design system is the default and you have to go out of your way to use custom values.

snorremd··on Ask HN: Looking for Email Service Recommendations
Like several other commenters I find Fastmail to be a good email host. They support custom domains, have support for email aliasing, is easy to set up and provide a very good web UI. Unlike gmail you are actually able to select all emails in an inbox and apply actions to them.

They also have support people if you ever get problems, and unlike gmail they actually care about customers. Their first line of support are not super technical though.

I’ve had no problems using them so far. Email deliverability seems great and their service has not had any serious downtime the years I’ve used them.

snorremd··on Playstation Store removes Studiocanal movies, no refunds offered
I agree. I think Bandcamp is a shining example of how digital sales could be handled. They provide DRM free open format files that you can re-download whenever you want to. No-one is going to take away the files you've already downloaded and saved on some disk. Bandcamp might go out of business and in such a case you'd lose access to any content you have not saved. But that is a fair trade-off.

But the movie industry believes DRM free formats would undercut their region based business model and allow rampant piracy. Like people haven't been cracking DRM-locked content for ages already. And they might be right about increased copyright infringement, but dismantling the whole notion of ownership is not the solution.

snorremd··on Playstation Store removes Studiocanal movies, no refunds offered
This is the reason I've given up on "owning" digital content on online platforms. At this point I will not purchase movies or tv-shows, only stream them on streaming platforms. Studios are shooting themselves in both feet by making it impossible to truly own content. By implementing customer hostile licensing models for digital purchases people will move towards streaming instead which generate far less income than selling the content à la carte.
snorremd··on Kubernetes is a red flag signalling premature optimisation
Agreed. You see this a lot with people with a C# and/or Java background using TypeScript with annotation based decorators and libraries/frameworks that implement dependency injection, etc. They don't really embrace the nature of the new language and ecosystem. And I can sympathise, it is simpler to do things as you have been doing them before.

You also see it when people who've mostly done imperative programming tries their hands with a lisp or some ml based language. I've been there myself. You still find yourself using the equivalent of variable bindings, trying to write in an imperative rather than declarative style.

I guess when trying to learn a new language in a different paradigm you also need to unlearn a lot of the concepts from the former language.

snorremd··on Vite – Next Generation Front End Tooling
Compilation/transpilation is only part of the work traditionally being done by build tools like webpack and parcel (well, webpack offloads the work to babel or similar). I believe that a lot of the speed or perceived responsiveness with Vite comes simply from not bundling the code during development.

For a long time front end tooling has been bundling your dependencies and code into one or more bundles each time you save your code and then that gets shipped to your browser. Vite on the other hand just transpile the changed module(s) and then ship that over to the browser. This works great because browser support ES modules and module resolution natively now.

snorremd··on Minikube now supports rootless podman driver for running Kubernetes
This indeed. The Docker team should not include the "adding your user to the docker group"-section in the install documentation. It is very unsafe and even though they link to a document on security implications I don't think all users will truly grasp the implications.

Better to hide this feature and promote the rootless docker mode for local use. On servers you won't be adding any unprivileged user to the docker group in any case.

snorremd··on Next-generation AI models
I mean, that's literally what happened. At least initially Tabnine was based on the GPT2 model trained on code. Then GitHub launched Copilot using the OpenAI Codex model which is based on GPT3. I guess this is why several people have commented on the marked improvement when adopting GitHub Copilot.

I have no idea how Tabnine builds their models today, and how they perform compared to Copilot. I guess one advantage could be lower latency in suggestions that they claim come from training smaller more specific models. But the way I find Copilot working for me is that it thinks about the same time I need to think and then it makes a suggestion for a good chunk of code. If my thinking and Copilot's thinking match up then I can save myself a good bit of typing.

snorremd··on Next-generation AI models
To be fair. Tabnine has an actual free plan for personal use. The GitHub Copilot one is only for open source maintainers and educational institutions.

All though in the past I found the limited suggestions offered with the Tabnine free plan too limiting to be of much help.

snorremd··on Show HN: IndigoStack – a new native macOS app for local web development
Exactly. From the web page it seems that "isolation" here is basically just installing separate copies of services/libs (php, nginx, etc) under an IndigoStack controlled folder and then running them on a port not already taken by another service. One of the benefits of Docker is explicitly that it does a change root and thus provides an isolated file system in which to run your code. It also creates separate network interfaces for the process to isolate it from your host network.

This has a number of benefits including protecting sensitive files/info in your home folder from rogue dependencies and allowing you to easily toss the dev environment into a black hole once it's no longer needed. If IndigoStack somehow implements isolation using chroot or other MacOS/Darwin equivalents it should be explained on the web page. Otherwise I think the marketing text is misleading:

> Bare metal. With the best of virtualized.

Edit:

I do like the idea of something like IndigoStack though. Being able to describe a dev environment programatically/declaratively and then having something take care of setting that up is nice. If you're a pure MacOS shop then something platform specific like this is probably an okay solution.

snorremd··on Next.js Layouts RFC: Nested routes and layouts, designed for Server Components
Pretty much. I've been able to use some regex-replacements on the build output in the past with varying luck. But it definitely feels like a hack and can break in weird ways. Another option is building all environments into a single container image and then selecting the right build runtime using an environment variable. This makes the build costlier, even if you can build in parallell, and a bigger image takes longer to distribute into your environment.

At that point dedicated frontend hosting infrastructures like Netlify, Vercel, Cloudflare Pages and others seems like a better choice.

snorremd··on HelloInbox – Ultimate email deliverability checklist and toolkit
I think this is good advice. The overhead in operations to host and maintain a custom setup is non-negligible, but at least you might get better delivery rates. One of the annoying things about the commercial relays is that the reported delivery rates can't be trusted as they are based on the receiving server actually reporting accurate responses. In lots of cases the receiving server, if suspecting a spam email, will just report that they received the email and then pass it straight into the proverbial shredder.

So while a relay might say you have 99% delivery rate, the actual number might be closer to 90% and you would never know unless your customers complain about missing emails.

snorremd··on HelloInbox – Ultimate email deliverability checklist and toolkit
On the other hand. Mail delivery services like Mailchimp and Sendgrid often see blocks of their IP address spaces ending up in IP blacklists because their services are prone to temporary abuse by bad actors. So even if you get a personal IP address on the service it might be blocked. At that point you still need to take manual action. Some spam list distributors are borderline extortive in nature and will demand a fee to remove you from such a blacklist, and might not even consider removing you if you are using a specific third party SMTP relay service.

I guess mail delivery is just hard regardless of whether you are hosting it yourself or using a commercial relay service.

snorremd··on Show HN: Joyride: script VSCode like Emacs but using Clojure
Wow, really excited by this! The Calva extension gave us a really nice editing and REPL experience for Clojure code. Now we get to interactively configure VSCode with Clojure code which is pretty dope. I used Spacemacs at my old workplace for some time, but never got into making custom configuration. I never got into the emacs lisp library or the syntax peculiarities. Though I suspect the minor syntax differences would be the least problematic to learn. Now I use VSCode Calva and will definitely check out Joyride as it uses SCI and allows me to use the Clojure library that I already know and love.

People who like this should consider sponsoring both Borkdude and PEZ on GitHub. They do amazing work for the Clojure ecosystem.

snorremd··on Pupils Reveal ‘Aphantasia’ – The Absence of Visual Imagination
I can find some enjoyment in books that do not overly rely on visual imagery. I quite enjoyed the Martian because it focused so much on the character’s thoughts and the state of the character’s mind. I enjoyed the first three the Expanse books because of the political world building and character development. Though watching the TV adaptation added a new layer to the story as it could fill out the visual gaps, so to speak, of my reading experience.

But I find myself being drawn in to movies and TV shows as they can render entirely new visual worlds that are unlike anything I can experience on my own. I guess this is also why I don’t mind movie and TV adaptations so much.

snorremd··on Why is it difficult for developers to learn another programming language? (2020)
I think people get stuck in their language of choice's patterns and idioms and learn to think in those patterns. Transitioning to a programming language in a different paradigm all together, like going from C# to Lisp, or something similar hurts because they try to understand that new language in terms of their knowledge of the existing language.

If all you know is OOP, dependency injection and inversion of control patters, interfaces, and the like then functional languages oriented around functions as first class constructs, often immutable data processing, and a focus on pure functions is not going to make sense to you. It takes time to "unlearn" previous idioms and grok the culture and idioms of a new language.

I also think a lot of people are closed off to new ways of doing things. If you switch to a different language and framework and then immediately search for a library that allows you to do things the same way as in your old language then you're not really embracing that new language and should just stick to your old language.

snorremd··on Hacker steals Sydney man's life savings after simjacking
In Norway we have a 2FA provider that all banks use. They have implemented a 2FA solution that is installed on the SIM card itself and locked to that card. You also get a separate hardware key device if you want. This way they would need to hijack both your phone and your 2FA pin.

If you lose your SIM card and don’t have the hardware key you need to go to your bank and identify yourself with a valid ID.

Using regular old SMS as 2FA these days seem highly irresponsible for a company. Regular people might not know better.

snorremd··on There's never been a better time to build websites
> Tailwind CSS is a design system token generator

This exact quote beautifully sums up Tailwind and should explain part of the "Why?" of Tailwind to those that do not understand why you don't just write plain old CSS instead.

Yes, you'll have to learn some new tokens in lieu of simply writing CSS statements. But what you get with Tailwind is a utility-oriented design system that allows you to put constraints on your design. These constraints add consistency to your design. With Tailwind (and similar frameworks/libraries) you get these constraints and the following consistency cheap. With plain CSS you need to actively work to put constraints on your design (e.g. building out a design system using CSS variables). There constraints are opt-in, not opt-out.

That utility based CSS frameworks like Tailwind also tend to solve specificity issues is simply a bonus.

← PreviousPage 3 of 6Next →