< Back to the archive

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

Issue #277 - June 30, 2024

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

Top comment by prinny_

The one in my previous job, which was an admin board for a market intelligence application. Ultimately, the reason it was good was because the engineers had zero ego on top of having excellent skills. The team that set the codebase were basically 4 seniors and 3 principals (the client actually did pay for top talent in this case) so not only everything was based on industry standards, written elegantly and organized perfectly, but every time some new requirement came up, these senior / principal engineers would discuss it in the most civilized matter I have ever seen.

E.g, "we need to come up with a way to implement X". Person A gives their idea, person B gives another idea and so on until everybody shared their thoughts. Then someone would say "I think what person C said makes the most sense" and everybody would agree and that was it. 30 minutes to hear everybody out, 3 minutes to discuss who will do it and when and the meeting was over.

I think the biggest testament to this code base was that when junior members joined the team, they were able to follow the existing code for adding new features. It was that easy to navigate and understand the big picture of.

Top comment by muffinman26

A variation of this question gets asked semi-regularly on HN, but I think the reason the results so often seem unsatisfying is that the people who actually find a meaningful answer and switch careers aren't hanging out on Hacker News anymore. They're living their life and have found community with other people doing what they actually want to do.

As a result, the Hacker News responses are often incredulity that anyone could ever leave the software industry (even if it's a miserable soul-draining place), or slight career shifts that aren't really career shifts, with a little bit of Financial Independence Retire Early thrown in.

Now, where to find the community of folks who have left Hacker News for something they genuinely enjoy, that would be great to know.

Top comment by tracker1

I'm a fan of feature oriented directory structures...

Instead of...

    tests
      auth
        login.test.ts
    controllers
      auth
        login.ts
    components
      auth
        login.tsx
    ...
You would have...

    feature
      auth
        login
          login.data.ts
          login.data.test.ts
          login.controller.ts
          login.controller.test.ts
          login.form.tsx
          login.form.test.ts
          ...
That, in my opinion should include tests... You can have shared components, etc... or break up sub-projects.. but within a given project, I prefer features/concerns over class/data type.

edit: In the above case, controller is really a higher order hook along with a higher order function component that will get call the hook, then pass the state to the separate component for render/events.

If you're doing server components, may want something similar but different depending on architecture or out of the box structures.

Top comment by brucehoult

In 2016 that would be a E31 core, user-specified amount of data SRAM and icache (also SRAM), XIP from external SPI flash, user-specified number of GPIOs. Possibly integrating some simple customer peripheral IP as a memory-mapped device, or MAYBE with a simple custom instruction as a functional unit, SiFive doing a little NRE on that, and doing a $30k 180nm shuttle run giving ~300 chips.

If you could give SiFive your desired peripheral or custom instruction already integrated with Rocket and working on an FPGA (Arty) then you'd get it for under $100k for sure -- if you made SiFive do the work it would rapidly get to be more.

Disclaimer: I was an early customer for the HiFive1 (December 2016) and then worked at SiFive from early 2018 to early 2020, but I don't speak for them.

Top comment by CharlieDigital

Paper notebook.

When you don't need to share information, there's nothing better than a notebook to see all of your ideas spread out and iterated. No need to log into anything. Take it with you anywhere -- sit on a bench and ideate. Go to the gym and jot down ideas.

I can keep my daily goals in a checklist in there and just check them off 1 by 1. No need for GitHub projects or anything like that because there's no need to communicate status with anyone.

Top comment by philip1209

I’ve done this. My quick thoughts:

- migrations always run longer than expected. In my case, leadership estimates were off by a factor of 10. What the eng manager originally said would take 3 months ended up taking a couple years.

- try to deliver quick wins and incremental value. This is often hard though. But it’s worth a try.

- Try to avoid this becoming the project everybody attaches their pet projects too. It’s too easy for people to make this the project where they use that new framework, test well, set up a design system, and make lots of little changes.

- that being said: migrations are easiest if you keep the design (visually and engineering) exactly the same. There will be lots of pressure to “just redo it while you’re already having to rewrite it”, but the uncertainty of a redesign really slows things down. Having a reference implementation means you don’t have to invent tons of acceptance criteria from first principles.

- as soon as things start getting delayed, which they will, try offering to cut corners or cancel the project. You want somebody else in corporate to stick their neck out to extend the project.

- Try seeding the team with more veteran ICs internally. You’ll need their help as you uncover dragons or need to get other teams to help run or integrate your new code.

- Among projects I’ve seen like this, the person running them gets fired or quits partway through at least half of the time. This is often because some middle manager made a promise they couldn’t keep to executives, and needs a scapegoat to save their own job. (It’s often that kind of middle manager who switches jobs every two years and keeps failing up silently and the project delay happens halfway through their stay at the company and they’re just trying to get to the two year mark and quit before anybody realizes what is going on internally.)

Top comment by duped

Read this book https://ccrma.stanford.edu/~jos/pasp/. It's a hefty tome but kind of the bible of the various approaches to audio signal processing and synthesis.

There's no one method to rule them all, they all have tradeoffs. So there is no "ray tracing" of audio (well actually, it's ray tracing, but for a lot of reasons it's prohibitive to actually do that in a way that sounds good).

> What is this field called?

Audio synthesis. Popular journals with papers covering the topic are DAFX (digital audio effects) and jAES (journal of the audio engineering society). To a lesser extent, the IEEE transactions on audio signal processing.

> I am assuming it has something to do with the physics field of acoustics?

You can find plenty of sources in acoustics journals/text books - but this is like comparing the needs of mechanical and electrical engineers to game engine designers. At a surface level there is crossover, and cross pollination of techniques/tools, but the needs are fundamentally different.

Top comment by thought_alarm

Things from 30 years ago:

    mdfind 'kMDItemContentCreationDate < $time.iso(1994-06-23)' > out.txt
Highlights include:

* Castle Wolfenstien for MS-DOS (1983-6-29)

* Lisa OS Source Code (1983-6-29)

* Classic Mac Disks from the Boston Computer Society (1984-12-24)

* Atari 7800 Ms. Pac Man Source Code (1988-12-24)

* Pyroto Mountian BBS files (1990-10-5)

* Jumpman Lives Source Code (1991-04-13)

* Delightful AU sound files and TIFF images from Sun and NeXT systems (1992-2-29)

* Tim Berners-Lee's WWW Browser Source Code for NeXT (1993-6-21)

* C64 Disk Images (1994-6-17)

Top comment by arnabgho

I was a MLE Tech Lead at Snap and laid some of the foundations of the generative AI infra at Snap. I would highly recommend MLE route as a very rewarding career path.

This book is a very good introduction to designing Machine Learning Systems for production: https://www.amazon.com/Designing-Machine-Learning-Systems-Pr...

This blog by the same author is highly recommended as an intro into building production grade AI and ML systems: https://huyenchip.com/2023/04/11/llm-engineering.html

To summarize answers to your questions:

(1) Yes it is wise to do this transition especially at an inflection point in the zeitgeist of the times as now

(2) Yes

(3) See above for resources on how to get started and reach mastery in the craft of ML Engineering.

Top comment by Aerroon

Logical programming (prolog).

I'm not sure I would call it the most challenging class, but it's the one where the most amount of people failed to learn anything. If I had to guess then 90% of the students (or more) ended up not being able to do anything with prolog.

I haven't seen any other class that had such an abysmally low rate of successful learning. I think the only knowledge most people took away from this class is to not use prolog.