Home Page on World of Matthew
11 Years of World of Matthew
The Three Cottages, North Walsham Review
Diary of Designing a Language in the Age of Agents, Part 1
Shoelaces and Progress
First Plantings of 2026
Sudden spring
Short Video: Hockey Puck Mouse = Awful
A Small Update
Colchester Trip 09/02/26
Website Progress
AI for Coding: Good, Bad, or Ugly?
Ash
Setback
Acecook SiuKay Spicy Cheese Chicken Noodle Review
Sorters
Trees
Your Go tests probably don't need a mocking library
Glass
Research
In Defense of Pen and Paper
Artificial StupidIntelligence and Airport Sinks
Don't Want to Spend
No Analytics, No Pressure
Public Toilets Degradation of Public Behaviour
Thecold
Power
Metals
Stranded
Introduction
First Snow of 2026
Intentions
For 2026
LocalFirst: You Keep Using That Word
Newyear2026
GNOME Foundation: Executive Strategy
A Trip to Norwich Castle
Missed
Tap compare testing for service migration
Hire Me
Things that made me think: Cycle time, learning theory, and build chain security
Entitled Dangerous Driving and Pedestrians
The British Police Decline
Splintered failure modes in Go
Finding the flow state
Don't Download Apps
Italy workation, Romania, and Portugal ✈️
Publicnudity
Re-exec testing Go subprocesses
My 2025 Life Stack - Or, Why I Haven't Opened Emacs in Two Months
A Dream to Progress
Web Hosting Sticker Shock
Revisiting interface segregation in Go
Lidl and “DeadStock
Lidl and “DeadStock
Separate Work Configurations
Avoiding collisions in Go context keys
One Step Forward Two Steps Back and A Couple Sideways
Uppsala Half Marathon done!
Joint Replacement Guidelines
Does my toaster love me?
How to Monitor Ip Address Changes
Fly-Tipping Outside Charity Clothing Banks
First Bus is the worst.
The Sunday Charity Shop Flytip
Organizing Go tests
From chatbots to autonomous agents - teenage me would be mindblown
Introduction to Hugo
A New Theme for a New Future
Subtest grouping in Go
Let the domain guide your application structure
My first race - Kung Björn's Loppet 6km
Win10 Is Nearing End-of-Life: What Should You Do Next?
Test state, not interactions
Early return and goroutine leak
Git Dual Remotes
Things that made me think: Digital gardening, web degradation, and digital ghosts
Lifecycle management in Go tests
7th August Trip to Norwich Castle
Optimising for trust
Demonstrating the Power of Apple Silicon using Actuated CI
Charity Shop Charges £10 for an Audiobook CD....
29 Years Old
Gateway pattern for external service calls
The Average Person Does Not Understand Their Internet Connection
PSTN Switch Off and Taxi Phone Move to Mobile
What Even Is ‘Adult’ Content?
Things that made me think: Enshittification, apathy, and discrimination
Chantry Place McDonald’s = Ugly
Summer road trips - Jönköping, Tiveden, Dalarna, and more
Janet Jackson's Denial of Service (DoS) Attack
The sound of inevitability
No.1 Cromer: Greasy Chips and Burnt Sausage
(Quite) A Few Words About Async
What's the Point of Physical Video Games?
Entities as Dependencies
Happy Canada Day!
Finished my course on nuclear weapons and disarmament
First day of summer vacation: summer, sun, and e. coli
Planted Potatoes
Flags for discoverable test config in Go
How an Ancient PowerBook Captured a Summer Vacation
AI for Peace - Notes from inaugural Peter Wallensteen Lecture
You probably don't need a DI framework
What Makes Software Projects Work
It’s Still Your Call: Ethics in the Age of AI
64 Albums
Valborg, Axis & Allies, and cross stitching
Amazon Is Hard to Resist
Easter break in Mallorca
Preventing accidental struct copies in Go
The Story Behind the Mac vs PC Rivalry — And Where Linux Quietly Took Over
Go 1.24's "tool" directive
Capturing console output in Go tests
Robot novellfika, pajbakning, Rock Orchestra och mer! För mycket att göra, för lite tid
Go Zero Values Make Sense, Actually
Nuclear Weapons and Academic Responsibility (UU lecture notes)
Balkongprep inför sommaren
Nuclear disarmament: The institutional landscape (UU lecture notes)
Deferred teardown closure in Go testing
Sounds and signs of spring in Uppsala
Individual climate action: Contributor's Dilemma (practical philosophy seminar notes)
Three flavors of sorting Go slices
Reclaiming Speed: My Road Back to Faster Running
Urban Sketching at Gustavianum and a behind the scenes tour at Evolutionsmuseet
Canada: The Unsung Hero of AI Innovation
Co-reading fika
Flowers and fairy tales
Nil comparisons and Go interface
Vandring och utforskning – årets första vårhelg
You hear colours
Stacked middleware vs embedded delegation in Go
The Edge You Carry With You
Poetry fika, a morning of sketching, and another run to the mounds
AI, the future, and norms around the human (UU lecture notes)
Running to the edge of the world (Gamla Uppsala)
Tyra Kleen - Constant Searcher exhibition. And a philosophy seminar on the declaration of art.
Leveraging WSL2 for Systems & Cloud Administration, Cybersecurity, and Software Development
How to Get Off Google Authenticator (and Backup Google 2FA Codes)
Why does Go's io.Reader have such a weird signature?
Go slice gotchas
Gods of Data. Religion, risk, and love - notes from AI seminar at UU
Two months in my new home
The domain knowledge dilemma
Tips to Evolve Your Tech Career in the Age of AI
Hierarchical rate limiting with Redis sorted sets
Dynamic shell variables
2025 Reading List
AI code plus performance minus brittle = ?
Link blog in a static site
Keeping Your Software Lean and Loved
Running only a single instance of a process
How to Use Homebrew `bash` in Macos
Short story fika: Duty
Vandring i Hågadalen
What would it take to add refinement types to Rust?
Function types and single-method interfaces in Go
First month in my new home
Separating Work and Personal Computing
SSH saga
B-CRATOS: Föredrag om hjärnstyrda handproteser med fingertoppskänsla, på UU Centrum för forskning om funktionshinder - Antekningar
Novellfika på Konditori Fågelsången - Fox 8 av George Saunders
AppleID Adventures
Luciatåget på Uppsala slott
Personhood-based arguments on resuscitation of Extremely Premature Infants - practical philosophy seminar notes
Julbord! Jag började äta fisk igen i precis rätt tid.
[AI Act Conference 2024 - Notes] Legislating Technology: Addressing the law's internal dilemma
I am looking for work. (Taylor's Version)
AI Act Conference 2024 Keynote notes: Navigating the AI Act
Optimistic Computing
Första gången fast på tåget från Uppsala och Anki för svenskainlärning
Short story fika about being human and Historisk julmarknad at Gamla Uppsala
Is Murder Bad?
Non-Identity Problem and robust climate action - practical philosophy seminar notes
Is humanity a promise yet to be fulfilled? Becoming human at Uppsalas Stadsbiblioteket
A talk on Polar Gothic literature at Chimära Bokhandel
Injecting Pytest fixtures without cluttering test signatures
Slow and Steady: My 15-Year Endurance Goal
Forty Years of Flying
2024 in Review
Singularity short story fika, co-writing, and Upplandsmuseet
Crashed a talk on moral luck and fairness today - it was great!
Forsskål symposium 2024: American freedoms and unfreedoms through history and now
13x13 Lecture 13 - How it all ends (ett inblick i universums öde)
Om krisen eller kriget kommer...
Running an LLM locally using Ollama
MomBoard E-Ink Display for Parent With Amnesia
MomBoard E-Ink Display for Parent With Amnesia
Reading or About to Read
Installing a Fedora Linux ARM VM from a Raw Image
Maneten - en novell i tre meningar
The Pirate Bay på SVT
From the Mailbox
Thoughts the Day After
Explicit method overriding with @typing.override
Quicker startup with module-level __getattr__
How I fixed my Nothing Ear muffled/underwater audio on Android (hint: it's ChatGPT)
Docker mount revisited
Copilot+ PC Review: Windows on ARM is finally here
Maximizing Your Hiking Experience
Topological sort
Writing a circuit breaker in Go
Discovering direnv
Technical Debt is a Management Failure
Notes on building event-driven systems
Bash namerefs for dynamic variable referencing
Behind the blog
Practical Cybersafety for Everyone
Shell redirection syntax soup
Shades of testing HTTP requests in Python
Sqlite in Sqlx, Automatic File Creation, and Error 14
Taming parametrize with pytest.param
Configuring GitHub Discussions to provide Blog Comments
This Site
Third Wave (Commercial) Open Source
HTTP requests via /dev/tcp
Log context propagation in Python ASGI apps
Please don't hijack my Python root logger
The *nix install command
Modding my Akko MOD007B PC with a flex cut PCB
It's Time to Back Up Your Google Maps Location History
7 Tips for a Healthy Digital Lifestyle
Here-doc headache
The sane pull request
Demystifying Artificial Intelligence (AI)
Some Direnv Patterns
How I Keep my Linux Textbook Updated for New Versions
A reference to a Future is a Future (sort of)
Strategic Forgetting
The Rise of RISC-V and Open Hardware
Small Systems Manfiesto
Tips for Maintaining a Growth Mindset
Incident Response
Remembering Pepper
If You Participate in Taiwan's "Make Up Workday", You are a Bad Boss
Digital Nomading Somewhere Beautiful; or, Should You Bring Your Laptop?
Books I Read in 2023
ZSA, the Awesome Keyboard Company, Interviewed Me
Explorers and Exploiters: Deviations from Rarefaction Curves
40 years of Macintosh
Audiobook narration trial with ElevenLabs
Visiting Greece
Coverage-based Comparisons of Cultural Diversity
Primals and Tempering
Alphinaud Publishes a Paper
Extending the life of an Intel-based Mac using Windows 11
I was Interviewed by Teddy Lai
Creating a writing assistant with ChatGPT Plus
How generative AI has fit into my workflows
I Opened a Restaurant in Taipei
What Did Louisoix Know?
2023 in Review
So You Want to Optimize Your Code? (also, a disordered, confusing and absolutely incomplete oral history of Firefox performance)
Setting up a Raspberry Pi Home Server
Portable writing setup with Onyx Boox Palma
Programming Languages That Blew My Mind
Essential keyboard shortcuts (Windows/macOS/Linux/UNIX)
Less Dangerous Than Careless Talk
Coding for a Finite World
Papers of Note
Books I Read in 2022
Linux Distro Hopping is a Bad Idea
Complex Simulation: Artifacts of a Russian spy
Bob Gunderson Tribute
An Extra Special Family Vacation
The Government Sent Me to Taidong
Running a Mainstream Linux Distro Natively on Apple Silicon: Fedora Asahi Remix First Impressions
Saying the quiet part out loud
How to Leverage Music for Maximum Tech Productivity
Setting Up Projects for Hosting on a VPS
Production Outranks Consumption
The AIGPL
Find Peace or Choose Violence?
The Internet as We Know It Is Dying
7-11 Snack Rankings
So, you’re curious about software development?
Taiwan Citizenship Renunciation Petition
Exploring Reddit Alternatives
A Philosophy of Cheat Codes
My first textbook is now in its sixth edition
Unseen Crime Simulation
I've now been teaching tech for 25 years!
Brainstorming as distraction
Just rambling
Linux is making Apple Great Again
The Ultimate Linux ARM64 Workstation
Family Trip to Taiwan
The Internet is Not Forever
Fun Facts About Linux
About Safety, Security and yes, C++ and Rust
Fiction writing updates
Implementing multiple choice selection in Go with promptui
Choosing a Mastodon Instance
Some Info About Digitizing VHS, and Services in Taiwan for Same
Excellent Article on Taiwan's Legislated Prejudice against Southeast Asians
The Time I Yoga-Balled an Apple Store Employee
My Literate Emacs Configuration
Mastodon and the Fediverse: A Social Media Revolution
What Shall We Do with the Unseen Sailor?
2022 in Review
Functional Diversity as a Generalization of Lexical Diversity
Moderated Federated Networks might actually be what we need - part 1
Zipping Together APIs Sucks
Telling People How Much Money You Make is Ethical, Usually
Reboot your mind once a day
List of publications
Coffeeshop Reviews
Taiwan Ideathon Submission: Unemployment Reaches 100%
How to Correctly Add Segment Analytics to a Typescript App
The leaves
RISCy business: The long and convoluted rise of today's dominant computing platform
Raw
You can't Uninstall Adobe Creative Cloud without Logging In
Converting to Netlify CMS
GrapheneOS: User Impressions
Sympathy is difficult
How modern open source projects work
10 Basic Steps to Digital Privacy
How Linux Certification Has Evolved Over The Years
Exploring testing private TypeScript functions with Jest
Tracking Opacity and the Cause of Consumer Indifference
How leg extensions saved my knees (quick, knock all the wood!)
Finding a Privacy-Friendly Email Provider
My WFH workspace evolution
Dual-booting Asahi Linux on your Apple Silicon Mac
Glastonbury: the Tor and Avalon Orchard
Glastonbury: getting there and the town
The Power of Swag in the Tech Industry
Undetected Functional Attribute Diversity
Trucks, Tubes, and Truth
Avantone Pro Planar first impressions
Easy Explanation of React UseEffect
Cull your dependencies
PiccoloCane Tanto2 pet stroller review
Reflections on starting a limited company in Sweden
macOS for Linux admins (2022 refresh)
Estimating Unseen Shared Cultural Diversity
`json.Marshal()` with additional fields in Go
How I'm testing MongoDB calls in Go (for now)
Population Size Estimation as a Regression Problem
Experimenting with remote work locations
Ontario's Computer Part 2: The LEXICON Server
Rich White People in Taiwan, Please Stop Whining
Ontario's Computer: The Burroughs ICON
Zelterman's Estimator of Population Size
Estimating Richness under Sampling without Replacement
A More Satisfactory Way of Building
Configuring the i3 Window Manager
Demystifying Chao1 with Good-Turing
Brewing the Best Coffee
War and K2
The `tools` directory
How to Rent a Motorcycle in Taiwan
The Power of RISC architecture
The effort of people-ing
SPARCbook teardown
Does the software industry learn?
Understanding the Cult of Mac
Mike Shinoda's video game NFT dreams
Amazon's author banpocalypse
2021 in Review
TypeScript <3
Kubernetes Quickstart
Will my new blood pressure monitor be the thing to get me to finally meditate?
Editing and making myself finish the first series
14 years of game dev
Hosting
Installing a fast Linux server on an M1-based Mac
Blockchain Without the Crypto
Should we welcome or fear the Metaverse?
ARM on the desktop is here to stay
Making a series outline
The second book is harder
Social media break
Scrape, Scrape
Onebag Trip Report: One Month West to East Coast, USA (Indefinite Length Bag)
Testing external API calls in Go
ThinkPad P14s AMD First Impressions
An overview of cloud buzz words
The quest for a humidifier
Work-from-home is the new BlackBerry
I Am "The American Engineer" According to Amcham
Copyleft is dying
Wulai to Yilan Motorcycle Ride Video
It's a great time to be a developer
YanMingShan with Irish Riding Video
Yilan Packlist
How I Write Code, Take Notes, Journal, Track Time and Tasks, and Stay Organized using Emacs
Wulai Motorcycle Ride Video
UNIX/Linux is now a core skill for anyone working in tech
Contributing to a Calibre Plugin: Adding 'Merge All Groups' Functionality to the Detect Duplicates Plugin
Cybersecurity in a Nutshell
Creating a Super Google Maps Favorites List
DORA? I barely know her!
The future looks a lot like mainframe computing
g0v Hackathon in Taiwan
The Strength of the Record
Relating Silicon Valley to the Toronto-Waterloo Corridor
Spring and Rigel
Staying in one place doesn't mean standing still
Mastering the Zen of TrackPoint
Make yourself a happy place in your inbox - a mindfulness tip for your working day
Quarantine Hotel Video
onlinetaxman.com Prices
The computer that saved Apple
Litter Robot 3 Review
Time blocking
Why You Should Remote Work in Taiwan
Investing in sustainable food
Happy-ish New Year
An introduction to WireGuard VPN
2020 in review
Seldom discussed tips for working in the tech industry
highlights-getter
5 Z shell features that will encourage you to switch from Bash
about: Mozilla's Dino Tank
yoric.steps.next()
Why I love teaching online
Interview Concurrency Exercices
about:Mozilla's blockers and needinfos
about:Mozilla's #introduction channel - and how it could work for your project
Switching to Gitalk
A brief history of technology
about:Mozilla's Mentored Bugs - and how it could work for your project
Buying a Grand Seiko
Cybersecurity in the early 1990's
Most people don't want a computer
Why Did Mozilla Remove XUL Add-ons?
Open does not always mean Open Source
Possibly one step towards named arguments in Rust
Tracing difficult shell scripts
Nintendo Switch Ban Essentials: Q&A
ALIFE 2020 - Robot Cancer
ALIFE 2020 - Soft alife with SPLAT and Ulam
Building a Task Manager, part 1
So, you think online conferencing is new?
Fundamental computer science concepts every software developer should know
The old Web was fun
How I Became a Software Engineer
Customizing macOS for development
I Wrote an Emacs Color Theme
FreeBSD UNIX for Linux sysadmins
Twitter network graphing with Gephi
Social distancing ramblings
Microsoft turns 45
Announcing Project Building Firefox@home
Getting the most out of your online course
Tips to survive teaching an online course
XTC discusses Basecamp's Shape-Up
How to write an academic technical textbook
IBM lecture - Introduction to quantum computers and quantum computer programming
How to Job Search as a Bootcamp Grad
Saving Vuex State to localStorage
2020 Reading List
Effects in Rust
I finally beat Tetris!
2019 Travels
Units of Measure in Rust with Refinement Types
Should You Motorcycle?
2019 in review
Nintendo Switch: Best Traveling Companion
Ethical Software For Everyone
Reviving an ancient BSD UNIX workstation
The Temple of Fail
Hacker Villages
Taipei, 2019
Why you should use technology less
What it's like a year after quitting Facebook
Compassion For Donald
How to learn vi (vim)
I started meditating... now what?
What Nokia tells us about the Internet in 2008
The different faces of open source software
Apple is regressing to their 1990s disposition
Docker Containers for testing
Rest in Peace, MAD Magazine
SnailLife Genome Lab
"Efficiency" is bad for your health, and your learning
The UNIX Philosophy in 2019
Offline knowledge, buses, and note-taking
The Dark Side of GNU
How ricing shifted from cars to computers
Setting up a bottom-end Chromebook for development
State of the Liza - 2019
SPARCbook 3000ST: The coolest 90s laptop
Pop!_OS: The first real Linux desktop
Silent Spaces
The Power of Open Source Software
Trip to Monterey
Cult of Mac Book
Happy New Year
Universal Spaces
India Has A Three-Body Problem
35th Anniversary of the Macintosh Computer
How To Disconnect
Does Smoking Marijuana Harm Your Meditation Practice?
Blog Todo
Using the Windows Subsystem for Linux
Steve Yegge, You Are Half Right (Part Two: Software Ethics)
Steve Yegge, You Are Half Right (Part One: An Ethical Void)
The Toxic Notification Bubble
2018 in review
What is Siggu.org?
SSH Foo
Getting the right scale
Fun PresentationFramework side-effect of bad equality
Three reasons why incubators breed failure
New blog: Space·Time Will Tell
How the cloud grew up around Linux
A first stab at gene expression
Brainstorming the SnailLife gene system
Building a snail one organ at a time
Ronin Time Bureaucrats: Is there an afterlife? (part 2)
Ronin Time Bureaucrats: Is there an afterlife?
Ronin Time Bureaucrats: The Time Adjustment Foundation
Ronin Time Bureaucrats: The Time Federation
And now, for something completely different: Ronin Time Bureaucrats
Are YOU experiencing shady output from your Go debugger? Try these things!
Roee: Self Modifying Go Simulation Experiment - Part 2
Roee: Self Modifying Go Simulation Experiment - Part 1
Helping as Learning
Quick and Dirty Function Timing in Go
Coordination
Active worms
Vermicomposting
Letstalkaboutp4
10 to 1 Rule
UAC Notes
Staple Remover Obsession
A simple guide to git
Rubber Ducky Moments: 'Completely unrelated []interface{}!!!'
Sleep
Devops Demystified
Sunset and sunrise on the Tor
First day in Glastonbury - visiting Tor and Chalice Well
IJCAI Session Notes: Rebel Agents
IJCAI Session Notes: Learning Common Sense
IJCAI Session Notes: Verifying Agent Based Autonomous Systems
Blockchain for IT pros
Halt and Catch Fire
Finances in an Employee-Owned Technology Co-operative
go-sql-driver and MySQL 8
Lessons I've learned from teaching 20 years of IT
Input Club K-Type and /dev/tty impressions
Some SnailLife Go client testing notes
Ultimate UNIX timeline
RIP PowerBook
Thinkerbell Postmortem/Brain dump
HolyJIT: Could we write a multi-staged JIT compiler?
JavaScript Binary AST diaries - How to replace proving with validating for fun and profit
Typestates in Rust
The history of IT certification
Testing SnailLife Go repositories
Excluding mocks from coverage reports
Testing SnailLife Go on Go 1.10
A quick guide for productive development
GitLab CI for SnailLife Go
2017 in review
Running tests and getting coverage reports on server deployment in SnailLife
The Binary AST Wishlist
RIP Solaris
Binary AST - Motivations and Design Decisions - Part 1
ECAL session notes: Open-Ended Simulations
ECAL session notes: Digital Evolution
ECAL session notes: Historical and Philosophical Perspectives on Artificial Life
Day 1 of ECAL 2017 - ISAL Summer School
JavaScript Binary AST Engineering Newsletter #1
Windows and macOS could move to Linux
Server and client for SnailLife Go
Towards a JavaScript Binary AST
Go auth (and other) progress
Playing with authentication in Go
Get ready for the chip wars!
Trying Out Go
Why you should buy an old arcade machine
Scripted Hackathon: Kids' First Hackathon
Talk on Big Data Tools and Architectures at Foo Cafe
State of the Snail - Debugging Hell
Finding Idylwild Park
Marionette 2.4.4 Gotcha: Changing a Filter's View
50 shades of Cray
Futuretech '92
The future of smartphones
We Won a Hackathon!
Project Lighthouse: A post-mortem
Things to do before you[r project] die[s]
Migrating again
Developer Week Hackathon
The customer is always right
Hello, TensorFlow
Extracting text from images is not easy (who would have guessed?)
2016 in review
Blog migration in progress
10 years of Facebook humour
New Programmers Should Read Hacker News
How to Use LinkedIn as a Coding Bootcamp Grad
Why am I doing this again?
Notes Towards Initial Rules for a Github Nomic
Github Nomic Rules
How this Coding Bootcamp Grad Found a Job
Good Breakdown of Backbone
"Full-stack" and why I don't like it
A Texas Bootcamp Grad's First Days at a Silicon Valley Startup
An evening with The Woz
New Place, New Job
API World Hackathon
The Linux operating system turns 25 years old today
The World Wide Web turns 25 years old today
The dawn of personal computing
Having a fish tank is supposed to be about stress relief
Some NeXT level stuff
Configuring Browser Apps
Menstrual Leave: 'I Have Cramps'
Final Projects at a Coding Bootcamp
Video Game Reflections
Surviving a Coding Bootcamp - Nearly Halfway Done at Makersquare
4 weeks in at Makersquare coding bootcamp
PowerShell Essentials for SysAdmins
Chest-Deep into a Coding Bootcamp
Snaily Updates: BrainHub + Runners, SnailLife Logo
How To Bicycle Commute in Bangalore
BrainHub and BrainRunner - finally over the hump
How to Drive a Motorcycle Across Vietnam
2015 in review
The brain scope is growing: BrainHub, BrainRunners, Brains
Just a Week in Taiwan
Hanoi
Made it to Hanoi
World of Commodore conference
Stamina and Mountain Passes
Bangalore 2030
Shrimps
Mountains and Beaches
Living Like a King
Got a Massage, Got Lost in a Forest
Vietnam - Still Haven't Gotten a Massage
First Day in Vietnam
Snaily Updates, Nov 10 - Family trees and inbreeding coefficient
Snaily Updates - Bug fixing and cleaning out old stuff
My Livecoding.tv account deletion saga
Snail organs, immunity, and ageing
Wild snails around the world
More location and temperature stuff
Bringing snail stables down to Earth
How to Turn Your Old Android Smartphone into a Dashcam
Snail stable breeding brands
I have become Crazy Cat Lady, the Buyer of Cat Strollers
How to Buy Stocks
Pee-training Rigel
Laravel log file backups to S3
SnailLife messaging system
Video game transcendental meditation
Update on Rigel and response from DjurAkuten
Snaily updates
How to Cure Your Allergies With Two OTC Drugs
Salaries in a Cooperative
Patient Charts
Emergent Continuous Design
Items
Images for combined substrate
Migrating to Laravel 5
Thinking through substrate
Jar substrate is a go
Tackling Gastropoda's memory usage - Round One
Why Ayurveda? Because Science!
The month from Hell
On your mark, get set, crawl!
Rethinking racing. Also cool snail art!
Snail brain semi-stable and reviewing visual traits set during breeding
From Amazon Web Services to Digital Ocean
Breathe new life into an old PowerBook G4 using Linux
It's not so bad. We have snail babies, after all
Snail gym vs training jar
Drugs, Meditation, Warnings
The journey continues - from Elastic Beanstalk to CodeDeploy
2014 in review
Personality
State of the Snail, 2014
Deploying Gastropoda to Amazon Web Services - Never Forget
Claustrophobia and eggicide
Scheduled food delivery, arousal suppressant, and brain woes
No more starving snails
GMOs explained
Detangling snail actions. Also a cat
What is a Software Cooperative?
Welcome, Gratitude
The fastest computer I have ever owned!
Hiking, Beyond Earth, and Gastropoda update
The ongoing saga of snail mating decisions
Went to my first Laravel Meetup
Event queues
The snails are eating again
Websocketing it up for snail movement
Braaaaaainsss
And we're back
How to use Anki to Learn Any Language
How to use VOIP and Google Voice to Have a 10$ Phone Bill
Pathfinder: two heroes are born
Wolfling runs
On snail eggs
New snail shell patterns
Laravel migration done
A battle with racing
Setting up an AWS EC2 instance for Gastropoda
Summer holidays and Amsterdam
Custom validators in Laravel
Experimenting with Laravel
The beginnings of a currency
To the Node and back
Leaving Taiwan T- 2 weeks
A move and a quick Gastropoda update
The day of the lettuce leaf
Taking it easy on the snailing with some lazy layout work
Recording snail history logs
The evolution of BYOD
Thoughts on @HobbyGameDev's post on starting simple
Snail metabolic rates and caloric needs
My 3 favorite Södermalm cafes to work in
Gastropoda - racing progress
A cycling adventure
It's summer!
What Does it Cost to Live in Asia? A Monthly Finance Breakdown
A Couple Reasons you Shouldn't Watch Movie Trailers
100 silly facts about ME
Baby snails!
Book Review: The Stars my Destination
Ripping apart Gastropoda
Two Other Blogs
Gastropoda, the name
Here jars, there jars, everywhere jars jars
Collecting wild snails
Porting Game of Snails to PHP
George H. Jenner
How to Not Be Sleepy All the Time
Stockholm and robot parts
Changing How it's Done
San Francisco and other updates
Microsoft ReFS vs Oracle ZFS - FIGHT!
An icy walk of creepitude
Global Game Jam 2014 in Stockholm (#GGJ14/#GGJSthlm)
Great Canadian Appathon 4
A slow start to 2014
The scenic route
Bromptoning it up
Move to S3 and Octopress. Oh and #1GAM
One Game a Month (#1GAM) Done!
Impressed by a 10 year old desktop computer
First foray into Unity
Why BlackBerry failed
A look back at the dotcom bubble
Steven Enns and "Craftsmanship"
GAME ON 2.0 wraps up!
Bellmanstafetten relay race - didn't die!
How not to run Midnattsloppet
Trying out the Rearth Ringke Fusion Nexus 4 case
The evolution of Information Technology
Porting Interdiction to Android with CocoonJS - overcoming mouse position offset problem
Some Toaster AI improvements
Slowly improving Toaster AI for #1GAM
We're more than halfway through the #1GAM year! What I've made so far.
Reddit took down my website!
June #1GAM game and board game AI
Nara
Osaka part 1
Game of Snails in all its barely-playable glory
A traumatic [read: wimpy] experience
A Game of Snails and Heroku
Revelation: I don't actually want to run a half marathon...
GUI - I hate this part.
A weekend of train-ventures, dodgy restaurants, and the most amazing weather in the universe.
A Game of Snails - Breeding system
A Game of Snails - feature list
Snails, running, and Sweden
Sweden weather is improving so I'm ditching the treadmill. It hurts.
Building in ImpactJS multiplayer is like a jelly wrestling contest
Marshall McLuhan was right
Deploying games to the Chrome Web Store seems stupidly easy
Conference over
iOS to Android - Nexus 4
Still in Singapore, got Pictures Uploaded
Two days in Singapore
Boarded for Singapore
A first try at object pooling
Spring Break to Singapore
Random thoughts on JavaScript performance, garbage collection, and object pooling
Running, unfortunate sprites, and GDC sessions
GAME ON 2.0 and triOS College
Creating randomized eye movement in ImpactJS
February #1GAM Game - My Mind Is Going
Ceci n'est pas une pipe
More tea...Silver Needle!
A potentially unwise newfound interest in tea.
Writing Good Commit Messages
A Users, Roles & Privileges Scheme Using Graphs
AIESEC FACI
Growing JavaScript trees for #1GAM
An Atheist's Glimpse of God
Still drawing... #onegameamonth
One Game a Month - Animatch progress
One Game a Month
Driving educational change
Sweden update - snow and Finland and Russian food and stuff!
The best keynote presentation of all time!
The Galaga no fire cheat mystery
Splitting text into lines according to maximum width + vertical text scroll in JavaScript and HTML5
Selecting from multiple ship/character options before each level (more UI stuff)
How I ended up handling GUI elements in ImpactJS
Modified screen shaker and camera follow in ImpactJS
Saving game state with HTML5 localStorage and JSON - a rough working draft
Dabbling in UI
So long and thanks for all the fish.
Mocap in action
A successful hackathon at our Kitchener campus!
Js13kGames entry finally submitted. Now I can think about something else, right? RIGHT?
KROOG - @Js13kGames entry
Arcade game CPUs
I made a Twitter logo in HTML5. It's like the ugly brother of the actual Twitter logo
Curved laser beams with HTML5 canvas quadraticCurveTo() method
Making a laser beam entity in ImpactJS using HTML5 canvas stroke()
Adventure Time! Pt. 2, Takao Mountain
I relearned basic trig today...kind of...sort of...Let's just say my thing works and leave it at that.
Adventure Time! Pt. 1, Akihabara
Too many tiny functions?
Why I can't not optimize.
Getting around the HTML5 canvas ctx.fillText line break limitation
Kindergarten Trip part 2
How the term 'cloud' was invented
Kindergarten "Western Style Ranch" Trip
Kindergarten and Whatnot
Made a rough Space Invaders clone. Annoyed at Chromium and its HTML5 audio bug.
How to properly pronounce Galaga
Today was not as productive as it should've been - Multitouch and stuff
Guide to buying old arcade games
That thing where I said I was going to take my mind off of coding for a while? It didn't work.
This post is not going to talk about how to do anything. But it's still about (iOS)Impact
Directional swipe and double-click in ImpactJS
Internet connection ACTIVATE
How much impact do ImpactJS timers have on performance? Plus implementing player speed boosts.
Swapping out animation sheets on state change in ImpactJS
Day One, in which I will walk five hundred miles
I should be in Japan right now
Refining on-the-fly pit spawning in Impact
Whoops Summer's Gone
Procedural levels continued: randomized pits and performance enhancements
Experimenting with procedurally generated levels in ImpactJS
Making a player grow as they eat stuff in ImpactJS
My 5 favorite opening lines from books
Can we just stop being unappreciative jerks please?
iiNet TopGeek 2.0, Hippo Creek, & Diablo 3
The zombification of Adam Green
Affecting the world and other things smelling up our fridge - by Joseph Hewitt
A belated post about the first Guild Wars 2 Beta Weekend Event / @GuildWars2
Chat bot nostalgia - old conversation transcripts
Box2D, I have conquered you!!! (sort of)
From iOS to Windows Phone - I got a Nokia Lumia 800
What I should have read a few years ago.
Pre-ordering Guild Wars 2 Collector's Edition from EB Games
College as an Educational Institution? Madness.
Box2D, you are torture.
How our video games evolved over time
Fun per genre - MMORPGs
Men of the Rodeo
Documentation, placeholder audio, and object interaction
I feel so rested right now it's amazing.
QNX on a moon rover
Entity states, animations, and other random stuff
Work, work
1pm breakfast after a 4am night - a JavaScript hangover
JavaScript lighting making slow progress
Working on JavaScript lighting
Entity spawning diagrams, dynamic attributes, and The Making of Prince of Persia
I wish I could remember this dream
JavaScript learning review
ROKS @ Beaumont
Gwen: Streamlining adjacency settings, performance, notifications, allegiance, etc
Sniffling and coding and level design (yes, again)
Heads up: going away. Not dead.
Levels and relaxed features
Today was a bug fixing and facepalming kind of day
Top down perspective vs isometric projection/2.5D
Level design, entity spawning, and art.
The long road to adjacency.
Getting my head around shallow vs deep copy
Twister Happens Too Much
Path follow mostly working - on to detecting adjacent nodes
On luck and having awesome friends.
ARRAYCEPTION
An update on Gwen - we have path follow.
Hello, Gwen.
I slept! And next.
Registered for #AltDevConf 2012
Things on napkins.
Chicago and Wisconsin pt. 1
I'm going to San Francisco for GDC 2012
Das Keyboard Model S Ultimate Silent - I am now a full mechanical keyboard convert.
GenghisCon 2012
SOPA and PIPA
Trent Reznor started this rant.
Using Google like a pro
What I did last year
2011 in review
Just some first thoughts on Star Wars: The Old Republic/SWTOR
Perspective on RIM
RIM is dead. Long live RIM.
Hard drives are dead
Linear vs nonlinear games
Finished Battlefield 3 single player campaign
Between a Break and a Break
Finished Deus Ex: Human Revolution and The Missing Link DLC
Building Adam.
2 weeks with the Razer BlackWidow mechanical keyboard: review/impressions
Publish me! I swears I works hard
Should we be gamifying our lives?
(Undefined - old post about post-PRC trip)
What an awesome weekend. New keyboard and mouse, Fremantle, and a great run.
Discovr Music - not really the app for me
What annoyed me about Real Steel - and the one thing I really really liked.
My mouse went to mouse heaven, so I got Microsoft's Arc Touch mouse. First impressions.
Photos from EB Expo 2011
I got to Brisbane in one piece!
Redesigns and injuries go hand in hand
I'm going to EB Expo 2011 - with a media pass thanks to iiNet
Hello, MacBook Air. Where have you been all my life?
Pistol shooting session at Midland Indoor Shooting Range!
ifttt: if this then that. Automate your social media task list.
How I threw my back out playing Angry Birds
Weird website contests, RPGs, and MMO gold-digging = my childhood
Cryonics and mind transfer
Deus Ex: Human Revolution - I've never been so into an FPS
Razer Blade gaming laptop - pleeeeeease come out in time for Guild Wars 2
HP TouchPad obtained
The Project Dust/From Dust trailer reminds me of something
Things I am most looking forward to this year
Boyfriend draws me on the Wacom Intuos4
Installing Windows 7 through Boot Camp with no Optical Drive on a Mac Mini
Living the High Life
I fail at life and everything - installing my new Wacom Intuos4
The Mac App Store is fricking awesome. And new Mac Mini!
Suzhou
No, I don't want a fracking coupon.
Panasonic Insider Crew Home
Halfway Point
Google+ - the next social networking hit or a messy mashup?
The Quantum Thief. Way over my head, going onto my re-read list.
Shanghai
X-Men: First Class was AWESOME...though that ending
Reading The Quantum Thief
Food is Culture, Fire is Poison
Dancing and Pirates
Nanjing
Source Code - flawed, but good...and disturbing
Teaching Teachers
Kung Fu School
2011 HBF Run for a Reason completed!
Delay
Sony does it again - password reset URL exploit
Markets and Mentality
Visiting Melbourne
Day one
Sweet mother of god
2011 Panasonic Home Entertainment Launch in Melbourne
Test Email Blog Post
Preparation
Yay new monitor! BenQ GL2440 24" LED
Daisyworld
Stranger in a Strange Land
I'm going to Melbourne! Panasonic Insider Crew
More hotlinking, please
Runkeeper LIVE - great runner safety feature potential
I just moved to NAB. Crap.
iiNet TopGeek Final
I'm lucky - I have help. #snails
How does one draw an endearing snail?
The Gargoyle by Andrew Davidson - still sinking in.
Oh hai there, Kindle
iiNet TopGeek - Game Over (for me)
I have just been reminded how much our mailbox sucks.
An overdue post about RIFT
World War Z by Max Brooks = Apocalyptic Goodness
Michael Buble in Swan Valley was AMAZING
Stop Cancelling TV Series
Toaster - My iiNet TopGeek Challenge 2 Entry
Cookie-cutter MMO questing systems.
MAXIMUM DOG - Canine Zombie Protection Suit
The transputer
Finally finished Oryx and Crake by Margaret Atwood
Photoshop challenge - Make an HTC 7 Mozart photo look good!
My gaming rut and mobile games
I made it into TopGeek Top 20 :)
The rise and fall of DEC
All about DEC
GenghisCon 2011 - Awesomeness!
Atari 2600 deep dive
I watched Buried last night
Claiming belief vs knowledge
My most memorable reads
Dinner at The Atrium at Burswood - it sucked.
The Gospel of Tux v1.0
How to buy a US-only Kindle eBook in Australia
Watched Tron: Legacy
D&D and Speed Fighting
Top Geek...and I cancelled my Vodafone plan
Busy weekend - Atrium at Burswood, D&D, and Jarrahdale Hike
Proclamation of undying love - vividwireless
BCE, CE, and the new IE
Harry Potter and the Deathly Hallows: Part 1
Funny Internet Shakespeare typo
What NASA's big announcement SHOULD have been
Removing blemishes in Adobe Camera RAW
Perth Dachshund UN - 47 Dachshunds having a vigorous debate
Pre-ordered Harry Potter tickets. Need wizard's hat.
Ebony & Ivory makeup launch and Slovakian ballet
NaNoWriMo has begun. Day 1 - 2,583 Words
Ghosting it up - Party at the Prison
Morning schedule fail - and Halloween party at the Fremantle Prison!
NaNoWriMo 2010 - National Novel Writing Month
Rearranging my schedule
What happened to the kvass...and the Mad Hatter's Tea Party challenge
Keeda is infected. Zombie virus?
Attempt at kvass-making
eBook pilot
NeXTSTEP is cool
Jaron Lanier on technology
BlackBerry 950 teardown
Copyright in Canada
The Amazon Kindle ROCKS!
Neighborhood Photos
Laser Eye Surgery
Laser Eye Surgery is a-Go!
Fremantle-y Day
Tweetie 2 Freaky Keyboard - Still Worth It
Stargate Universe Looks Promising
Lion King PC Game Nostalgia
A Bad Run - Running in the Heat
Derren Brown Guesses Lottery Numbers
Women's Classic 5km Race
Jim Sparks - Alien Abductee
The famous Pentium FDIV bug
Anatomy of an AS/400
EMERGENCY - "This book has the slight possibility of maybe helping you to save your life one day."
The death of SGI
10 years of UserFriendly.org
Happy Epoch Day!
My First Ever Global Game Jam
BlackBerry then and now
Battlestar Galactica is the Awesomest Thing Ever!
I created the Internet
CrackBerry Book
War Games shell scripting fun
How to please your IT department
How to do an out-of-office auto reply
Bill Gates steps down today
IBM hard drive from 1981
The Nostradamus of UNIX
Cartoons and Comic Books
We Need More -onomy
The UNIX way
Are you a Mac or a PC?
Linuxtopia
Netscape RIP 1994-2008
Dupies (Dollar-Rupees)
History of game consoles
Not Getting Things Done
The end of 2007
The Amazon Kindle: Friend or foe?
Anniversary of the World Wide Web
Thank you, Apple
Ontario Linux Fest
More about Open Source Software and Linux
The Gap
Fidget Weights
The wicked witch is dead
Server closet Buddha shrine
Google is My New Microsoft
A Walk
Richard Stallman talk at UW
When Marketing chooses the cover
eMac family photo frame
Roughing it on vacation
iPhone first impressions
Microsoft Energize IT conference
Linux thin clients
Big fish
Making It Look Easy
iThink therefore iMac
Summer is here. Finally.
Computer evolution
New Years security resolutions for 2006
Old Macs never die
1. Operating Systems
1. What do I do?
2. My published books
2. Retro Computers
3. Arcade Games
3. Personal Interests
4. Tech Flicks
5. Tech T-Shirt Slogans
6. Tech Humour and Puns
7. Three Unconventional Tips for Career Success
City Trails
Cyberpunk, Sci-Fi & General Fiction
Destination Trails
Non-Fiction & Biographies
This website contains zero AI-generated text
Trails in and around Algonquin Provincial Park
Video Game Books
About
Contact
Games
Life Simulation Repository
Rigel
SnailLife
Imprint
Privacy Policy