Release Engineering

Release Engineering I’ve been thinking about how we get changes from a laptop into production without someone having to SSH in and type things by hand. The answer, as it turns out, is a pipeline. Nothing fancy. Just a chain of steps that each do one thing and pass the result to the next. Here’s what we’re building. Git Everything starts in a Git repository. Puppet manifests, config files, deployment scripts — all of it. If it’s not in Git, it doesn’t exist. This is the part that matters most and the part people resist the most, because Git means your changes are visible. ...

30 August 2012 · 2 min · 367 words · Shafiq Alibhai

Perl Expect Bindings - A Simple Example

I ran into a situation recently where I needed a Perl script to launch another program, wait for it to finish, and move on. Nothing fancy. A simple spawn-and-wait. But doing it the naive way — backticks, pipe reads, polling — felt like overkill for what should be a two-liner. That’s where the Expect module comes in. It’s been around since the 90s, originally ported from the Tcl expect tool, and it does exactly what you’d expect: it spawns a process, talks to its stdin, reads its stdout, and waits for specific patterns. For simple cases it’s overkill. For anything that involves an interactive prompt or a non-trivial exit condition, it saves you from writing your own state machine. ...

21 February 2012 · 2 min · 335 words · Shafiq Alibhai

Continuous Delivery

I’ve been thinking about continuous delivery a lot lately, and the thing that keeps coming back to me is how much of a pain it is when someone logs into a server and makes a change by hand. You know the type. Production is down, someone jumps in, tweaks a config file, restarts a service, and everything works again. Great. Except now that server has a configuration that exists in no repository, no documentation, and no one else’s head. Next time something breaks, you’ll spend hours chasing a difference that nobody bothered to record. ...

2 January 2012 · 2 min · 373 words · Shafiq Alibhai

'How much memory is actually free?'

I keep forgetting this one, so here it is. vmstat -s -SM | grep "free memory" | awk -F" " '{print$1}' It pipes vmstat output through grep and awk to pull just the number – no units, no labels, just the gigabytes sitting there doing nothing.

10 December 2011 · 1 min · 46 words · Shafiq Alibhai

Effective human-computer interaction through cognitive biometrics

This is a paper I wrote exploring how brain-machine interfaces could change the way we interact with computers. The core idea was simple: most interfaces still demand motor work — hands on a keyboard, fingers on a mouse. What if you could skip that entirely? The problem Human-computer interaction has come a long way. Touchscreens let you bypass the mouse. But you still need hands. For some people — those with motor impairments, for example — that’s a real barrier. Even for everyone else, there’s something inherently slower about translating a thought into a hand movement, then into a keystroke or click. ...

11 November 2011 · 4 min · 639 words · Shafiq Alibhai

Applications of Neural Networks

This is a collection of research projects and applications I worked on using neural networks. Most of the video demos linked below are no longer available — the servers they lived on have been dead for years. I’m keeping the descriptions because they capture what the work was about. What is a Neural Network? An artificial neural network (ANN) is an information processing system inspired by biological nervous systems. It’s made up of a large number of interconnected processing elements — neurons — that work together to solve problems. Like people, ANNs learn by example. You configure them for a task, whether that’s pattern recognition or data classification, and they figure out the solution through a learning process. In biological systems, learning means adjusting synaptic connections between neurons. Neural networks do the same thing. ...

11 November 2011 · 7 min · 1436 words · Shafiq Alibhai

Walking Through OTC in SAP

Download Full Guide: OTC Flow Document Sales Order T-Code: VA01 Setting Value Company Code 4700 Sales Document Type ZOR Sales Area 4700/10/10 Header level: Sold-to-party: 1000991 Ship-to-party: 1000991 PO Number: ‘Test’ Payment term: 0001 Item level: Material code: 1000309 Order Quantity: 1 Plant: 4702 Press Enter Item billing: INCOTerms: CFR (Cost and Freight) Save Delivery T-Code: VL01N Setting Value Delivery Document Type ZLF Shipping Point 4702 Enter the Sales Document number from the previous step. Make sure the Delivery Date is set — it should pull through from the Schedule Lines in the Sales Order. ...

11 November 2011 · 1 min · 150 words · Shafiq Alibhai

Status Quo — A Review of Some Testing Practices

I spent a fair amount of time on SAP implementations, and testing was always one of those areas that people talked about in the project plan but never really thought through until something broke. So here is a review of some testing practices I encountered — what worked, what did not, and what I wish someone had told me earlier. Methodology Matters (Even If You Think It Does Not) Every SAP project has a methodology. Sometimes it is a proper one — Deloitte’s Thread Manager, IBM’s Ascendant, SAP’s own Roadmap through Solution Manager. Sometimes it is “we did something similar last time, let’s do that again.” Sometimes it is nothing at all, and the project is winging it. ...

11 November 2011 · 4 min · 808 words · Shafiq Alibhai

Replacing an IP address with sed

Sometimes you need to swap an IP address out of a file. Maybe you are moving a server to a new host, updating a config, or just tired of grepping through logs to find the old address. Whatever the reason, sed makes it trivial. The trick is matching the dotted-decimal pattern. An IP address is four groups of numbers separated by dots, so the regex needs to capture that structure. Here is the one-liner: ...

20 June 2011 · 2 min · 237 words · Shafiq Alibhai

How I Built My First Website for My College

Hello everyone! Today I want to share with you the first project I ever did: the college website! This was a very old project that I did with the help of Subhash Dasyam. It was a great learning experience for me and I’m excited to tell you more about it. The Project The college website was a simple static website that showcased the information and achievements of our college, ASTRA. It had pages for the departments, faculty, students, events, gallery, and contact. It also had a login system for the admin and the students. ...

14 June 2011 · 2 min · 356 words · Shafiq Alibhai