MVP Journey - AndrΓ© Baltazar

Building an MVP every week

πŸ“ Daily Log – No Entry

Nothing to log. Another day without any development. :(

πŸ“ Daily Log – Long Day

It has been quite a long day today. I worked a lot for my job. I really want to get back to this journey, but other things get in the way. Need to be more strict with everything.

Want to try to make something new. Want to build it very in public. Like a public backlog as I'm working on it. Radical transparency.

πŸ“ Daily Log – Life Changes

When I travel, specially like this there is always a lot of things going on each day, which make it very complicated to keep a strict schedule like this. I didn't have time until now to properly sit down and do many things that I would enjoy doing.

The last post that I wrote on the airplane, was only posted today as well, because I've been unable to actually deploy the posts. It's been quite life changing. This is a very different environment than what I'm used to.

I've installed my tools in the Steam Deck now, and can do pretty much everything I was able to do before. They only thing that is not setup is git commit signing but that's not really a priority.

What matters is that I can develop again.

Today has been a crazy day. I've been up since 4:40, and will continue to be like this on the work days, so I can keep working the same hours as back home. It is going to be quite interesting couple of weeks keeping this schedule. Let's see what happens to my enegy levels.

πŸ“ Daily Log – Travel Reflections

Today has been an amazing and crazy day. I started work early to be able to fly in the afternoon. But yesterday, since I arrived late home I didn't manage to setup the Telegram Tunnel. I tried to do it on the airport as the plane was leaving, but failed because I couldn't install telegram-cli on my Steam Deck, since snap wasn't readily available, and after I installed snap it was giving me some target error. Still I'm writting this from the airplane, and will publish as soon as I get down. Or maybe tomorrow. I can't recall if I missed yesterdays log post of not. This entry might be delayed and backdated to 24 June.

This is actually an amazing setup. Here is a photo as I write this in VS Code.

Steam Deck Airplane Setup
My setup on the airplane writing this post.

I'm going to rock it for a few weeks and see what somes of it. I need to install quite a few things still, and make this setup feel like my computer at home. It's a bit different. Specially this distributino is different from what I use at home. I don't usually use flatpaks, and this doesn't have apt for some reason, so I might need to install that if possible.

Having the time to write long form is amazing. My latest posts have all been very rushed, and without anything really cool behind them. I want to do it, but it has become inscreasingly difficult to do that.

The other week, I was watching a Twitch streamer that mentioned something interesting about people that have many interests. I think I'm one of those people, but sometimes it becomes increasingly difficult to keep up with stuff that I want to work on, because theres so many different things at the same time that it turns into the proverb of the donkey that dies in the middle because he can't choose between the hay or the water.

That proverb hits home, when I think about all the attempts that I made at different things but never landed anything great yet. There's quite a few different problems with it. It starts with my inability to distribute stuff. I think when I was younger and I participated in different forums it was much easier. I published quite a few silly things. From simple problems to lock your files with encryption (like a safe), to attempts at building a personal assistant controlled by voice. This was back when Microsoft had a speech recognition SDK that was available to use with NET framework '1.something' (iirc).

It has been an amazing journey so far in terms of things that I've learned, I want the next chapters to be just as amazing, and I want to write them possibly with the ability to work for my own (producing products that I sell to other people), which has been the dream since the beginning. I have big dreams in life, and this is the start of those. Let's see where this life takes us.

(this post was only actually put up on 27 june)

πŸ“ Daily Log – Telegram Tunnel

If you have travelled on some airline that offers free messaging on board. You probably were wishing for more access (or maybe not if you want to be disconnected). But, anyways, I got to thinking a few weeks ago, why not build a way into Telegram which would be able to use Telegram as a tunnel for other internet traffic.

When I landed I discovered that it actually exists. There is a project on GitHub that does IP over Telegram. I was thinking more in line of WireGuard over Telegram for my phone, but this project was great to see something like this working.

The only issue about it was that it uses telegram-cli to connect on both ends. Since I don't have accounts for both ends, I thought I could use a bot for the server end. So I implemented that that yesterday/today, but haven't fully tested end-to-end. The messages seem to work correctly. I just need to fully test it. Something for later today/tomorrow. Will keep you posted.

πŸ“ Daily Log – Minimal Work

Today I did minimal work on this. I'm starting a new component today. Just starting right now, because I spent quite a lot of time on my main job today, so I'm tired and just need to rest.

Tomorrow I'm going to try to deploy for the first time from my Steam Deck as a programming machine. Let's see how it goes.

πŸ“ Daily Log – Mithril.JS

I started a new project for the page editor of SubNot. I'm building it as a single page application, with Mithril.js, which is a simple JavaScript library for these kinds of apps. It is really nifty, very simple to use, but quite powerful.

I'm just experimenting around. I'm quite tired of SubNot :( I spent quite a lot of time on it, but I no longer believe it can solve the problem in its current form. I mean it works for some things, but it needs to be more customizable. I need to add that customization.

It's still going to be a long journey ahead.

πŸ“ Daily Log – Being Real

I haven't done anything in the previous days. It has been hard, and I didn't really feel like doing much work. Since I've been working full time, I've got a lot slower on this journey.

In the next days and weeks it's even going to be more chaotic. I don't know what will be done in the next days. I really want to continue this, but it's getting harder.

πŸ“ Daily Log – Another Rest Day

Did a lot of gaming, but it was rest from projects. I want to go revisit Kicad.

πŸ“ Daily Log – Gaming

Gaming day.

πŸ“ Daily Log – Compiler/Rest

Today it was basically a rest day. I did a little bit of code for the compiler, but didn't do really anything much. It was almost nothing.

πŸ“ Daily Log – Split Keyboard Kicad

Instead of software, I worked on hardware today. Did a deep dive on Kicad again, and implemented the whole left side of the Keyboard.

This is heavily inspired in Tron but I removed the encoders, and added another row of keys.

I had to find the symbols and footprints on the internet for the different components, but they are mostly the same.

Split Keyboard Kicad
Split Keyboard Kicad rats nest.

It has been a great learning experience, and there is so much more to learn. I don't know how I'm going to handle routing this rats nest... but that is for later I guess. I think I might give it a stab today, but I need to position the components correctly.

Need to check which Switches I'm going to use as well, to understand exactly the dimensions of everything.

πŸ“ Daily Log – Down Bad NFT

It's live! I've built an NFT project yesterday. From contract to deployment this morning. It took a lot of time, but it was out.

I learned a little bit of React along the way. Here is the project:

Down Bad NFT project screenshot
Down Bad NFT minting.

It is available at https://downbad.art. I purchased a domain name for it, and deployed the contract twice, which made this project quite expensive.

I was hoping to offset some of these costs with a few mints, but I didn't get any. It's really hard for me to market stuff. I'm doing it wrong probably, but I've been grinding hard to make something work. I don't know what to do.

This journey has been amazing. I've been doing this for 2 and a half months, but it's also very demanding. It's crazy to write a blog post every day. Even a very simple one.

I think I need to take a step back from writing these, but I'm afraid I will also stop creating projects. I've quite tired for the past few weeks. Let's see what happens. Tomorrow will be another rough day, but I want to push through.

πŸ“ Daily Log – Email Provider

This blog post is actually very late today, because I'm ready to deploy a new project that I worked on today.

It will be revealed in tomorrow's log, but today I want to share that I also worked on the Email Provider.

It was an amazing productive day.

SubNot test email
Test email sent by SubNot notification.

SubNot is now able to send notification emails. It's still not live, because I need to fix a lot of things, and make the pages for managing/unsubscribing, but it's getting there.

In relation to the new project. It is actually very time sensitive, otherwise I pay a lot of money. I'm deploying a contract to Ethereum, and it is very expensive right now. Don't want to pay 500 EUR for this joke, but I might end up doing it...

πŸ“ Daily Log – Deno Experiment

Today I experimented with Deno, the Node.js alternative.

Deno code with entities
Deno code with entities that expose pages.

It was quite fun. I was attempting to do an entity based framework that allows to expose pages almost automatically, like No Code. The idea is that these entities are also persisted in the database. For now, the only thing implemented is exposing pages, but I think I want to proceed with the other features, but let's see.

I didn't do anything on SubNot :( I wanted to do the email provider, but didn't. I'm kinda tired of it.

πŸ“ Daily Log – Mixed Bag

Worked on quite a few different things today. I can't decide what to do, so I just worked on a bunch of things.

I actually stayed really late (the sun was rising again) working on the Keyboard in KiCad. Looking at switches, USB hub schematics, and a bunch of other different things. The more I proceed into this project the more I think of how many things I'm always juggling.

On SubNot I worked on integrating webpack + typescript to build the button.js file. I've decided that I don't want to make it just really simple with vanilla js, because it is great the size, but not great to maintain. So I've enlisted the help of Typescript. For now, I just added those configs, and nothing much else.

Finally, I worked on my compiler. Just hacking stuff on it to try to get to the interesting parts. I figured out that I hate writing the code for lexing, but enjoy the parts where the machine code is being generated. It poses a challenge though, because I was writing the parser and lexer from scratch, and lexing with regex is a nightmare. I don't know what to make of it. I think I need to go do some reading about it.

πŸ“ Daily Log – Split Keyboard

This is what I've been working on this Friday.

Layout of a Colemak split keyboard
Work in progress of my Split Keyboard with Colemak Layout

It is just a layout of a split keyboard. It uses the Colemak layout for the key placements, and some additional keys that I've been mapping.

I've been researching keyboards for a while, more specifically split keyboards. Looking at schematics, and different designs. It's quite an interesting topic, and I want to build my own.

The process started by making squares on a piece of paper that felt natural for each finger, starting from the home row, and working out from there. Then working on the keys for the thumb.

The small keys are just the placeholders for keys that are meant to be on the sides. I want to have a hand rest on each of the hands, and these keys will be mounted sideways on that.

This has been quite time-consuming, but at the same time, quite a fun thing to do. Seeing all the different designs and learning a lot more about hardware.

Haven't touched SubNot today. Will do something new tomorrow either for SubNot or a different project.

πŸ“ Daily Log – Abstractions

Just worked on abstracting a lot of things for the connections, and the different channels that the buttons support. Now all the information is mostly central to a few files, and it is easier to implement new connections.

This is kinda of an optimization, but also allows me to be more efficient adding channels moving forward. I've been postponing adding them, but I want to add at least one this weekend. Let's see. I also want to experiment with some new technology, and maybe dedicate some time to hardware creation.

πŸ“ Daily Log – MVPLOG Updates

Worked on updating this very website today. The main page was getting out of hand, so now there's only 10 posts on the main page. All other posts can be seen on the archive page, and each archive page will have the full months worth of posts. It's simple and effective.

That was it for today. As I started this actually quite late, because I went to see the Dr Strange movie before it gets out of cinema. It was great.

Tomorrow I'm hopefully back to grind on SubNot.

πŸ“ Daily Log – New Projects

I found myself thinking about new projects yesterday. Thinking about the progress I've been making on SubNot each day, specially now that I have a full-time job. And thinking if I should make a new project. Work in parallel with SubNot, so if I'm bored from one, I can switch to the other and not force myself to work.

It has its benefits, but also can be challenging. I'm going to have more work to do, and even less time, but I feel like it's another shot at success. Since I've been trying to live by "You can fail at what you don't want, so you might as well take a chance at doing what you love", I think it embodies it completely. If I'm bored and the project might fail, I might as well do something else. Not that I don't want to do SubNot, but I want to make it the best version possible, and it is going very slowly in that direction.

I'm going to attempt to do 2 days a week, where I focus on a different project. Just completely new thing. While working on SubNot the rest of the days. This might change, but that's the plan right now.

Today I ended up not doing anything actually, because I'm traveling, and tomorrow I'm unsure as well. I'm going to try and do something. See you tomorrow.

πŸ“ Daily Log – ORM Failures

My experience with ORM always goes bad when I start to get into more advanced features. Things start to break, and restrictions start to show up. I'm using Doctrine ORM to handle the entities on SubNot. In the Connections part, it uses entity inheritance, and things started to get frustrating and confusing.

OneToMany mappings were working when the table had inheritance which is a plus. But my PTSD with other ORMs started to show up, when today I spent a lot of time debugging a problem which turned out to be a stupid mistake on another part of the code. The buttons what are connected to a connection were not showing up correctly. At first, I thought it was just an ORM bug, I had just moved the inheritance type yesterday, but it turned out that in the end I hadn't actually many any connection, because the part that sets connections (specially the email provider connections) was broken. I should have checked the database first. What a fail.

After this I didn't do much. I just fixed setting up email provider connections, and that was it for today.

πŸ“ Daily Log – Little Progress

Little progress was made. I made a base for the page to edit connections as well as starting to expose email as an option to subscribe, but it's not finished yet.

It's little progress, but it's going. Tomorrow is another day.

πŸ“ Daily Log – Great Step

Actually made a great step towards the connections problem. It is mostly working and even deployed. The edit page is currently the only page that is not standard, but as I only have one provider live, this is not an issue.

Here is a quick video of the creation of new connections.

Showing off creation of different connections in a standard way.

It was basically this that I worked on today. I feel like sometimes is just too little progress for a day, and that I should be more lean. But at this point I just want to add new features, and this is a great support for it.

Thinking if I should move on to a different project and idea. Too many SHOULDs.

πŸ“ Daily Log – Zero Progress

Attempted to standardise connections. Could not figure out a way to make it easily. So I'm going to start over tomorrow.

I want to have a single way to manage all these.

We shall see how it goes.

πŸ“ Daily Log – SubNot: Connections

Started some work towards making connections with other services use a common interface. This centralizes all these connections and makes it easier to find and edit them.

List of connections with connections of different type
List of connections available to be used in the buttons.

Moving slower now, but it is what it is. Want to start adding new notification channels soon. Maybe even do Email channel tomorrow.

πŸ“ Daily Log – Quick Detour

Today marks 2 months since the start, but I have little to show for it. I've made worked on 1 project, made 1 game for Ludum Dare, and a bunch of other small things.

Instead of working on SubNot today, I decided to make a small script to transform videos, as soon as they are captured, into videos with a nice background and rounded borders. It turned out quite cool.

Automatically transform capture videos to have nice background and rounded borders.

I have a full rant to do about Twitter and impressions, but I don't have the energy to do it today. It is a mess.

Hopefully I return to SubNot tomorrow.