81 karma · joined September 14, 2012
Today, I'm an applied-AI engineer, which increasingly means managing swarms of AI agents instead of writing every line of code myself. I'm also a four-time CTO, lifelong electronics tinkerer, and someone who enjoys finding elegant solutions to difficult engineering problems.
My background spans Ruby, PostgreSQL, Python, React, TypeScript, distributed systems, AWS/GCP, Terraform, observability, and performance engineering.
I'm particularly interested in failure modes, reliability, and making complex systems simpler without pretending the complexity doesn't exist.
These days, I'm building AI-first applications, developer tools, and the occasional hardware project.
Open source: https://github.com/kigster
Current projects: - https://openlanes.ai - https://qualified.at - https://equilibris.ai - https://makeabox.io
Writing and talks: https://kig.re/speaking
Blog: https://kig.re
Consulting: https://reinvent.one
X: https://x.com/kig
Thanks for stopping by!
The performance problems were 99% invalid database usage, poor or overly aggressive pre-emptive indexing, or bad active record usage.
Developers lacked education in basic database design, and given rails made it do easy, yes that resulted in a lot of slow code and overloaded RDS instances.
But it was entirely possible to build highly scaling rails apps back in 2012. When I ran Wanelo's engineering team we squeezed 300K+ rpm's on a relatively small cloud foot print. It has since been migrated to Heroku.
I don't know, but I certainly hope so. I started building web apps in Rails in 2007 and rode the wave till 2020, when I joined a company that ran on TypeScript, Go, and Haskell. I've since left said company.
There are several things that Rails got exceptionally "right":
- code generation that included test templates
- active record was much simpler than Hibernate
- a super dense and all powerful meta-programming enabled language behind the scenes (ruby is arguably the most compact and human readable language out there).
- rubygems was always robust, but is now mostly complete packaging platform.
But most importantly IMHO people back in 2007 started launching super hot looking Ajaxy apps on Rails, that turned up the heat and drew attention to Rails. There was a new coolness about how Basecamp worked, and early Twitter. It was all self updating and magical. And that's how the web app development should be.
Today, nodejs is no match in productivity or testing practices, TypeScript is a huge mess, and the cost is going to surface in the coming years as todays apps shift into maintenance and less development.
Once we have enough apps in maintenance mode in all four: ruby, Django, Go, and Larvel we'll see who wins the long term game.
Devs always want to work on the new shiny tech whether or not it's the best choice. This is because few do the exercise of identifying what they are optimizing for: dev speed, app reliability, or massive scale.
I am actually going back to the Rails/Ruby ecosystem, and will report here when I find a good spot.
How can we make Ruby come back? By introducing it into the stacks of companies as CLI tools, or mini services. I maintain ruby rules for Bazel build system, for instance, and my hope is that it will help support Ruby as a first class citizen within corp monorepos.
I hit a wall while building a project with more than ten libraries, and so having to keep track of them all by hand, download and manually rename the folders, has been a nightmare.
Arli solves that by reading an Aifile - a yaml file that can see supplied with any project. Arli then installs all libs in the proper locations, while also figuring out the name of the library folder.
wd add proj # add current directory as a warp point
cd ~/
wd proj # jumps to proj
wd list # lists all points
wd rm proj # removes projAs a non-native English speaker differentiating between "its" and "it's" has been a bit of a challenge, but I do appreciate whenever an error is pointed out as it allows me to correct it now and be more attentive in the future.
I haven't actually gotten into 3D printing, and I find laser-cutting much less intimidating, because you are dealing with 2D at all times. Of course it has it's limitations, but you can build very complex 3D structures out of 2D cut-out objects.
One big wish I have is to find a way to write automated tests for my Arduino libraries. Or even for pure C/C++ classes used by my libraries, but I havent' yet invested into setting up Eclipse to build/run tests with an Arduino type project. Curious to know if anyone has a solution to automated testing of Arduino and pure C/C++ libs that are used by their Arduino code?
Regarding the other remark below – nobody is doing it wrong as long as they are doing it. The post is a personal opinion, and should be taken as such. If Qt Creator works better for you, great! Write a blog post about it ;)