Mastering Web Scraping in Python: Crawling from Scratch
Get started with web scraping in Python following this step-by-step tutorial! Learn how to scrape a site with Requests and Beautiful Soup libraries.
Browser Fuzzing at Mozilla
Mozilla has been fuzzing Firefox for a while. It has proven to be one of the most efficient ways to identify quality and security issues.
js;dr = JavaScript required; Didn’t Read.
js;dr = JavaScript required; Didn’t Read. Pages that are empty without JS: dead to history (archive-org), unreliable for search results (despite any search engine claims of JS support, check it yourself), and thus ignorable. No need to waste time reading or responding. Also known as, if it’s not curlable, it’s not on…
Social virtual spaces with Elixir at Mozilla
A case study of how Elixir is being used at Mozilla.
Socat – A utility for data transfer between two addresses (2018)
I learned about socat a few years ago and am generally surprised more developers don’t know about it. Maybe I appreciate it all the more…
Functools – The Power of Higher-Order Functions in Python
<p> Python standard library includes many great modules that can help you make your code cleaner and simpler and <code class="inline">functools</code> is d...
Practical Reed-Solomon for Programmers
Recently I was doing some work decoding the new Galileo High Accuracy Service data. In short, this new service will allow Galileo (“European GPS”) users to achieve decimeter-level accuracy, which is nice. This “HAS” data is transmitted highly redundantly by making good use of Reed-Solomon encoding. To work with this…
Starting a TypeScript Project in 2021
This is a guide for starting a TypeScript project in 2021 with modern tooling. TypeScript 4 Optionally esbuild to bundle for browsers (and Node.js) Linting with typescript-eslint (tslint is deprecated) Testing with Jest (and ts-jest) Publishing a package to npm Continuous integration (GitHub Actions / GitLab CI)…
Leap seconds: Causing bugs even when they don’t happen
Some new minor leap second drama is coming up, and for once we can
The Boyer-Moore Fast String Searching Algorithm
Our algorithm has the peculiar property that, roughly speaking, the longer the pattern is, the faster the algorithm goes. Furthermore, the algorithm is ``sublinear'' in the sense that it generally looks at fewer characters than it passes. The algorithm is described in
Python’s tug of war between beginner-friendly and advanced features
Python is my favourite programming language. Since I discovered it in 2004, programming in Python became my favourite hobby. I've tried to l...
Replacing Elasticsearch with Rust and SQLite (2017)
Caveat: Elasticsearch is a multi-purpose, distributed, battle-tested, schema-free, log and document storage engine. We’ll be replacing it with a single-purpose, relational schema, me-tested, and custom nginx access log storage engine. Knowing that, let’s begin. Find this project on Github After building my home…
Why asynchronous Rust doesn't work
This is old! When I wrote it, I was a very different person.As it turns out, growing up a bit made me care a lot less about the nuances of Rust programming.
Shenandoah in OpenJDK 17: Sub-millisecond GC pauses
Get a closer look at how the Shenandoah garbage collector adds concurrent thread-stack processing, and reliable sub-millisecond pauses, in OpenJDK 17.
Faster Python with Guido van Rossum
Making the Python interpreter faster
A Proposal for Adding Generics to Go
Generics is entering the language change proposal process
My stack is HTML+CSS
My stack will outlive yours
Two custom React hooks
Open-source, swappable packages and an AI that assembles them into full-stack apps that scale.
Tree Sitter and the Complications of Parsing Languages
I talk about tree sitter, CEDET, and Combobulate -- my "paredit-style" package that's designed to work with most programming languages.
Stages of Denial
It is a lazy Tuesday afternoon. Perhaps you were idly browsing your favorite news aggregator, or visiting The Orange Website to wade through murky startup groupthink in search of interesting links.
Parcel v2
The Parcel team is beyond excited to announce that v2.0.0 stable is now available! 🎉
Three Minor Features in Go 1.18
Okay, but apart from generics and fuzzing, what has Go 1.18 ever done for us?
MicroStudio now supports microScript, Python, JavaScript and Lua
This is quite the big update: you can now choose from 4 programming languages for your microStudio project: **microScript**, **Python**, **JavaScript** or **Lua**! All this still from your web browser. With any of these 4 languages, you have access to all the microStudio goodness: live edit your code, live help and…
Functional programming is not popular because it is weird (2016)
I’ve seen people be genuinely puzzled about why functional programming is not more popular. For example I’m currently reading “Out of the Tar Pit” where after arguing for fu…
Six Years of Professional Clojure
TL;DR Clojure is a great programming languages due to its functional nature, lack of objects / concentration on primitive values
Emacs is the 2D Command-line Interface
One of the most popular arguments against Emacs is that it is “a great operating system, lacking only a decent editor”. The promotion of the idea of “Living in Emacs” by some of the hardcore Emacs users only make this argument more compelling. At the first glance, using a single program for “everything” does seem to…
Behaviours to avoid in a software architecture role
Over the years, I’ve had the opportunity to work in architecture roles alongside experienced software/technical/solution architects. Through observing others and my own trial and error,...