Latest posts
-
Python version epochs are broken
In PEP440 Python introduced Version Epochs as a mechanism to allow projects to change versioning scheme.
-
Creating GitHub Releases automatically on tags
GitHub Releases is a feature where you can create a page associated with a git tag that contains a description of the changes in that tag along with build artifacts for users to download.
-
A beginner's guide to managing Kubernetes resources in Python with kr8s
Managing Kubernetes resources with Python has never been easier thanks to the kr8s Kubernetes client for Python.
-
Running Dask on Databricks
Databricks is a very popular data analytics platform used by data scientists, engineers, and businesses around the world.
-
Running Dask workloads on multiple cluster backends with zero code changes using dask-ctl
Sometimes you want to write some code using Dask which can then be run against multiple different cluster backends.
-
EffVer: Version your code by the effort required to upgrade
Version numbers are hard to get right. Semantic Versioning (SemVer) communicates backward compatibility via version numbers which often lead to a false sense of security and broken promises.
-
How to highlight lines in a Hugo code block
Sometimes when writing code in a blog post I want to emphasize a couple of lines in particular.
-
How to get typer to show help by default
I love using typer for creating CLI tools in Python. It makes creating complex trees of subcommands really straightforward.
-
GitHub streaks and work/life balance
I recently read Loving and hating the Streak by Cassidy Williams. The post was all about committing code on GitHub every single day to maintain a streak.
-
Comparison of kr8s vs other Python libraries for Kubernetes
I’ve been working on kr8s for a while now and one of my core goals is to build a Python library for Kubernetes that is the most simple, readable and produces the most maintainable code.
-
The challenge of updating an aging blog
The Dask blog is a bit neglected these days. The website is an aging Jekyll blog and is well past it’s prime.
-
How I fixed my UniFi Devices intermittently showing as offline
Since upgrading to a UniFi Dream Machine (UDM) Pro I’ve had a problem with some of my UniFi devices showing as offline.
-
Livestream notes: Replacing aiohttp with httpx in kr8s
This post will be updated with notes from the livestream throughout the day. Today I will be streaming some open source code refactoring.
-
Introducing kr8s, a new Kubernetes client library for Python inspired by kubectl
For the last few months I’ve been tinkering with a new Kubernetes client library for Python called kr8s.
-
Avoid indirection in tests at all costs
When writing tests the balance between avoiding indirection and DRY-ness should be much more weighted towards avoiding indirection than in the code it is testing.
-
Mini demos
May 17, 2023 4 minute read #workAs software engineers we should all be able to communicate the things we have built to others, but giving a formal demo of something you’ve been working on can be daunting.
-
Debugging Data Science workflows at scale
May 12, 2023 15 minute read #python, #dask, #kubernetes, #apache-beam, #google-cloud, #google-kubernetes-engineThe more we scale up our workloads the more we run into bugs that only appear at scale.
-
Running Jupyter in your Dask Kubernetes cluster
Did you know that the Dask scheduler has a --jupyter flag that will start a Jupyter server running within the Dask Dashboard?
-
Being intentional with container terminology
When writing and speaking about linux container technologies I’m trying to be more intentional with the words I use, which means often avoiding the word docker.
-
Oversubscribing GPUs in Kubernetes
Sometimes I want to oversubscribe the GPUs in my Kubernetes cluster. This is especially useful when I’m developing but could also be useful in light workloads where you have ample GPU memory and don’t mind the occasional failure.
-
Quick and dirty way to pre-pull container images on Kubernetes
Sometimes when I give live demos with Kubernetes clusters I want to make sure that the container images I’m going to use are already pulled onto all of the nodes in my cluster.
-
Debugging Sphinx extensions in VSCode
This week I’ve been working on some custom Sphinx extensions for a documentation site. Sphinx is a pretty complex tool with a broad ecosystem so documentation tends to be spread across the upstream project, dependencies like docutils and popular extensions like MyST.
-
Sometimes I regret using CalVer
Over the last few years, many open-source Python projects that I work on have switched to CalVer.
-
Narrative driven development
In July I published a blog post on using Dask on KubeFlow with the Dask Kubernetes Operator.
-
Accelerating ETL on KubeFlow with RAPIDS
Aug 30, 2022 11 minute read #dask, #etl, #kubeflow, #pandas, #rapids, #technical-walkthrough ArchiveIn the machine learning and MLOps world, GPUs are widely used to speed up model training and inference, but what about the other stages of the workflow like ETL pipelines or hyperparameter optimization?
-
How to check your NVIDIA driver and CUDA version in Kubernetes
When using GPUs with Kubernetes it can be important to know which driver and CUDA versions are installed on the nodes.
-
Using Dask on KubeFlow with the Dask Kubernetes Operator
Kubeflow is a popular Machine Learning and MLOps platform built on Kubernetes for designing and running Machine Learning pipelines for training models and providing inference services.
-
Don't prematurely squash/rebase and force push your PRs
A big frustration for me when reviewing Pull Requests on GitHub is coming back to a PR you’ve already reviewed to check on recent changes and be greeted with “We went looking everywhere, but couldn’t find those commits”.
-
Commenting on Pull Requests with GitHub Actions
When someone opens a Pull Request (PR) on your GitHub project it can be helpful for a bot to comment on the PR.
-
The secret to making code contributions that stand the test of time
When you contribute code to collaborative projects, whether they are open source community projects or large internal projects inside organisations, the feeling of having your code running inside a large application can be very rewarding.
-
How to set environment variables on your Dask workers
When working with Dask clusters you often need the remote worker environment to match you local environment.
-
Golang block until interrupt with ctrl+c
Today I found myself needing a Go application’s main thread to stop and wait until the user wants it to exit with a ctrl+c keyboard interrupt.
-
Goodbye Docker Desktop for Mac, Hello Colima
Today is the deadline for the license changes to Docker Desktop for Mac and Windows. This means that if you are employed at a company with more than 250 employees or your company makes more than $10m you need to start paying a subscription to continue using Docker Desktop.
-
Docker Desktop for Mac alternatives for developers
In a couple of days Docker will begin charging employees of companies with >250 employees to use Docker Desktop.
-
Running Kubeflow inside Kind with GPU support
This week I’ve been playing around with Kubeflow as part of a larger effort to make it simpler to use Dask and RAPIDS in MLOps workflows.
-
Quick hack: Adding GPU support to kind
This post has been superseded with this tutorial that no longer requires any code changes. Please read that instead.
-
Don't be that open-source user, don't be me
Before I was a maintainer of open source software I was a user of open source software, and I sometimes behaved badly.
-
Branding your open source Python package
Having a brand can help give your open source project some legitimacy, and you don’t need to be a designer to see these benefits.
-
What is the difference between Dask and RAPIDS?
Both Dask and RAPIDS are Python libraries to scale your workflow and empower you to process more data and leverage more compute resources.
-
The evolution of a Dask Distributed user
This week was the 2021 Dask Summit and one of the workshops that we ran covered many deployment options for Dask Distributed.
-
Building a contributor community for your open source project
With our open source project published on GitHub we probably want to allow folks to contribute changes.
-
Communicating with your open source community
Once your open source Python project has users and a community you will likely want to communicate with them in an official capacity.
-
Building a user community for your open source project
Now that our open source Python project exists and users can install it we will want to turn our attention to sustainability, reach and ongoing maintenance.
-
Documenting Python projects with Sphinx and Read the Docs
In part four of this series we discussed documenting our code as we went along by adding docstrings throughout out project.
-
Monitoring Dask + RAPIDS with Prometheus + Grafana
Prometheus is a popular monitoring tool within the cloud community. It has out-of-the-box integration with popular platforms including Kubernetes, Open Stack, and the major cloud vendors, and integrates with dashboarding tools like Grafana.
-
Automating releases of Python packages with GitHub Actions
In this post we will cover automatically packaging and releasing our project when a new git tag is pushed to GitHub.
-
Testing and Continuous Integration for Python packages with GitHub Actions
In this post we will cover automatically running our tests when we push new code to GitHub, and when contributors raise Pull Requests against our project.
-
Awaitable Objects and Async Context Managers in Python
Python objects are synchronous by default. When working with asyncio if we create an object the __init__ is a regular function and we cannot do any async work in here.
-
Test driven development in Python
What is test driven development (TDD)? Test driven development is a style of development where you write your tests before you write your code.
-
Testing your Python package
In this post we will cover testing our code. Testing There are many many great resources out there for learning about testing software.
-
Documenting your Python code
This post will cover documenting our code. Specifically adding documentation within the code itself. Docstrings Right now our code is undocumented, so if the user inspects our function they will only see the interface (the way you call it) but with no other context.
-
How to interactively debug GitHub Actions with netcat
Update: This was a fun experiment and I recommend you check out the post for a fun read on setting up reverse shells.
-
How to check out the default git branch
Many open source projects are taking steps to update terminology to be more inclusive. The largest of these changes has been renaming the “trunk” branch of git repositories from master to main.
-
Leveraging the Hacktoberfest community
Hacktoberfest is approaching once again. In previous years I have both participated and contributed to open source, and also tried to leverage the community in the open source projects I maintain by curating and labeling issues.
-
Running Dask tutorials
Aug 21, 2020 20 minute read #python, #dask, #distributed-computing, #open-source, #community, #tutorials ArchiveOriginally published on the Dask blog on August 21st, 2020. For the last couple of months we’ve been running community tutorials every three weeks or so.
-
The current state of distributed Dask clusters
Originally published on the Dask blog on July 23rd, 2020. Dask enables you to build up a graph of the computation you want to perform and then executes it in parallel for you.
-
How to use OBS Studio with Zoom, Hangouts, Teams and more on macOS
A popular tool with streamers and YouTubers is Open Broadcaster Software®️ Studio or OBS for short.
-
How to enable SSH on Binder
⚠️ This post is no longer valid. Running SSH on Binder has not been possible since late 2020.
-
Publishing open source Python packages on GitHub, PyPI and Conda Forge
In this post we will cover making our code available to people. This is the bit where we open the source!
-
Versioning and formatting your Python code
In this post, we will cover a few project hygiene things that we may want to put into place to make our lives easier in the future.
-
Testing static sites with Lighthouse CI and GitHub Actions
Feb 13, 2020 7 minute read #python, #github, #tutorial, #github-actions, #static-sites, #lighthouse-ciWhen you build a website you want pages to load as quickly as possible for users.
-
Creating an open source Python project from scratch
Have you had a great idea for an open-source Python library that you think people will find useful, but you don’t know where to begin in creating and publishing it?
-
Twenty Nineteen Roundup
Introduction It has been a few years since I published a list of technology and media I enjoyed this year, so here we go for 2019.
-
5 Tips to help you ace your internship and entry-level job interviews
Applying for internships and entry-level positions can be tricky. Interviewers want to hear you talk about your experiences and things you’ve done that prove you’re a good fit for the job.
-
Creating GitHub Actions in Python
Note: This post is also available in Go flavour. GitHub Actions provide a way to automate your software development workflows on GitHub.
-
Creating GitHub Actions in Go
Note: This post is also available in Python flavour. GitHub Actions provide a way to automate your software development workflows on GitHub.
-
How to run Jupyter Lab at startup on macOS
In my day to day work I generally access a variety of Jupyter installations. Sometimes these are short lived installations in conda environments on my laptop, sometimes they are running on a remote server, and sometimes I use a managed service like JupyterHub or Binder.
-
How to create a Helm chart repository with Chartpress, Travis CI, GitHub Pages and Jekyll
Helm has become a pervasive tool in the Kubernetes community for packaging, managing, upgrading and distributing applications.
-
How to merge Kubernetes kubectl config files
Sometimes when working with a new Kubernetes cluster you will be given a config file to use when authenticating with the cluster.
-
The three types of fun
According to folks who enjoy outdoor activities there are three types of fun. I’ve been using this scale for a while to categorize my own enjoyment of things and wanted to share my version.
-
Why your profile picture is important
Choosing a good profile picture will make collaborating with others easier, especially if you haven’t met them yet.
-
Cleaning up conda environments
Often when I’m developing or debugging in Python I end up creating throw away conda environments.
-
Setting up GPU Data Science Environments for Hackathons
Originally published on the RAPIDS AI blog on August 13th, 2019. Background In my first week working at NVIDIA, I have been spending some time with my previous colleagues at the Met Office to explore how the two organizations can collaborate.
-
Switching to Hugo
It has been nearly two years since I published a new blog post on this website.
-
Hypothetical datasets
In Theo’s previous posts on storing high momentum data and its accompanying metadata we get some interesting insights into the future of cloud based data storage.
-
Intro to Earth Information Workshop
This article was originally written for the the Met Office workshop run at the Intro to Earth Information event on the 12th of March 2019.
-
My pragmatic workshop format
Jan 30, 2019 7 minute read #workshop, #conference-planning, #facilitation, #public-speaking, #training ArchiveMozfest workshop facilitators meeting Figuring out the right format for a workshop can be tricky.
-
Debugging Kubernetes PVCs
Sometimes I find that something goes wrong in a container and some data stored in a persistent volume gets corrupted.
-
Using Xiaomi door/window sensors as light switches
Introduction For a while I’ve been searching for a decent light switch solution for my home automation setup.
-
Exploring Dask and Distributed on AWS Lambda
I spent some time this week exploring whether it would be possible to run Dask and Distributed on a function as a service platform like AWS Lambda.
-
Instant access to auto-scaling personal Python clusters
Originally published on the Met Office Informatics Lab blog on February 7th, 2018. We are excited to announce that the work we’ve been doing with distributed Dask clusters running on Kubernetes has been absorbed into an awesome new tool called Daskernetes through our work on the Pangeo project.
-
ChatOps - Automation via chat
Originally published on the Met Office Informatics Lab blog on December 19th, 2017. ChatOps - Automation via chat This article is a companion to a workshop on using chat to automate ops workflows.
-
Deploying opsdroid using ZEIT
ZEIT is a great platform for deploying your opsdroid instance. Particularly because it is free for light use, which many opsdroid deployments will be.
-
Article in Computer Weekly
Aug 1, 2017 1 minute read #eventsThis week Computer Weekly have published an article interviewing me about how the Met Office is tackling the vast amount of data we are producing.
-
Adaptive Dask clusters on Kubernetes and AWS
Originally published on the Met Office Informatics Lab blog on July 21st, 2017. Introduction This article assumes a basic understanding of Amazon Web Services (AWS), Kubernetes, Docker and Dask.
-
Generate git release notes automatically
It is common practice for release notes to consist of a list of the Pull Requests which have been merged since the last release.
-
How to create a seal only token for Hashicorp Vault
Introduction When using Hashicorp’s Vault you may want to have an authentication token which only has permissions to seal the vault.
-
RITA 2017 Innovation Award
My team won a Real IT Award for Innovation! Check out the full post here.
-
Monitoring scalable infrastructure
Originally published on the Met Office Informatics Lab blog on May 8th, 2017. Recently we’ve been thinking a lot about monitoring.
-
Using Jupyter notebooks for SysAdmin, CloudOps and DevOps workflows.
Originally published on the Met Office Informatics Lab blog on May 8th, 2017. Jupyter notebooks are awesome.
-
Moving large volumes of data to S3
Originally published on the Met Office Informatics Lab blog on April 20th, 2017. We just moved ~80TB of data to S3 (stay tuned to hear what we’re doing with it).
-
Apple Airport Express Repair
Introduction I recently acquired an Apple Airport Express wireless hotspot which wouldn’t power on. This was most likely down to a fault on the power supply board and so I decided to have a go at fixing it.
-
Building Telegraf for 32bit FreeBSD
Introduction Currently InfluxData do not provide a 32bit FreeBSD build of Telegraf as part of their standard packages.
-
Build games for iOS 10 with Xcode 8 and Game Maker Studio 1.4
Introduction Building games for iOS is straight forward with Game Maker. You create the game as normal in Game Maker, but in order to build it you must have a Mac with Xcode installed.
-
A game on the perception of symbols
Originally published on the Met Office Informatics Lab blog on June 24th, 2016. With some friends look out the window and each choose a weather symbol which represents what you see.
-
Running Telegraf inside a docker container
Telegraf is an application for collecting server and application telemetry and metrics and sending them to a time series datastore like InfluxDB.
-
Getting started with VMwares ESXi/vSphere API in Python
In 2013 VMware dropped their Python library for accessing the API for ESXi/vSphere on GitHub. This is great, however it isn’t the easiest library in the world to use.
-
Cracking Enigma with Go
Originally published on the Met Office Informatics Lab blog on June 2nd, 2016. Can I crack the Enigma code with Go on a MacBook?
-
A note on AWS disk performance testing
Here is an interesting note on testing the disk performance of your AWS instances. Before you can acurately test the performance of your EBS disk you need to read all the sectors of the disk at least once if that disk was created from a snapshot.
-
Interactive Docker containers
Interactive shell In this post we are going to create a container we can interact with.
-
Running a Docker container
Installing Docker Installing Docker on your machine is required but beyond the scope of this series.
-
What is Docker?
Welcome to the first post in ‘Intro to Docker’, a series I’m writing to get beginners started with Docker.
-
How to use an Xbox 360 controller with OS X El Capitan
Introduction In order to use an Xbox 360 controller with OS X El Capitan you will need to install a driver for it.
-
MacBook Rebuild
Introduction I’ve decided to wipe my MacBook and reinstall everything! The current installation has been hanging around for the last few years and has even migrated between hardware with Time Machine.
-
Pretty git logs with `git lg`
This is a repost of a Stack Overflow answer, mainly to preserve it for myself. Slipp Thompson posted some really nice aliases for showing branch topology in the git command line.
-
Fixing the SSH roaming vulnerability (CVE-2016-0777)
A vulnerability in the OpenSSH client has been discovered which means that if you SSH to a compromised server the server can steal your private key.
-
Twenty Fifteen Roundup
Introduction Here is a list of the technology and media I enjoyed this year, a follow up on last year’s post.
-
Thoughts on Star Wars: The Force Awakens
Spoilers ahead, you have been warned! I thoroughly enjoyed the new Star Wars. Like I assume many people did I went to the cinema with concerns that the film would not live up to expectations.
-
A Raspberry Pi Docker Cluster
Originally published on the Met Office Informatics Lab blog on December 12th, 2015. Introduction We are fortunate in the Lab to have a small stash of Raspberry Pis in our cupboard which are used at hackathons and other events.
-
Building with Kubernetes
Originally published on the Met Office Informatics Lab blog on October 1st, 2015. For our 3D visualisation project we wanted to build a data processing service using Docker containers.
-
Quick Tip - git delete merged branches
Here’s a quick line to run in your terminal to delete all local git branches which have already been merged into master.
-
Quick Tip - em vs rem
em and rem are used in CSS to set a size value relative to a font-size.
-
govspeak: An open source markup language
Originally published on the Met Office Informatics Lab blog on July 22nd, 2015. The Informatics Lab website is created with an application called Jekyll.
-
Lab School: Docker
Originally published on the Met Office Informatics Lab blog on June 24th, 2015. Welcome to the first ever Lab School session.
-
Updating flightradar24 with a Raspberry Pi
You can feed data into flightradar24 (from now on referred to as fr24) simply using a Raspberry Pi and a cheap USB DVB-T tuner.
-
Collaborative article corrections in Jekyll
Don’t you find it really useful when you publish an article on your blog and then someone comes up to you and says:
-
Simple reading speed estimate in Jekyll
When browsing through off-the-shelf Jekyll themes recently I stumbled across one I really like called Pixyll.
-
Test your Jekyll blog with Travis CI
Introduction Testing your blog may sound like an odd thing to do, but if you’re running a Jekyll blog hosted on GitHub it is simple to set up and really useful for notifying you about broken links and other issues.
-
Bullet Journaling in 2015
Introduction It is one month into 2015 and I am on page 31 of my latest bullet journal.
-
How to install and configure inadyn on CentOS 6
Introduction Inadyn is a command line utility for periodically checking and updating your ip address with DynDNS.
-
How to install VMware Tools on Centos 6 with yum
Introduction Often when managing a large number of systems you want to manage all software installs the same way.
-
Twenty Fourteen Roundup
Introduction I’ve decided to finish off the year by writing a roundup of all the technology I’ve used this year.
-
Run OpenVPN on non-standard port with SELinux and Centos 6
I recently installed OpenVPN on a Centos 6 server but found that I couldn’t get the service to start.
-
How to easy_install and pip through a proxy
If you’re trying to install a Python package using easy_install or pip and you connect to the internet via a proxy you’ll need to make a few changes to your setup.
-
How to install the vSphere 5.5 Client on Windows 8
If you’ve tried installing the vSphere 5.5 client on Windows 8 you may have received the following error message
-
Simple HTML Redirect
I often find myself in need of a quick html redirect page. Most of the time I use the example from Stack Overflow but it involves changing the url in 3 places.
-
How I value media and entertainment
I’ve been meaning to write about how I value media/entertainment and my thought process when purchasing it.
-
How to use an Xbox 360 controller with OS X Yosemite
Update: There is a newer version of this article, see How to use an Xbox 360 controller with OS X El Capitan.
-
What is semalt and why are they in my analytics?
You may be among the many people having their Google Analytics stats skewed by fake referrals from semalt.
-
How to stop Google from scanning my site
Sometimes there may be occasions where you don’t want Google (and other search engines) to scan some or all of your website.
-
Amazon S3: s3cmd put ([Errno 32] Broken pipe)
Recently I decided to use Amazon’s S3 as another location to store some of my server backups.
-
How to install OS X Yosemite Developer Preview Beta in Virtualbox
Jun 7, 2014 3 minute read #apple, #developer-preview, #guide, #os-x, #terminal, #virtualbox, #yosemiteLike me you may be excited about the Developer Preview Beta of OS X 10.10 Yosemite and want to try it out, but you don’t want to deal with a buggy system between now and the general release.
-
How to use text expansion in OS X 10.9 Mavericks
Since the upgrade to OS X 10.9 Mavericks and iOS 7 you may have noticed that your text expansion shortcuts from iOS have found their way onto your Mac.
-
How to make screen recordings in OS X Mavericks 10.9
Did you know that you don’t need any additional software to make high quality, watermark free screen recordings in OS X Mavericks 10.
-
NASA Space Apps Challenge 2014 Roundup
Apr 25, 2014 4 minute read #agile, #hackathon, #javascript, #management, #nasa-space-apps, #planningA couple of weeks ago I attended a hackathon hosted by the Met Office as part of the 2014 NASA Space Apps Challenge.
-
How to prepare for a hackathon
So this weekend I’ll be taking part in the 2014 NASA Space Apps Challenge. This time around I’ll be leading a team, rather than just joining one on the day, so I feel like I have to be extra prepared.
-
Python script: Recursively remove empty folders/directories
So as part of a script I’m writing I needed the ability to recursively remove empty folders/directories from a filesystem.
-
Should I buy a cheap upgraded/reformatted SDHC micro SD card on eBay?
Short answer – No! Now I must admit I am one for buying rubbish on eBay and usually fancy myself as someone who can spot the difference between a bargain and a scam.
-
Convert tweet hashtags, at-tags and urls to links with PHP and Regular Expressions
Now of course if you’re using the Twitter API you can use Twitter entities but in this tutorial we’re going to use regular expressions.
-
Fixing VirtualBox verr_supdrv_component_not_found when selecting bridged networking on OS X 10.9
While installing CentOS in VirtualBox (version 4.2.4) on OS X (version 10.9.1) I came across the following error message when selecting bridged networking
-
Google Charts IE7 IE8 Issue: Date formatting problem
Just a quick post about an issue I’ve had with Google Charts on IE7/8. When viewing my page in Firefox or Chrome my graph displayed as expected.
-
Mac OS X Terminal Theme: Piperita
UPDATE – This project is now at version 2. See the Piperita GitHub page for up to date documentation and information.
-
Bootcamp Windows 7 on a 2011 MacBook Pro without a SuperDrive
Sep 30, 2013 7 minute read #mac, #os-x, #paragon-ntfs, #refit, #ssd, #usb-superdrive, #vmware, #windowsSo recently I swapped out the SuperDrive in my early 2011 MacBook pro for an additional HDD caddy.
-
Fixing "ERROR: Error 35: error:14077458:SSL routines:SSL23_GET_SERVER_HELLO: reason(1112)"
So the other day I came across the following error when using the munki configuration tool for mac.
-
Sort top command by cpu usage and set to default in OS X
As I come from a linux background but seem to spend more and more of my free time using OS X I keep noticing little differences in the way the command line works on a mac.
-
Why is there no space in the MySQL password parameter?
After troubleshooting a MySQL issue with a colleague we began discussing a “feature” of the MySQL command line which insists that you don’t put a space in the password parameter when using the short parameter.
-
Using the AddThis Share Buttons wordpress plugin in a custom theme
There is an undocumented function for adding a custom AddThis widget to your Wordpress theme when using the Add This Share Buttons plugin, so I thought I would document it here.
-
Convincing Paypal Phishing Email
So I woke up yesterday morning to find a receipt from Paypal for $149.49 on my iPhone.
-
Has Stack Overflow been hijacked?
Something funny seems to be happening with Google and Stack Overflow. I first noticed this last night when on my Macbook at home.
-
SSH without a password on OS X with ssh-copy-id
What is ssh-copy-id? ssh-copy-id is a script that uses ssh to log into a remote machine (presumably using a login password, so password authentication should be enabled, unless you’ve done some clever use of multiple identities) It also changes the permissions of the remote user’s home, ~/.
-
Album Review: Muse 2nd Law
Well I just got “2nd Law” by Muse and as I’m a big Muse fan I thought I’d write a quick review of it.
-
Using background-position and sprite sheets to stop icon hover flicker
While updating the theme on this blog I added some links to my social websites. I made these links in the form of images which were black and white and become coloured when hovered over.
-
Incorrect Gmail password when using exchange on iPhone
The Problem Recently I’ve tried playing around a little with the email account settings on my iPhone to try and get as much to sync as possible with some of my other accounts.
-
How to query a database with AJAX and display as a tooltip
This post began as an answer on Stack Overflow to a question on ‘How to query a database with AJAX and display as a tooltip‘.
-
Download Festival 2012 Timetable
Download have now released the times for Download Festival 2012 in the form of an app.
-
Shrinking SQL logs
While reading some articles about minimizing the size of data while leaving the data fully searchable I came across a lot of info about finding common data and replacing it with pointers to a dictionary or store of common strings.
-
The lesser known browser war
Feb 7, 2012 3 minute read #browser-war, #browsers, #chome, #firefox, #internet-explorer, #opera, #safariWell it’s been quite a while since I’ve written a post on here but due to a suggestion from a friend I’m going to try and make an effort to write more about the projects I work on and the random thoughts that fall out of my brain.
-
Apple game center hacks
Ok I’m currently on holiday with my girlfriend in turkey. It started getting a bit too hot in the sun a few days ago so we went into the hotel lobby and found free wifi.
-
Additional HDD Philosphy
A friend has asked me what I think the best way for him to set up his new HDD is.
-
Guide to repairing TFT monitor scratches
About a year and a half ago I was working on a guitar modification and dropped part of the modified casing on my laptop.
-
Ubuntu setup 2010
I am now happy with my Ubuntu installation. After a small hiccup earlier where it decided not to do an update properly, disable my mouse and keyboard and then ask for a password for them to be re-enabled.
-
Back to Ubuntu
For as long as I’ve been interested in computers I’ve been interested in linux. I was introduced to it by a friend at school when I was 13, we installed mandrake in vmware.