I'm curious to hear about what other jobs/domains exist outside of this and how it is working on non-web stuff.
I'm curious to hear about what other jobs/domains exist outside of this and how it is working on non-web stuff.
Compressing Lamport Signatures is a side-project of mine too.
I work on graphics drivers. They're hard write and even harder to debug. You have to be a huge nerd about graphics to get very far. It's a relatively rare skill set, but new, younger, nerdier people keep on coming. Most people in graphics are quiet and are just keeping the industry functioning (me). It's applied computer architecture in a combination of continuous learning and intuition from experience.
Is there some big spec document or ISA that you follow when implementing the driver?
Also I'm curious is it easier to write a driver for the modern "lower level" APIs like vulkan/dx12?
There is documentation, but it's not as well organized as you might imagine. Documentation is usually only necessary when implementing new features, and the resulting code doesn't change often. There are also multiple instruction sets as there are a bunch of little processors you need to control.
Vulkan/DX12 aren't really "low-level" APIs. They're "low overhead", and honestly, no. Their code base is just as large and complicated, if not more so, than OpenGL/DX11.
It is a different experience to be sure - I work on stuff that nobody likes and where most people are surprised it still exists. And my goals tend to be about shutting down, not growing. I succeed with every server we kill, every product we turn off, every customer we get rid of.
I'm building a better primitive for infrastructure via microvm's (think virtual machine but fast and easy to use).
I am about to launch a complete rewrite of this: https://github.com/BinSquare/ERA
Most commonly our software runs on premises on server-class hardware (or what passes for server-class depending on the industry...), sometimes hosted in the cloud, sometimes on "edge" hardware (think Raspberry Pi class power/spec wise).
One component of the software actually is a web frontend (and a Jetty backend) to go with it, but it's not your typical "web-app" and it's not SaaS. But there's much more to it than that.
The first version of the code looks like this, https://youtube.com/watch?v=rJuRTZOE99g
The new version is much more feature rich, catering towards the user. Unreal use in Python is now native and users can launch a dedicated server.
The development process can be slow, lots of waiting on compiling and cooking. The Python part of this project is great. Code is very simple and readable and I'm building out a renderer for the geometric algebra package I'm using, Kingdon. This lets users quickly visualize 3D elements, lines, points, planes, and shapes. Working on non-web stuff is great. I love building out UI and text in 3D, it feels like the final form of UI and is a lot more expressive than web UI. Controlling objects in 3D let's you do a lot more. Everything feels right.
I used to work in web dev, but I enjoy my current work a lot more. Most of my web role was just taking mockups from the UX team and translating them into code which felt mindless. Now I get handed a system and am asked to squeeze as much performance out of it as possible which I find much more interesting.
Earlier it was geodata imports from OSM or private sources. Now it's mostly routers and GPS tracks. Interfacing with OSRM & Valhalla via C bindings. Road graph analysis and algorithms. I wrote a router myself, comparing different routing algorithms. I also developed a pedestrian traffic model for entire cities, for retail. I also did various ML models. My languages are Python w/ GeoPandas & CatBoost, Rust, Go.
(Germany/Munich)
Previously I was working on the ingress components of Cloud Foundry, a Platform-as-a-Service offering.
Currently rebuilding a VFX studio replacing Windows with Linux with a bespoke PXE system and then implementing a Data Vault to secure IP we receive from movie studios.
I was once in a group that was switched away from the work we were doing and repurposed to do web work. It was a bad experience, but not because it was web work. The code base we were given was in terrible shape and we weren't allowed the time to adequately fix issues. Thankfully I no longer work there.
With ~17 years of experience already, start with the study of the structure of C programs. Recreate some of it manually, build it, and research the things that do not behave as expected.
Bonus of using an open source kernel is they have a lot of eyeballs on them. They will be pretty dialed in versus studying random Github projects that happen to be written in C.
Would recommend avoiding cognitive overload, wait until you get into comfortable flow writing, building, fixing as needed, simple programs before you dive into lower level debugging, trying to grasp assembly structures that a compiler spits out.
LLMs can also help you break into C development by a large degree. But they still get overwhelmed on a sufficiently large C codebase just like any other language. Your mileage may vary there.
I'm self taught when it comes to computers and software development. For years before I landed a paying development job I did a lot of hobby projects. When I decided to take the leap and landed my first development job I took a fairly steep cut in pay. I was single, could afford the cut and was doing something I really wanted to do. It got the experience I needed and after the first year and changing jobs, my pay substantially increased.
I realize not everyone can take the approach I took. It may not even work these days. I did this 38 years ago when the industry was a bit more accepting of developers without a college degree.
Addendum: I also networked. I went to the equivalent of meet ups of the day. Talked with other developers, showed them my work, etc. This is how I found my first job.
Though the end-use isn't web, we can't deny that much of development still goes to building web-services and consumer app.
It's a giant pile of legacy code so a lot of what I do is just C++ generalist stuff, but I have a strong math background so if that's ever called for it's me doing that work (especially because I have English-language skills that don't often come with the strong math background at this pay scale). In particular, I'm the guy wrangling Parasolid (geometry kernel used by SolidWorks, for those familiar) to produce geometry for walls and floors.
Full-time: C++ work on nearby connectivity (bluetooth) for embedded / industrial devices (factory equipment). Deep stack, hardware constraints, long lifecycles, high reliability.
Non-web work feels very different: stronger constraints, slower but deliberate releases, and bugs are much more expensive. There’s a lot of interesting software being built far away from HTTP and browsers.
I’m using SBERT-style embedding models for the semantic matching, which works very well in practice.
For non-text content, the app also analyzes images (OCR + object recognition) using Apple’s Vision framework. That part is surprisingly powerful, especially on Apple Silicon.
> I need to do something for images that are already classified/tagged via FastVLM
What’s the concrete use case you’re targeting with this?
Full time work: GPU driver development and integration for a smartphone series. It's fun to see how the sauce is made.
Eventually: hope to pick up Rust.
My main job currently is in game dev, writing C#. Working for a small studio with flexible roles, I sometimes also take the opportunity to use other tech, like actual web stuff. A couple years ago I wrote a simple HTTP API for some internal needs and that was the first time I did modern web.
I've worked in the embedded space and adjacent. I've done automotive (Autosar), I've done some bare metal applications and I've maintained a custom Linux system for a series of embedded products. I've also worked on tooling (native desktop applications) related to some of these embedded uses.
For fun I still play with some embedded development, and would like to do another Android app. I built a couple simple ones years ago and generally Android development seems pretty pleasant to me, but I haven't done Android side projects in a long time because I can't really think of any apps I'd actually like to have.
The work can be interesting, but intense when in the thick of building a system. There is less competition for jobs compared to pure web/programming, but also less jobs in total. The option is always there to take a web/programming gig if the specialised work is hard to get. Potentially pay is lower than some of the big US web companies, but that's probably as much from me not chasing dollars to the exclusion of all else. Some people/companies don't see this work as deserving of the same/better compensation as web/programming, as it is not as easy to understand and they won't pay for what they don't understand. Find the right employer/client and it can be lucrative.
All of this is done in a Python environment with usage of Rust for speeding up critical code/computations. (The rust code is delivered as Python modules.)
The work is interesting and different challenges arise when having to process and compute datasets that are updated with 10s of TBs of fresh data daily.
About how long do these typically take to execute? Minute, Tens of Minutes, Hours?
My work if very iterative where the feedback loop is only a few minutes long.
Coding work spans FPGA (SystemVerilog), Linux kernel C, userspace C, Python, and yes, some web services and Browser JavaScript also. I also work on the network engineering of the cloud service and on the Linux OS image.
Easily the most fun I’ve had as a developer and I’ve worked on lots of different types of commercial software projects before. Not all the world is web apps, embedded work can be very satisfying if you’ve not considered it.
They varied in complexity from little 8-bit microcontrollers to 64-bit server-class blade PC's orchestrating dozens of smaller controllers over serial networks. Written a lot of C++ to the point where I'm just about sick of it.
I've also done the odd webapp, desktop or mobile app from time to time (C# is fun!), but it's been mostly embedded stuff paying my bills.
Seeing a lot of people here who work in embedded. Would definitely be interested in diving into that world a bit more. Seems like a lot of fun being that close to the hardware.
Web stuff will burn you out. In my case, that happened 10+ years ago and I've never desired to go back [to building web products].
(but if anyone is hiring, i come cheap if it involves cool stuff particularly anything not windows related.)
I'm trying to get back into computer networking - both physical cables and the computer code sides of things. Over the past 5 years beginning in the covid lockdowns, I've been watching a lot of the application layer stuff that was written over the past 10-15 years (the stuff HN usually does) slowly blow up. Usually because some REST API or something either broke or got depreciated somehow. This has been affecting both cloud and desktop apps I use, and has made me see the real value in refreshing my lower level network knowledge.
Heck, I'm honestly thinking about getting a CCNA now (or some other non-degree universal cert).
The difficult "grunt work" is in keeping the native binary small (~5MB or less) and working on Windows, Mac and Linux at feature-parity.
You can check it out here: https://www.youtube.com/@soncsd
Apart from that, I've been (slowly) learning about electronics.
runtimepanic•1d ago