JavaScript Fatigue or My History with Web Development
I’ve only been a full time web developer for the past 5 years. It’s barely enough time to start calling myself a “senior” Software Engineer. In that short period of time the web technology stack has…
Is the keyboard faster than the mouse?
Which is faster, keyboard or mouse? A large number of programmers believe that the keyboard is faster for all (programming-related) tasks. However, there are a few widely cited webpages on AskTog which claim that Apple studies show that using the mouse is faster than using the keyboard for everything and that people…
Is Software Engineering Possible?
When the textile industry arose in the 18th century, craft was the norm in manufacturing. As the industrial revolution progressed, one after another sector of the economy made the transition from c…
Four DB2 Code Bases?
Many years ago I worked on IBM DB2 and so I occasionally get the question, “how the heck could you folks possibly have four relational database management system code bases?” Some go on to argue that a single code base would have been much more efficient. That’s certainly true. And, had we moved to a single code base…
OpenBSD and the modern laptop
Did you think that OpenBSD is suitable only for firewalls and high-security servers? Think again. Here are my steps to transform a modern m...
Phoenix WebSockets under a Microscope
This is a code-reading and exploration post about the WebSockets side of Phoenix. It builds upon some of the tracing techniques showcased in the previous post, to observe some of the internals of Phoenix. It also features some tricks I commonly employ to debug WebSocket related issues. The title and nature of this…
CHIP-8 in Common Lisp
In the previous post we looked at how to emulate a CHIP-8 CPU with Common Lisp. But a CPU alone isn't much fun to play, so in this post we'll add a screen to the emulator with Qt .
Learn React with Copywork
Tired of making TODO apps over and over? Try this instead.
On Disk IO, Part 3: LSM Trees
If you like the series, check out my book on Database Internals!
Text Is Keeping Kids from Coding
We ran into a big blocker when designing SpriteBox Coding, a learn-to-code game for kids ages 5+. For some kids, code was simply…
Why Choose Vue.js
In the past five years or so, while the web development world was going mad with the JavaScript revolution – I stayed mostly indifferent, occupying myself with backend work and distracting myself with things like Kubernetes .
Index Investing Makes Markets and Economies More Efficient (2016)
U.S. equity index funds have grown dramatically in recent decades, from a negligible $500MM in assets in the early 1980s to a staggering $4T today. The consensus view in the investment community is that this growth is unsustainable. Indexing, after all, is a form of free-riding, and a market can only support so many…
A monoid is a category, a category is a monad, a monad is a monoid
In the last few months I taught three graduate mini-courses about string diagrams and graphical linear algebra – at Phd Open in Warsaw, a winter school in Estonia, and a graduate school in Le…
The Trouble with Politicians Sharing Passwords
Yesterday I had a bunch of people point me at a tweet from a politician in the UK named Nadine Dorries [https://twitter.com/NadineDorries]. As it turns out, some folks were rather alarmed about her position on sharing what we would normally consider to be a secret. In this
6 months of working remotely taught me a thing or ten
Working remotely is a mixed bag. There are a lot of positives... and some negatives. If you’re a remote employee (or considering a remote job), here are my top ten tips that I’ve gleaned in the last six months.
Transparency effects in SNES and Genesis games via composite video artifacts
Vintage computers and retro gaming
Why does Sattolo's algorithm produce a permutation with exactly one cycle?
I recently had a problem where part of the solution was to do a series of pointer accesses that would walk around a chunk of memory in pseudo-random order. Sattolo's algorithm provides a solution to this because it produces a permutation of a list with exactly one cycle, which guarantees that we will reach every…
The Re-Frame Guide: Front-End Architecture in Clojure
This Re-frame tutorial walks you through the main parts of Re-frame's structure, how they work together, and how they help you succeed in the long run building your single page application.
Linux Bridge – How it works
developer. curious. learner
Zi2zi: Master Chinese Calligraphy with Conditional Adversarial Networks
zi2zi is the follow-up work for my last project , once again tackling the same problem of style transfer between Chinese fonts.
Mosaic: processing a trillion-edge graph on a single machine
Mosaic: Processing a trillion-edge graph on a single machine Maass et al., EuroSys’17 Unless your graph is bigger than Facebook’s, you can process it on a single machine. With the incep…
Autism and gender imbalance in tech
I’ve just seen two talks back to back. The first was about AI, where the now compulsory first question came from the audience ‘Why are the...