So far the most profitable category has been sites which simplify some government processes, e.g. helping you fill a form or even just basically selling a PDF version of a form that a government only provides on paper (with a nice web UI to help you easily fill it).
Little scaling or maintenance, I can host everything on a single dedicated server but have a few so I don’t have to worry about things breaking.
Most of the work is just locating these niches, but honestly it’s easy to find at least one a week even if I’m being lazy. If I was really trying very hard I’d probably be at 1000+ sites right now.
One simple example would be helping people change their name in the UK with a deed poll, which basically amounts to a pdf saying “hey my name is now [enter name here]”. I didn’t do this particular one even though I probably should, I found out about it pretty early on and I was (wrongly!) dissuaded by the competition.
Edit: I specifically should not have been dissuaded by the competition because it’d take an hour or two to build a decent website with the necessary information, and despite the competition there’s a decent chance my page would start ranking pretty well within a couple of years. I’ll probably do this one tomorrow.
i was using Asahi on my M1 laptop, it was great, but have since switched to UTM.app (from the app store, but available outside it too), and configured to use Apple Silicon Hypervisor rather than QEMU, and it's been excellent, on M2 series processors at least. UTM warns its wrapping of the Apple Silicon hypervisor is not perfectly tested, but it's perfectly great.
(When configuring a new hypervisor-ed OS, i use a Fedora ISO for arm64 (or aarch64 (?)) and in the UTM.app gui choose Linux, which reveals the option to use native Apple Silicon hypervisor over QEMU.)
I seem to be in a minority but I find user stories or features to be really awkward and unnatural units of work for building software. Sure these things help to define the expected result but they shouldn't directly drive the development process. Imagine building a house that way - you don't build the living room, then the kitchen, then the bathroom etc.; you build floors, walls, the roof... The 'features' or use cases for the building arise out of the combination of different elements that were put into it, and usually right near the end of the build. The same is true for basically anything else that we build or create - if you're making a sculpture, do you finish working on one leg first before you move onto some other part?
Features are vertical slices through the software cake, but the cake is actually made out of horizontal layers. Creating a bunch of servings of cake and then trying to stick them together just results in a fragile mess that's difficult to work with and easy to break.
And the value of AI as pushed to us by these companies is in doing larger units of work.
But... reviewing code is harder than writing code. Expressing how I want something to be done in natural language is incredibly hard.
So over time I'm spending a lot of energy in those things, and only getting it 80% right.
Not to mention I'm constantly in this highly suspicious mode, trying to pierce through the veil of my own prompt and the code generated, because it's the edge cases that make work hard.
The end result is exhaustion. There is no recharge. Plans are front-loaded, and then you switch to auditing mode.
Whereas with code you front-load a good amount of design, but you can make changes as you go, and since you know your own code the effort to make those are much lower.
Someone posted a link on HN years ago to a set of google docs titled the "Mochary Method", which covers all sorts of management skills just like this. I have it bookmarked as it's the only set of notes I've seen which talks about this stuff in a very human way that makes sense to me (as a non-manager).
$24 billion in American taxpayer money went to Israel in 2024, or about $65M/day. That's 32 equivalent of those. Each and every day. And this is what enables burying/killing a wide ranging, unknowable number (60k-200k?) of humans, half of whom were children, by systematic aerial bombardment using 2000 lbs. unguided Mk. 84's into urban areas and terrestrial structural demolitions, forced concentration/ethnic cleansing, and engineered famine by siege. Not all Israelis and Americans are okay with this, but protesting so far hasn't made much difference.
I find this line of argument really weird. Obviously mastering his tools is only one of many things required of a master craftsman, but the relentless pursuit of excellence in all dimensions of ones craft is the minimum possible criteria for ever attaining it, almost tautologically.
It's like when people complain that leetcode is nothing like the job: yeah, it's a pretty bad test, but you're making a bad argument about that because CS knowledge is extremely relevant to the job, unless the job is assembly-line library composition.
I've consulted for companies that had all their dev boxes on coder or something, and you get really good at vscode really fast or you don't have much luck. It's more than 5%, but even stipulating that it's 5%, whoa, 5 percent?! By installing a bunch of stuff off a list on GitHub and dropping some aliases in your bashrc or zshrc? in a few weeks you're five percent more effective? Anyone in any field from banking to bioinformatics would think you were joking or a scam artist if you offered them 5% more efficient outcomes at that price.
Regarding OG editors like ed and ex and sam and stuff? I can absolutely believe that someone with a lifetime mastery of one of those tools could smoke a VSCode user, it's not at all obvious that VSCode is an upgrade to vim/etc. along any dimension other than low barrier to entry. ditto emacs which is about 1000x more powerful than vscode and the difference in library/extension ecosystem is not measured by size: the emacs one is identical to the vscode one with bottom 90% by quality sliced off the vscode one.
And this stuff compounds, you get a bit better at the tools and you can read more code faster, read the right code faster, start moving the derivative of the derivative.
It's also extremely non-obvious that collaboration at the kinds of scales and complexities that make exceptional skills or experience in it a top 3-5 core competency for people doing most software. Study after study going back to Fred Brooks and the Mythical Man Month have demonstrated that relatively small teams of people who get along very well coordinated by a relatively small number of highly technical managers who take the offload on the high-complexity cross-org collaboration is the golden ticket. It's the same reason computers have dedicated routing tables in the NIC and that those things talk to even bigger and more specialized machines that do all routing all day: you don't want to scale O(n^M) with the communication overhead.
A hacker needs to work really well with their immediate team, and have a good dialog with a manager who is both technical (to understand the work) and who devotes a lot of energy to complex collaboration.
LaTeX typesetting is a solved problem. Memoir or Classic Thesis, paired with microtype, provide outstanding results and you need to spend zero time on tweaking stuff.
Typst is interesting, but it doesn't yet support all microtypography features provided by microtype. IMHO, those make a big difference.
Changing the type of the column is no big deal per se, except on a massive table it’s a non-trivial operation, BUT you also have to change the type in everything that touches it, everywhere it’s assigned or copied, everywhere it’s sent over the wire and deserialized where assumptions might be made, any tests, and on, and on. And god help you if you’ve got stuff like int.MaxValue having a special meaning (we didn’t in this context, fortunately).
Our hosting environment at that time was a data centre so we were limited on storage, which complicated matters a bit. Like ideally you’d create a copy of the table but with a wider PK column and write to both tables, then migrate your reads, etc., but we couldn’t do that because the table was massive and we didn’t have enough space. Procuring more drives was possible but took sometimes weeks - no just dragging a slider in your cloud portal. And then of course you’d have to schedule a maintenance window for somebody to plug it in. It was absolutely archaic, especially when you consider this was late 2017/early 2018.
You need multiple environments so you can do thorough testing, which we barely had at that point, and because every major system component was impacted, we had to redeploy our entire platform. Also, because it was the PK column affected, we couldn’t do any kind of staged migration or rollback without the project becoming much more complex and taking a lot longer - time we didn’t have due to the rate at which we were consuming 32-bit integer values.
In the end it went off without a hitch, but pushing it live was still a bit of a white knuckle moment.
On Android devices with AVB (so basically everything nowadays), once the bootloader is unlocked, so many things already either lock you out or degrade your service in various ways. For example, Netflix will downgrade you to 480p, Google Pay will stop working, many apps will just straight up disappear from the Play Store because SafetyNet will stop passing (especially on newer devices with hardware attestation), banking apps (most notably Cash App) will often stop working, many other third-party apps that don't even have anything to do with banking will still lock you out, etc.
On many Android devices, unlocking the boot loader at any point will also permanently erase the DRM keys, so you will never again be able to watch high resolution Netflix (or any other app that uses Widevine), even if you relocked the bootloader and your OS passed verified boot checks.
On a Mac, you don't need to "unlock the bootloader" to do anything. Trust is managed per operating system. As long as you initially can properly authenticate through physical presence, you totally can install additional operating systems with lower levels of trust and their existence won't prevent you from booting back into the trusted install and using protected experiences such as Apple Pay. Sure, if you want to modify that trusted install, and you downgrade its security level to implement this, then those trusted experiences will stop working (such as Apple Pay, iPhone Mirroring, and 4K Netflix in Safari, for instance), but you won't be rejected by entire swathes of the third-party app ecosystem and you also won't lose the ability to install a huge fraction of Mac apps (although iOS and iPadOS apps will stop working). You also won't necessarily be prevented from turning the security back up once you're done messing around, and gaining every one of those experiences back.
So sure, you can totally boil it down to "Apple still punishes you, only a bit less", but not only do they not even punish your entire machine the way Microsoft and Google do, but they even only punish the individual operating system that has the reduced security, don't punish it as much as Microsoft and Google do, and don't permanently lock things out just because the security has ever been reduced in the past.
Do keep in mind though, the comparison to Android is a bit unfair anyway because Apple's equivalent to the Android ecosystem is (roughly; excluding TV and whatever for brevity) iPhone and iPad, and those devices have never and almost certainly will never offer anything close to a bootloader unlock. I just had used it as an example of the all or nothing approach. Obviously Apple's iDevice ecosystem doesn't allow user tampering at all, not even with trusted experiences excluded.
Fun fact though: The Password category in System Settings will disappear over iPhone Mirroring to prevent the password from being changed remotely. Pretty cool.
Check out if there are comprehensible input sites for your target language if you haven’t already, for example fo spanish there is: https://www.dreamingspanish.com/ which puts out videos labeled with various difficulties of speaking and listening
When you use PDF.js from Mozilla to render a PDF file in DOM, I think you might actually get something pretty close. For example I suppose each Tj becomes a <span> and each TJ becomes a collection of <span>s. (I'm fairly certain it doesn't use <canvas>.) And I suppose it must be very faithful to the original document to make it work.
If you think RDP performance is good, you should try Sunshine+Moonlight. I regularly stream at 4k 120hz from my gaming PC to my laptop and it's basically indistinguishable from running locally. I've even run it over Tailscale from a thousand miles away (though at 1080p60) and it was still markedly better than RDP.
Caveats - You really want a Windows host for fully accelerated on-GPU hardware video encoding, the server setup is _slightly_ more involved than RDP which is usually preinstalled, and Sunshine+Linux+NVidia requires an annoying driver patch. But overall it's _amazing_.
During ZIRP the incentives for employees were completely disconnected from the underlying business, leading to entire careers being built around and rewarded for the wrong outcomes. People have built entire careers while completely missing/ignoring why they're doing the job and how their work is supposed to fit and contribute to the overall business - because in a lot of cases there was never a viable business to begin with, and the founders themselves were playing the "career startup founder" card and enjoying the mismatched incentives set up by a distorted funding market.
Now we're seeing a readjustment as the "free money" is gone and companies realign the incentives to actually make a profit on all that manpower, and are suddenly realizing they either have way too much of it, or ended up with the wrong kind of manpower due to over a decade of mismatched incentives. Thus layoffs and a jobs market flooded with candidates whose skillsets no longer match the current demands.
The good times for the career software engineer - the kind that aces LeetCode, optimizes for career growth and collects the right buzzwords on their resume has indeed come to an end, but there's still plenty of good times to be had to if you are a career problem solver. Being able to get machines to do your bidding is still a very useful skill to pretty much all business, and what matters now is delivery and solving the business problem in a profitable manner - how many tech buzzwords you have on your resume is no longer relevant.
This isn't to say it's anyone's fault - I don't blame anyone for playing the game and I myself took part in it at one point. But you need to realize it's a game and plan your exit. The danger is that there's an entire generation that started their career in this game and did not realize it was a game at all, and are now caught off-guard.
Personally, even if this software wouldn't be 1:1 capable of replacing the established players, it still feels like a good idea. With how much people (rightfully) complain about how open source is underfunded and with how often we're forced into borderline exploitative dealings with the established players in the market (the likes of MS Office, Adobe products, Atlassian products, even some Oracle stuff), funding the development of open alternatives (even if done with some comparatively small amount of taxes) seems like a good idea, as long as everyone in the government isn't incompetent.
For example, if we had governments with strong tech departments that could fund helping the development of LibreOffice, then suddenly even if someone wants to use MS Office, that's still a bargaining chip to get a better deal because there's a viable alternative. Or to develop something like OpenProject, Kanboard etc., alternatives to the likes of Jira, that might be enough for many out there, while also possibly benefitting from community contributions. People love to complain about how Jira supposedly sucks, so that'd be a good opportunity to step up and make something "better". Or using open source technologies like PostgreSQL or MariaDB/MySQL for developing their own internal systems instead of always forking over a bunch of cash for Oracle or MS SQL by default.
If you want a government that's cost efficient, then invest in making it be so, treat the software landscape as an investment opportunity - spend some money now to save a bunch of money later. The same way how an app can be a home cooked meal, some software could be a public utility.
When you first study mathematics at undergraduate and early post-grad level there is a sense of being overwhelmed with how on earth anyone figured this out. When you read the messy history of maths, and understand it is an organic, growing field, you feel a little less like an imposter struggling to understand how anyone could've come up with this.
Reading these books (primarily as a software engineer), made me feel better about not immediately getting certain concepts, because it's likely the people these theorems are named after didn't get it either, to begin with. They refined it, they collaborated (like a pull request almost) and eventually everything got very neatly packaged up into a set of theorems. Mathematics is rarely taught in that way, I wish more of the "human" aspect was part of the pedagogical process. I think it might temper some of the fear people have.
For those consuming YouTube in homeopathic dosages - uBlock Origin is effective for YouTube ads in browsers (incl. mobile Firefox on Android [1]) and NewPipe is a wonderful native Android client (supports background play, downloading audio-only for podcast episodes, etc). Of course, yt-dlp for command line downloads. NewPipe sometimes breaks, so you want to use their F-Droid repo for faster updates.
> So there's a lot of DHT network scanning going on for sure.
There is an entire category of free software whose purpose is to create an index of the DHT network. :) The idea is to allow users to find and search for torrents in a completely decentralised manner (i.e. without relying on any centralised trackers or search engines).[1] A good example is bitmagnet[0].
Context: I was an early strategic technical hire by a director/manager/CTO 3 times to help execute process changes and lead new initiatives healthcare SaaS companies between 2014-2020 and then started working in strategic cloud consulting since then where I am brought in to get developer, operations and the “business” to be better aligned and/or to lead new initiatives.
I’m currently a “staff software architect” at a 3rd party cloud consulting company.
What not to do:
1. Disrespect current processes. What you call “legacy code” was done for a reason, is generating revenue, solving real world problems, and the reason you have a job
2. Make any suggestions about improving processes before you have been their at least 90 days and understand why the current system is like it is.
3. Suggest rewriting something or introducing new to the company technology until you have worked there 90 days. Especially don’t start doing resume driven development.
What to do:
1. Set up a meeting with sales and ask them to “sale you the value proposition of the product as if you are the customer”. Ask questions as if you were a potential customs and raise objections to the product as if you were customer. Sales is usually very good at answering those questions.
2. Talk to your manager and ask what are their 90 day and 1 year plans for your team and make sure your work is aligned with the goals.
3. Get to know the pecking order. The org chart will not show you who has the most influence in your department.
4. Setup “getting to know you” 1-1’s. What are people working on? What do they want to be working on? What are their biggest pain points? What would they improve if they had a magic wand?
5. Pick up small stories, bugs to get familiar with the development process.
6. Learn about pre-wiring a meeting when you are trying to suggest changes. Do a POC, talk to the person who might have the biggest objection or has the most influence and work collaboratively to address their objectives. Keep doing that for more people on your team. It helps get more people on your side.
The first thing is to be kind, empathetic, and understanding when someone isn't as good at you as something. This happens to everyone, and no matter how smart someone is, there are things they are particularly bad at as well. Keeping in mind the things you struggle with, can help with empathy and humility, and help you figure out what tasks to try to delegate to others.
The smarter someone is, the more they will be used to working alongside people less intelligent, and still work together effectively, and not make others feel bad about it. Particularly smart people can find it shocking when someone else belittles or ridicules another for not understanding something, because they are used to always understanding more than everyone around them their whole lives, but usually keeping it to themselves to not make others angry or feel bad about it. They're not going to be angry or upset when other people struggle or don't understand as well as them, as it is the norm, and something they've almost never not experienced.
Lastly, in a leadership position, look to figure out where peoples strengths do lie, and give them that part of the project. If they have no strengths or abilities consistent with the job at hand, that might not be possible, but seems like a major failure of the hiring process in the first place, and shouldn't be possible- it isn't the fault of the person that was hired inappropriately.
No one really complained with 15.1 and macOS completely blocking software that is "untrusted".
You know the "move to bin" popup, which you used to unblock in the past by cmd+clicking the binary, or later via the settings menu for privacy & security (insane in its own right!)
Since 15.1, you're done and dusted. Unsigned/untrusted binaries simply will not run on macOS, regardless of how much you trust them to be. Thanks Apple.
That is a big deal, a really big deal... For the music industry, many industries and consumer grade software, such as game installers from GOG, etc. They simply don't open anymore once you install them fresh.
I raged for about 15 mins at these idiots at Apple for making such a breaking change to user space.
This is clearly not to protect the user as much as it is closing the walled garden onto users. Disgusting, silent move, in a minor release.
Thankfully I found the solution in
xattr -d com.apple.quarantine ~/binary
But what do I do once this doesn't work anymore? I really wonder. I really like the M1-M4 chips. I can't stand listening to a fan anymore. If this keeps going south I will be jumping ship to the first distro that supports this hardware properly.
A sad state of affairs. macOS is a beautiful OS with its problems but very workable. Apple is slowly picking at it and worsening it, mostly, throughout the years. Long live Snow Leopard!