< Back to the archive

Like what you see? Subscribe here and get it every week in your inbox!

Issue #254 - January 21, 2024

Here are the top threads of the week, happy reading!

Top comment by fn-mote

Understand that you're not going to finish what you start. Do things that are fun. Keep a notebook of ideas. Talk about plans and what you want do. Spend time with him. Even if almost none if it ever makes it into code, the imagination part will be going wild.

Look at what he's really doing. He doesn't want to CODE. He wants to make a game. Like every kid. Emphasize the creative part just like he wants. Do things on paper, just like he is doing.

Let me get this one point across: YOUR SON DOES NOT WANT TO LEARN TO CODE (right now). HE WANTS TO SPEND TIME WITH YOU and explore ideas at the speed of his imagination.

Enjoy it.

Talk about the game while you go for evening walks or drive to/from school.

He will enjoy every minute of it even if nothing is ever produced.

Top comment by jws

I married into toaster moguls. When they sold out in '97, domestic toasters had been infeasible for years already. And this was for a company where all the knowledge, equipment, and facilities had beed paid for many decades before. (They invented the electric pop-up toaster for certain definitions of electric pop-up toaster.)

Toasters are refined brilliance, if done right. The concept of "done" is computed using an analog computer programmed by human experts. (Ok, its usually a bimetal strip but it is placed so that the cooling of the moist bread keeps it from going off and your lighter-darker input is biasing when it considers the toast done.)

Tear apart some toasters. There won't be anything in a modern cheap toaster that isn't absolutely required. Ask yourself why everything is the way it is.

Research the UL requirements. I have the corporate 2 pound copper ball that had to be dropped on things from prescribed heights and not cause malfunction. Make sure you can hit this targets with what you think you can build. Also check the CE, they might have more modern rules.

Be ready for litigation. Toasters catch fire. The toaster moguls were horrified whenever they saw someone's toaster under a cabinet. Decades after selling the business they were still being sued by mesothelioma suits for things like a repairman that got lung cancer and repaired home appliances, so he probably might have worked on one of their 1920's models with asbestos insulation. Don't let it stop you, but put the backup insurance into the expenses.

Top comment by bmitc

You are apparently in the UK, but the job market in the U.S. has similarly been very spooky lately. I was laid off and have received almost no interviews outside of a single previous employer. My resume was flat out rejected, even from places that I had previously worked or was made an offer from as little as a year or two ago. It was really weird. As in, previous contacts would not even reply to emails or LinkedIn messages. I felt the same thing, thinking things like if I insulted someone's dog or something. I even got contacted by a former company asking if I'd be interested in coming back, and then when I responded, they responded with a flat "we don't see a fit". Just purely bizarre.

I am finding that more and more people are looking for extremely specific and narrow experience. Like, if you haven't used technology and worked in domain, they don't want to even speak to you. They'd almost rather higher a new grad who happened to work in than someone with experience in many languages and domains. It's really weird. I've been thinking a lot about how to make my own path, because it's exhausting trying to apply and work for myopic places.

Top comment by jrockway

This line works:

   nc -l -p 1234 -q 1 > testfile.txt < /dev/null
The other one doesn't.

   alias foobar=nc
   cat testfile.txt | foobar 192.168.2.100 1234
I was hoping that it was a "useless use of cat" filter, but nope. It just doesn't like the bytes nc next to an IPv4 address.

This is also fine, but blocked if you change the slash to a dot:

   nc 192/168.2.100 1234
This works too:

   nc \
   192.168.2.100 1234
OK, that's all for now. Can you believe people pay money for "web application firewalls"?

Top comment by smohnot

For those not familiar: Common Paper https://commonpaper.com/standards/ seems to have the best free standard docs.

Here's the post where they describe it https://news.ycombinator.com/item?id=36043944

here's another one: https://www.avodocs.com/

Top comment by jonjacky

Don't overlook books that are critical of engineering as it is often practiced and how it fits into our society:

Computer Power and Human Reason by Joseph Weizenbaum (1976). Weizenbaum wrote Eliza, the first AI chatbot, almost sixty years ago and was appalled at the reception. This book is still very pertinent, especially the Introduction, Chapter 1 On Tools, chapter 9, Incomprehensible Programs, and chapter 10, Against the Imperialism of Instrumental Reason. Chapter 4, Science and the Compulsive Programmer, is one of the first written accounts of the hacker culture.

Weizenbaum's original paper on Eliza (1966) [0] is still very pertinent to the present generation of chatbots, especially the introduction and discussion.

Tools for Conviviality, Ivan Illich (1973) [1]. Influenced recent work by the computer scientists Steven Kell [2],[3] and Kartik Agaram [4].

Computation and Human Experience, Phil Agre (1997) (excerpt at [5]). Agre got a PhD in AI at MIT in the 80s and 90s and became very critical of the field. I think his shorter writings [6][7] are a better introduction, especially the personal memoir at [6]: "about how I became (relatively speaking, and in a small way) a better person through philosophy."

0. https://dl.acm.org/doi/10.1145/365153.365168

1. http://akkartik.name/illich.pdf

2. https://www.humprog.org/~stephen//research/talks/kell19de-es...

3. https://www.humprog.org/~stephen//research/talks/kell19softw...

4. http://akkartik.name/akkartik-convivial-20200607.pdf

5. https://pages.gseis.ucla.edu/faculty/agre/che-intro.html

6. https://pages.gseis.ucla.edu/faculty/agre/notes/00-7-12.html

7. https://pages.gseis.ucla.edu/faculty/agre/critical.html

Top comment by PaulHoule

Used car with front wheel drive, preferably traction control, put Blizzaks on all four wheels and you’ll do OK in snow unless you insist on driving on unplowed roads.

There are a wide range of cars I would consider. Say a Toyota Camry or a Honda Accord or a Nissan Altima. Lately I have been partial to Buicks. An old Nissan Leaf with a shot battery can still go 70 miles which makes it a great second or third car in a household.

Cars from the 1996 model year forward are basically modern because they support the OBD II diagnostic standard and also the database for parts was rationalized around then. My son has a 1996 Buick and there is no problem getting parts, we considered up to about 2010 when we were looking.

See the thread about his car here https://news.ycombinator.com/item?id=39035535

Recent used cars are crazy expensive now so it not so daunting to expect some repairs on an older car, be creative looking for one that fits your needs.

Top comment by dsmmcken

It's oddly similar to seeing a flag at half-mast in real life. Sometimes you know who it's for, sometimes you don't.

Top comment by ggm

Start exercising early in your life. Its net beneficial in all kinds of ways both physically and mentally.

Don't underestimate the value of repetitive processes. Automating them out of your life can be counter-productive: People bake bread, for a zen experience, sometimes, even though they've done it the same way 1000 times before.

Forgive yourself. Don't carry burdens in the past. Sure, we can all remember mortifyingly stupid, bad moments, but dwelling on them is counter productive. Of course you need to learn from them and avoid them but stewing over it at night when you should be sleeping? not helpful.

Rewards are complicated. Sometimes, the doing of it is the reward (see baking above). Sometimes, the outcome is the reward. Sometimes, the outcome is the reaction from others. Sometimes, its renumeration, sometimes it's just recognition and sometimes, there is no reward but its the BATNA. Value all of them in some way.

That said, small kids learn beneficially from SOME reward structures because before you learn to be patient to a long term goal, the short term reward builds muscle and brain memory of the task. So rewarding kids for good behaviour is not actually totally counter productive. But, contrariwise, there cannot be only winners and teaching your kid to refuse to accept second place or last is .. not helpful. If you genuinely don't win, don't pretend you won.

Habits take time. 6 weeks isn't unusual.

Don't be a dick in meetings.

Don't be contrarian for amusement value. Devil's advocating has limits.

Be kind.

Top comment by Pingk

The average developer doesn't put the same care into what they're developing the way they had to in the past.

Computers were slow in the 80s/90s, so if you wanted your program to run fast, you had to know how cache and RAM worked, and utilise what little power was there to the max. As computers have gotten faster, that knowledge has gotten less relevant to the average developer.

There are some fields where that knowledge is useful, like embedded systems, HPC or games, but they are a minority.

I won't deny there are some benefits in not needing to care - you can write programs faster (even if they perform slower), and some classes of bugs can be reduced (e.g. memory bugs). These are good things, but fundamentally our programs still move memory around and interface with the real world.

As more people forget (or aren't taught) to keep this in mind, we'll lose the ability to make things fast when we need to, and our software will get slower and slower until it's unusable.

On a related note, we're also not allergic to complexity the way we should be. The average developer doesn't have a problem using hundreds of libraries in a single project if it makes their job easier. Unfortunately this also makes programs slower, harder to debug, and increases the surface area for a vulnerability.