Programming Leftovers
-
University of Toronto ☛ When I reimplement one of my programs, I often wind up polishing it too
Today I discovered a weird limitation of some IP address lookup stuff on the Linux machines I use (a limitation that's apparently not universal). In response to this, I rewrote the little Python program that I had previously been using for looking up IP addresses as a Go program, because I was relatively confident I could get Go to work (although it turns out I couldn't use net.LookupAddr() and had to be slightly more complicated). I could have made the Go program a basically straight port of the Python one, but as I was writing it, I couldn't resist polishing off some of the rough edges and adding missing features (some of which the Python program could have had, and some which would have been awkward to add).
-
[Repeat] Buttondown ☛ What if the spec doesn't match the code?
People are worried about two things. One, that they'll make a mistake implementing the specification and have bugs. Two, that over time the implementation will "drift" and people won't update the spec, leading to unexpected design issues.
These are valid fears, and both are things that happen when writing specifications! Which is why it extra sucks that my answer is usually "you can't". This newsletter will be a quick explanation as to why, plus why it's still a net win to write a spec, and an alternate trick you can do instead to keep things in sync.
-
Rlang ☛ How to Replicate Rows in a Data Frame in R
Are you working with a dataset where you need to duplicate certain rows multiple times? Perhaps you want to create synthetic data by replicating existing observations, or you need to handle imbalanced data by oversampling minority classes. Whatever the reason, replicating rows in a data frame is a handy skill to have in your R programming toolkit.
In this post, we’ll explore how to replicate rows in a data frame using base R functions. We’ll cover replicating each row the same number of times, as well as replicating rows a different number of times based on a specified pattern.
-
Michael Lynch ☛ Why does an extraneous build step make my Zig app 10x faster?
For the past few months, I’ve been curious about two technologies: the Zig programming language and Ethereum cryptocurrency. To learn more about both, I’ve been using Zig to write a bytecode interpreter for the Ethereum Virtual Machine.
Zig is a great language for performance optimization, as it gives you fine-grained control over memory and control flow. To motivate myself, I’ve been benchmarking my Ethereum implementation against the official Go implementation.
-
Stig Brautaset ☛ A Journey from Chaos to Version Control: A Developer's Tale
When I started my first programming job in 2003 they did not have version control, also known as VCS. I was horrified, and queried this with the Founder/CEO¹. I was told we did not need VCS, and that was that. For a while.
-
Python
-
Archipylago ☛ April sprint 13.4.: Web Development
Last week we had a wonderful meetup at Taiste, thanks Magdalena and Mikko for the talks, Taiste for hosting and everyone who joined for great discussions and good vibes.
Our next event is a sprint on Saturday 13.4. 12-16 at SparkUp. You can sign up for the event at Meetabit.
-
-
Shell/Bash/Zsh/Ksh
-
[Old] Stig Brautaset ☛ Shell Quickstart
In 2013 I worked at NET-A-PORTER, where we ran a year-long graduate program. Participants did three-month rotations with four teams, getting experience with different parts of our business. I volunteered to run a workshop introducing them to shell programming, and later adapted the material into this blog post1.
-
-
Education
-
Rlang ☛ Offa R Users Group: Empowering Data-Driven Education in Nigeria
The R Consortium had a conversation with Anietie Edem Udokang, who is the founder and organizer of the Offa R Users Group (ORUG). He discussed the emerging local R community and the use of R for his research in time series analysis.
-
-
SUSE/OpenSUSE
-
OpenSUSE ☛ Contribution Workshop to Cover Rust
The next session, which is Episode 4: openSUSE Contribution Workshop: Packaging Rust in Open Build Service, is scheduled to take place tomorrow, March 21 at 20:15 UTC on the openSUSE Project’s YouTube channel. The stream will coincide with the community meeting and provide an option for live interaction and learning. This session promises to delve on the intricacies of packaging Rust projects in OBS.
-