Like what you see? Subscribe here and get it every week in your inbox!
Issue #200 - January 8, 2023
If you are looking for work, check out this month's Who is hiring?, Who wants to be hired?, Freelancer? Seeking Freelancer? and Freelancer? Seeking Freelancer? threads.
Here are the top threads of the week, happy reading!
1. Ask HN: What sub $200 product improved your 2022
Top comment by spaceman_2020
An air fryer.
It’s really a badly marketed product. Its real utility isn’t that it uses less oil, but that it cooks incredibly fast. Essentially an oven on steroids.
It’s made cooking so much easier. I usually toss some boneless chicken in with a light coating of soy sauce and cornflour. While the chicken cooks, I prep a basic Asian sauce on the stovetop.
The chicken and the sauce are both done within 10-15 minutes. Never have to check on the chicken (unlike a pan) or wait too long (unlike an oven). Mix them together and dinner is ready.
2. Ask HN: Concepts that clicked only years after you first encountered them?
Top comment by fortituded0002
1. Everyone is the main character in their own story.
This manifest in all sorts of ways - from people not being there when you need them the most, from friends dying off as soon as proximity changes, to how and why get people get promoted in jobs. This isn't necessarily bad, but if you don't know how to navigate this it can be quite painful and confusing.
2. Representation matters.
I knew this for a long time, but it didn't fully click until years had gone by and I realized I had unconsciously held myself back from pursuing a wide range of things because I just didn't see anyone like me there.
3. Rules in life are just constructs that we as humans have created.
Starting a business helped the most on this one. That's when I started to see that "rules" or "procedure" are all made up and exceptions can always be made.
(Edit: typos)
3. Ask HN: How many of you are open to Piracy again?
Top comment by terabytest
I'm not going to speak about my personal practices, but I find the current landscape of streaming services unusable and unsustainable from a customer perspective. I share a Netflix and Prime account with my parents, and support for that is soon going to end. I don't feel like either of those services provide enough value to me to consider paying for them entirely by myself. The content is mediocre at best, finding anything good to watch is like going through a haystack, and once you find something remotely interesting you feel so exhausted that you'd rather turn off the tv and go to bed.
Don't even get me started on "there's this movie I heard about and I want to watch, but I need a subscription to this obscure random service and then also pay a rental fee on top to even get to watch it". It's just absurd.
4. Ask HN: What's on your home server?
Top comment by cientifico
In a cloud server (hidden from the public)
www.keycloak.org - auth mostly for outline
www.getoutline.com - my personal "notion"
nginxproxymanager.com - to proxy things
Wireguard - remote access and interconnection between zones
cockpit-project.org - to manage VMS
github.com/coder/code-server - To remote develop
2x of docs.paperless-ngx.com/ (one for me and one for my partner) - I scan and destroy most of the letters I get.
snibox.github.io/ - my terminal companion
pi-hole (together with wireguard I don't have ads on my devices)
uptime.kuma.pet - to be sure that things are online
mailcow.email/ - for non priority domains
docs.postalserver.io/ - mail server for apps and services
At home (small 6w nic with): HomeAssistant - To control home lights
Cups - share printers
Wireguard - (connected to the cloud)
5. Ask HN: What are you working on this year?
Top comment by jashkenas
Working at a still-feels-new-to-me job as Graphics Director for Opinion at The New York Times. Our small team publishes arguments and guest essays supported by visual evidence, like these:
- https://www.nytimes.com/interactive/2022/10/29/opinion/scien...
- https://www.nytimes.com/interactive/2022/09/08/opinion/urban...
- https://www.nytimes.com/interactive/2022/07/20/opinion/ancie...
But I'm a believer in asking for help in order to cast a wider net. If you happen to stumble across an obscure-yet-newsworthy dataset, or have a strong feeling about a particular guest essayist that we should be approaching, or can't stop thinking about an argument that's itching you — pitches and tips are always welcome: [my hn username]@nytimes.com
6. Ask HN: Why did Frontend development explode in complexity?
Top comment by peterhunt
Early react team member here. The popular react/webpack/npm stack is probably what the OP is talking about. It was popularized because the Instagram web team used webpack and npm in 2013 so we recommended it alongside react in the early days. I was TLM of the team when we made these decisions.
There are three main points I want to add to the conversation.
1. UIs actually have a lot of complexity. The number of states they can be in is often higher than what you see in other disciplines of software engineering. They also have to contend with managing data fetching over unreliable networks, including balancing bundle size. Additionally they are notoriously hard to test because “does this feel right to a user” is hard to encode programmatically.
2. The grass isn’t greener on the other side. I see a lot of people complaining about the needless complexity of the frontend stack but I don’t think they’ve worked in a modern backend engineering or data engineering project. Modern backend eng is a morass of kubernetes configuration, needless microservices and overuse of async queues, for example. Feels a lot like frontend in terms of accidental complexity. So I’d argue that this is less of a frontend problem and more of an industry wide thing (cynically, it might be a ZIRP thing)
3. With that said there certainly is needless accidental complexity in frontend and I am convinced content marketing is 100% to blame. An easy way to hire engineers is to create an open source project and write a blog post convincing people to use it. This is good for the company and good for the careers of the engineers who worked on it, but can cause people to needlessly complicate their tech stack if they can’t cut through the noise.
7. Ask HN: How does a hobby programmer get hired?
Top comment by rubberband
Late to the party, but maybe I can help. I've helped in the hiring of many developers.
(grain of salt, just my opinion, etc...)
* Don't do bootcamps. It's a red flag for me. This can be said for any 100% online college. (again, I'm just being honest). Community colleges are fine.
* You having a Github that you've committed stuff to often-ish will most interest me. I don't give a crud if you contribute to open source. But just the fact that you're coding is what I care about. Yes, I will snoop around and see how good it is. No, I won't care if your code sucks. (side note: if your code is actually good, than that's better than a four-year degree at a college I've heard of imo)
* Don't get discouraged. I remember I searched for a programming job for two years before I got hired. The 70-ish times I was told "no" didn't matter after the one "yes".
* Be honest about where you are at (not programming professionally). I've always been open to hiring people outside the industry for entry-level programming jobs.
* Coding challenges are beyond useless to me. I will concede that they are valuable to some.
Hope that helped some. 80% of the advice given here is helpful as well.
Good luck. Please don't get discouraged <3.
8. Ask HN: Pros and cons of thinking in public vs. in private?
Top comment by fleddr
I'll specifically go into the pros of private thinking, as that's where you seem to be getting the least feedback.
1. Intent is preserved. When you write something publicly, your output are words that you constructed from your ideas and your intent. As others read it, they will have wildly different interpretations of the text, even if you write well. Thus, your original intent does not translate perfectly. You don't have this problem with private thinking, because you own the additional context and intent.
2. No self-censorship. You don't have to cater to anybody's liking of whatever your thoughts are. You don't need to win anybody's approval, and this allows for the brewing of fresh and pure thoughts.
3. Exclusivity. Maybe one of your ideas is of high value. Could simply be a rare skill you mastered, a trick unknown to the world, a little software asset you produced. The norm in our industry is to share wide and far. Write that blog post, open that Github project, etc. Alternatively, you can also keep it to yourself and leverage its value. Quite literally as leverage.
I imagine this last point to be somewhat controversial. By sharing far and wide, you'll be doing free labor for an industry that doesn't give a fuck about its volunteers. People will simply take your free shit and run with it, and often still complain about it. In light of such hostile and unrewarding environment, I have absolutely no moral problem with refusing to do free labor and keeping some things private and exclusive.
9. Ask HN: Are there any good open source text-to-speech tools?
Top comment by woodlander87
I've been playing with mimic 3 from Mycroft lately. It's pretty usable out of the box and is self hostable. https://mycroft.ai/mimic-3/
10. Ask HN: Why isn't JSON-RPC more widely adopted?
Top comment by djha-skin
Parsing makes it hard.
Consider writing an HTTP based RPC server. I parse the first line. It tells me the location and the method. Followed by a bunch of key value pair headers where both the key and the value are strings. So far so good, I could write all of the above in C or Go pretty easily. Finally comes the body. I can unmarshall this in Go or parse this in C easily because I can I know what to expect in the body by the time I get there. This is because I already know the method and location.
Contrast this with JSON RPC. I have to partially parse the entire object before I know what function is being called. Only then can I fully parse the arguments because I don't know what type they are (or in other words, which struct the arguments correspond to) until I know what function is being called, what version of RPC is being used, etc.
Super annoying. And HTTP is just sitting there waiting to be used.
HTTP allows for incremental parsing. I can parse the first few lines separately from the body. It makes handling input really nice.
Having everything in a single JSON object doesn't allow for incremental parsing because the standard says I can't guarantee order of key value pairs when an object is concerned.