2025-01-18
Get Yourself a Go Bag
margaretkilljoy.substack.com/p/get-yourself-a-go-bagIt’s the go bag!
2025-01-02
Rules for Writing Software Tutorials
refactoringenglish.com/chapters/rules-for-software-tutorialsIt's easier than you think to write an exceptional software tutorial. You can stand out in a sea of mediocre guides by following a few simple rules.
ClickBench — a Benchmark For Analytical DBMS
benchmark.clickhouse.coma Benchmark For Analytical DBMS
2024-12-13
3 shell scripts: Kill weasel words, avoid the passive, eliminate duplicates
matt.might.net/articles/shell-scripts-for-passive-voice-weasel-words-duplicatesThe hardest part of advising Ph.D. students is teaching
them how to write.Fortunately, I've seen patterns emerge over the past couple years.
So, I've decided to replace myself with a shell script.
In particular, I've created shell scripts for catching three problems:
abuse of the passive voice,
weasel words, and
lexical illusions.
And, I've integrated these into the build system of our LaTeX documents.
The point of these scripts is not to ban all use of constructs
like the passive voice.(When it comes to writing, there are exceptions to every "rule.")
The point of these scripts is to make sure that my students and I make a
conscious choice to use these constructs.When these scripts highlight a sentence, my students should ask
themselves, "Is there a better way to say what I said--a way to make
the text read with more clarity and precision?" Often enough, the
answer is "yes."The meta-point of this article is that writers should learn their
individual weaknesses.And, when writers are programmers, we should enlist automation to
combat these weaknesses.1
2024-12-09
Parsing MIDI messages in Rust | nicole@web
www.ntietz.com/blog/parsing-midi-rustMIDI stands for Musical Instrument Digital Interface, and it really doesn't bury the lede.
It's a standard for digital musical instruments communicate!
The standard includes both the electronics and hardware, and it includes the communication protocol.
This post is only concerned with the communication protocol.
2024-12-07
Cube — The Universal Semantic Layer
cube.devCube is a leading, AI-powered universal semantic layer platform for data and app development teams who want to end inconsistent models and metrics and deliver trusted data faster to every use case.
2024-12-06
NASA Graphics Standards Manual (NHB 1430.2) (January 1976) - nasa_graphics_manual_nhb_1430-2_jan_1976.pdf
www.nasa.gov/wp-content/uploads/2015/01/nasa_graphics_manual_nhb_1430-2_jan_1976.pdfNational Aeronautics andNHB 1430.2
Space AdministrationJanuary, 1976
Graphics Standards Manual
How to Pronounce Chinese Names a Little Better
jacko.io/chinese_names.htmlMainland China uses the pinyin system to write Mandarin words and names with English letters.Pinyin isn't used in Cantonese or other Chinese dialects, and it's not as widely used in Taiwan. China officially adopted pinyin in 1958, and earlier emigrants also spelled their names differently. Pinyin wasn't designed to be intuitive for English speakers, and it's common for our first guess to be so far off the mark that a listener can't even recognize their own name. An hour or so of effort is enough for most English speakers to pronounce Mandarin names poorly-but-not-incomprehensibly, similar to how we try our best with French or Russian.
2024-12-02
Threat Modeling Whitepapers from Shostack + Associates
shostack.org/resources/whitepapersThe Four Question Framework for Threat Modeling takes a deep look at the specific design of the Four Questions. The questions provide a framework and language for effective threat modeling, and have been called "deceptively simple."
2024-11-28
Utopia
utopia.fyiElegantly scale type and space without breakpoints
Instead of tightening our grip by loading up on breakpoints, we can let go, embracing the ebb and flow with a more fluid and systematic approach to our design foundations
Responsive Type and Zoom
adrianroselli.com/2019/12/responsive-type-and-zoom.htmlTypography that responds to viewport width (‘fluid’ or ‘responsive’ typography) can be useful when you want to ensure text does not get clipped or spill out of some design elements. Carousels, widget controls, or my Venn diagram are some examples. I say viewport width because I rarely see responsive type…
2024-11-27
Be the browser’s mentor, not its micromanager. - Build Excellent Websites
buildexcellentwebsit.esGive the browser some solid rules and hints, then let it make the right decisions for the people that visit it, based on their device, connection quality and capabilities. This is how they will get a genuinely great user experience, rather than a fragmented, broken one.
The ideal viewport doesn’t exist
viewports.fyiBefore you settle on basing design decisions on a handful of strict breakpoints, make sure you consider the vast fragmentation of screen sizes and browser viewports.
2024-11-24
A custom element base class
mayank.co/blog/custom-element-baseI can’t believe I’ve never tried making own my base class, considering that I’ve made my own CSS reset.
I mentioned it in my post about defining custom elements, so let’s start with the static register() method.
2024-11-18
Playground Wisdom: Threads Beat Async/Await
lucumr.pocoo.org/2024/11/18/threads-beat-async-awaitIt's been a few years since I wrote about my challenges with
async/await-based systems and how they just seem to not support back
pressure well]]. A few years later, I do not
think that this problem has subsided much, but my thinking and
understanding have perhaps evolved a bit. I'm now convinced that
async/await is, in fact, a bad abstraction for most languages, and we
should be aiming for something better instead and that I believe to be
thread.
Exploring Effect in TypeScript: Simplifying Async and Error Handling
tweag.io/blog/2024-11-07-typescript-effectEffect promises to improve TypeScript code by providing a set of modules and functions that are composable with maximum type-safety.
The term “effect” refers to an effect system, which provides a declarative approach to handling side effects. Side effects are operations that have observable consequences in the real world, like logging, network requests, database operations, etc.
The library revolves around the Effect<Success, Error, Requirements> type, which can be used to represent an immutable value that lazily describes a workflow or job.
Effects are not functions by themselves, they are descriptions of what should be done. They can be composed with other effects, and they can be interpreted by the Effect runtime system.
Before we dive into the project we will build, let’s look at some basic concepts of Effect.
2024-11-12
Security Engineering - A Guide to Building Dependable Distributed Systems
www.cl.cam.ac.uk/archive/rja14/book.htmlSecurity Engineering — Third Edition
Home : Open Corporates
opencorporates.comFresh, standardized, auditable information direct from official primary sources across 140+ jurisdictions — all underpinned by our Legal-Entity Data Principles and world-leading expertise in legal-entity data. This is data you can trust.
St. Louis Fed Web Services: FRED® API
fred.stlouisfed.org/docs/api/fred#APIThe FRED® API is a web service that allows developers to write programs and build applications that retrieve economic data
from the FRED® and ALFRED® websites
hosted by the Economic Research Division of the Federal Reserve Bank of St. Louis.
Requests can be customized according to data source, release, category, series, and other preferences.
2024-11-05
HTML link, or button, that is the question / Marijke Luttekes
marijkeluttekes.dev/blog/articles/2024/11/04/html-link-or-button-that-is-the-questionDid you know that HTML links and buttons are not interchangeable? Learn more about their proper use cases in this article.
What I wish I had known as a programmer moving to Berlin
wickedchicken.github.io/post/programmer-in-berlinI’ve passed my seven year mark living in Berlin, Germany, and I thought it would be
worthwhile to reflect on it and write down some of the things I wished I had known before
moving from the US.
Building a new life in a different country is a tremendous
amount of work but can also be extremely rewarding.
My goal isn’t to persuade you to move or not to move here, only to give you some
more information to help you make a decision for yourself or better prepare for a move if
you’ve already decided on it.
2024-11-04
cheat.sh/:firstpage
cheat.shThe only cheat sheet you need Unified access to the best community driven documentation repositories of the world.
2024-10-17
My solar-powered and self-hosted website
dri.es/my-solar-powered-and-self-hosted-websiteI'm excited to share an experiment I've been working on: a solar-powered, self-hosted website running on a Raspberry Pi. The website at https:\//solar.dri.es is powered entirely by a solar panel and battery on our roof deck in Boston.
2024-10-11
HTML for People
www.htmlforpeople.comHTML isn’t only for people working in the tech field. It’s for anybody, the way documents are for anybody. HTML is just another type of document. A very special one—the one the web is built on.
2024-10-04
Resilient Microservice Applications, by Design, and without the Chaos
christophermeiklejohn.com/publications/cmeiklej_phd_s3d_2024.pdf
Christopher S. Meiklejohn
CMU-S3D-24-104
May 2024
Software and Societal Systems
School of Computer Scienc
2024-09-16
A (more) Modern CSS Reset
piccalil.li/blog/a-more-modern-css-resetI wrote “A Modern CSS Reset” almost 4 years ago and, yeh, it’s not aged overly well. I spotted it being linked up again a few days ago and thought it’s probably a good idea to publish an updated version.
2024-08-23
Intro to Function Calling with Gemini API | Google AI for Developers
ai.google.dev/gemini-api/docs/function-callingustom functions can be defined and provided to Gemini models using the Function
Calling feature. The models do not directly invoke these functions, but instead
generate structured data output that specifies the function name and suggested
arguments. This output lets you write applications that take the structured
output and call external APIs, and the resulting API output can then be
incorporated into a further model prompt, allowing for more comprehensive query
responses. Function calling empowers users to interact with real-time
information and various services, such as databases, customer relationship
management systems, and document repositories, enhancing their ability to
provide relevant and contextual answers.
2024-08-09
High-precision date/time in SQLite
antonz.org/sqlean-timeWhile SQLite provides a certain number of date functions, I wanted something more. So I've created
sqlean-time — a high-precision date/time extension with a structured API and a rich set of functions.
2024-08-05
How Postgres stores data on disk – this one's a page turner | drew's dev blog
drew.silcock.dev/blog/how-postgres-stores-data-on-diskTo start things off, I’m going to discuss how Postgres actually stores data on disk. I mean, it’s all just files, right?
2024-07-31
How I Use Git Worktrees
matklad.github.io/2024/07/25/git-worktrees.htmlThere are a bunch of posts on the internet about using git worktree command. As far as I can tell,most of them are primarily about using worktrees as a replacement of, or a supplement to gitbranches. Instead of switching branches, you just change directories. This is also how I originallyhad used worktrees, but that didn’t stick, and I abandoned them. But recently worktrees grewon me, though my new use-case is unlike branching.
Compare AWS and Azure services to Google Cloud | Documentation
cloud.google.com/docs/get-started/aws-azure-gcp-service-comparisonThis table lists generally available
Google Cloud services and maps them to similar offerings in Amazon Web
Services (AWS) and Microsoft Azure. You can filter the table with keywords, such
as a service type, capability, or product name. We welcome your
feedback to help us keep this information up to date!
2024-07-26
Bril: An Intermediate Language for Teaching Compilers
www.cs.cornell.edu/~asampson/blog/bril.htmlWhen I started a new PhD-level compilers course a few years ago,
I thought it was important to use a “hands-on” structure.
There is a big difference between understanding an algorithm on a whiteboard and implementing it, inevitably running into bugs when your implementation encounters real programs.
At the same time, I wanted students to get started quickly, without learning the overwhelming APIs that come with industrial-strength compilers.I created Bril, the Big Red Intermediate Language, to support the class’s implementation projects.
Bril isn’t very interesting from a compiler engineering perspective, but
I think it’s pretty good for the specific use case of teaching compilers classes.
Here’s a factorial program:
2024-07-23
Pivot to the Clouds: Cookie Theft in 2024 · Embrace The Red
embracethered.com/blog/posts/2024/cookie-theft-in-2024-and-what-todoHere are the basic steps of what happens:
Malware runs on user’s machine
Malware connects to the debugging port
Attacker uses the cookies and gains access to resources
Note: This specific technique via the remote debugging port was originally described as “Cookie Crimes” by @mangopdf for Chrome.
2024-07-22
The algebra (and calculus!) of algebraic data types
codewords.recurse.com/issues/three/algebra-and-calculus-of-algebraic-data-typesJust as algebra is fundamental to the whole of mathematics, algebraic data types (ADTs) are fundamental to many common functional programming languages. They’re the primitives upon which all of our richer data structures are built, including everything from sets, maps, and queues, to bloom filters and neural networks.
UI for sums must remember products (eighty-twenty news)
eighty-twenty.org/2024/07/21/ui-for-sums-remembers-productsI had a small insight yesterday while building a component for a small web app: the user interface for editing an incomplete value of sum type A+B needs to remember a product of input 2×A×B from the user
Modularizing React Applications with Established UI Patterns
martinfowler.com/articles/modularizing-react-apps.htmlLearn how to apply established UI patterns for a more organized and maintainable codebase and discover the benefits of layering architecture in React development
2024-07-19
Playing guitar tablatures in Rust
agourlay.github.io/ruxguitar-tablature-playertablature player in Rust.
2024-07-17
How Complex Systems Fail
how.complexsystems.fail(Being a Short Treatise on the Nature of Failure; How Failure is Evaluated; How Failure is Attributed to Proximate Cause; and the Resulting New Understanding of Patient Safety)
Richard I. Cook, MD
Cognitive Technologies Labratory
University of Chicago
2024-07-15
A History of Clojure
dl.acm.org/doi/pdf/10.1145/3386321Clojure was designed to be a general-purpose, practical functional language, suitable for use by professionals
wherever its host language, e.g., Java, would be. Initially designed in 2005 and released in 2007, Clojure is
a dialect of Lisp, but is not a direct descendant of any prior Lisp. It complements programming with pure
functions of immutable data with concurrency-safe state management constructs that support writing correct
multithreaded programs without the complexity of mutex locks.
Clojure is intentionally hosted, in that it compiles to and runs on the runtime of another language, such as
the JVM. This is more than an implementation strategy; numerous features ensure that programs written in
Clojure can leverage and interoperate with the libraries of the host language directly and efficiently.
In spite of combining two (at the time) rather unpopular ideas, functional programming and Lisp, Clojure has
since seen adoption in industries as diverse as finance, climate science, retail, databases, analytics, publishing,
healthcare, advertising and genomics, and by consultancies and startups worldwide, much to the career-altering
surprise of its author.
Most of the ideas in Clojure were not novel, but their combination puts Clojure in a unique spot in language
design (functional, hosted, Lisp). This paper recounts the motivation behind the initial development of Clojure
and the rationale for various design decisions and language constructs. It then covers its evolution subsequent
to release and adoption
The 6 Pillars of the AWS Well-Architected Framework | Amazon Web Services
aws.amazon.com/blogs/apn/the-6-pillars-of-the-aws-well-architected-frameworkCreating a software system is a lot like constructing a building. If the foundation is not solid, structural problems can undermine the integrity and function of the building.
When building technology solutions on Amazon Web Services (AWS), if you neglect the six pillars of operational excellence, security, reliability, performance efficiency, cost optimization, and sustainability, it can become challenging to build a system that delivers on your expectations and requirements.
Incorporating these pillars into your architecture helps produce stable and efficient systems. This allows you to focus on the other aspects of design, such as functional requirements.
The AWS Well-Architected Framework helps cloud architects build the most secure, high-performing, resilient, and efficient infrastructure possible for their applications. The framework provides a consistent approach for customers and AWS Partners to evaluate architectures, and provides guidance to implement designs that scale with your application needs over time.
SQL VS NoSQL
okso.app/showcase/system-design/page/91fdd645-75b2-43a1-1ca0-24a13079a8baThe drawing app to express, grasp, and organize your thoughts and ideas
Notes on SQL vs No SQL
2024-07-05
ECMAScript® 2025 Language Specification
tc39.es/ecma262The document at https:\//tc39.es/ecma262/ is the most accurate and up-to-date ECMAScript specification. It contains the content of the most recent yearly snapshot plus any finished proposals (those that have reached Stage 4 in the proposal process and thus are implemented in several implementations and will be in the next practical revision) since that snapshot was taken.
This document is available as a single page and as multiple pages.
Reasons to use your shell's job control
jvns.ca/blog/2024/07/03/reasons-to-use-job-controlHello! Today someone on Mastodon asked about job control (fg, bg, Ctrl+z,
wait, etc). It made me think about how I don’t use my shell’s job
control interactively very often: usually I prefer to just open a new terminal
tab if I want to run multiple terminal programs, or use tmux if it’s over ssh.
But I was curious about whether other people used job control more often than me.So I asked on Mastodon for
reasons people use job control. There were a lot of great responses, and it
even made me want to consider using job control a little more!In this post I’m only going to talk about using job control interactively (not
in scripts) – the post is already long enough just talking about interactive
use.
2024-07-03
Don’t use booleans | LUU.IO
www.luu.io/posts/dont-use-booleansUse enums instead.
With any blanket statements like this, there are always exceptions.
Though in general, I believe the use of enums is often a better choice compared to boolean, unless you really need to squeeze your data into one single physical bit.
Software Architecture Design for Busy Developers
massimo-nazaria.github.io/software-architecture-design.htmlLet’s talk about some of the fundamental software design principles, which are typically applied behind the scenes by designers.
Software architecture represents the result of a sequence of design decisions which take place over time as long as software system complexity increases.
For the sake of clarity, let’s define an architecture as a collection of components combined together via connectors, which represent constraints on how components interact.
My Principles for Building Software
kevinmahoney.co.uk/articles/my-principles-for-building-softwareThese are my personal principles for building software. I hope to frequently update them as my views change. There can be
valid reasons for breaking them (they are principles, not laws), but in general I believe following
them works out well.
Simple Made Easy
www.infoq.com/presentations/Simple-Made-EasyRich Hickey emphasizes simplicity’s virtues over easiness’, showing that while many choose easiness they may end up with complexity, and the better way is to choose easiness along the simplicity path.
My programming beliefs as of July 2024
evanhahn.com/programming-beliefs-as-of-july-2024This is a collection of things I believe about computer programming as of today.
It’s based on my own experience.
2024-06-30
ChatGPT is bullshit - Ethics and Information Technology
link.springer.com/article/10.1007/s10676-024-09775-5Recently, there has been considerable interest in large language models: machine learning systems which produce human-like text and dialogue. Applications of these systems have been plagued by persistent inaccuracies in their output; these are often called “AI hallucinations”. We argue that these falsehoods, and the overall activity of large language models, is better understood as bullshit in the sense explored by Frankfurt (On Bullshit, Princeton, 2005): the models are in an important way indifferent to the truth of their outputs. We distinguish two ways in which the models can be said to be bullshitters, and argue that they clearly meet at least one of these definitions. We further argue that describing AI misrepresentations as bullshit is both a more useful and more accurate way of predicting and discussing the behaviour of these systems.
ImHex
imhex.werwolv.netImHex is a Hex Editor, a tool to display, decode and analyze binary data to reverse engineer their format, extract informations or patch values in them.
What makes ImHex special is that it has many advanced features that can often only be found in paid applications.
Such features are a completely custom binary template and pattern language to decode and highlight structures in the data, a graphical node-based data processor to pre-process values before they're displayed,
a disassembler, diffing support, bookmarks and much much more.
At the same time ImHex is completely free and open source under the GPLv2 license.
2024-06-27
A (more) Modern CSS Reset
piccalil.li/blog/a-more-modern-css-resetI wrote “A Modern CSS Reset” almost 4 years ago and, yeh, it’s not aged overly well. I spotted it being linked up again a few days ago and thought it’s probably a good idea to publish an updated version.
ActivityPub Rocks!
activitypub.rocksActivityPub is a decentralized social networking protocol based on the ActivityStreams 2.0 data format. ActivityPub is an official W3C recommended standard published by the W3C Social Web Working Group. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and subscribing to content.
ActivityPub
www.w3.org/community/reports/socialcg/activitypubThe ActivityPub protocol is a decentralized social networking protocol
based upon the ActivityStreams] 2.0 data format.
It provides a client to server API for creating, updating and deleting
content, as well as a federated server to server API for delivering
notifications and content.
Betula Tickets
todo.sr.ht/~bouncepaw/betulaTickets for betula.
Why I attack
nicholas.carlini.com/writing/2024/why-i-attack.htmlAll security vulnerabilities lie on a spectrum of how hard they are to resolve.
On one end, there are vulnerabilities that are easily patched, and on the other side, are those that are not.
Whenever doing security research, it's important to understand which you are dealing with.
RNG Day
rngday.com/enRNG stands for "Random Number Generation".
We often need numbers that are Random, for everything from games to encryption. RNG Day is an opportunity to learn more about Random Number Generation, and to have fun with it!
Certbot
certbot.eff.orgCertbot
Consistency Models
jepsen.io/consistencyConsistency Models