Today I discovered: Technical Writing Courses via Docs for Developers.
Tag Archives: programming
Are We Really Engineers?
I probably should be doing other things (engineering..?) but I spent my evening reading this one: Are We Really Engineers?.
programming is terrible
There’s some fun stuff over here: programming is terrible.
Devil’s Dictionary of Programming
Today I discovered the Devil’s Dictionary of Programming, which was a bit of fun.
Alda for music programming
Alda is a text-based programming language for music composition. Interesting!
I love being a programmer
My ZFS RAID array is resilvering. It’s a long recovery process. A report on progress looks like this:
Every 10.0s: zpool status love: Tue May 4 22:32:27 2021 pool: data state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Sun May 2 20:26:52 2021 1.89T scanned out of 5.03T at 11.0M/s, 83h19m to go 967G resilvered, 37.54% done config: NAME STATE READ WRITE CKSUM data DEGRADED 0 0 0 mirror-0 ONLINE 0 0 0 sda ONLINE 0 0 0 sdb ONLINE 0 0 0 mirror-1 DEGRADED 0 0 0 replacing-0 DEGRADED 0 0 0 4616223910663615641 UNAVAIL 0 0 0 was /dev/sdc1/old sdc ONLINE 0 0 0 (resilvering) sdd ONLINE 0 0 0 cache nvme0n1p4 ONLINE 0 0 0 errors: No known data errors
So that 83h19m to go wasn’t in units I could easily grok, what I wanted to know was how many days. Lucky for me, I’m a computer programmer!
First I wrote watch-zpool-status.php:
#!/usr/bin/env php <?php main( $argv ); function main( $argv ) { $status = fread( STDIN, 999999 ); if ( ! preg_match( '/, (\d+)h(\d+)m to go/', $status, $matches ) ) { die( "could not read zpool status.\n" ); } $hours = intval( $matches[ 1 ] ); $minutes = intval( $matches[ 2 ] ); $minutes += $hours * 60; $days = $minutes / 60.0 / 24.0; $report = number_format( $days, 2 ); echo "days remaining: $report\n"; }
And then I wrote watch-zpool-status.sh to run it:
#!/bin/bash watch -n 10 'zpool status | ./watch-zpool-status.php'
So now it reports that there are 3.47 days remaining, good to know!
A great MySQL session
I found this great MySQL session over here. It has a clever approach for creating a big table, and shows how to invoke shell commands from the `mysql` client.
USE test; SET GLOBAL innodb_file_per_table=1; SET GLOBAL autocommit=0; -- Create an uncompressed table with a million or two rows. CREATE TABLE big_table AS SELECT * FROM information_schema.columns; INSERT INTO big_table SELECT * FROM big_table; INSERT INTO big_table SELECT * FROM big_table; INSERT INTO big_table SELECT * FROM big_table; INSERT INTO big_table SELECT * FROM big_table; INSERT INTO big_table SELECT * FROM big_table; INSERT INTO big_table SELECT * FROM big_table; INSERT INTO big_table SELECT * FROM big_table; INSERT INTO big_table SELECT * FROM big_table; INSERT INTO big_table SELECT * FROM big_table; INSERT INTO big_table SELECT * FROM big_table; COMMIT; ALTER TABLE big_table ADD id int unsigned NOT NULL PRIMARY KEY auto_increment; SHOW CREATE TABLE big_table\G select count(id) from big_table; -- Check how much space is needed for the uncompressed table. \! ls -l data/test/big_table.ibd CREATE TABLE key_block_size_4 LIKE big_table; ALTER TABLE key_block_size_4 key_block_size=4 row_format=compressed; INSERT INTO key_block_size_4 SELECT * FROM big_table; commit; -- Check how much space is needed for a compressed table -- with particular compression settings. \! ls -l data/test/key_block_size_4.ibd
Programming principles from id software
These are great: John Romero on Programming principles from id software
- Just do it (and do it well)
- Keep your code always runnable
- Keep it simple
- Invest time in building great tools
- Test your code thoroughly
- Fix bugs as soon as possible
- Use a superior development system
- Write code for this version of the product
- Use good component abstractions
- Seek feedback from peers while coding
- Give coders creative freedom
How Did Things Ever Get This Good?
I read How Did Things Ever Get This Good? today. Nice, short, optimistic piece.
Programming Quotes
I came across these Programming Quotes over on cat-v.org today. Their Bumper-Sticker Computer Science is also good.
My favourite was “You can’t trust code that you did not totally create yourself.” — Ken Thompson