Welcome to Tony's Notebook

URL Encoding

2020-07-07

In this article I take a look at what URL encoding is, and also look at a related practical problem I had to overcome.

Filed in: Code

Freelancing: How much should you charge?

2020-01-06

In this article I take a look at how much you should charge for freelance IT work.

Filed in: Random

The death of the Internet café

2019-11-25

A look back at the rise and fall of the Internet café, or Cyber café as it was sometimes known.

Filed in: Retro

Write your own JWT generator in Python

2019-11-23

Shows you how to write your own command-line JWT generator in Python.

Filed in: Code

Exploring HTTP

2019-11-21

A brief exploration of HTTP and the tool HTTPie.

Filed in: Tools

How to write a simple web spider in Python

2019-11-07

How to write a simple web spider in Python to use as a link checker.

Filed in: Code

Python and Unicode

2019-11-05

This article takes a look at using Unicode in Python.

Filed in: Code

What are Character Encodings?

2019-11-02

This article takes a look at what character encodings are.

Filed in: Code

What are Character Sets?

2019-10-29

This article takes a look at what character sets are.

Filed in: Code

Introduction to JSON

2019-10-24

A quick look at JSON, why it's important and how to deal with it in Python and JavaScript.

Filed in: Code

How to upgrade your Postgres database tables

2019-10-21

Looks at how to upgrade database tables in an older version to a newer version of Postgres.

Filed in: Tools

Introducing Python lambda

2019-10-20

A first look at Python lambda

Filed in: Code

Python non-greedy regexes

2019-10-19

How to make Python regexes a little less greedy using the `?` modifier.

Filed in: Code

On missed opportunities

2019-04-11

Some thoughts on some of the bigger opportunities missed along the way.

Filed in: Stories

How to take out a contract on John Wick

2019-04-04

I show you how to take out an open contract on John Wick with a bit of help from Nexmo and Python.

Filed in: Nexmo

The case of the missing clients

2019-03-30

What do you do when all your customers suddenly dispappear overnight? Call me of course.

Filed in: Stories

Creating a video chat application with OpenTok

2019-03-21

Creating video chat application with OpenTok.

Filed in: Nexmo

Calculating compound interest

2019-03-05T00:00:00.000Z

In this article I take a quick look at performing financial calculations in Python. I also take a look at the very important 4% rule.

Filed in: Random

Doom Zone Memory Manager

2018-12-13

On the mysteries of the Doom Zone Memory Manager and other Doom-related trivia.

Filed in: Books

Python keyword parameters

2018-11-02

In this article I take a quick look at Python keyword (named) parameters.

Filed in: Code

Emacs keyboard configuration on Mac

2018-11-02

In this article I talk about configuring Emacs for use on Mac OS X. The configuration works with both Terminal Emacs and Cocoa Emacs(Desktop).

Filed in: Tools

Understanding JWTs

2018-11-01

This article takes a look at JSON Web Tokens or JWTs. The article looks at their basic format, and how they are created and used.

Filed in: Code

Understanding Unix time

2018-10-30

This article takes a look at the idea behind Unix time. It also shows you how to get the current Unix time from the shell and from Python. The concept of the Unix timestamp will be used again in subsequent articles.

Filed in: Code

Customizing your Bash shell prompt

2018-07-06

In this article I look at customizing your Bash shell prompt.

Filed in: Tools

Learning JavaScript with HTML5 Canvas

2018-07-05

In this article I decide to learn JavaScript and write a couple of simple JavaScript programs.

Filed in: Code

Dial-a-chiptune

2018-05-11

In this article I talk about a fun little project I whipped up in about an hour of pre-breakfast hack time. It's super easy, but could provide the basis for your own more ambitious projects.

Filed in: Nexmo

A gentle introduction to Nexmo

2018-05-10

In this article I attempt to provide you with a gentle introduction to what Nexmo is, some of the things it can be used for, and provide some simple example code in Python.

Filed in: Nexmo

Really simple encryption

2018-05-08

In this article I take a look at a really simple encryption system. Applications could include sending ever-so-slightly more secure text messages via APIs such as Nexmo or Clockwork.

Filed in: Code

Radio telemetry with Nexmo and Python

2018-05-02

This article looks at how to set up a cheap radio telemetry system using someting like a Raspberry Pi with an SMS module, Nexmo, and a little bit of Python on the back end.

Filed in: Nexmo

On buying my first smartphone

2018-04-20

Some thoughts on taking the plunge and becoming a smartphone owner.

Filed in: Stories

Intro to Ngrok

2018-04-13

A quick intro to the wonders of Ngrok.

Filed in: Tools

Joining Nexmo

2018-03-31

Things are changing at Coffee and Code HQ (now tonys-notebook.com).

Filed in: Personal

The lost art of fixing electronics

2018-03-01

Some personal thoughts on the lost art of fixing electronics.

Filed in: Stories

Real-time systems - Internet of Things

2018-02-28

My series on real-time systems concludes with some brief thoughts on the Internet of Things.

Filed in: Systems

Bootstrapping

2018-02-28

A look back at 'bootstrapping' in the 1980s.

Filed in: Stories

Real-time systems - web

2018-01-19

Previous articles in this series described the nature of real-time systems and then the infrastructure (networks and protocols) underlying the web and the Internet of Things (IoT). This article provides a brief introduction to the real-time web, without delving into language-specific details. A future article will look at real-time aspects of the IoT.

Filed in: Systems

Days of dial-up modems

2018-01-18

Light-hearted memories of the "olden days".

Filed in: Retro

Real-time systems - networks and protocols

2018-01-17

This article continues the series on real-time systems by looking at infrastructure (networks and protocols) underlying the web and the Internet of Things (IoT).

Filed in: Systems

Real-time systems - timing

2018-01-16

This article is the first in a series that attempts to explore what is meant by a real-time system, specifically in the context of communications, the web, and the Internet of Things (IoT).

Filed in: Systems

Limits of Markdown

2017-11-24

In which I discuss the limitations of Markdown when constructing websites and documentation systems.

Filed in: Tools

How to generate an Atom feed

2017-11-20

This article explains how an Atom feed was added to this site using Python code. The article also describes adding automatic feed discovery to the site.

Filed in: Code

Dealing with dates

2017-11-14

In this article I describe dates, how they are used on this site, and how you can generate ISO-8601 format dates on the Mac OS X command line.

Filed in: Code

The woeful web

2017-11-07

In this article I look at what I think are some serious issues with the web today.

Filed in: Random

Caching in

2017-11-05T00:00:00.000Z

A look back at how disk caching software and disk de-fragmenters were A Thing back in the 90s.

Filed in: Retro

Ever expanding memory

2017-11-01

A brief look at how console memory has increased over the years.

Filed in: Systems

How long to transfer a 1TB file?

2017-10-31

How long does it take to transfer a 1TB file? Python can help.

Filed in: Code

Cracking the Fog Creek coding problem

2017-10-29

In this article I take a look at how to crack the Fog Creek content developer coding puzzle.

Filed in: Code

Wolfenstein's memory manager

2017-10-27

An overview of the Wolfenstein 3D compacting memory manager.

Filed in: Systems

Tracing version of malloc

2017-10-25

I managed to create some useful macros for debugging C programs.

Filed in: Code

Diving into the buffer pool

2017-10-23

In this article I provide some brief notes on buffer pools.

Filed in: Systems

Spreadsheets everywhere

2017-10-20

On the phenomenon of the spreadsheet that starts out innocently enough and then becomes an out-of-control beast.

Filed in: Tools

'Stdout was a bad, bad boy'

2017-10-19

Sometimes an application may open `stdout` with ASCII encoding, rather than UTF-8.

Filed in: Code

Python env issue on Ubuntu 16.04

2017-10-17

Describes an issue where Python couldn't be found on Ubuntu.

Filed in: Tools

Excel ain't a database!

2017-10-15

A light-hearted story on the problems of using Excel as a database.

Filed in: Stories

How Python saved my sanity!

2017-10-14

A light-hearted look into how Python can help you retain your sanity!

Filed in: Stories

Calculating entropy

2017-10-11

This article looks into how to calculate entropy. The article includes example C code.

Filed in: Code

Can Rust help?

2017-10-10

In this article I look into some problems with C pointers and wonder if Rust can help.

Filed in: Code

Tales from the Bcrypt

2017-10-09

Bcrypt proves to be a very convenient library for encrypting passwords.

Filed in: Code

Don't forget to flush!

2017-10-07

On solving a mysterious problem in a CGI web app.

Filed in: Tools

Tracing memory allocations

2017-10-05

On various attempts to try and trace memory allocations.

Filed in: Code

Don't forget the Unix tools

2017-10-04

There are times when the best approach is not to reinvent the wheel but use the numerous command line tools available in Unix.

Filed in: Tools

Remembering TurboDOS

2017-10-02

Back in the early 80s the company I worked for ran its entire operation on a Z-80 based operating system called TurboDOS. This article fondly remembers how capable the system was.

Filed in: Retro

Why I still use Emacs

2017-10-01

A light-hearted story on why I still use Emacs.

Filed in: Tools