Yeah, so I left my job today so I could finally focus on some of the ideas I've had full time. I've always thought that I would have come up with a consumer business on the side while I was working, but that hasn't panned out as I would like. Mostly just focused on work and creating my own infrastructure software and libraries.
What Have I Done Already?
Created my own RPC library supporting (a)sync client/server and pub/sub so I can communicate between applications written in them over ZeroMQ. I wanted to create a plain object and communicate it without generated boilerplate like GRPC/ProtoBuf and Capn'Proto. There aren't many uses I've seen of ZeroMQ, but it is definitely being used out there.
Created a Service Discovery application that heavily leverages ZeroMQ. It also serves as the application dictionary. Any application should be able to get the host/ports of any running services. I should be able to register and configure a service. Super interesting project for me and a serious use of Rust and RocksDB.
Created an Asset Management software because I strongly believe that any assets that are produced should be easily uploaded, tracked and deprecated. Images on local file system, S3 or other hosting service counts towards space and it is not prudent at all to not know what assets are still in use. First use of RocksDB and written in Java.
Created an Event Processing and Notification software, so time series/log streams emitted by software are checked against rules and eventually trigger notifications to email or third party. I have some really strong views on how visualizing, alerting and incident response should work and this is one part of it. Written in Java.
Did a bit of Network Engineering so I could access the private IPs of my servers from home with anymore SSH tunneling. Very useful since I've defined the software network architecture to accommodate it.
Why do all of this?
I like learning about how software works, making sure of high performance and desire a vertically integrated stack where 100% of the features are active and managed properly. Automation is a very big focus for me so I do not have to constantly maintain small issues such as server/application restarts or even recovery. I'd surely like to be notified and record such events in a low priority way. Any third party software that cannot be instrumented easily to deliver on automation will be expunged. I'm not interested in fighting small fires in the long run.
The building blocks are there in the open, so what I do is not entirely from scratch or "reinventing the wheel" as one would think. The wheel is constantly improved and reconstructed with different materials and that will continue to happen.
I have more plans for making sure my infrastructure is vertically integrated. It includes Config Provisioning and Management, Server/Hardware management, IP management, Time Series DB and Visualization. I have no plans to make my own tracing software, logging or server provisioning, so I'll use software geared for them. I don't find interest in these currently, but if they don't do what I expected properly then I will get interested.
- * Visualization should definitely be handled only in the UI. One could add some really interesting features in to Grafana to make it easier to automate dreary tasks such as creating "standard" graphs and keeping them updated. I'd still rather create my own specialized one to integrate with my TSDB.
As always I never recommend doing what I do. It is not for the faint of heart, but don't be discouraged from doing it.
What do I plan to do?
Lots of code and software, so where do I plan to go with this? Thought
about it for some time and a consumer product that provides task
management is the first focus. Looking to get a public release next
year. I'd like to see how bad task management software is for people that they are willing to defect to a better product that delivers a good feature set, high performance and delivers an interface that doesn't bombard with information. I looked at a ton of software and have to say that Monday is good task management software hands down. That is really good competition and validation that there is always going to be space for new entrants.