Categories
machine learning programming school work

No More Software Left to Write

TLDR: Traditional software engineering is becoming commoditized. Infrastructure, deployment, and development have become incredibly easy thanks to modern tools and platforms. While this means utility software (business applications) will likely be automated away, there’s still room for creativity and personal impact. Even though most software has already been written or will be handled by AI, developers should focus on writing software that matters to them or makes a difference to others, rather than waiting for even better tools.

The world of software engineering and development is changing at a breakneck pace. For someone who’s been in SWE for nearly 40 years (since I was 6 years old) and professionally for nearly 25 years (since I started getting paid for SWE work), I am concerned, but still hopeful.

What do I mean by “no more software left to write”? It means a few things:

  • Software infrastructure has become so widely developed that writing new applications today — by hand, we’ll get to AI later — is 100x easier, faster, secure and optimized than just 5 years ago, and this rate of development is constant, meaning that in 5 years it would be 100x faster / easier / better than today.
  • The amount of software written has risen dramatically. Just the sheer volume of applications and projects has increased, and within those – open-source projects that are easily copiable or integrable. It’s nearly impossible today to find an alcove of human pursuit that has been untouched by software or digitization.
  • Software (and software engineering) has become as much like LEGO as it has ever been, where engineers (builders) can piece together an application in minutes! With advanced features and production-ready backends with just lines of code.
  • Software deployment has become automated to immense degrees, where an app (web, mobile, desktop) can be packaged and served online (or dished out as download executable) with a single line of terminal. All backend services, all testing and integrations fully managed by someone else.
  • AI coding has made it so full applications can be “written” ad-hoc to the user’s needs almost instantaneously, making the need for bespoke engineering obsolete – apps can be generated on the fly for a single use! The age of disposable food containers has arrived in software engineering.
  • Hardware platforms are more generous than ever before! With memory, compute and disk capabilities that really make runtime optimization a thing of the past. You can brute force your way to software success and deal with consequences later, if at all it will become an issue.

All this means is that it has never been a better time to be a software engineer. And it has never been a worse time to start as a software engineer. If you’re starting out today, take note of the rate of change in the field – it is exponential. Tools and paradigms used today will be obsolete or woefully outdated in just 2-3 years. Except for the deepest of technologies, engineering applications has been commoditized to a pulp.

Categories
Uncategorized

What it Takes to Succeed, Today

TLDR: The tech industry is becoming a winner-takes-all arena. Traditional paths are dying, AI is eating entry-level jobs, and you have about 5-10 years to get rich or get replaced. Stop preparing, start taking.

“In tomorrow’s tech world, you’re either the one building the AI, or the one being replaced by it.”

Let’s cut straight to the chase: the odds are stacking up against junior folks trying to break into tech today:

  • Mass layoffs have frozen hiring across the industry, with even tech giants slashing thousands of positions monthly
  • AI and automation are breathing down our necks, replacing entry-level positions at an alarming rate
  • Hiring managers have become numb to “average” achievements after seeing thousands of identical bootcamp projects
  • Global talent pools have exploded with remote work and immigration, turning local competitions into worldwide battles

The tech landscape isn’t just harder – it’s transformed entirely. The bar for junior engineers and career switchers isn’t just higher; it’s in the stratosphere. We’re talking about a fundamental shift in what it means to be “qualified” for a tech role.

Is this a bad thing? On the grand scheme, probably not. It’s forcing people to be more driven, more motivated, more dedicated to succeed. The days of skating by on a basic CS degree are dead and buried. But let’s be real: not everyone with a CS degree is landing that $300K/year cash position at FAANG (e.g. Facebook, Google, Amazon, Microsoft, Apple, etc.). In fact, the vast majority have zero shot at such roles straight out of school. And I’m not talking about a small majority – we’re looking at 95%+ of graduates who won’t even get past the resume screen.

People ask me for advice on how to get ahead of these curves. Here’s the unvarnished truth, and fair warning – you’re going to dislike it.

Categories
Uncategorized

How to Love Coding

Advice for Coders starting out

I’ve been writing code for the past 36 years. That’s a lot of code. Started at 6 years old, writing BASIC on an Apple IIe that my dad brought home. Then graduated to PASCAL, Visual BASIC, MS-DOS Batch and then Borland C and Java, moved to C++, Objective-C some C# and JavaScript, Python obviously, recently TypeScript, all the while learning the secrets of Bash, ZSH and PowerShell and other more obscure languages like Go, Rust and even Elixir, LISP and Lua. I’m probably forgetting many languages and coding “situations” I went through like MSSQL/TSQL/PLSQL and HTML, CSS of their kind and several other task-specific code-ish things. This is just to explain and show to you, junior coder, that coding (for real) is a lifetime pursuit. Just like my journey, you will hear similar things from just about any other lifetime programmer that you know.

Categories
Uncategorized

How to be an Employee

Advice for People Joining the Workforce

Working in the service of something bigger than yourself is a pillar of humanity. It enabled all riches and privileges we have in our world. It is how people have built society for eons. There’s no doubt today that being employed keeps you balanced, satiated and healthy (in a way). It’s the best tool to support yourself and others. But at the same time, it takes away many of your freedoms. Before we dive in, let’s set a few things straight.

At the core of employment stands a simple principle: An employer is hiring you for value you bring to the business which is less than the compensation they pay you. Get it? At the core of employment, the principle is that someone is getting bigger value from your work than what they pay you. No business ever, if it’s a well-functioning business driven by real metrics, will pay you more than the value you bring – otherwise they will either hire someone else for less or not hire at all. If you ever own a small business, you will learn this simple principle very quickly. No business is charity.

Categories
Uncategorized

How to Succeed

Advice for young graduates

Lots of bright young folks ask me “How do I get a good job?”, “How do I achieve success in this domain?”, “What should I do next?”, usually in the applied computer science or machine learning field. So, I thought I’d dispense some advice for all future advice seekers, and I may refer some people here, so I don’t have to repeat myself all that much. Although, feel free to come up and ask a question.

Graduating, from anywhere, is daunting. Going from a well understood environment where your achievements are precisely measured, into the world where, frankly, no one cares. You have to make up your own metrics, measure yourself up to them, set goals for yourself and have a roadmap and a timeline. There’s no “graduation” from life. You may think it’s retirement, but that would not only be wrong (since there’s life after retirement) it is also immensely subjective and domain specific. So, what metric would you choose? Money in the bank? Sq. ft of your home? Number of dependents? Assets? Papers published? Books read? Miles traveled? BMI? Social subscribers? See? It’s impossible to pick. It is foolish to pick. Don’t pick. Not right now at least.

Categories
cmake code graphics gui qt Stream video

URL/API Source OBS Plugin: Fetch Live Data in your Stream

If you’re a fan of OBS (Open Broadcaster Software), you may already be familiar with its vast library of plugins that enhance its functionality and provide added features. One such plugin that I recently developed is the URL API source plugin. This plugin allows you to fetch information from a URL and display it in your OBS stream. In this blog post, we will take a closer look at the source code for this plugin and understand how it works.

Categories
code machine learning programming Stream video

CleanStream OBS Plugin: Remove Filler Words with Whisper CPP

CleanStream OBS Plugin is a powerful tool that helps clean live audio streams from unwanted words, filler words, and profanities. Created in C++, this plugin can improve the quality of live streams while saving time and effort in post-processing. In this blog post, we will take a detailed walk-through of the code for my CleanStream OBS plugin, explaining how it is built and its core functionalities.

Categories
Music Software tips video

Tutorial: M-Audio Oxygen Pro Mini with Ableton

Have you recently purchased the M Audio Oxygen Pro mini and want to figure out how to use it with Ableton Live Lite 11? If so, you’re not alone! In this blog post, we will go over some of the essential functions and tips that I have learned while working with this keyboard.

Categories
code graphics machine learning opencv opengl programming video vision

Building an OBS Background Removal Plugin: A Walkthrough

In this blog post, we will take a closer look at the development of the OBS Background Removal Plugin, discussing its key components, functionalities, and the process behind building it. The plugin was created to address the need for virtual green screen and background removal capabilities in OBS (Open Broadcaster Software), a popular live streaming and recording software. With over 500,000 downloads and ongoing contributions from various developers, the OBS Background Removal Plugin has gained significant traction in the streaming community. Whether you’re interested in understanding how this plugin works or considering building a similar plugin yourself, this walkthrough will provide valuable insights.

Categories
cloud code javascript programming Web

AWS Lambda NodeJS Telegram Bot with Typescript, Serverless and DynamoDB

Sharing a bit of experience building a telegram bot with Serverless, AWS Lambda and TypeScript.

In this tutorial, we will explore how to build a simple Telegram bot using serverless with TypeScript and AWS Lambda. We’ll leverage the power of AWS services such as API Gateway and DynamoDB to create a highly scalable and efficient bot. While there are various tutorials available online, this guide aims to provide a more comprehensive and detailed approach. So, let’s dive in!