I never really associate any fruit with a specific brand…like I can’t name a single one. Except! POM. Every other pomegranate I’ve ever had tastes awful compared to theirs
Happy birthday Salma
I’ve always believed in the idea of calories-in/calories-out (CICO) for weight loss. But for a while I’ve felt that that it isn’t the full picture for me me. Not that I’m not able to lose weight by tracking calories, but there have been periods of time where I’ve been in the gym for an hour 4-6 days a week and I’m eating ~2000cal or less as a 5’10 200lb man and I lose weight at less than a rate of 1lb/week. Which I know inherently sounds ridiculous so I have trouble believing it myself. I wish I could say I have the data to back it up, but with calorie tracking I’ve always done it for only a short while to get the gist of what I’m eating and then stopped.
But just today I have installed https://macrofactorapp.com/ after slowly gaining ~10-15lbs over the past 9 months and am going to hold myself to tracking as diligently as possible for the next 6 months. With my newfound executive function, I’ll finally crack the code and either make a blog post titled “I was wrong about weight loss” or “CICO doesn’t work as well for me as it should”
I’ve been going to a boxing class for a few months now on and off. One thing I learned very quickly is that I am not built for fighting. Sure I think I am pretty good at the actual technique part, but when I sparred for my one and only time, I went home with a headache for the next few hours and realized there were real, unpleasant physical consequences to my choice of pastime. I thought I was some sort of tough guy, but I’ve realized that I am just not willing to pay the cost of being tough. I have too much on the line.
Thinking back to how in high school I drew out an 8 bit adder, copying what I had seen in the Code book. It’s not so complex of a thing, but I have no recollection of how it works now and I find it really impressive that I actually did that. I remember proudly showing it to different people – most memorably, we had relatively kind and open gym teachers who were very accepting so I felt like they might appreciate it… but they thought I was just drawing dicks 😔.
I bring this all up because I just saw an AND gate in a meme, and I, like my gym teachers who I thought were really dumb at the time, also thought for a moment that I was looking at a dick.
I just added images for the first time to a blog post. It feels so unnecessarily hard and clunky. To be honest, it’s made me want to reach for a CMS for the first time (also I wonder how many images I can upload to github?). I’ll hold off for now though. I’ll just keep experiencing the pain, see if there’s anything off the shelf that does what I want, and if not, I’ll build it myself :D
Finally created a script for creating new thoughts. What pushed me over the edge is wanting timezones to be included in my thoughts since I wanted to capture where/when I made it. At this point I’m thinking that I probably could put the script in my PATH to make it effortless to start writing at any time. Maybe.
Things I am currently interested in learning more about:
- Local-first development, which seems to be an evolution of me saying I wanted to learn more about CRDTs a long time ago. https://electric-sql.com/ seems like the most interesting/promising. Other tangentially related ones that have caught my eye https://www.powersync.com/ https://ditto.live/ https://zerosync.dev/. In terms of a shift of It seems like people are moving more in a “sync-engine” direction now.
- Distributed Systems e.g. consistency https://jepsen.io/consistency and whatever else. I’ve read “Designing Data-Intensive Applications” and to be honest it was a little high level for me. I want more implementation-level knowledge…or maybe I’m misremembering the book.
- Systems Programming
- Refreshing operating systems knowledge
- Learning more about profiling
- Maybe learning some Zig since people are hyping that up
To this end, I’ve also bought some books that I’m planning on reading. Although I probably should pair them with projects or something so I actually take them in. In the order I’m most interested in reading:
I spent maybe 1 hour trying to figure out how to make list bullet points play nicely with a left-floated image while adding a pic of myself to my home page. Even reading all of this insane deep dive on list markers. Until eventually I realized I could just float the image right instead of left. Claude says:
This solution elegantly sidesteps the issues you were facing with left-floating images and list formatting. It’s a great reminder that sometimes we need to step back and reconsider our initial approach to find the most effective solution.
I guess I’ve grown up because I did not do a rewrite of the static site generator in Rust like I mentioned in my previous thought…but I did not grow up so much that I still wouldn’t rewrite the whole site lol.
RIP to my pride in my first thought because my custom static site generator is dead and aria.ai is now running on top of Astro. The world has marched on, my #visionary ideas of building a site statically in a react-like manner (without loading any JS) have taken off in the mainstream, and now I don’t need to maintain my worse implementation of what Astro already is. I like the idea now also that I can take advantage of MDX and have interactive blog posts.
I’m in the publishing mindset now…or at least that’s what I tell myself. One idea that’s definitely rung true for me is Simon Wilson’s post about how AI-enhanced development allows him to be more ambitious with his projects. I particularly liked this example project of his. I probably wouldn’t have finished this rewrite without Claude, and, in general, I’ve been using AI for assisted coding almost every day. It breaks through that activation energy I need to start working on something. Even if it’s just mustering up a frustrated “no this is completely wrong! fine I’ll do it myself”
There’s some more improvements I want to make to the site. Off the top of my head I want to:
- Redesign it a bit and make it less minimalistic.
- Maybe I’ll AI generate a new logo to replace the one I had designed for $40 in college
- I’m not so self-conscious anymore so I’ll write something nice about myself on the home page
- Add the ability to have notes in the margins of the page
Obviously I also have some blog post ideas, more thoughts, and project ideas that who knows if they’ll pan out, but I’ll skip out on enumerating them here so I can save myself the future embarassment of not having done them. Or I’ll reference this thought in a victory lap when they’re completed.
Got a kick out of this image https://rakhim.org/honestly-undefined/19/ and the linked HN discussion https://news.ycombinator.com/item?id=25240939 since I fall strongly in the camp of “has a custom static site generator” and “very few blog posts.” I think inherently though I’m fine with that since I used this as a vehicle for learning rather than some sort of platform I actually want to build a following on.
At least that’s what I’m going to keep telling myself when I decide to rewrite the generator in rust LOL
Even if you’re grinding and working hard, it doesn’t mean you’re immune to complacency.
Perhaps it’s somewhat arrogant to assume that any of the ideas for side projects I’m going to come up with now are good enough to make a lasting impact outside of my own life. I shouldn’t try to force it, or let it prevent me from working on practically useless things.
The ideas behind pretty much everything I’m learning or want to learn were pioneered decades ago. I don’t know if I want to be putting in the work to actually implement those ideas or if I want to be innovating on something new. It just depends on what I value.
I never did end up making that game. I didn’t have the passion to make time for it in my day. There’s a lot of tech that, similar to games, I feel an initial impulse to learn, but they’re just too much work. This isn’t a comprehensive list, but off the top of my head
Low level programming
- SIMD
- Better understanding how linux/windows work at a low level and how to develop for them as platforms.
- Network protocol implementations e.g. how HTTP/2 works.
Devops / infra / architecture
- Terraform, docker, kubernetes, envoy / linkerd, vault, consul, etcd, and so much more.
- So many tools and buzzwords. How do people actually build things that scale. How to architect and manage SQL DBs. Authorization. Monolith vs SOA. What’s the point of Kafka lol.
Graphics
- OpenGL / Vulkan / whatever
- Physically based rendering
Parsing
- Actually writing some grammar and then a recursive descent parser for it
- Learning more about macro systems in programming languages
- Babel macros for JS
- OCaml PPXs
- Hygenic macros for Rust
and not worth another category, but I’d like to learn more about CRDTs.
I don’t have much on my mind, but felt like putting out an update anyways.
I am close to reaching my goals!!!!!!
I was wrong. As annoying as the learning curve for Unity is, rust gamedev is not close to a place where I can make something I would be proud of. My goal is to learn about game development, and to make a game. I should not conflate that goal with wanting to learn a new programming language, or with wanting to avoid the Unity editor and only writing code.
For something sold as super beginner friendly, for me, Unity was anything but that. I was wrestling with the editor for a while without having written a single line of meaningful code, which made me feel more like I was learning something like photoshop rather than making a game.
I’m going to be switching to writing my game with a more barebones approach using rust and amethyst. I’m sure at some point I will wish I had the tooling in Unity that I’m abandoning, but I think this is mostly fine since I’m making a 2D game. Moreover, this will be a good opportunity to write low-level code and finally learn rust. My first impression of the language is that it’s like C++11 and OCaml had a baby, and I like that a lot.
Programming is both an art form and a means to an end. I have always been obsessed with the former, and the latter has always been a byproduct. The existence of this site is a testament to that. The tradeoffs I have made in its design and creation were not made with my few visitors in mind, but rather were made just for myself. This form of decision-making is fine for recreation, but I feel that all programmers including myself are prone to it in more professional contexts.
Between the rust conf 2018 closing keynote, unity’s new ECS system, Mike Acton’s talk on data oriented design, just my own general interest in game programming, and comments on hacker news / reddit, ECS + DOD have become much more prominent in my life to the point where I feel compelled to try them. I think there’s a lot of lessons I could learn from the concepts and apply outside of games, and it’s an excuse to try and write a game. Right now Unity seems to be going all in on it (maybe because Acton works there now) and they have a huge ecosystem, so I’ll use it as my game engine of choice and see what ends up happening.
I just optimized my snake game a bit, and I’m very happy with the results. Previously, since the graphics were done using roughjs, on every animation frame, I was computing the handrawn boxes for every single segment of the snake’s body and the food. This was super expensive and caused frame drops when the snake grew to a reasonably large size. Now, before the game even starts, I render 50 handrawn boxes for the food and the snake’s body, and then store the pixel data. When it’s time to render the snake and food, I just generate a random index and pull the pixel data from the arrays. Thus, there’s no need for any expensive computation, and as a result, the game runs much smoother; there’s no frame drops even when the snake reaches lengths of over 100.
Growing up I was very heavy handedly taught to be humble and respectful, but I wasn’t taught to balance it out with just the right amount of shameless self-marketing and priotization of myself over others. This went hand-in-hand with also learning to understand my own worth, and asserting it when it was called into question. I think these are important lessons to learn and teach in moderation.
I spent my entire weekend playing Red Dead Redemption 2, watching anime, and watching UFC. I enjoyed my time, but more and more I question the overall value of what I choose to do with my time. It’s not just about how, instead, I could be learning something new or working out. It’s more about the fact that I think I’m in a relatively good position to create some sort of positive impact in the world, and I’m not doing that. I don’t think this decision makes me a bad or selfish person, but I still think about it a lot.
Mostly what’s stopping me is the logistical overhead. I don’t know where or how to get started. Moreover, there’s this dissonance between expressing my desire to make a positive impact, but simultaneously not really feeling like doing the hard work necessary to achieve it. It’s easier said than done essentially. I’ll see if I figure something out eventually.
Every single time I write one of these, I manually type out
new Date().toISOString()
in either the browser console or in the node REPL to
grab the current date for the post lol.
A lot of times I don’t share my opinions for fear of not having fleshed them out enough. I try to avoid making wrong assumptions, sounding pretentious, or whatever else. That’s part of the reason this section exists. I reckon basically no one will read it so I’m free to be a bit more reckless with whatever’s on my mind.
I feel like “get out of your comfort zone” doesn’t convey its message directly enough. I’d rephrase it as “Do things you don’t want to do or don’t like doing if they have direct or indirect positive outcomes”, but obviously that’s way too wordy.
Consistency is the key to success in most endeavors. After repeatedly trying to get around that fact, I’ve found that there are no shortcuts, and thus only continuous effort can get you to your goals and keep you there.
It’s hard though.
I’ve experimented a lot with compile-to-js languages, and I’ve come to the conclusion that, while they’re very cool, they’re not worth it if you’re working on something solo; I think TypeScript is more than good enough. Ideally it makes sense to use one when you have a lot of people of varying skill levels collaborating on the same large code base. In that case, the time saved in developer productivity and bug prevention might be worth the trouble of learning a new language, writing bindings, and losing out on a lot of the ecosystem.
This site is built using my own static site generator using React + Typescript + CSS-in-JS, but that all compiles to regular HTML and the only JS that runs is analytics. I like the juxtaposition between relatively advanced tools and the minimalism of the website. I could have probably used something like Gatsby, but I liked making my own generator. Also I like how customizable my own solution is. For example
// syntax highlighting like this
// is done at generation time on the
// server and I get line numbers with
// css counters targeting DOM like this
<span class="line-number">code</span>
I think that’s pretty cool.