Disclosures 🧠 This post is fully human-written: all prose with the exception of the IoC information. Because it was time-sensitive, Claude was used to accelerate the RAT analysis and build an IoC-detection script. As I live in Canada, this information was reported to the appropriate Canadian agencies (CCCS et al). The payload-laden image does not trigger any AV engines on VirusTotal . The…
Disclosures 🧠 This post is 100% human-written . Claude was used for feedback and to assist with the linker symbol diagram. Cursor was used for feedback and to ensure examples were compilable. The author of this post is deeply interested in the topic of life-before-main: he is the author of the ctor crate, and the creator of the linktime project that we’ll be using in the examples below. Every…
As a thin layer on top of assembly language, C’s integer arithmetic APIs have always been minimal, effectively just mapping the underlying assembly opcodes to the C arithmetic operators. In addition, while unsigned arithmetic can safely overflow in C, signed arithmetic overflow is considered undefined behaviour, and UB can end up in heartache for C developers . More modern languages like Rust have…
I was hoping to make more progress on self-hosting my scripting language ( Kalos ) this week, but I’m running out of steam because I think I coded myself into a corner. This is not a post where I’ve got everything figured out, but instead I’m taking a few moments to re-hash where things are at and figure out a plan for the future. My original plan for this language was to offer a Python-like…
This is the last part of a three-part series covering the odyssey of getting a new coffeemaker, learning BTLE and how it works, reverse-engineering the Bluetooth interface and Android applications for the coffeemaker, writing a Rust-based CLI interface , and finally, hooking it all up to a GitHub actions bot that lets you brew a coffee just by filing an issue ! Part 1: Introduction Part 2: Reverse…
This is part 2 of a three-part series covering the odyssey of getting a new coffeemaker, learning BTLE and how it works, reverse-engineering the Bluetooth interface and Android applications for the coffeemaker, writing a Rust-based CLI interface , and finally, hooking it all up to a GitHub actions bot that lets you brew a coffee just by filing an issue ! Part 1: Introduction Part 2: Reverse…
This is going to be a long journey in three parts that covers the odyssey of getting a new coffeemaker, learning BTLE and how it works, reverse-engineering the Bluetooth interface and Android applications for the coffeemaker, writing a Rust-based CLI interface , and finally, hooking it all up to a GitHub actions bot that lets you brew a coffee just by filing an issue ! Part 1: Bluetooth…
Given the all the fuss over the blue/black or white/gold dress this week, I whipped up a quick simulation that allows you to view the dress under different lighting conditions. Slide the control from side-to-side to fade between the three images: a “blue/black” version where we subtract out the theoretical color of the light (#524922), the original picture, and a “white/gold” version where we add…
Two new technologies – the modular smartphone and USB 3.1 – are set to radically accelerate the convergence of everything to a single, in-pocket device. In fact, they are so revolutionary that they will change the entire way we think about mobile computing as the iPhone did earlier this millennium. Modules will eat custom hardware Modular smartphones, the first of which being Project Ara , will…
Please note that this article is written about an Editor’s Draft of a specification as of January 2015, which means the information may change without notice CSS Selectors Level 4 is the next iteration of the CSS selector spec, the last version of which was made a recommendation in 2011 after being a working draft for a number of years. So, what’s new? Selector Profiles CSS selectors are now…
If you find this interesting, read more about CSS Selectors Level 4 which will offer you even more tools for stylesheet development. CSS3’s :nth-child and :nth-last-child selectors are powerful: not only can they replace :first-child and :last-child , but they can style more complex patterns like the first (or all but the first) three children, every fourth child, or combinations of the pattern…
I’m now on my fifth – though I’m sure not my last – iteration of blog management, Jekyll . It’s a slick static site generator and from what I can tell, the most popular . One of the benefits of a static site generation tool is that you can aggressively cache the content. For that I’ve thrown Cloudflare in front of everything and have it both caching and optimizing all of my assets. As part of the…
Five years ago I wrote a set of predictions about 2020 . In some ways I think I was too unambitious for the progress of technology: browser technology has probably already reached the levels I had expected for a decade later. Some of them look like they might be off-target, like the increase in storage capacity of mobile devices. We still have another five years to see how they all pan out. I…
This is a fun little project I’ve been working on: a port of the Colossal Cave Adventure to the web. The monitor itself is nearly 100% CSS (with the exception of one image for the masking tape/signature and the diffuse reflection of the background). The interpreter is all Java and compiled to JS via GWT. It can save its state to localStorage right now when you save in-game (although I’d like to…
This is a follow-up to my week with a ChromeOS netbook post. The Google Chromebook is an interesting product to watch. I’ve been a fan of and using them since the early Cr-48 days. In fact, two Chromebook laptops were in service in our household until just a few weeks ago when the Samsung Chromebook broke (although I hope to repair it soon). These laptops sit next to our couch in a stack as a set…
I’ve been snooping around the Google+ code a bit and found some more upcoming features. Hashtags are getting a bit of a boost with auto-completion. When you type the hash character, you’ll see a list of potential auto-completions (this doesn’t appear to be hooked up to any data). When you hit space, it turns into a blue block containing the hashtag, which acts like the blue blocks that contain +…
Today I had a chance to play with the Canadian equivalent of the Kindle Fire, the Kobo Vox. It’s an Android 2.3 device, which means that it effectively has access to the entire ecosystem of Android apps. What it lacks, unfortunately, is the official Google Market application. It did appear to have access to the Gmail app, which makes the lack of Google’s Android market surprising. The Vox is a bit…
scp is a great way to securely transfer files from computer to computer, but wouldn’t it be nice if you could just automatically send files over the existing SSH connection you’ve already opened? Back in the days of modem-based BBSes and dial-up machine access, file transfers were forced to run over the same TTY as your interaction with the system. A number of different solutions evolved for this,…
Apple is quickly burning my goodwill towards with these silly patent fights . Two out of three of the patents were found not to be infringing, while the last one is a software patent that basically describes the functioning of a mobile device that deals with photos . At this point, it’s probably worth pointing out that Apple’s notification bar is pretty much a rip-off of the Android one. And you…
I’m nearly ready to cut a 1.0 version of nanojson. I spent some time merging the two writer interfaces into a single API. String json = JsonWriter.string() .object() .array("a") .value(1) .value(2) .end() .value("b", false) .value("c", true) .end() .close(); There’s a new convenience static for quickly converting stuff to a string as well: String json = JsonWriter.string(object); I suspect I may…