Photo of David Winter

david winter

  1. Post-deployment triggers for PaaS providers

    Not all hosting providers offer a mechanism to trigger follow up actions after a deployment. Here are a few examples using GitHub Actions to achieve it.

  2. Simple Electron automatic updates

    If you’re using electron-builder to publish your applications, then electron-auto-update provides you with a user-friendly simple auto update mechanism with one method call.

  3. Managing GPG with Keybase

    Use Keybase to setup and manage GPG, and start signing your git commits

  4. Working remotely with SSH and VNC

    A week long trip out in Spain with the need for CPU power back home

  5. Tmux - the essentials

    With only a handful of commands, tmux can still be your new best friend on the terminal

  6. Quick and simple Github Gist oEmbed support

    Get those code snippets embedded easily

  7. Install and manage WordPress with Composer

    Automated and repeatable WordPress deploys with Composer

  8. Introduction to Ansible

    The new, cool provisioning kid on the block

  9. Poor mans VPN with sshuttle

    Get around those evil firewalls and secure your net connection

  10. Switch to a retro shell, Fish shell

    Leave behind the millions of plugins, and slowness, and just use Fish

  11. Identity theft and no one seeming to care but me

    Maybe don’t waste your time reporting it in future…

  12. Setting up a Puppet Master and Agents on EC2

    One server to rule them all

  13. Install EC2 command line tools with OS X

    Be a ninja with EC2 using the CLI

  14. Getting started with Amazon EC2

    It’s not as difficult as it may first seem

  15. Install and manage WordPress with Git

    Keeping the core separate, but easy to update

  16. Introduction to Puppet

    Puppet can change your life

  17. Testing Javascript websites with Behat

    Using the Behat WebDriver driver to easily test websites with Javascript

  18. Using Behat with Mink

    Writing custom definitions

  19. Setup rbenv on Mac OS X

    Some quick setup instructions on getting rbenv installed on Lion

  20. Getting started with Behat

    A quick introduction on setting up Behat and writing your first test

  21. Setting up Github Pages

    Getting started with a Jekyll powered site and migrating from WordPress

  22. Simple local web development with Apache and Dnsmasq

    When you sit down and start work on a new project, what hoops do you have to jump through before you get your app running in your browser?

  23. Install APF on Ubuntu 11.04

    I just setup a new Linode to host my new twitter app, lists dj and wanted to lock it down to basically Apache and SSH.

  24. Setup UFW on Ubuntu 11.04

    Not much more than a few hours have passed since I posted my APF setup howto, but I’ve found something even simpler.

  25. PHP development on Mac OS X 10.6 Snow Leopard

    Having a reliable and easy to use developer environment on my Mac is essential for my work, and the odd project I work on.

  26. Merging MKV files together

    mkvmerge -o merged_file.mkv file1.mkv + file2.mkv

  27. Mod rewrite rules in htaccess files

    Rewrite rules in an htaccess file don’t need to leading slash, otherwise they won’t work.

  28. Authentication with CodeIgniter 2.0

    I’ve started using CodeIgniter again recently, and have noticed that my how-to on implementing basic authentication could do with an upgrade for version 2.

  29. A simple chat room with WebSockets

    Sorry, I promised a blog post, but instead you get a link to bitbucket with the source of a basic chat app written using WebSockets.

  30. Setting up SSH host shortnames

    Here’s an example setup to create SSH host shortnames. On you local computer, add the following to ~/.

  31. SSH and public key authentication

    Fed up with having to type your password in each time you log into a server over SSH?

  32. Using Capistrano to deploy Mercurial changes

    We have a few production servers at work, and we have a central bitbucket repository to store our core code.

  33. Using o2 PAYG mobile broadband

    Our internet connection via our landline has been dead since Tuesday afternoon, so I’ve needed an alternative connection in the meantime to give me my twitter fix!

  34. Redirecting Apache traffic to a maintenance page

    Here’s a simple solution to redirect users to a maintenance page in Apache. This rewrite rule can stay in your config (<VirtualHost> or .

  35. Install Mercurial on CentOS 4

    We’ve finally moved to Mercurial at work (well, we didn’t exactly move from anywhere, but that’s another story…).

  36. Apache, PHP and MongoDB on Mac OS X 10.6 Snow Leopard

    MongoDB (from “humongous”) is a scalable, high-performance, open source, schema-free, document-oriented database. There’s a lot of buzz brewing about it, so I wanted to give it a try with PHP on my development Mac.

  37. Remove startup scripts on Ubuntu

    sudo update-rc.d -f script_name remove

  38. Convert git repository to mercurial

    Ensure that the mercurial convert extension is enabled: nano ~/.hgrc Inside that file add: [extensions] hgext.

  39. Enable PHP error logging

    In php.ini: display_errors = Off log_errors = On error_log = /var/log/php-errors.log Make the log file, and writable by www-data:

  40. PHP and nginx on Ubuntu: the easy way

    I’ve now changed my slice from running lighttpd to nginx. Here’s the simplest way, in around 6 commands, to get PHP up and running via FastCGI.

  41. Authentication with CodeIgniter

    Here’s how I do some basic authentication for a controller in CodeIgniter. It basically consists of creating a new class that extends the default Controller class.

  42. A simple PHP delicious REST example with pecl_http

    <?php $username = 'your_username'; $password = 'your_password'; $url = "https://$username:$password@api.del.icio.us/v1/posts/recent"; $request = new HttpRequest($url, HTTP_METH_GET); $response = $request->send(); print $response->getBody(); ?

  43. Install pecl_http for PHP

    You will probably want to ensure that curl supports https before getting underway: curl -V Check that the output contains https:

  44. Install PHP5, lighttpd and Imagick on Mac OS X Leopard

    It’s a little tricky getting a nice clean install of PHP5 for OS X 10.5. The packages that I always used to depend on over at Entropy don’t seem to work anymore.

  45. lighttpd and PHP on CentOS 5

    Here’s a quick run down on getting lighttpd and php running on CentOS 5. yum install lighttpd lighttpd-fastcgi php mkdir /var/run/lighttpd touch /var/run/lighttpd/php-fastcgi.

  46. Mac OS X/HFS+ case-insensitive? Why?

    I just found out that HFS+, the preferred file system for Mac OS X, is case-insensitive when it comes to files and directories.

  47. Merge video files with mencoder

    To merge video files together with mencoder is simple: mencoder -oac copy -ovc copy file1.avi file2.

  48. Killing a program using a batch file in Windows

    Having got my keyboard shortcut working to launch my batch file, next was to actually make it quit the emulator program when invoked.

  49. Using shortcut keys in Windows

    You won’t find me writing about Windows too much on here I promise. I’ve been forced to use Windows XP on my arcade machine due to the lack of a decent Sega Mega Drive (Genesis for anyone in the US) emulator on Linux.

  50. vim: find, comment, save and quit

    For the last month, I’ve been teaching myself vim. So here’s an explanation for anyone interested in the commands I have been using:

  51. Me TV - EyeTV for Ubuntu?

    My search for an open source, Ubuntu alternative for EyeTV on OS X is nearly over.

  52. DVB and Mplayer

    As a follow up to yesterday’s post, here is a quick run through of how to use Mplayer to view DVB channels.

  53. Watching Freeview (DVB-T) TV with VLC Player on Ubuntu

    Watching TV on my desktop. What do I want to be able to do? Watch all Freeview (DVB-T) channels.

  54. Line breaks in OpenOffice.org

    A really frustrating issue I had when writing my project report, was that of dealing with source code formatting.

  55. mod_rewrite and Mac OS X Personal Web Sharing

    It was very frustrating installing a fresh Wordpress on my Mac and finding that the permalinks didn’t work.

  56. Graphviz - for drawing directed graphs

    This semester at University, I’m taking ‘Compiler Design & Techniques’ as a module. The second coursework involves drawing Finite State Machines diagrams that represent regular expressions.

  57. Switch to Static IP on Ubuntu Server

    I just bought a new Linksys router for my home network and wanted to set-up my Ubuntu Web Server with a static IP address so that I could port-forward a few things.

  58. Unix Disk Usage

    A very handy command to see the total size of a directory on a Unix-based computer.

  59. Mac "Hot Corners" for Ubuntu

    I’ve had a bit more time recently to play around with Ubuntu and am finding the ‘Ubuntu versions’ of apps that I’ve grown to love on Mac OS X.

  60. Festive Mac Screen Saver

    Here’s a great Mac screen saver to get you in the Christmas spirit–LotsaSnow. It generates unique snow flakes that then gently fall down from the top of your screen.

  61. Change your Terminal prompt - Lost style

    Fancy a change from the default prompt you get in your Terminal? Want to mimic the Terminal prompt used in Lost?

  62. Getting Ubuntu Dapper to dance with ATI X800 GTO

    I’ve made a brand new spare PC that I’m hoping my parents can use in their spare room/study.

  63. Building Apache 2.2 from source for Ubuntu Dapper

    Two reasons you might want to do this. You want to host a Rails application using Mongrel via Apache and mod_proxy_balancer.

  64. Subversion 1.4.0 from source via Apache 2.2 on Ubuntu Dapper

    This howto assumes you’ve already followed my Building Apache 2.2 from source article. Now we’re going to install Subversion 1.

  65. Ubuntu Dapper Web Server How-to

    It’s finally here, my updated how-to on how to get Ubuntu Dapper up and running as a home web server.

  66. Set-up Typo 4 on Ubuntu Dapper

    It was very annoying to find out that the brand spanking new installer for Typo wasn’t going to install over rubygems.

  67. Cocoa-Java and Jar Frameworks

    Note: Didn’t have time to really write this article up - maybe some time I will - but I’m posting it here just in case it comes in handy for someone.

  68. Using Tomcat Ant tasks

    I’m now really loving Ant for compiling my Java projects together. It really has solved the problem of figuring out what to update, or going through countless commands to compile each package etc.

  69. Access Control for Subversion with Apache2 and Authz

    My group project at University now consists of three smaller projects that provide an overall RSS service.

  70. Tomcat on Mac OS X Tiger

    Download the ‘Core’ .tar.gz version of Tomcat (as of this writing 5.5.15) from http://tomcat.apache.org/download-55.cgi. Extract and move the folder:

  71. Mac friendly Java apps in a few lines

    Mac menu-bar? Set this before you initiate your JFrame in your main class: System.setProperty("apple.laf.useScreenMenuBar", "true"); Other systems will just ignore this and the menu-bar will appear as normal for that system.

  72. Subversion over Apache 2 on Ubuntu

    If your one of my regular readers (ha!), then you’ll know I’m starting a Group Project for University.

  73. Using IRC and other IM apps at University

    At University, they’ve blocked ports for all IM applications, including IRC. This sucks, because IRC can actually be really helpful for asking for advice on things such as C++ or C.

  74. Ubuntu 5.10 web server howto

    I reinstalled my home server today (well, I actually started yesterday, but today I finished from scratch again) and wrote down what I did.

  75. Java foreach loop

    Coming from a PHP background, it’s always annoyed me that I can’t use something as simple as a foreach() loop in my C++/Java applications.

  76. Setting up XDMCP for Mac

    I just finished setting up a spare PC I had with Ubuntu on it. Thing is, it’s damn noisy so I want it stuffed up in the loft out of the way.

  77. Sorting a Vector using Collections.sort()

    Collections.sort() allows you to sort a Collections framework that is inherited from the List class. The Vector class is, so that’s great!