Two quick notes:
The comment section on this post is open. Share your thoughts!
To get on the paid subscriber Signal group, email me at coffeemug@gmail.com. (This will soon move to Myrme)
Last week I spent every waking moment coding Myrme. I haven’t been this consumed by flow in years. I even thought I permanently lost that ability. But, *does prayer dance*, that turned out to be false. I could never order myself to get into the state of flow. Like falling in love or falling in general, it’s something that happens to you rather than something you decide to do. A mysterious force either takes you or doesn’t. Last week it did.
A peculiar aspect of my biology is that when I am in this state I can work ~20 hours every day non-stop for a week, catch up on sleep on Sunday, and repeat. I don’t get tired from day to day— I get more energy, but I do watch my IQ decline linearly through the week. By Saturday I can’t do basic arithmetic, but I maintain full ability to do mindless mechanical tasks— something modern software development has plenty. I can work like this for about six weeks. After that I need a break. This was week one.
I built and deployed a mobile app that has enough features to do basic communication, and invited five users. Everything works! At an early stage the annoyances in user experience are painfully obvious, so I have plenty of basic work for the next week or two. After that there will be enough meat on the app’s bones to get to the interesting part— conceptual experimentation. For now I’m building a toy castle. Soon I’ll be moving around its domes and reshaping the halls to make it a place people want to hang out.
I’ve always been a low level programmer. Learning how to build mobile apps and stitching together cloud services has been interesting. The programming is trivial, but the stitching is hard. The limiting factor is missing or incorrect documentation and obscure error message. If a cloud service misbehaves and there isn’t a StackOverflow answer for the issue, you’re on your own. Sometimes getting things to work feels like summoning a genie by uttering incantations from obscure rune books with half-torn pages. Every hour you end up going on a side quest to fix an obscure error message from Google Cloud.
One point in favor of the ancient genie is that he’s remarkably reliable and consistent once you do get him to cooperate. This is what most of the week has been about. I’ve gotten a lot of infrastructure working— data storage, cloud functions, CI/CD, messaging, various peculiarities of React Native, deployment, the insane bureaucracy of the App Stores (though this part is ongoing), and dozens of other things I’m forgetting. I think now that it’s all running, I can develop even faster.
A big failure mode of new social networks has been to start building on top of decentralized or federated infrastructure. So far it turned out not to have been a sufficient differentiator in itself, and building decentralized technology sucks up all the resources and slows down development. For Myrme I'm doing the opposite— using whichever tools allow fastest development and iteration of the user experience. Once that works, I plan to incrementally shrink the centralized bits and rebuild them on top of decentralized infrastructure (which will either exist at that point, or it will need to be built be us).
In a month or two I'll take a short break and spend it learning about advances in decentralized infrastructure. I've read the bitcoin paper, played with the IPFS client, bought ethereum on Coinbase, and of course used BitTorrent and email. But I have no experience with any of these technologies as a builder. I'm looking forward to doing the obvious things-- learning Solidity, building a smart contract, writing a toy client that speaks the BitTorrent protocol. Is there anything I should be doing that I'm not thinking about?
My immediate priority for the next two weeks is to manually keep adding people to Myrme and fix obvious annoyances that make communication difficult. After that I want to pause and think about the exact value proposition to new users that will enable feedback loops, active usage and growth. I have a lot of ideas on this, but nothing to share yet. Stay tuned!
This week I haven't done anything else, so I don’t have anything more to report. As I said above, the comment section is open. Post your thoughts, and drop me a line to get on the paid group. Talk soon!
Myrmecology is the study of ants which I think is coincidentally fitting for a social network
When you get around to messing with smart contracts, I highly recommend checking out the Pact smart contract language (https://github.com/kadena-io/pact). It's based on lisp, is more expressive than solidity, and is maintained by an incredible engineering team (I have no affiliation with them btw). I've messed around with a few other "smart contract languages" as well, and Pact has been by far my best experience. That being said, if the primary goal in learning solidity is just to get a feel for smart contracts, then its probably not a terrible place to start due to the massive amounts of documentation