HNHacker News
TopNewBestAskShowJobs

liampulles

1,501 karma · joined July 7, 2022

South African dev. Love using Go and finding simple, pragmatic solutions. Working to financially empower kids, schools, and parents. Love arty-farty movies.

https://liampulles.com/

me(at)liampulles.com

submissionscomments
liampulles··on Java is fast, code might not be
Understanding algorithmic complexity (in particular, avoiding rework in loops), is useful in any language, and is sage advice.

In practice though, for most enterprise web services, a lot of real world performance comes down to how efficiently you are calling external services (including the database). Just converting a loop of queries into bulk ones can help loads (and then tweaking the query to make good use of indexes, doing upserts, removing unneeded data, etc.)

I'm hopeful that improvements in LLMs mean we can ditch ORMs (under the guise that they are quicker to write queries and the inbetween mapping code with) and instead make good use of SQL to harness the powers that modern databases provide.

liampulles··on Get Shit Done: A meta-prompting, context engineering and spec-driven dev system
Please stop using the term prompt engineering, context engineering, etc. to define formatting the text that we send an LLM.

Its already quite debatable whether software developers should be called software engineers, but this is just ridiculous.

liampulles··on Does Where You're Born Matter More Than How Hard You Work?
> What is considered sufficiently wealthy

What you might consider "middle class", suburban households, and up. These "upgrades" are something that you can roll into your mortgage.

> Why are they going off grid?

Electricity and water availability issues.

For example, I live in an area where water is unavailable between days and weeks, every few weeks. The systemic issue in my municipality is that they have not kept up with the maintenance of water pipes, which means a significant portion of water pumped from the national provider is lost via leaks. Thus when some pumps and reservoirs go offline due to power disruptions, the loss of flow can lead to no water in higher lying areas that takes time to restore.

There are private solutions to this - the most affordable option is to install a big water tank on your property that in affect acts as a water battery. A more expensive solution is to install a borehole on your property, and to draw water from the water table (this might make sense for a complex, or a rich household).

liampulles··on Kotlin creator's new language: talk to LLMs in specs, not English
I think I want to know exactly what SQL ends up hitting the DB, and I want to fine tune it precisely.

This is the same issue I've had with ORMs - I get that they make it easier to generate functionality at speed, but ultimately I want control over the biggest performance lever I have available to me.

liampulles··on Does Where You're Born Matter More Than How Hard You Work?
The economic divide is very apparent here in South Africa, and it leads to perverse effects on our infrastructure.

As the country's ability to provide basic utilities falters, sufficiently wealthy households go partially or completely off grid, depriving revenue for the utilities and further exacerbating the problem.

liampulles··on Challenging the Single-Responsibility Principle
My evaluation on this is always to ask "are these two things intrinsically the same or coincidentally the same?"

Answering that question requires domain interrogation. If after that I'm still unsure, then I err on the side of having two copies with maybe a comment on both pointing to the other.

liampulles··on What canceled my Go context?
I actually like the explicit error and context value stuff in Go, though I recognise I'm in the minority.

The main reason is more to do with maintaining Go code than writing it: I find it very helpful when reading Go code and debugging it, to see actual containers of values get passed around.

Also, whenever I write a bit of boilerplate to return an error up, that is a reminder to consider the failure paths of that call.

Finally, I like the style of having a very clear control flow. I prefer to see the state getting passed in and returned back, rather than "hidden away".

I know that there are other approaches to having clear error values, like an encapsulated return value, and I like that approach as well - but there is also virtue in having simple values. And yes there are definitely footguns due to historical design choices, but the Go language server is pretty good at flagging those, and it is the stubborn commitment to maintaining the major API V1 that makes the language server actually reliable to use (my experience working with Elixir's language server has been quite different, for example).

liampulles··on The surprising whimsy of the Time Zone Database
It's well worth subscribing to the tz updates mailing list, not just to be cognisant of timezone changes, but to add a bit of bemusement to your day.
liampulles··on The L in "LLM" Stands for Lying
I see a future where I program at work less, which is sad but c'est la vie. I think the challenge of the job will be heralding and managing my own context for larger codebases managed by smaller teams, and finding ways to allow for more experimental/less verified code in prod. And plenty of consulting work for companies which have vibe coded their business and who are left with a totally fucked data model (if not codebase).

A Private (system) Investigator. :)

liampulles··on When AI writes the software, who verifies it?
Attention human: I have formally verified a route for converting the desks in the office into paperclips. Proceeding autonomously.
liampulles··on Halt and Catch Fire: TV’s best drama you’ve probably never heard of (2021)
I enjoyed the actual entrepreneurial endeavoring in the show, but I would have preferred if it was a bit drier. Would be interesting to see a series based on Skunk Works.
liampulles··on Claude Code is your customer
Is the idea here that you should make a very clear and well documented API because you expect customer agents to automatically make contracts with you to use your API? Just sommer skipping the process of evaluating you as a vendor?

Maybe vibe coders will do this, but I don't expect a business that operates like this to last very long.

If the expectation is that the customer is still going to put the work in to evaluate you, then is there no room for them to build a client, to expose their own internal API?

liampulles··on Vibecoding #2
Thank you to OP for writing a "LLM assisted coding" usage report which feels humble and honest. I'm in an evaluation phase myself and I find it very difficult to find good evaluations from typical developers.
liampulles··on Dev-owned testing: Why it fails in practice and succeeds in theory
I've seen it many times. I think it often arises in business that are not very technical at their core.
liampulles··on The Gleam Programming Language
I don't want to go into details of my work project too much, but the fundamental issue is that ElixirLS only supports 1.12+ (at least last time I checked).
liampulles··on The Gleam Programming Language
I'm now working on a real world legacy Elixir project in my day job and man oh man do I miss well defined types. Coming from Go, it makes a huge difference to my productivity when I'm able to click through fields and find usages of things, which comes down to the excellence of the Go language server. I know that the Elixir language server can infer some of this, but the language server in my experience is very fickle and flat out doesn't work if you have an older Elixir project.

I'm paying keen attention to Gleam to see if it can provide a robust development experience in this way, in the longer term.

liampulles··on Ozempic is changing the foods Americans buy
My dad was in a similar situation a couple months ago. He has been very obese for decades, which started after he stopped smoking. He does not eat fast food, has long ago cut out sugar and he favors whole foods in his diet. It was getting a shock blood sugar result and diabetes warning that pushed him to take Mounjaro (similar to Ozempic) that actually cut his weight down.

In his own words, what he noted as being the main contributor to his obesity was the moment to moment urges to just eat something (I empathize with that a lot - I'm also obese). Losing that desire made sticking to good portions and fixed calorie intake windows much easier. He has lost ~50kg of weight in the last year and now walks and bicycles around everywhere for hours every day.

I wish you luck!

liampulles··on Xfce is great
It probably depends on how far back one started using Linux on desktop. For me that was a while ago.
liampulles··on Xfce is great
Quote from your link:

"It is not clear yet which Xfce release will target a complete Xfce Wayland transition (or if such a transition will happen at all)."

liampulles··on Xfce is great
I'm a longtime fan of XFCE. I try all sorts of DEs from time to time on spare computers, but I reliably come back to XFCE, which is really just a fairly low-resource, stable embodiment of the classic GNOME feel. I used mainline Ubuntu for a few years until they released GNOME 3 (which I hated then and hate now) and then I switched to Xubuntu and was happy again.

I made a conscious decision a few years ago (after trying yet another distro that went tits up), I was going to stop playing around WITH linux and start playing around ON linux for computers that I needed to get actual work done on. If one wants a classic Linux feel that is fairly stable, XFCE and a Debian base is pretty good for that.

I am a little concerned about the whole Wayland situation, since the XFCE team seems to be taking a fairly anti-Wayland stance at the moment. It has forced me to manually move from Wayland back to X11 on new installs to get a relaible experience, which is not reliably straightforward and seemingly may become more problematic as time progresses.

liampulles··on What happened to WebAssembly
At the last few places I've worked, we've seen most users engaging with our mobile app, and so it has made sense to develop a mobile app with flutter or kotlin multiplatform (or similar) for our broad userbase and then to use good ol' backed templated HTML for administrative sites rather than an SPA. Doing backend templating with good ol forms and what not is still a pretty good way to develop normal, boring websites.
liampulles··on Software Craftsmanship Is Dead
If one likens coding to carpentry, then enterprise software development at a small company is not building a beautiful carved coffee table, it's more akin to the contents of a farm workshop. I'm talking about shelves and tables and "tools" quickly made from cut-up 2 by 4s, screws, and nails. It works for the scale of a small farm. If something needs improvement, you tack it on or cut away somewhat haphazardly, and thing gets a little uglier and more cumbersome. The marker of skill is how well you can do this in a fixed, short amount of time.

If that farm manages to grow to become a "big farm", then some of those wood constructions are not going to cut it anymore (though some parts still can), and good quality expensive tools/tables will need to be bought. This might require some persuasion when talking to higher ups, because they've been used to cheap stuff up until now. And you may never get thanked for averting a disaster.

If you accept this as the nature of business, then you can move forward. Aim to minimize shit, not maximise perfection. Leave if your management can never see reason.

liampulles··on Pebble Round 2
If the production is similar to the PT2 watches, then there will be public beta testing before watches are shipped.
liampulles··on Pebble Round 2
Yes, no more bezel cuts off the details. What is meant is that does not have the big bezel of the original Pebble Round.
liampulles··on FreeBSD: Home NAS, part 1 – configuring ZFS mirror (RAID1)
Its not a replacement for a physically seperate backup, so putting stuff in the cloud is good (though I'm sure it will get expensive, depending on how much you store).

I use SnapRAID for replication personally, because I like the flexibility it gives in terms of drives that make up the array, I like that it does not work the drives too hard, I like that I can drop drives in over time (to try and lessen coinciding failures) and I like that it works on top of a normal file/folder hierarchy on normal partitions (so I can access the files without SnapRAID should I need to). The cost is that I can lose up to the last day's worth of files (because the parity file is only updated nightly).

liampulles··on 10 years of personal finances in plain text files
I made a similar program for myself, except that the data it stores and works on is the raw CSV exports from my bank. The program interprets and projects the data.

If the program fails to interpret a transaction, it fails totally and says why. Then I fix the code until another transaction breaks. I keep doing this until it works - that's the regular process.

liampulles··on What you need to know before touching a video file
AI upscaling can also be done during playback, to the benefit of lower file sizes, but at the cost of higher processor utilisation. So it is a trade-off.
liampulles··on What you need to know before touching a video file
Did you use a decent piece of DVD authoring software? Here are some options: https://www.videohelp.com/software/sections/authoring-dvd
liampulles··on What you need to know before touching a video file
Do youngins even know why AVI files are under 700mb? I think obsessions over quality/compression are the concern of us aging hobbyist encoders.

Unless one lives in a country where the internet is slow and/or hard drives are expensive, I think the audience does not care.

liampulles··on What you need to know before touching a video file
I remember using Gordian Knot to create avi files from my DVDs back when XviD was the pragmatic method for encoding videos, and the whole goal was to get movies under 700mb so that you could write them to a CD. Avisynth and community filters were largely geared towards undoing all sorts of crap done to an image because artifacts that were relatively unnoticeable on a general CRT television were quite apparent on a computer monitor, as well as to then prepare the video to look good once it has been highly compressed with XviD or DivX.

These days I'm much more inclined to try and transparently encode the source material, tag it appropriately in the media container, and let the player adjust the image on the fly. Though I admit, I still spend hours playing around with Vapoursynth filter settings and AV1 parameters to try and get a good quality/compression ratio.

I have to say that the biggest improvement to the experience of watching my videos was when I got an OLED TV. Even some garbage VHS rip can look interesting when the night sky has been adjusted to true black.

Given the increasing abilities of TVs and processing abilities and feature sets of players, I'm not much persuaded to upgrade my DVD collection to Blu-Ray. Though I admit some of that is that I enjoy the challenge of getting a good video file out of my DVDs.

I partially disagree with the use of ASS subtitles. For a lot of traditional movies, using SRT files is sensible because more players support it, and because it's often sensible to give the player the option of how to render the text (because the viewing environment informs what is e.g. the appropriate font size).

← PreviousPage 3 of 21Next →