RSSAmplifier

Blog

Personal Website of David Taylor on Cloud Artisan

Recent content in Personal Website of David Taylor on Cloud Artisan

cloudartisan.comRSS feed ↗63 posts

Latest posts

AI Makes Code Cheap. Judgment Stays Expensive.

There is a version of the AI coding story that absolutely kills in a boardroom. Engineers can produce code faster. Boilerplate gets cheaper. Ticket throughput goes up. Junior engineers can supposedly do more with less support. Maybe leadership even convinces itself that fewer engineers are needed overall. I think that story is wrong. Or at least wrong enough to make expensive decisions with false…

Claude Code Tips & Tricks: Working with Lovable

When AI Tools Collide: A Real-World Experience # While building my latest project, Palette Kit (a React/TypeScript app for managing colored pencil gradients), I discovered something interesting: using Claude Code and Lovable together is incredibly powerful, but it requires a specific approach to avoid some nasty pitfalls. Honestly, I nearly broke my entire deployment pipeline learning this the…

Why Change Moratoriums Don't Work

I’ve been in this situation more times than I’d care to count: production is unstable, customers are unhappy, and leadership decides the solution is to freeze all changes until further notice. On the surface, it makes perfect sense. If changes are causing problems, stop making changes, right? Wrong! I understand the logic. I understand why executives think they should make this call.…

Essential Books

My Reading Philosophy # This is my collection of essential books - stories and ideas that have shaped my thinking and sparked my imagination. I’m drawn to speculative fiction that explores profound themes, spy fiction with psychological complexity, and non-fiction that challenges conventional wisdom. My favourite authors include Ursula K. Le Guin for her philosophical depth, John Wyndham for…

Essential Films

My Film Philosophy # This is my collection of essential films - it’s a blend of favourite movies and a list of films that must be seen. I’m drawn to drama that makes you think and feel deeply, quality sci-fi that isn’t derivative and inspires thought, and martial arts films with compelling storytelling and exceptional choreography. It’s very rare that I like a popcorn…

Getting Started with Google Gemini CLI

Google recently released their own entry into the agentic CLI arena: Gemini CLI. What might set it apart from OpenAI’s Codex CLI and Anthropic’s Claude Code is Gemini’s large context window and support for multimodal input. I’ve started testing it out to see just how it compares to Codex CLI and Claude Code (the latter of which I’ve been using regularly). This is…

OpenAI Codex Tips & Tricks: Listing Available Models

After getting started with OpenAI Codex CLI , I’ve discovered some handy tips to make working with it a bit easier. Listing Available Models # When working with Codex CLI, you can specify which model to use with the -m flag: codex -m o4-mini 'explain this code' But what if you want to know all the models available to you? The default documentation doesn’t provide a straightforward way…

Getting Started with OpenAI Codex CLI

I’ve been playing with the recently announced OpenAI Codex CLI. What is OpenAI Codex CLI? # OpenAI Codex CLI is available on GitHub . It’s a lightweight AI coding assistant that runs directly in the terminal, like Claude Code from Anthropic. Features include: Read, modify, and run code Multimodal input for processing screenshots and diagrams Different approval levels While it’s…

Claude Code Tips & Tricks: Maximising Memory

The Power of Memory in Claude Code # Having used Claude Code for a while now to help manage this website and other projects, I’ve come to appreciate how crucial its memory features are for productive work. In AI assistants like Claude, memory refers to the system’s ability to retain information across interactions, which can significantly reduce repetitive instructions and improve…

Claude Code Tips & Tricks: Custom Slash Commands

The Power of Custom Slash Commands # I&rsquo;ve been using Claude Code to help manage this website, and I kept finding myself typing similar instructions repeatedly: &ldquo;Create a new draft post titled <X>,&rdquo; &ldquo;Check this file for spelling, grammar, and UK English,&rdquo; &ldquo;Clear the cache and start the server&rdquo; in a very wordy way with a lot of back and forth &ndash; these…

Claude Code Tips & Tricks: Setting Up MCP Servers

What Are MCP Servers? # Model Context Protocol (MCP) servers extend AI Assistants&rsquo; capabilities by connecting them to external tools and services. Recently, Claude Code gained support for MCP servers, enabling integration with more specialised services like Stripe, Cloudflare, Supabase, Blender, and a whole lot more. This post demonstrates setting up some simple reference MCP servers. These…

Digital Diaspora: Where Egan's 'Diaspora' Meets 'Pantheon'

I&rsquo;ve been thinking about digital consciousness lately. A lot. What happens when human minds transition into a digital realm? Two works explore this territory in fascinating ways. Greg Egan&rsquo;s novel &ldquo;Diaspora&rdquo; (1997), which I finally got round to reading a year ago. And the animated series &ldquo;Pantheon&rdquo; (2022), which I just finished watching. &ldquo;Diaspora&rdquo;…

The Turing Option: A Prophetic Vision of Modern AI

Recently, I found myself reminiscing about a sci-fi novel I read in high school: The Turing Option by Marvin Minsky and Harry Harrison. Published in 1992, this book has been on my mind as I&rsquo;ve watched the recent explosion in development of modern AI. What stands out isn&rsquo;t just that it was co-authored by Minsky: one of the founding fathers of artificial intelligence&ndash;but how many…

Building Palette Kit: From Zero to Production in a Weekend

So I built Palette Kit over the weekend. The whole thing, start to finish: from zero lines of code to a published site. The Spark # It began with a phone call with my sister. She runs My Colourful Country Life , a site for adult colouring enthusiasts. As my sister explained the value of her PDFs for artists, I realised it&rsquo;d translate VERY well into an application with search and other…

About Me

Cloud Artisan # I&rsquo;m David Taylor, a software engineer and cloud architect with a passion for technology, martial arts, and retro computing. With over 20 years of experience in the tech industry, I&rsquo;ve worked on various projects ranging from cloud infrastructure to software development. This blog serves as a platform to share my knowledge, experiences, and insights. Interests # Cloud…

Google App Engine for Python: Getting Started On Mac

Download the DMG package from http://code.google.com/appengine/downloads.html and open it. Drag GoogleAppEngineLauncher to your Applications folder. Press CMD-Space to bring up Spotlight and type in &ldquo;GoogleAppEngineLauncher&rdquo; and hit Enter. Agree to opening the application. Click on OK when prompted to make command symbolic links. You&rsquo;ll be prompted for your password. Once…

Installing mr.awsome on Mac OS X

To quote the mr.awsome documentation &ldquo;mr.awsome is a commandline-tool (aws) to manage and control Amazon Webservice&rsquo;s EC2 instances.&rdquo; Once you know the correct incantation, installing it is easy. curl -o setuptools-0.6c11-py2.6.egg http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg#md5 = bfa92100bd772d5a213eedd356d64086 sudo sh…

Resizing an RDS database instance

I keep forgetting how to do this, so&hellip; wintermute:~ $ rds-modify-db-instance mydb --region us-east-1 --db-instance-class db.m2.2xlarge --apply-immediately DBINSTANCE mydb 2011-05-20T01:24:19.131Z db.m1.large mysql 250 master available mydb.abcdefghijk.us-east-1.rds.amazonaws.com 3306 us-east-1b 0 db.m2.2xlarge n 5.5.8 SECGROUP default active PARAMGRP mydb-params in-sync Yup, that involves an…

Resizing EC2 Instances

An EC2 instance needs to be stopped before it can be resized. Also, it can only be resized to a &ldquo;compatible&rdquo; type (ie, one with a compatible kernel, 32 bit or 64 bit). So, if you started with a 32 bit t1.micro you can only resize up to a 32 bit m1.small . If you started with a 64 bit t1.micro you could resize up to a 64 bit m1.large . wintermute:~ $ ec2-stop-instances i-3e15ff51…

Server Density Plugin for Monitoring Cherokee

I&rsquo;ve created a Server Density plugin that can be used to monitor the Cherokee web server. The plugin is currently available on github . The installation instructions are over there. If you have any changes or improvements you&rsquo;d like to see, please fork and create pull requests. Here are some screenshots&hellip;

Getting Started With AWS Identity Access Management

AWS Identity Access Management (IAM) is a free feature provided with your AWS account&hellip; enabling businesses to create multiple Users with individual security credentials who can use AWS web services, all controlled by and billed to a single AWS Account For example, you might use it to: restrict your web application to only manage S3 give accounts to an operations team, adding them to an…

Installing newrelic_api gem from GitHub

I needed to correlate some logs with New Relic monitoring data. I started doing this manually&hellip; and got bored very quickly. It was too slow and painstaking. After some poking around I came across newrelic_api (not to be confused with rpm , which is the monitoring agent). Next thing I discovered&hellip; I had no idea how to install gems from GitHub! No longer! wintermute:~/Git $ mkdir…

Install Ruby 1.9.2 and Rails 3.0.3 using rvm on Ubuntu 10.10

It&rsquo;s terse, probably more for my benefit than yours, but let&rsquo;s dive in&hellip; Install the packages required by rvm : david@continuity:~$ sudo apt-get install curl git Install rvm : david@continuity:~$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head ) % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 986 100…

Upgrading Djangy

With the newer versions of Djangy comes support for the fantastic pip installer. It&rsquo;s as easy as: david@continuity:~$ sudo pip install --upgrade djangy Downloading/unpacking djangy Downloading Djangy-0.14.tar.gz Running setup.py egg_info for package djangy Installing collected packages: djangy Found existing installation: Djangy 0.11 Uninstalling Djangy: Successfully uninstalled Djangy…

My first Djangy project (local testing)

In my previous post I knocked out some simple code and pushed it straight to Djangy. I didn&rsquo;t even test it locally first ( gosh shock horror aghast )! Well, that must end&hellip; now. A Djangy project is, in it&rsquo;s heart of hearts, a Django project that you&rsquo;ve shoved out your door into the big bad world. And the great thing about Django projects&hellip; you can run them locally for…

My first Djangy project (initial testing)

My first Djangy project will be an application called rightscalefeed . It will pull down a user&rsquo;s RightScale event feed. Ideally, I&rsquo;d like to transform the feed into a WebSocket, suitable for continuous updates, perhaps for display in a data centre or network operations centre. I may have bitten off more than I can chew, as I&rsquo;m not sure Django (or Djangy&rsquo;s environment) has…

Tuning PHP APC with Cherokee - Round 1

Since writing Using PHP APC with Cherokee I noticed that my cache hits were dropping and my cache misses were growing. This is my first attempt at tweaking the configuration of php-apc to try to eke out more performance. I enabled my apc.php page (check the previous article), checked the statistics, and saw that the Cache full count was growing. My cache had filled several times. According to the…

Using PHP APC with Cherokee

If you&rsquo;re using Cherokee as your web server, you&rsquo;re probably already interested in squeezing every drop of performance out of your server. If you&rsquo;re hosting PHP sites with Cherokee, using APC (Alternative PHP Cache) could enable you to squeeze out even more drops. The Alternative PHP Cache (APC) is a free and open opcode cache for PHP. Its goal is to provide a free, open, and…

Using ISPConfig with Cherokee

The Cherokee Project describes Cherokee as: a very fast, flexible and easy to configure Web Server. It supports the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, uWSGI, SSI, TLS and SSL encrypted connections, Virtual hosts, Authentication, on the fly encoding, Load Balancing, Apache compatible log files, Data Base Balancing, Reverse HTTP Proxy, Traffic Shaper, Video Streaming and much…

My Djangy invite arrived!

My Djangy invite arrived and I&rsquo;m very excited! Now I just need to set aside the time to use it. I already have some ideas&hellip;

Install uWSGI (latest) on Ubuntu Server 10.10

uWSGI is a fast, self-healing, WSGI server. It is typically used with Python web applications. It works very well with the Cherokee Web Server and the Django web application framework. To install the latest uWSGI use pip and the URL for the latest version of uWSGI: ```bash sudo apt-get install libxml2-dev build-essential python-dev python-pip sudo pip install…

Adding the Cherokee Web Server PPA to Ubuntu

The following commands will add the Cherokee Web Server PPA to Ubuntu (version 9.10 and higher). The first command adds the extremely handy add-apt-repository program to your system. The second adds the Cherokee Personal Package Archive. ```bash sudo apt-get install python-software-properties sudo add-apt-repository ppa:cherokee-webserver/ppa At the moment, Cherokee is at version 1.0.9. If you…

How to upgrade Ubuntu Server 10.04 to 10.10

The following commands can be followed blindly to update an Ubuntu Server install from version 10.04 (Lucid) to version 10.10 (Maverick). ```bash apt-get update apt-get install update-manager-core sed -i 's/Prompt=lts/Prompt=normal/' /etc/update-manager/release-upgrades do-release-upgrade

Google App Engine SDK broken on Ubuntu Maverick 10.10

The Google App Engine SDK is broken on Ubuntu 10.10, but it&rsquo;s easy enough to fix&hellip; The Google App Engine SDK requires Python 2.5. It does not work with Python 2.6. This problem is covered in these Google Code issues: http://code.google.com/p/googleappengine/issues/detail?id=1159 http://code.google.com/p/googleappengine/issues/detail?id=757 If you try to use Google App Engine SDK on…

RightScale ServerTemplate: Bitnami Drupal Stack

I&rsquo;ve published a RightScale ServerTemplate for installing Bitnami&rsquo;s Drupal stack on Amazon EC2. Drupal is an open source content management platform powering millions of websites and applications. It’s built, used, and supported by an active and diverse community of people around the world. My ServerTemplate is based on an existing ServerTemplate by Bitnami. It differs from…

RightScale ServerTemplate: Bitnami WordPress Stack

I&rsquo;ve published a RightScale ServerTemplate for installing Bitnami&rsquo;s WordPress stack on Amazon EC2. WordPress is web software you can use to create a beautiful website or blog. It is based on an existing ServerTemplate by Bitnami. It differs from Bitnami&rsquo;s existing WordPress ServerTemplate in a few ways: it uses an Ubuntu RightScale MultiCloud Image as its base it has some of…

RightScale ServerTemplate: Virtualmin

I&rsquo;ve published a RightScale ServerTemplate for launching Virtualmin on Amazon EC2. Virtualmin is a powerful and flexible web server control panel based on the well-known Open Source web-based systems management GUI, Webmin. Manage your virtual domains, mailboxes, databases, applications, and the entire server, from one comprehensive and friendly interface. The ServerTemplate I&rsquo;ve…

Migrating from Google App Engine to Django

Unfortunately, I had to migrate one of my projects from Google App Engine to Django on a self-managed server. I didn&rsquo;t want to do this. See Google App Engine Gotcha #2 and Google App Engine Gotcha #3 for the main reasons. Those headaches became bad enough that I had to bite the bullet and migrate out of Google App Engine. It&rsquo;s not for the faint-hearted&hellip; Why Google App Engine In…

Hudson: pam_authenticate failed

If you&rsquo;re getting login failures after enabling Unix user/group database security check the log: /var/log/hudson/hudson.log . If you see: ```text Oct 11, 2010 9:41:08 PM hudson.security.AuthenticationProcessingFilter2 onUnsuccessfulAuthentication INFO: Login attempt failed org.acegisecurity.BadCredentialsException: pam_authenticate failed : Authentication failure; nested exception is…

Cherokee failing to exec spawn-fcgi

If you&rsquo;re using spawn-fcgi with Cherokee (probably to get a wiki or PHP application or similar working) and you see: 503 Service Unavailable &hellip; you might be having the same problem I had. That is, Cherokee was failing to launch spawn-fcgi . To verify this is the cause of your problem, stop Cherokee, then start it manually at the command line: # /usr/sbin/cherokee --admin_child -C…

Install Hudson on Debian Lenny for Continuous Integration

I found that Hudson depends on daemon but it doesn&rsquo;t install automatically. So, before we get started: ```bash apt-get install daemon Now that's out of the way, we need to grab the Hudson key and install the package: ```bash wget -q -O - http://hudson-ci.org/debian/hudson-ci.org.key | apt-key add - cd /tmp wget http://hudson-ci.org/latest/debian/hudson.deb dpkg --install ./hudson.deb If…

Install uWSGI (latest) on Debian Lenny

First, why would you want it? uWSGI is a fast, self-healing, WSGI server, originally intended for use with Python web applications. I intend to use it with Python Django, served by Cherokee. As for installation&hellip; Do not bother doing a hands-on install from source. It&rsquo;s messy. Just use pip : ```bash apt-get install gcc python-dev libxml2-dev apt-get install python-pip pip install…

Python One-Liner: Debug Mail Server

Need a pretend mail server that you can use for debugging? Try this: ```bash python -m smtpd -n -c DebuggingServer localhost:1025 It listens on port 1025 for local connections.

Install Cherokee (testing) on Debian Lenny

Add the following to /etc/sources : ```text deb http://ftp.us.debian.org/debian/ testing main contrib non-free Create `/etc/apt/apt.conf` with: ```text APT::Default-Release 'stable'; Create /etc/apt/preferences for pinning the testing packages: ```text Package: libssl-dev Pin: release a=testing Pin-Priority: 999 Package: libssl0.9.8 Pin: release a=testing Pin-Priority: 999 Package:…

Migrating from Google App Engine to Django... a preamble

I&rsquo;ve been nose-deep migrating a project from Google App Engine to Django. See Google App Engine Gotcha #2 and Google App Engine Gotcha #3 for the reasons. I&rsquo;m keeping notes on the experience, in case any other poor suckers out there have to migrate from the cosy, loving embrace of a PaaS to the cold, hard trenches of a self-managed server. Stay tuned&hellip;

IronRuby on Rails on Azure (Part 2 of 3) – Connecting your Rails app to SQLAzure

This is the continuation of my bungling around with IronRuby, Rails and getting it running on SLQAzure. In part 1, we installed a basic rails application using IronRuby with SQL Server as it&rsquo;s backend. We&rsquo;ll now examine how we can connect this application to a SQLAzure backend as opposed to a SQL Server hosted on your development machine. I’m assuming you have the vanilla rails…

IronRuby on Rails on Azure (Part 1 of 3) - Getting Started

This is the first of a three part series on running a rails application on Windows Azure using SQLAzure as your database backend. The Rail Guides website, of course, has a wonderful getting started article that I couldn&rsquo;t possibly do justice. This small series is just a very simple demonstration of one possible way of developing a rails application on Microsoft&rsquo;s Azure platform. In…

Google App Engine Gotcha 3

What&rsquo;s the problem? # Well, gotcha #3 is a simple but annoying one. The urlfetch call does not use a fixed source IP address. It makes sense, when you think about it. Google App Engine is ( apparently ) distributed all over the place, with no guarantee of where your code will run at any given time. I presume this is so that Google are free to move applications between data centres to…

Google App Engine - unknown URL handler type

Fatal error when loading application configuration: Invalid object: Unknown url handler type. <URLMap secure=always static_files=None auth_fail_action=redirect require_matching_file=None static_dir=None script=None url=https://cloudartisan.com/admin/.* upload=None expiration=None login=admin mime_type=None > in '/home/david/Subversion/cloudzu/software/cloudzuum/src/app.yaml', line 37, column 1…

appengine-jruby "no such file to load -- builtin/core_ext/symbol

A while ago I wrote a proof of concept in JRuby on Google App Engine, using the fantastic appengine-jruby project. The code worked (albeit, very slowly! ). Satisfied, I put the code to the side, committed to a Subversion repository. Today I got a chance to dust off the code and do some more work on it&hellip; only to find it no longer worked. When I started my code with dev_appserver.rb I saw: