I rewrote the three blog posts I had about my NES emulator into a single post with more depth.
It goes into some technical details of each of the CPU, graphics, and audio units. And a little reflection on using Rust.
And it has lots of gifs :)
This may be old news, but today I discovered that playing the Star Wars soundtrack on Spotify results in an interesting track progress bar... #starwars
Day 11: Robot at Work. This was a pretty easy day, and there's already tons of animations on reddit, so here's another. My part 1 animation didn't produce anything as cool as the other projects though. #adventofcode
The irony of the comments in this reddit thread is incredible.
These are definitely things almost all customers care about. Yes some of them will they take time, but your customers matter.
Are these top of the priority list for a new start-up looking to deliver an MVP? No. But over time, these are some of the UX improvements that you should be targetting. Because your customers matter.
A lot of the chapters in AoSA discuss dealing with disk IO a lot.
Optimising a web server (or any multi-threaded system) for the disks you have is crucial, and not a thing you can hand-wave and ignore, as often happens now in the containerised world as these things get abstracted away even further from the developer.
It will eventually result in performance cancer.
Reading Architecture of Open Source Applications chapter on nginx: http://aosabook.org/en/nginx.html
It references Kegel's C10K page, which, several years ago, was the spark that led to understanding many of the layers below the code I wrote, leading to a wealth of knowledge on topics like non-blocking IO with select/poll/epoll, TCP corking, TCP no delay, and fun Linux syscalls like sendfile, readv/writev, and so much more.
It was a great reference at the time.
After hacking in the code to get day 9 to work, I cleaned up my Intcode VM so that it's (hopefully) more easily extendable with new opcodes and addressing modes. And if we need to add registers, and flags, and whatever else.
I'm trying to write a plugin for a particular Java system, and holy shit I didn't realise Java was so damn horrible.
I have to implement several interfaces to do what I want to do, and I have to implement super super generic methods to satisfy these interfaces, and now I have ~30 methods in my class, of which only 1 contains any business logic that I care about.
All because Java doesn't have multiple inheritance, or allow default implementations in interfaces.
Our friend Chris finally did a write-up of his 16 core Z80 alternate future cyberdeck, and it is absolutely beyond bonkers:
Ah, I like a nice easy first day of Advent of Code. So nice collecting them stars :)
Decided that rather than restricting myself to using one language this year, I'm just gonna use whatever the hell I want each day.
Thinking about Advent of Code for this year. Still deciding whether I'll use a language I already know (Rust or Clojure), or whether I'll learn something new (Nim probably).
I'm not sure I wanna deal with the pressure of learning language stuff while also solving problems... think I'll just go with Rust.
Last year I chose to learn Scala along the way (which I promptly forgot once I got a job in Clojure), but never finished all of the puzzles. This was also partly because the puzzles were fucking hard.
Code lives here: https://github.com/ltriant/chip8
Blinky plays! And so does Pong and Tetris and Lunar Lander.
Still a few quirks to figure out, but still happy.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!