< Back to the archive

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

Issue #193 - November 20, 2022

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

Top comment by luuuzeta

I've been struggling with wrapping my head around asynchronous programming with callbacks, promises and async/await in JS, however I think it's finally clicking after watching these YouTube videos and creating a document where I explain these concepts as if I'm teaching them to someone else:

* Philip Roberts's What the heck is the event loop anyway? - https://www.youtube.com/watch?v=8aGhZQkoFbQ

* The Story of Asynchronous JavaScript - https://www.youtube.com/watch?v=rivBfgaEyWQ

* JavaScript Callbacks, Promises, and Async / Await Explained - https://www.youtube.com/watch?v=JRNToFh3hxU

* Async Javascript Tutorial For Beginners (Callbacks, Promises, Async Await). - https://www.youtube.com/watch?v=_8gHHBlbziw

* Jake Archibald: In The Loop - setTimeout, micro tasks, requestAnimationFrame, requestIdleCallback, - https://www.youtube.com/watch?v=cCOL7MC4Pl0

Edit... I've been rewatching these videos, reading the MDN docs, the Eloquent JavaScript book, javascript.info, blogs about the subject, etc. This further proves you shouldn't limit yourself to a single resource, and instead fill up the laguna with water from different sources if you will.

Top comment by jiggawatts

During a centralisation of public school local servers to a data centre, I created a consolidated library enquiry system. It served over 2,000 libraries, had 330 million titles, and had about a million users. It was efficient enough to run off my laptop, if need be.

AFAIK it was one of the top five biggest library systems in the world at the time.

I was asked to add some features that would have been too difficult in the old distributed system. Things like reading competitions, recommended reading lists by age, etc…

I watched the effect of these changes — which took me mere days of effort to implement — and the combined result was that students read about a million additional books they would not have otherwise.

I’ve had a far greater effect on the literacy of our state than any educator by orders of magnitude and hardly anyone in the department of education even knows my name!

This was the project that made realise how huge the effort-to-effect ratio that can be when computers are involved…

Top comment by alin23

Building and selling macOS apps is a pretty good niche to be in right now.

I escaped my stressful corporate job 1 year ago and I’ve been living comfortably since then from app revenue only.

I’m making between $3.5k and $9k per month with https://lunar.fyi/ and the smaller apps I create at https://lowtechguys.com/

It’s not much for some parts of the world. But I’m well enough from this that I even took the time to build a small calendar app (https://lowtechguys.com/grila) from which all the funds will go to my brother’s college costs so he can stop working 12h/day jobs.

Before this I tried creating paid web services but none took off. I realized I actually don’t use any indie web product after 8 years of professional coding. I’m only using web products from big companies like Google, fly.io, Amazon etc.

Desktop apps on the other hand, most that I use and love are made by single developers.

With the ascent of Apple Silicon, and the ease of SwiftUI, this has the potential of bringing a modest revenue while also being more fulfilling than a corporate job.

In case you’re curious how the code looks for something like that, here’s a small open-source app that I built in a single (long) day, which has proven to be useful enough that people want to pay for it: https://github.com/alin23/Clop

Top comment by cdavid

A crucial point not mentioned yet: cross cultural issues.

In an American culture, it is "self-evident" that clear communication is about being direct and to the point. But this is far from universal. More generally, western cultures tend to conflate earnest and truth. "Telling it like it is" is valued. We don't realize our own "phoniness".

I have witnessed countless times people hitting a wall in meetings and other situations because they tried to address the point "butt head". Some typical examples I've witnessed

1. French/Japanese starting a simple resource discussion. As we French typically do, French manager starting a negotiating by saying no. Gradually softening while getting given more information. Result: French manager happy at the end, happy to start project, Japanese manager extremely stressed and thought nothing was decided.

2. American engineer excited about a starting project, mentioning how "awesome" things are. French engineer unimpressed, 50 % stuff not working, think the American is bulsshiting him, decides they can't be trusted. American just wanted to share his enthusiasm and wanted to build a working relationship. I was that French engineer long time ago, I really was super confused by American optimism. I thought it was all fake, I since learnt to tune and update my mental model :)

In all those cases, everybody thought they were very clear. I now work in Japan, and what Japanese would call very clear is very different from what we would consider clear in Europe or the US.

Top comment by huevosabio

I did Montessori from kindergarten until grade 6 (age 12), in Mexico.

I really, really like it.

I think it reinforces the kids natural curiosity.

In middle school, my first year out of Montessori, I was shocked at how little other kids cared about learning. I remember the teacher discussing something about astronomy, and I raised my hand to comment on some fact I had read, and what followed was mockery by my peers and antipathy by the teacher. I learned quickly to never again show that I cared about learning.

This was a huge contrast with Montessori where most us were eager to learn and share what we had learned. I had friends that had built the solar system to scale out of their own initiative (in hindsight they may have taken some liberties, nonetheless).

I kept tabs more or less my classmates that came out of the Montessori, and I think they overall overperformed the non Montessori people in middle school and high school. Harder to gauge adulthood success.

I also liked that they had children of various years in the same classroom. I think it promoted knowledge sharing from the older kids to the younger ones, and it removed barriers for friendships. Some of my best friends back then where older than I was. That would never happen in middle or high school.

Finally, I don't think it's perfect. Because we were all expected to join a traditional school after grade 6, the school made some effort to make sure that the outgoing class had covered all the basic requirements (a not necessarily a simple thing since we had great liberty of pursuing what was interesting to us).

All in all, I would strongly recommend it.

Top comment by alwillis

Some of these responses… wow.

Using modern HTML and CSS will get you pretty far these days.

For example, dealing with forms used to be problematic in a few different ways without JavaScript or something server-side.

Now form validation can be done with CSS [1].

For example, static site hosts like Netlify have services for dealing with the form data [2]. 100 free form submissions per month.

I agree that tooling is out of control. Jekyll [3] is great for getting started with building static sites. When using Jekyll, my build tool of choice is a Makefile [4].

[1]: https://webkit.org/blog/13096/css-has-pseudo-class/#styling-...

[2]: https://www.netlify.com/products/forms/

[3]: https://jekyllrb.com/

[4]: https://blog.mads-hartmann.com/2016/08/20/make.html

Top comment by AndrewKemendo

Not only should we not work for these people, we should actively take their power from them by organizing and supporting each other as much as possible.

It's crazy to me that our profession fights unionization despite repeated, predictable and consistent anti-worker, antisocial, narcissistic, ego driven companies that grind us up and spit us out

Giving someone unvested RSUs with no voting rights, in third class stock isn't meaningful.

Being employee 10 of $tartup doesn't matter anymore, because the company raised their D round in a down round which wiped out every Angel Investor and any common stock holders. Luckily the new Saudi backed VC fund that did the round is going to make sure that the CEO is doing their "most important job" of serving the Board and protecting investors over the expendable employees

The capital class couldn't care less about you the person writing code or managing a team or building pipelines or maintaining dbs.

Am I the only one that remembers Office Space?

Top comment by vitaflo

I bill by the hour, not the minute. If I work 10 mins on something and do nothing for the other 50, you are billed an hour. Frankly, this is how most clients have actually wanted it. They think in hours (or days) not some subdivision of them. And yes, thinking about work is the same as doing the work. It's all billable time.

As far as your rate, I always bill as high as I can without pushback. Where is that level? You'll know when your rate is too high. I kept increasing my rate with contracts until clients started to grumble a bit. Then I backed it off 10% and haven't had a problem since. Note this means I am getting paid 30% more than where I originally started. Wouldn't have known that if I didn't attempt to max out my rate.

In the end it's just business. You either make a client happy or you don't. As a business your goal is to maximize your profits without much pushback. That will just take some time and energy to find out what the market will bear.

Top comment by jongjong

I was struggling to find a job with big corporations and also with startups backed by big VCs (the trendy ones with a lot of big corporate clients) but I had no problem finding jobs with independent bootstrapped startups (quite the opposite; I had to turn down offers and they were outbidding each other)... Weird.

If you're going through interviews which are going perfectly and companies are backing out at the final stage with weird excuses which don't make sense, you could be in the same situation as me. I'd recommend to NOT apply for any big corporation or VC-backed startup; only apply for bootstrapped startups; you will save yourself a lot of time. Some of these bootstrapped startups are very successful/profitable and growing quickly.

I had a lot of weird stuff happening to me. One big name company I was interviewing with (and perfectly matched for) seemed very interested to recruit me; they told me they had several different possible roles open for me and already hinted to a high salary... Then after the final interview (which seemed to have gone very well), I got an email saying "The role has been filled." - Whatever happened to all the other roles they said I would be suitable for? I had wasted hours on a challenging tech test (which I aced) and did 3 interviews - I thought the final interview was meant to be a formalty. Sometimes I think that maybe I've been blacklisted by big tech.

Top comment by recursivedoubts

You asked for it:

https://htmx.org

https://hyperscript.org

I hated angular when it first came out and couldn't believe what insanity people were willing to put up with, so long as it came from google. (e.g. GWT) I created https://intercoolerjs.org out of frustration with that, and the lack of progress in HTML/hypermedia in general, so I could build a web application I was working on (https://leaddyno.com, since sold).

When covid hit I took a look back at intercooler and decided that it was really two things: HTML++ and a scripting language, so I split it up into htmx, focused just on the hypermedia angle, and hyperscript, the scripting language I wanted for the web (derived from HyperTalk, and old scripting language from HyperCard on the mac).

I now use them both professionally (email me if you want to use them too.)