Hello, to the maybe 5 people reading this! This blog has started to gather dust from the lack of usage. In all the years I've had this domain, I've written fewer than 30 blog posts. So, I decided that by logging what I've done been doing (roughly every month), not only can I hold myself accountable to consistently create content, but I can also make sure that I actually finish projects I start. So, without further ado, here's what's new...

What's Dead

Say hello (or goodbye?) to Reel.
  • Reel - a new social media platform, probably most similar to Twitter or Instagram. The main functionality is done, so maybe I'll bring it back if one of the major apps starts to die out. Without traction, such a project is doomed to fail.
  • Box (tentative title) - A tool (think Laravel Forge) for easier deployments of Dart language server-side applications. I got pretty far along the way, but eventually realized that the demand simply wasn't there. This was also around the point when I decided to never start a large-scale project again without thoroughly evaluating whether it would either make me money, help me network/grow my career, or simply fuel my passion for computing...
  • Cascada - A dynamic language for shell scripting. It was inspired by OCaml to a degree. One of the goals was to wrap every executable in the PATH in a function, so you could trivially write shell scripts with more advanced logic. But why should this exist, when there's already Bash, zsh, fish, etc.? The manda language idea was more appealing to me (see the final section). https://github.com/thosakwe/cascada

What's Kinda-Dead-Might-Revive-It-Later

A progress bar in flurses.
  • flurses - Began as a Flutter-like library for building terminal apps in Dart. I eventually restarted it, deciding to first add an ncurses-style base library, upon which to build flurses. It's surely a cool experiment, but realistically, what might come of it besides a few Github stars? https://github.com/thosakwe/flurses
  • stml ("Simple Text Markup Language") - An s-expression-based format for describing text documents. The goal was a format so simple, you could not only send multiple documents in responses, but also render it in a terminal. Again, a cool idea, but for what purpose? https://github.com/thosakwe/stml
  • av.dart - A pure Dart library for working with audio and video formats. I was making some headway for a few days, but ultimately decided that it simply wasn't worth the massive amount of work it would become, especially since nobody would really be using it. Besides, why reinvent the wheel? https://github.com/thosakwe/av.dart

What' I'm Actively Working On

Hello, Manda! 🐍
  • Internship season: After a lot of rejections, I made it through to internship interviews at both Microsoft and Google. There's a job fair on campus this coming week, so hopefully I can get a chance at a few other places. That being said, you'd better believe that I have a lot of Cracking the Coding Interview, LeetCode, and general interview preparations coming up. This has been my dream for several years, and now that I'm so close, I'd be a fool to get complacent, and let the opportunity slip my grasp.
  • shigaraki - A npm malware that slowly decays (replaces random text with bogus data) all the files in your project, every time you run an npm script. It's done, so I'm technically not working on it anymore. It was a fun proof-of-concept. I highly doubt anyone would be naive enough to use this, but in case they do, it respects a TOMURA_DUMP environment variable, in which case you can easily detect it. https://github.com/thosakwe/shigaraki
  • manda - A gradually-typed language designed to replace Python. Is it really designed to replace anything? The world may never know. I'm 338 Git commits in, and have worked on this project for the past 11 straight days. Currently, it's on private, because I have a hunch that it might encourage me to actually finish it. It's a just-in-time compiled language, courtesy of GNU LibJIT, and everything is an expression, so the compiler can do a lot of (deterministic?) type inferencing right away, even when types aren't provided. My goal is for the language to have a very light core, whose only purpose is to maximize performance of using the core types and user-defined classes. By the time I finally open it up to the world, there'll be a wealth of libraries (because I've learned that's important), a nice website, a good package manager, and an easy-to-use C API, for adding functionality to the language. Here's a contrived example:
import "@manda/json" as Json

fn main {
  var myData = {first: "Tobe", last: "Osakwe"}
  print(Json.serialize(myData))
}

If everything goes as planned, then next month, when I post another "What's New," I'll still be working on this same project, and will have made a lot more progress. I can see a lot of potential here, and writing a compiler/language has been a very long term goal of mine.

Conclusion

Thanks for reading! Cross your fingers, and pray that I follow through, and write another such post next month.

Let's Connect: