Software Development in 2026

Table of Contents

Start here

Here you will learn:

  • some formal methods because they're back thanks to AI.
  • how to design software people actually want to use.
  • how to design optimized software and cost models.
  • how to design new algorithms.

You can do it by hand or use any AI agent. The hardest software is still hard to build and even when super AI code agents come out (soon) that skip languages completely and generate native binaries you will still have to design something that is good.

Motivation

This is born from conversations I had with trading shop recruiters during work socials who tell a tale of woe how much harder it has become to find good entry-level candidates from schools so I asked them what would a non-degree candidate need. Post-AI in 2026 (I checked in with them as of Aug 2026) these candidates are even harder to find so this means a window of opportunity for you slithering your way in to modern finance tech through an informal education and simply proving yourself by demonstrating skills in front of them.

What they want:

  • you are competitive in something
    • competitive school, competitive programming or math, athlete, poker playing, anything competitive because those always turn out to be the best hires
  • you have very high personal standards for the work you do
  • you know what you don't know and can admit it
    • no bluffing/jargon
  • can read code and explain what it's doing

This is all icing as they train you but helps:

  • knows about the CPU execution pipeline/caches
  • knows their chosen language and can explain it's runtime even if generated code
  • knows algorithm design
  • hopefully familiar with multicore code

There is no age limit this isn't big-tech where they try and churn new grads. Being older is a benefit in finance as you look like you should have experience at least. Would you trust some Sam Bankman-Fried looking guy with your money?

You still have to write code in interviews but this may change soon even within a single year (2027?) so don't worry you will still have a job because you know everything written here that AI doesn't know. This is a futureproof curriculum.

The work

Go on YouTube and search for Top Fuel drag racing. After each race the engine is stripped down to the bare block and rebuilt in 40-75 minutes for the next race. That's essentially what you are doing at many of the fun trading firms as everyday you are reinventing the design and squeezing out more performance. Even if that company is not doing High-Frequency Trading (HFT) they are still constantly rebuilding and optimizing the parameters of the whole system from data pipelines to research simulations to the trading optimizer trying to minimize market fees. AI (for now) is still too slow to catch up with a team of researchers and engineers from these firms but every couple of months some new agent with new abilities emerges so in 2028 who knows but for now it's still all done by hand.

Some of these companies have strict roles and others are like an anarchist commune such as Jane Street where there really isn't any titles and you can float around doing many different things should you want to do that. Some of these companies also have a strict no-AI policy for fear that OpenAI or Anthropic is going to gain some advantage. There is companies that still encrypt their entire codebase they aren't going to let Anthropic gain intelligence of their business but AI agents we will see are used in other areas.

Recruiters

Jove Intl, Oxford Knight, Reload Search, and ex-employees who have quit to become recruiters. They hire internationally for Chicago, NYC, Austin, London, Sydney, Hong Kong, Mumbai, Shanghai, Tokyo, and now Singapore seems to be the location everyone is opening offices these days. LinkedIn is trash for applying directly but works fine as a net for harvesting recruiter offers.

Selection

I got to try their fancy recruiter tools to see the minefield of bad candidates they have to filter.

They told me all resumes are reviewed manually there's no automated applicant tracking system aka ATS and AI doesn't filter them either because they can always provide visas to almost anyone on earth. Some companies like Jane Street you're being considered for all their offices at the same time not just the NYC or London offices.

A lot of times there's some new team being formed so they are hiring for it. A good example is formal methods as that's completely come back into fashion now that we have AI agents and new so-called lightweight formal modeling languages to make it much easier. Imagine a hiring manager and that new team flipping through a few hundred resumes they aren't going to read them all they are going to skim for 30 seconds who would be good on the team and throw that into 'investigate further' pile.

We will finesse our resumes for skimming at the end of this workshop.

Campus recruiting

Getting more and more monopolized by big corps pressuring students with 2-week expiring offers (aka exploding offers) that are against campus hiring guidelines but they do it anyway. Think about how much money is spent on campus engagement to find (highly paid) interns and they have to hope the intern comes back after graduating and many don't. This should tell you how motivated they are to find good junior candidates willing to stay to become senior staff so if they find you as a rough diamond in the wild where they didn't have to spend a fortune to set up campus recruitment it's an easy investment for them to consider you so long as you know what you're doing and can compete with these students.

Interview phone screens

The phone screen today, even post-AI, is typically a technical interview using software like CoderPad. I don't know if they still do this but Citadel in Chicago was notorious for firing off 3 problems to solve on HackerRank immediately after applying online. Some I found also ask you to submit code for a problem they define on the careers page at the same time as your application basically saying show us your best code. For the task on that page approximating irrational numbers like sqrt(42) is taught in Accelerated CS using streams (also taught in SICP). How to engineer that so it's fast is taught here in the AI workshop for numeric methods and in Knuth's books The Art of Computer Programming.

The new fizzbuzz filter is to implement atoi (convert ASCII to INT) and notice only 19% success rate for the first solution even with using AI agents. This tests how careless of a developer you are meaning you don't ask any questions about requirements and start generating or writing code immediately. In other words you solve the wrong problem.

Here is a typical screening interview using Coderpad and even though this guy is flailing in the interview he would still pass if you keep reading you'll find out why. Hiring is constantly changing and soon you won't be asked to write any code yourself in fact universities will stop teaching it as languages will become totally irrelevant if you're just generating a binary. Types and logical relations will not become irrelevant though.

On-site

If you pass the phone screen then you may be paid to fly out and do a 'super day' that's where you do back-to-back interviews and job shadowing for a single day or you may do it all over Microsoft Teams/Zoom. The strategy for passing these is take your time and don't make any mistakes meaning you have standards and you check your own work as you go. It is better to be glacially slow and painstakingly reason through the problem space than it is to come up with the fastest O(1) solution while missing something they have to point out to you.

Quality standards test

One of the super day interviews, or even the coderpad/phone screen, will be a typical software interview everyone does where they ask you to design code for a some small system like game controls for a text based game or a so-called simple program that sends packets and responses over a network. Whatever you build they will ask if you can spot areas of improvements.

There's always a trap here. Usually a very obvious optimization is just calling out to you to be optimized but pouncing on that will open a potential bug or performance sink elsewhere if you aren't taking your time and keeping the entire system design in your mind instead of being focused on the minor part you are currently looking at. One example is cache invalidation your slop coder optimizations have a side effect you didn't consider and now the cache must be invalidated because you changed some data dependency. The practice for this is simply writing a lot of high performance software which we do here.

You can invalidate the cache and still get hired just you better learn from each interview and take their advice. You are honestly a better candidate if you screw up but don't repeat a mistake as now they know working with you will be easy they won't have to tell you more than once.

Bluffing test

You are tasked with a seemingly impossible problem to solve and repeatedly asked to justify all reasoning as you attempt to solve it. Don't worry everyone is told their reasoning is wrong you aren't failing the interview they are seeing how you react. Someone used to bluffing their way through work meetings suggesting solutions they don't fully understand will be ruined here and this is of course the point they are making in this interview is you should know what you don't know. Where do you learn how to justify your decisions? Game Theory that teaches you about strategic decision making but nobody will expect you to know game theory or prove anything. We will practice seemingly impossible problems.

There will be someone eventually in these super day interviews who goes through your entire resume and tests you for bluffing there too so if you write down that you know Java because you vibe coded something with it they will ask you to describe in detail everything about the language. It's fine if you admit you just added that to your skills cloud to bypass a filter or admit don't know but say you don't know don't start bluffing because it will go very bad when they insist you define all jargon on the spot. If you mention the word heap they will ask you to define a heap and if you give what is normally a good enough answer for Java such as "the heap is the region of memory managed by the garbage collector" then they will follow with "tell us exactly the initial and maximum heap size the default GC can handle on a system with 16TB of physical memory". Jargon means totally different things to everyone who uses it. Ask someone what a memory pool is you will get either some kind of object pool concept or some threads pre-allocator concept or some bins concept. Ask them what a subpool is and get 3 more different concepts.

You see where I'm getting at they purposely corner you to prove you are using obscure lingo you yourself don't fully understand so communications with you is going to be impossible in the future. If you are hired there is going to be people in meetings with you who don't program who may be account executives/sales so in this interview pretend one of those people is in the room right now and make sure everything you say such a person could understand. If you get caught using jargon simply correct yourself and admit you don't know and they will consider you an honest person and quickly move on.

Code review test

Asking candidates to read code and improve it for a complex system. I imagine every agentic coding job this will be the interview style until agents are so good they generate a native binary directly and the interview will become a design test.

Once again you always remember the big picture because a local optimization can result in performance problems elsewhere. A trap here is to start messing with white space or inflicting your personal code style "this variable should be CamelCase" don't do that. What you are really doing here is the exact same thing you did in the previous interviews when they asked you to design a system but now you need to first figure the system out from the data first. Look how that data is represented but don't change anything yet, then look at the code, and only after that do you decide to build it better. There is a trap here where the data representation seems weird and if you mess with it you've invalidated optimizations in the code and the foolish slop coder will pounce on that. "Graphs should be an adjacency matrix!" nope you failed. Always keep reading the code because they've probably done something unique with their representation and want to see if you can spot why they made it that way.

Sometimes they'll give you the best and most optimal code they can come up with so if you think it can't be better without making some bad tradeoffs then say that and you'll do fine. In interviews always remember they are trying to find your level of personal quality standards and how honest you are of your abilities.

Find a mentor

Once you are in, trained, and are no longer panicking, if internal NDAs allow it then try and walk over to the research department where all the money is being made and find someone willing to teach you by asking them to give you the work they don't like doing because you want to learn it all from scratch. All you have to do is be the reliable person they turn to whenever some (tedious at first) work needs to be done and if this work over time becomes increasingly more skilled then you have found the right mentor and you are set for life because they will eventually want you to work with them once you have proven to be indispensable. You become their personal AI.

If they get promoted you get promoted, if they go off and start a new company you are the first hire. If they get hired at the most elite fintech company on earth noone else can get into they will tell the hiring manager hey you should bring this guy too. This can be tricky because of signing multiple NDAs even between internal departments but if you are serious about wanting to learn they will tell management to make it happen. I took all the above advice from a comedian many years ago and my life would not be the same if I hadn't watched that throwaway clip at 3 in the morning because I always assumed there was no way I could ever do this kind of work.

Non-finance

If you're not interested in finance that's fine as anything we learn here translates directly to paid freelancing or other industries. Many other companies mentor developers sometimes even direct from local high schools and build them to senior developers. One is in New Hampshire called Northwoods Software though due to AI may not hire as many high school kids these days but everyone is always on the lookout for someone promising even if they aren't hiring because if what if your top dev just disappears one day. Even post-AI this is a problem.

Meta interviews

Out of curiosity, because Meta pays insane salaries, I'm going to look at their 'full loop interview guide' here. Zuckerberg is the last of the big-tech founders who's still a CEO the rest of them have all cashed out and retired so I'm always interested in what he's up to. You should definitely apply there. Meta stock has risen 40% in 2025 despite Zucc blowing billions on the Metaverse though I don't think he was wrong just too early and should try again. These massive corps do a hundred different things you typically apply as a generic product developer and then hope to survive the first year and work your way internally to a team doing something interesting that doesn't have a tyrannical manager.

"Your interview process will include 4 to 6 of 45 minute interviews" so that's another super day except Meta does it all remotely. They explicitly say they don't ask dynamic programming questions but I bet it's the optimal solution to many problems because everyone says this then gives you a dynamic programming (or memoization) problem anyway.

Section How to prep almost everything here is conceptual design taught by MIT such as the URL shortener example. There's some distributed computing requirements here that are covered in the advanced dbms course and MIT's course using Golang if interested but those kinds of things would be taught internally when you're hired however I bet none of them know about conceptual design and designing a URL shortner the way we will soon learn.

I find the best answer to these 'tell us your experience of conflict' questions is just say you listen to people and let them talk but there may be something specific they are looking for to tick a box. They are trying to filter psychos it would be difficult to fail this part of the interview marathon.

I translate 'do you take constructive criticism as an opportunity to improve' to mean performance improvement plan aka PIP where all of big tech tries to fire you at the end of year review by placing you on a PIP to keep churning new grads. There is a specific strategy for working at these analytic based mega corps when you get hired as the lowest tier SWE. You always, always, have to be doing something that raises your metrics.

There's some resources they suggest which are suspicious, let's review them:

They recommend an ancient design primer on Github but Andy Pavlo's advanced dbms course we do here where we have to architect a high performance distributed system is more modern and does a total system review of Velox which is made by Meta. Now you can talk about Velox instead which is a classic interview strategy you lead the interview yourself by getting whoever is sitting there to forget about their list of questions. Always do this!

Zuckerberg the other day (Aug 11) wrote an AI manifesto where he wants it to be a personal assistant to boost everyone and laments how a few companies control all the agents and all of it is geared towards other companies and not people. I have to say I agree with The Zucc. There's something else you can talk about in the interview remember always try and take control of your own interview.

Curriculum

Now that we know what they are looking for how should we prepare?

Designing Software

We audit this to see how to design software people enjoy using and why certain software is successful and others failed.

Programming Languages

Even if AI in 2028 is generating native binaries from prompts, and you never look at code ever, types will be involved somewhere. Languages humans use are dead which is what Robert Harper predicted years ago when he said concrete syntax is a bunch of psych nonsense and logical relations and mathematical structures is how all this works. The prof Shriam K of this book has changed his language course because he knows noone will use languages anymore but he's probably the top researcher in CompSci education today so whatever he's written is worth reading and this won't take long so we're going to do it. Where I am we still handwrite enormous programs anyway (for now).

  • Book PLAI.org Programming Languages: Application and interpretation. How scope works, how garbage collectors work, how types work. Written by Prof K the same professor of the Accelerated Intro to CS.

Optimized Local Software

How to design and build any high performance desktop or server application and manage the memory yourself ignoring the operating system as they are too old, not consistent, don't validate memory, stall threads, etc.

Optimized Distributed Software

How to design and build modern distributed applications and finishes with the hardest software to build which is Query Optimization that no AI can do because it is NP-hard. Cost models are taught here.

Algorithmic Problem Solving

USACO training is excellent and it's completely free. CodingGame is Coderpad which most companies use for software interviews. You solve problems with bots and try and optimize as much as possible.

I am doing it a very different way by jumping straight to research in graduate algorithms because you for sure will be bored to death learning undergrad material but with AI you are now a grad student. We are doing the opposite track because we don't live in a normal world anymore post-AI.

Agentic Code (AI generated)

You don't need money there are free models, deepseek, or pay the basic monthly fee to Open AI (whatever it is now) as an amateur dev that's all you'll need.

The preferred tooling used to be opencode.ai but Anthropic leaked their own source to Claude Code by accident and now there's countless open source clones that will quickly become the preferred tool though OpenAI's Codex is not bad either if you only plan to use OpenAI models. All this tooling will change every few months and get more and more proprietary.

You are now a Project Manager no longer a developer. However see Effective ML where Yaron Minsky talks (skip to what is boilerplate (42:03)) about how impossible it was to get the highest paid developers on earth to successfully code review imperative shit code even after being told it was critical. It just can't be done and is a waste of your time to try and manually review massive amounts of AI generated imperative code.

That's why we will learn how to design and avoid having to manually review agent code.

Agentic Studio course

If you want to use some AI agent this is all you need to know (from Brown's new Agentic Studio course). Reminder every 2 months all this changes so any SKILLS.md tricks or whatever prompt engineering advice is all going to change. You should expect sometime in 2027/28 there will be a super programming agent that takes voice prompts and writes out binaries you will never see the code.

My advice is just experiment and figure it out yourself there's nothing to know 'Make me this' and it does. When we learn conceptual design you will be able to break up projects into small pieces and have AI generate it. Since we are still using languages, for now, pick a typed language with garbage collection of memory at least even if TypeScript is not really typed just pretending as per Robert Harper at CMU.

Software Design

If you take anything here then take this. You don't need to know anything about programming and can generate whatever software you want with AI but anything user facing will need to be designed this way or it will be trash noone will want to use.

MIT has a course 6.1040 Software Design (ask AI to find you the most current class page) and the professor Daniel Jackson wrote a book The Essence of Software. This is the most useful course I've ever taken on how to make excellent software people actually enjoy using. See this video where he further explains what a concept is and how you would use a bunch of state machines to get a LLM to develop an entire app like iTunes. State in a concept means 'what it has to remember'.

I am only going to read his book here and the tutorials on his book website. If you can't buy the book then ask AI for 'shadow libraries' like Anna's Archive where you can get a pdf.

Essence of Software book

My advice is to very carefully read this book don't skim it. If you get good at this then you can freelance on god mode and make insane money but the author is an MIT professor this isn't a blog post we are reading.

These are abstract ideas that will take you time to think about them and the more thinking you do about these ideas the better software architect you will be. Even if you're generating all code and have never programmed in your life if you know this book you will be a much better 'developer' than some guy with 30 years experience because we'll see big companies with fleets of professional devs screw this up all the time.

Discovering Concepts

Reading chapter 2.

He explains these are all concepts: upvote, call, reservation, folder. First software example is 'Backblaze' which I've never heard of and they screwed up the backup concept where things aren't immediately backed up when changed. It's name is 'backup blaze' meaning blazingly fast backups you would imagine right? Nope.

Dropbox concept problems are next. If you share an entire folder, delete it, then nothing happens to other people who share that folder with you. If you delete a folder inside that shared folder then everyone has their copy deleted too but the messages from the software are confusing. What you really wanted to do was unshare that folder for just yourself so you don't see it but they retain their copy. Instead you deleted it for everyone. This should have been a sharing concept where you can unshare yourself.

He talks about perceptual fusion where if something happens too fast we as humans can't notice it in time. A similar idea I've noticed is fake product theatre like if you try and fill a water bottle using some filtered water fountain it wants to be slow to pretend whatever you're getting has been filtered. You can adjust the fountain so it blasts out water that is still filtered but they know you won't perceive it as being changed unless they do something to make you notice such as making it slower than a regular tap.

Fig 2.7 is something I personally rage over how all software now has these annoying icons that are supposed to be universal but aren't. Just tell me what they do because nobody follows any kind of standard and has different icons. If I hold down one of your shitty icons on my phone then tell me in a bubble what it is in language but don't activate it. Tell me 'select this for grid view' when you give me 2 identical grid icons like in the figure.

Page 26 is critical users expect to pick it up as they go along meaning your documentation is worthless as nobody reads it. They expect through trial and error to understand what is happening and that can't happen if their simple mental model of what is going on is not what is really going on because you wrote a confusing interface. You should still have documentation of course but you should expect hardly anyone to read it. I was told this where I work on the first day. The trading software needs to be intuitive and learnable by anyone because they don't have time to read the manual. Nothing we write is allowed to be vague because money is involved.

From 'Lessons and Practices' I would suggest to never, ever, do whatever Unix does there is an entire book from back on the day called the Unix Haters Handbook which is an entertaining read if you search for the free PDF because none of those problems have ever been fixed and still persist 30 years later.

TODO

Version control

The prof of the MIT design course with a grad student created gitless.com see this research page. Read how they audited the conceptual design of git and found things like staging were confusing. If you still want git resources then try MIT's version control lecture from it's course The Missing Semester of Your CS Education or read 'Git for Hackers'. AI agents now do all this for you thankfully.

Many companies today use a customized Mercurial fork/clone instead of git like Meta's rust written EdenFS and Sapling SCM because git was originally developed to take advantage of linux file system optimizations ergo is conceptually attached to only that file system. As a lone developer Mercurial is dead simple to use if you're not using AI agents.

Git was always garbage so say thanks to AI you no longer have to use it yourself.

OSS contributing

If you want to make a Pull Request or PR to an open source project hosted on Github this workflow explains how it's properly done.

The written rules for this is never push any AI generated code to any OSS even though Anthropic's Claude Code source leak was busted trying to hide that it was generated code in order to pollute open source projects with slop.

The unwritten rules for this are don't play code golf meaning messing with whitespaces or someone else's code for no other reason than to make it shorter or to change it to your preferred style. I used to break this rule all the time not knowing the existing code is likely written that way for a good reason. Code golfing is hated by project maintainers.

The PR should be as small as possible or they won't review it so break something large into smaller PRs where each is self-contained and adds benefit they can clearly see. You are marketing a big win. If you fix a bug include a test for it by finding where all the tests are kept (read the contrib docs) so it doesn't return when someone changes the code later. Properly benchmark whatever you change too to make sure you haven't screwed over the project reducing performance they will probably have instructions how to do this. We will learn real world benchmarking here.

Free Software Foundation (FSF)

The GNU/FOSS way uses Savannah as a github GUI replacement for example here is a patch but all the work is done in plain text using a traditional mailing list style of attaching files and people vote/review it. Richard Stallman's ideology of free software means no corp can use this software to lock you in their prison and you will get more contributors to help you because whatever you're doing can't be undermined by some proprietary fork.

Freelancing locally

You can become your own Palantir if you take the advanced dbms CMU course below and become the local business intelligence and efficiency developer meaning you are consulted to extract data out of old company systems by optimized h4xor methods, transform this data into a form that OpenAI, Databricks or Snowflake can analyze and set up all of this in a centralized dashboard with visualizations (using Claude Code/OpenAI/Gemini). Then business suit guys can do forecasting or machine learning and there is huge demand for this. There is probably already consulting agencies in your city doing this right now but you can beat them by just being better and cheaper at first then jacking your rates to the sky but everyone will still use you because you come recommended.

You could also start out as the local Zapier style developer and stitch together software people are already using and prefer like Quickbooks for accounting, Zoho/Salesforce for CRM, or iCal/Google calendar for bookings. You now sew that all together using AI into a custom product for them plus you are a local they can actually talk to and meet. If they like your work they will tell every other business owner they know. You can do this with AI easily now.

An example is a centralized system that combines all 3rd party online ordering systems for a restaurant. If you walk into a pizza joint today you will see multiple tablets/laptops all provided by different delivery companies and it looks ridiculous when the staff try and manage them. These gigwork outfits all have an API you can create a single dashboard and eliminate that row of tablets by the cash register they have to juggle but it better be correct you don't want the restaurant missing orders. You better know real engineering standards so it doesn't 100% fail meaning they can't keep doing orders if your software crashes. That's the problem between compsci grads and real engineers the compsci grads don't account for failures.

As the local software glue freelancer you can also make sure all this order data gets sent to their preferred CRM or accounting software too so they no longer are at the mercy of these delivery companies controlling their data. You better have a fail plan for this too if there's 24hr outage and now your system has to update records all at once when it comes back online.

What to charge

There's a contractrates.fyi site to view project/hourly rates for freelancers though charge a daily rate never charge hourly. If you have too much work then your rate isn't high enough.

A common method of billing is for deliverables on a set schedule (daily, weekly). Adding authentication is a deliverable, adding a working catalog for some online store is a deliverable, etc. Even with AI agents you still do this. Never disappear for 3 months and return with some convoluted product always do it incrementally and get paid on a regular basis. If not they will hate your finished product.

Freelancing research

Here's what I found out by walking into places and just talking to people. Every one of them had a problem with existing software they used and none had ever met anyone locally who wasn't some SaaS sales guy pushing an existing product. All of them wanted a software mercenary which unfortunately I'm not but thinking I probably should be after seeing how easy it was.

With AI this is now almost trivial for you to do right in front of them and we will learn how to do this from conceptual design.

Salons

An example website using a typical small biz nail salon. At the time of this writing their website uses a 3rd party hosted form for appointments that means they will have to phone or text/email to correct any overbookings. This can all be automated easily to show blocks of time that are previously reserved and sync some iCal protocol.

I talked to many salons and every one rents out chairs to independent freelancers so they needed a fast way to add/remove new names to the booking calendar as these freelancers move around cities every month. Deposits for appointment bookings they wanted too but nobody offers this unless paying a high monthly cost for SaaS. They wanted to offer a gift scheme where someone can pay for a service and give it away but needed a way to know if these credits were legit, another software problem.

If your software works for one salon you can sell it to every other in your city. You can go on Craigslist, click Jobs, choose Resumes, find a sales guy in some other city and say if you sell my software there to every other salon I'll give you x percent of the business. You can email a salon there and tell whoever runs it if you sell my software I'll give you x percent.

If they're all running your software there's other money generating ideas you can try like a B2B sales backend between all the shops, some kind of employee shift bidding software so if one salon needs temporary extra help another can rent them out, maybe nail techs want to teach and add that service to be booked.

Abstract this, think of all the service businesses that use similar software: tattoo artists, plumbers, window cleaners, junk removal, any service is all the same really they either have set rates and it's all done through appointment software or they harvest quotes and need some kind of form so the person can upload details and pics.

Restaurants/Bars

Restaurants I found use at least 3-4 different software vendors. They all prefer handwritten order tickets because any consumer electronic touch screen is too junky and slow. The wait staff manually use a restaurant management system after writing down the orders and these are not consumer grade they have high-volume touch screen hardware and are impressively optimized there is never any lag using the UI. This kind of software would be impossible to compete with as tax authorities have to certify them to avoid classic service industry sales tax fraud where the restaurant generates a smaller internal bill but presents the customer with the real bill containing much more sales tax and pocketing the difference. These systems all have APIs that can be interfaced with some are free to use if you register as a developer on their websites.

The second software they used was 3rd party table reservations which we can compete with. They absolutely hated every option because of ripoff fees like 10-20% 'service charge' being added on which customers mistakenly thought was the tip but it was the scam fee for the online booking service. Prepaid reservations reduced no shows and only 1 online service they knew of offered it but charged way too much. Yet another easy Stripe integration or whatever payment gateway they wish to use.

The remaining software was online orders/main website which usually was just a instagram page with a link to Uber or a similar gig service for delivery or pickup. As noted before the #1 request was to centralize all these 3rd party order sites into a single dashboard and create their own site for direct ordering avoiding the parasite companies leeching. Another request was some kind of dashboard for reputation management and a way to capture and control reviews meaning if you had a bad review you get directed to management to correct and if it was a good review you are redirected to google reviews or elsewhere. I'm sure there's better techniques.

I was asked how to automate ticket sales for special events, adding merch sales, automate volumes on TVs showing sports games so the commercials were muted, lighting automation, asking me if customized POS is available (Stripe Terminal) to capture signatures so they don't have to dig them out for disputes months later and many other problems this was a gold mine of potential freelance work I didn't expect.

Tailors

If you look at Huntsman suit tailors on Savile Row they have an interesting website where you can click Made to Order and customize almost everything. This feature was easy to write and I used an AI image generator to make the drawings of the clothing styles. I approached some tailors locally and they said this is exactly what they wanted plus some kind of zoom/facetime booking for remote consultations.

Design examples

Let's look at a web design award site. Here are some nominees we can mercilessly review using the conceptual design skills we just learned. You can use DevTools in Chrome or Inspect in FireFox to see responsive mode (a phone/tablet screen).

The purpose of this site is a portfolio showcase for interior/exterior designers and the website itself was created by an agency so I'm reviewing the (April 2026) website not the business.

Intros are cancer but this one is short at least. You can change the layout (desktop view only) so a concept with no purpose. The 'About' page doesn't use a scroll concept indicating there is more to see, we'll see other sites do. The reel is laggy/broken on desktop I got a white box that expanded to fill up my screen and only noticed it had content when I went back to it after. This reel of their work should be on the landing page instead of the wojak drawings. There's a FAQ concept here with no purpose at all, a FAQ is frequently asked questions like how does the design process work and what can I expect working with you guys, etc. It is not 'What made you laugh today?'.

Desktop view when you click on their portfolio of work delivers an epilepsy triggering very sensitive scroll that confusingly begins halfway through their portfolio and bombards you with rapidly changing images. Responsive mode uses a totally different concept that works well so 2 concepts, 1 purpose. The contact page should be some kind of form for directing the communication. I would imagine all their clients are architects who personally know them or city hall managers and this is just a lead generating page and portfolio.

There's a journal with no recent updates which tells me they had a limited contract with this developer and now that it's over nobody knows how to update the journal. This is the curse of all bespoke software and why most businesses prefer to simply have an Instagram or Facebook page because the person who knew how to update the site left. A good developer (that's you) would make this easy for them to update.

The purpose of this site is a freelance web designer showcasing a portfolio.

Another site where the desktop version is broken, here it is missing the color highlighting on the logo and text that the mobile version has. The scroll circle concept on mobile is broken it shows you've fully scrolled after the first page but there's multiple more scrolls left as you end up jumping to every other page. The menu is now a useless concept if you're just going to scroll through the whole site tree. Desktop view if you click on service the case study hijacks the pointer with this gigantic floating box preview which is awful. The contact page is amusing: 'Contact us for crime prevention service' wait, what? I can summon Batman? No mention of cyber security in the service section. There's terms and conditions you have to agree to before submitting the contact form which is strange but maybe law in Japan. Their website design work in the portfolio is pretty good I would have made that the focus of the site and eliminated all the eye searing infinity scrolling animations and pointer hijacking.

They are recruiting so if you're in Japan do a complete conceptual design analysis of this site and offer to fix it if they hire you.

The purpose of this site is a trade catalog for bulk orders by architects and designers and some agency built their website.

The desktop view is guilty of the worst internet crime which is a scroll that keeps repeating itself for infinity whereas the phone view is nicely done and we finally get a scroll bar, wow. I gave up reviewing the desktop version it's totally unusable and broken everywhere. The most critical part of the site 'About Monolith' is only accessible by scrolling the front page and is not in the menu despite the title 'Site links' so we have another menu concept at the top of the page with no purpose. 'Monolith Trade' oddly redirects to a 3rd party form that only asks for an email, not sure why it exists with the contact email beside it. If you want to capture emails for mailchimp style marketing you don't need this $50/month form.

Almost every site reviewed so far their desktop versions have this awful concept with no purpose of mirroring the pointer movements with a very slow animation making the site seem sluggish.

Review the Reviewers

Members of the award site can vote on and rate other sites. Let's review the reviewers to find someone who is actually honest as most seem to give every site too high a score in hopes when they post their own websites for nomination that they are returned the favor. The ratings for the Monolith site there is only one honest review with everyone else giving this a 8+/10 except for this Bulgarian developer. Looking at her site it's pretty good for one there's a real scroll bar and everything has a purpose, she even has a price list which is nice. I hate going to sites and they want you to email some sales guy to get the price. I get why businesses do that but still, nice.

Another honest reviewer is this Russian design outfit. I am again shocked the desktop view actually works and there's even a scroll bar! His site does only what it needs to do which is show off skill and present contacts to harvest leads.

Design examples II

Let's look at the CSS Design Awards.

Some of these sites are foolishly using TrustPilot widgets when your policy should be to ignore that site completely. Let's imagine I run a review site. I add your service without you knowing then I can leave some bad reviews even though I've never used your service. I contact you and say 'hey there's some bad reviews here of your business'. You want to comment on these reviews to point out they are fake but to do so you have to agree to let me use all your logos and branding before you can comment. Now I have an official looking page with all your graphics on it licensed for free, forever.

The purpose of this website is a portfolio for a photography biz and some agency created this website.

The intro finally has a real purpose! It sets up the portfolio and displays that before anything else. The desktop view cookie and privacy box is non-intrusive and well designed instead of those awful ones that take up half the screen. The scroll concept on the mobile view is well done and the desktop view has a real scroll bar. When you click on a portfolio entry the concept they use to see more photos tells you the amount which was taught in the MIT course about adding information bits to the design. Everything here has a clear purpose. The contact form is actually useful. The animations are useful and not overused, finally a good website. The agency that designed this website is here. These are the people you want to freelance for and learn everything they know.

These website award sites are filled with freelancers and agencies most of them front end designers. You know how to properly design software and can build it from scratch. They can make it come to life with css and animations. Why not contact some of these people and show them your software skills portfolio if you need inexpensive or free hobby hosting then look at the deployments for Neon which is a free tier serverless PostgreSQL dbms. If you need a domain try Porkbun.

Marketplace case study

Let's see what's going on here at the Shopify app marketplace. Some of these links may die use the wayback machine/internet archive.

Forms are a major problem as Shopify refuses to fix their own form offerings so you have to pay some 3rd party. There is a total shit show of inept offerings except for Hulk Form Builder who is the most popular it seems. No surprise why they are popular they offer a premium onboarding service to install the form by booking a phone call.

Looking through the Form Builder site they are owned by someone else. We found the final boss of the monopoly on shopify apps it's this company which offers to buy your app. You could make a startup by finding an app/ability they don't have listed here and monopolizing that niche to get them to buy it. They have some affiliate program where developers can tout any app they own and make shill bux too.

Let's review this app it's recent so we can judge how to start one of these. It's concept is to add a progress bar for free shipping/rewards a classic sales driving tactic. Looking at the reviews of course the biggest problem once again is not offering to onboard customers with custom installation. One review said this app causes a lot of debug spam and breaks some product pages and is a good reminder of effects your software can have that are unintended. A review from a store selling stuffed animals is using it and laments the app is too slow to reflect changes though it seems the guy developing the app manually fixed the problem which again would have been solved by offering installation. Looking at their shopping cart to see the progress bar in action I found an issue there should be some kind of threshold/rounding config available for example at the time of this writing if you buy 2 of her stuffed piggu animu you are $0.02 short from getting free shipping which is sure to induce rage for all customers.

Maybe the progress bar concept for free shipping shouldn't be in currency but space available in the package instead. For her store she could have a picture of an empty box in the checkout then when a stuffed crab is added to the cart it's placed in the box showing extra room available. Buy more and the box is full with free shipping unlocked. Internally it can be a numerical threshold but externally a better concept instead of 'sorry you are 2 cents short for free shipping'.

This is why we learned conceptual design from MIT.

Marketplace strategy

Let's say we want to sell an app using the shopify marketplace. With AI anyone can do this.

The easiest way to start would be to simply talk (see startups below) to every existing shopify store owner you can find and learn about their business to discover ways software can help them.

If whatever you decide to make has competitors then look at their pricing schemes. You don't want to undercut their pricing you want to match their most expensive pricing but justify it through superior product and service. We are in the B2B software game it's not like selling shoes where you can just discount the price because these companies will pay premium if you offer a premium solution.

While you are looking at competitors go through their reviews writing down what every wished for feature was. You don't implement all these features you do conceptual design which is to arrange all the similar features together and think of some concept that combines the majority of them. Write down everything they dislike too which is going to be many complaints about install glitches that require manual intervention and imprecise estimates for support replies.

Whatever you make it seems to be absolutely critical to offer a booked phone call where you can fully integrate your app with their design because if you don't it will become a support problem anyway. If you are talking to the owner which you likely will then you have yet another opportunity to ask them about their business. You don't want to rush through the install panicking that's not how B2B works you build relationships which pay off over time. Where I work there is a fleet of account executives and their sole job is to work directly with the buyers of our specialty trading software and maintain a relationship.

Another way of deciding what to make is use the same analysis we learned in the MIT course: take all the available apps in the marketplace and arrange them by concept seeing if any of them have overlapping purposes. There's one app you can combine together and your customers save money only needing to buy one instead of two apps.

Startups

Here's Peter Thiel giving an old but very good crash course in startups to Stanford students. Start small and monopolize something small. Here's an old article of Sam Altman of Open AI (now a monopoly too) talking about how Y Combinator's success is due to it being (surprise) a monopoly.

As a founder all you do is talk to people because you'll be able to spot opportunities where software is useful. In that video he suggests never asking them 'what features do you want' instead asking them everything about their job and you as the startup founder can figure out what the features need to be.

Getting good at writing software

Here is some recent advice from antirez a hacker from Sicily who created Redis (an OSS disaster, see licenses below) on how you get good at building software:

  • 1. Learn algorithms, buy some book and start reading.
  • 2. Learn theory of neural networks, use the Chollet book to develop some knowledge and intuition.
  • 3. Write many small "pet" programs implementing basic stuff: implement a small database, a small programming language interpreter, a small editor, a small neural network, … Each time try to apply good design.
  • 4. Embrace simplicity in everything you write, don't make things more complex than needed.
  • 5. Read good quality code, especially read open source code which is at a degree of complexity that makes reading valuable. Don't read Kubernets… or PostgreSQL perhaps. Learn more self-contained code bases.
  • 6. Participate to some OSS project.
  • 7. Start some side-project and put it on GitHub, where you are the main designer. Develop something that you need. A library, or a small utility, something that you really enojoy doing. Do it at a quality level that makes you happy. Never regret pushing code on GitHub if you feel that for the level you are right now it is appropriate.
  • 8. Don't give a fck about what other programmers think of your work, if you did it at the max level of what you can (currently) do. Anyway most programs on the Internet suck, including the ones of people feeling very competent.

Here is from advice from Citadel for developers on how to 'maximize their effectiveness':

  • Exceptional subject-matter expertise in a specific field like database engineering can give you a competitive edge in a crowded field.

If you want the so-called soft skills that developers should have simply read any of those meme books by Jocko Willink about extreme ownership. Yes that sounds like a ridiculous idea however there is nothing worse than having a manager or coworker who blames everyone else. I had one that would never let you get a word in and talk over you coming up with a thousand excuses per second whenever some issue was raised. Everyone hated him.

Licenses

Antirez sold all rights to the Redis software years ago and that new company went private in 2024 taking control over all the libraries and clients to lease it to Microsoft or something. This pulled the rug out from all the contributors who went ballistic about it but the license permitted this to happen.

OpenBSD has a good breakdown of licenses here where they promote the use of the ISC license which best suits their project. They note there is even problems with a public domain license. Most open source projects have some kind of dual license like Rust with their MIT and Apache licenses that protects contributors to your project from you later turning around and suing them for patent infringement. Patent trolling is rife in software for example you will never see bid/ask displayed as a single column with the two converging in prices in the middle. These are always shown as parallel columns for a good reason it's because some clown will sue you who owns a patent somehow for that convergent bid/ask design.

OpenBSD does not allow AI code into it's codebase simply because they claim that there is no copyright laws for non-human written code hence allowing slop code would be questionable if it can be 'truly free' and redistributed.

The full list of licenses you can use for an open source project are here. If you want to keep it open source forever and prevent any proprietary forks undermining your project then use the latest GNU/FSF license. An example of a proprietary fork is when Apple yoinked the Packet Filter Firewall from OpenBSD and then wrapped their proprietary license around all future enhancements which locked out the original developers.

This of course begs the question will prompts themselves now be licensed? When you download new software will you just download a bunch a prompts and run some script so AI can generate a native binary?

Should you be the first the create the prompt marketplace?

Modern hardware is trash

Today's hardware has serious problems outlined in this lecture:

CPUs

Defensive programming against the hardware doing data corruption is now a thing:

  • Adding more CPU cores is useless as the primary bottleneck is memory/storage
    • The cores themselves are broken due to 'silent data corruption' and this may be exploitable
    • Nobody knows why this is happening (high temp? silicon defects??)

DRAM

Rowhammer was originally a tactic to read/close DRAM memory repeatedly like you were pounding it with a hammer which triggered charge leakage to adjacent memory. Bits got flipped and you could exploit this. This problem has only become worse since it was discovered and now similar attacks can be done with WebGL, remote over a network, attacking a VM host and all it's guests, and the mitigations released by manufacturers so far don't work.

  • DRAM scaling can't continue due to rowhammer style attacks (memory read disturbances)
  • The more recent a DRAM chip is made the less reliable against read disturbances
    • Periodic refresh has been lowered by mfgs to avoid performance overhead and enables these attacks even more
    • First generation read disturbances could only affect adjacent n+1 or n-1 rows now can access many rows
  • DDR5 mitigations enabled new DoS attacks, performance problems
    • The mitigations don't even work as they rely on observing high row activation count but now we have low activation attacks (rowpress)
  • The latest read disturbance attacks are not even rowhammer in nature and affect different rows/cells with an unknown underlying error mechanism only physics can explain
  • Memory controllers are not intelligent and need to be rewritten from scratch (that's you writing a FPGA)
  • Network cards where direct memory access is exploited (as taught in 15-721) are open to remote memory read disturbance attacks (another FPGA you may be writing)

Flash Memory

  • The charge leaks in flash memory too as they're also now so small everything interferes
  • High retention errors even with <1 year flash memory compared to SSDs/NAND flash years ago
  • Flash memory controllers are intelligent and can remap data to prevent data degradation but very few controllers do this (yet another FPGA you'll have to write)

Algorithmic Problem Solving & Design

Algorithm design is now assisted by AI agents (skip to slide 42) though Jason Li @ CMU who now teaches their algorithm design course had a recent thesis using preconditioning and locality something no AI would come up with (yet). They are powerful tools like divide and conquer.

I am going to do this backwards. First I will do a research curriculum to motivate learning because slogging through something an AI can already do is not interesting.

Then we will take our skills to CodinGame, USACO competitions and the hardest competition of all the ICPC.

Languages

CodinGame (used in interviews by Nasdaq, Jane Street, Snowflake, many others) supports Haskell, OCaml, F#, Rust, Scala, JS/TypeScript, C#, Lua, Swift, Python, C/C++, Java, Clojure, Bash and some more. USACO options (C/C++17/Java/Python3) is explained in the general section of the guide but you can always write the solution in any language because we are given all the test inputs/outputs. ICPC use any language.

  • Lua is probably the simplest to get started since it's already used for game modding and everywhere else for wrangling configuration files.
  • Python resources are everywhere like this CMU 15-112 schedule.
  • OCaml you can learn here or here with modified libraries.
  • Haskell is introduced here with category theory.
  • To learn C there is Modern C and IYMLC.
    • Rainboy (Rain Jiang) solves USACO problems in GNU C 11 and everyone seethes about this
  • To learn C++20/23 try the CMU bootcamp or NVIDIA slides.
  • To learn Rust try the Brown University experimental Rust book.
  • TypeScript software engineering is taught by MIT here.
    • Vast majority of agentic code is in TS (for now)
    • Java versions here.

There is an online IDE to submit solutions in C++/Java/Python3 or you can paste in source code to the judge on the contest pages.

Parity

CMU's 2021 Discrete Math (combinatorics) course is fully open and we may as well take some of it while we complete USACO. Poh-Shen Loh was the US math olympiad coach and won two gold medals.

WHY ARE WE TAKING THIS in the age of AI? Focuses your mind, promotes a new way of thinking. AI knows this but if you do too then you can take advantage and work together.

Discrete Math lecture 1 parity, if order matters you can always reorder something, how to guess and try different cases, how to reduce the problem to something easier, recursion to generate the next solution.

Rearranging

This is similar to the bronze problems in USACO.

Discrete Math lecture 2 skip to @49:17 number of paths. You will always need 4 L's and 4 R's to take a path descending that diamond graph no matter what direction you choose. Forming an instruction set of LRRLLRRL or a list of size 8 elements how many ways can we rearrange? Choose 4 of those spots to be L's. We saw in parity how to do this so the first L there is 8 choices L……. or .L…… or ..L….. etc. Second spot is one less choice since we already chose a spot previously. By the fourth spot we run out of L's and get 8x7x6x5. Now divide by the overcounting factor which is taught in the next lecture. Overcounting means you choose L.. then L.L and that's the same as ..L then choosing L.L We counted one rearrangement twice. Since we have 4 L's we will overcount 4! times because how many times can we rearrange 4 L's in 4 of the same spots it's 4x3x2x1 or 4! ways to overcount.

Discrete Math lecture 3 @ 11:43 consider AAABBCC to be 3 of type A, 2 of type B and 2 of type C but he's using temporary values to make them distinct however the types are the same. Another way to say this is how many ways can you reorder 2 Int's and a String. If we give them temporary values like 12s then 21s is the same rearrangement because they're both (Int)(Int)(String).

Dynamic programming solution to the hole in the graph problem from lecture 2 is introduced here. It simply means reusing a previous computation to get the next computation so the concept of memoization is the exact same just DP is an imperative programming technique and memoization is the functional programming variant.


Home