RSSAmplifier

Blog

tmpfs /home/stan

blog.angeloff.nameRSS feed ↗55 posts

Latest posts

Teaching tmux to babysit my Claude Code agents

If you are like me, you no longer run one Claude Code session — you run a small fleet. One window is building a feature in a TypeScript monorepo, another is reviewing a colleague's pull request, a third is chasing a redraw bug in a Neovim plugin. tmux makes this easy: a window per agent, Alt + 1 – 9 to jump between them. Often they are not even different projects — just git worktrees of the same…

Speeding Up Voxize: A Cautionary Tale About Speech Benchmarks

I spend an unreasonable amount of time typing instructions to AI agents. A few months ago, I decided to streamline this process and built my own dictation system called Voxize . I have it bound to Super + S on my NixOS machine . I press the hotkey to launch the overlay, talk into the microphone and let the software do the heavy lifting. It has performed exceptionally well, especially around dense…

A year of building my own AI workspace

A year ago I started building my own AI workspace. Not a wrapper. The actual low-level thing — streaming APIs, tool execution, prompt pipelines. It runs inside Neovim and talks to Anthropic, OpenAI and Google directly. I built it because I needed it for work — as simple as that. PRDs, statements of work, R&D spikes, client documentation, training materials from video transcriptions. Every feature…

Santa's Magic Mailbox

Did you forget to mail those pesky Santa letters? No worries, got you covered — santasmagicmailbox.vercel.app .

Unix stdbuf and unbuffer

One of the very few things that continues to amaze me is how a few seemingly simple constructs in Unix — standard output, pipes, etc. — hold their own despite all the tech churn we battle with every day. TIL: stdbuf and unbuffer .

Shopify Q3 2022 Earnings

Shopify Q3 2022 Earnings Review — "Revenue growth has probably restored investor enthusiasm about the company. However, objectively, revenue growth might have overshadowed the problems of the declining gross profit margin and (still) escalating operating expenses."

Welcome to Hell

"Anyhow, welcome to hell. This was your idea." — The Verge on Elon Musk buying Twitter . "The essential truth of every social network is that the product is content moderation."

Evolving AI Art

Evolving AI Art — "What is the point? Exploration." A truly remarkable video.

Remix acquired by Shopify

Remix web framework acquired by Shopify . Is this about Shopify continuing to offer a better developer experience (DX) or just an acqui-hire? Also on the cards, Remixing Hydrogen .

Cross-compiling BusyBox to run on the Intel Atom Z3745 inside an ASUS MeMO Pad (ME176C)

I recently acquired the very inexpensive ASUS MeMO Pad (ME176C) . It's a surprisingly great device with an excellent screen and, best of all, a powerful Intel Atom Z3745 inside. The tablet comes with Android 4.4 (KitKat), however I want to run Ubuntu LTS from a chroot . I soon discovered I needed to compile BusyBox from source in order to achieve this. You should root your tablet following the…

Day X: Giving up on Firefox OS

The Experiment I recently decided to give Firefox OS a try and ordered a Flame developer reference phone. This will be an attempt at a blog series capturing my first 30 days of usage. I will do my best to blog as frequently as I can, usually once or twice a week as I get more accustomed to the new platform. The Experience (or lack thereof) Going back to the end of August, I was pretty excited to…

Day 2-7: Using Firefox OS

The Experiment I recently decided to give Firefox OS a try and ordered a Flame developer reference phone. This will be an attempt at a blog series capturing my first 30 days of usage. I will do my best to blog as frequently as I can, usually once or twice a week as I get more accustomed to the new platform. The Bad & Ugly In the last week of usage, there have been more bad things than good. This…

Day 1: Setting Up (Firefox OS series)

The Experiment I recently decided to give Firefox OS a try and ordered a Flame developer reference phone. This will be an attempt at a blog series capturing my first 30 days of usage. I will do my best to blog as frequently as I can, usually once or twice a week as I get more accustomed to the new platform. Mobile Data, voice mail, etc. I started playing with the phone and was surprised to find it…

Day 0: Flame Unboxing

The Experiment I recently decided to give Firefox OS a try and ordered a Flame developer reference phone. This post and the ones following will be an attempt at a blog series capturing my first 30 days of usage. I will do my best to blog as frequently as I can, usually once or twice a week as I get more accustomed to the new platform. Why a Firefox OS-based device? I have been a long-time Android…

Epic keyboard layout change mode in Ubuntu

How often do you use your Caps Lock key? I've had it remapped to act as another Ctrl for years, but never actually used it as such. So how about using it for something useful, like keyboard layout switching (e.g., US <-> Bulgarian)? It's very common amongst the people I know to map left Ctrl+Shift or Alt+Shift to change keyboard layouts. However, this can often get in the way especially when…

Stopping Ubuntu services on startup

I have been using Ubuntu since 10.04. I am running 13.04 at present and have undergone numerous distribution upgrades and not a single re-install. As a result, there is quite a lot of cruft accumulated by now. By cruft I mean packages I have had to install in order to complete a particular task and never got around to cleaning them up afterwards. For some odd reason, I still keep the projects that…

Ubuntu 12.04 - Super key not working in shortcuts

If you are running the latest Ubuntu this Summer and are trying to configure your keyboard shortcuts to use the Super key, you may be out of luck. Up until recently, I was quite happy with my Super+E key launching nautilus in my home directory. I went to Keyboard Shortcuts and played around with the configuration and then restored my original values. To my surprise, I could no longer open nautilus…

PHP Recursive Patterns

tl;dr; This post deals with writing very simple parsers for nested data using recursive regular expressions. There is a very good reason why regular expressions are called that -- they are regular. You can get a lot done with them, but if your data has a complex structure, you'd often be advised to use a parser. A good example is processing data where parentheses can be nested. A simple regular…

Vim, regular expressions and negative lookahead

One of Vim's biggest strengths IMHO is it's quick access to the search and extended support for regular expressions . It can be very frustrating at first as the syntax for the latter doesn't follow Perl or anything else I have used ( grep , etc.), but once you learn more about it, you'll start to appreciate it. A feature I recently discovered was negative lookahead . This can be useful in cases…

Quick tab switching in Vim

This is so simple, it doesn't even deserve an explanation: nnoremap <silent> <C-J> gt nnoremap <silent> <C-K> gT Re-map your Caps Lock key to Ctrl and navigating around your tabs just got a lot easier. To re-map in Ubuntu, open up the Dash, find the Keyboard Layout app, launch it, go to Options... and expand Caps Lock key behaviour . Select Make Caps Lock an additional Control but keep the…

Vim plug-ins roundup, tips & tricks

I am fairly new to Vim. When I switched editors and moved to Vim completely (about an year ago), I looked around for plug-ins and scripts other Users were using. I knew I was going to improve my text editing speed just by using the core editor itself, however I was more keen on setting up my very own personal environment. What helped me a great deal were all those ' Vim plug-ins you MUST have '…

Ubuntu 12.04 (Precise) & PHP 5.2.x

If you get lots of: configure: error: Cannot find libXXX under /usr. when you attempt to ./configure PHP 5.2.x (and possibly earlier series as well), try appending: --with-libdir=lib/x86_64-linux-gnu This instructs the script to look for libraries under /usr/lib/x86_64-linux-gnu instead of /usr/lib . If this doesn't work for you, try running: $ sudo updatedb $ locate 'libXXX' | grep 'so$' Which…

Ubuntu 12.04 (Precise) light menus

The design team at Canonical has decided to refresh the default theme in Ubuntu for its LTS release to feature light menus from light sources and dark menus from dark sources. If you are anything like me, the decision didn't probably go well with you either. I've been hacking on a 'proper' port back to dark menus, those interested can find the source and instructions available on GitHub. I've kept…

Failed to load module "globalmenu-gtk" after uninstalling gnome-shell

If you get: Gtk-Message: Failed to load module "globalmenu-gtk" every time you launch an app, you have left a Gnome Shell module, which is no longer present on your system, in your GTK_MODULES environment variable. In my case, I enabled the Global Menu extension in Gnome Tweak Tool and then uninstalled Gnome Shell. To fix, I rm ed the /etc/profile.d/globalmenu.sh file and rebooted.

Diff'ing images in Git

I use Git on the command-line usually, but lately I'm using more and more of git-cola . It's compact, keyboard-friendly, regularly updated, features a clean UI with main focus on staging and diffs. It was while working in git-cola merging over 100+ files from two different branches that I discovered quite a few overlapping image files. The diff panel was useless and it's not like I can rely on the…

pacman -Syu barfs error: XYZ: signature is unknown trust

Things kept getting better and better. Following the recent pacman upgrade , I was now facing issues with regards to package signatures. I had already successfully completed the keyring initialisation and I was a bit stumbled as to what exactly I was doing wrong. You remember all those /etc/config saved as /etc/config.new messages. Yes, as it turns out these are important. Given you haven't…

Not enough random bytes available.

Please do some other work to give the OS a chance to collect more entropy! (Need more bytes) I decided to upgrade pacman on Arch Linux recently. I was advised to run [sudo] pacman-key --init after the update had finished. Sounds simple enough, just one extra command I need to copy -> paste to get me going again. Wrong. It turns out gpg will go about generating a very strong key (did not…

Ubuntu 11.10 - Replace the Default (and Annoying) Orange Scheme

Switching to Ubuntu 11.10 is painful, ugly and time consuming... but more on that some other time. I was quite surprised to see most of the theme control options are now gone. The Appearance panel has no colour tweaks and I hate the default orange scheme. Luckily, there is a way to change it in Gtk3: $ sudo apt-get install dconf-tools $ dconf-editor Browse to org.gnome.desktop.interface . Locate…

Compass Magick Tutorial - Part 2

There is more to Compass Magick than gradients and borders. In the second part of the tutorial series, we will go through the steps to create a simple 3-state button with an icon. Recap of Part 1 In Part 1 we completed the tutorial with a simple button-like shape: We generated the shape using linear gradients, corners and borders from Magick: // intro.scss $theme1: red; $theme2: maroon;…

Compass Magick Tutorial - Part 1

Introduction We have all been there - you release a cool new website with all the goodies of CSS3 just to find several weeks later your Customer wants you to support Internet Explorer as well. It seems solid backgrounds don't cut it. There are also cases where CSS3 isn't the right solution, whether you have custom shapes or other elements of your design you end up creating images for (SVG is a…

Yoke - a drop-in, quick and dirty alternative to Sprockets

In local development, I tend to create separate pieces of JavaScript for every controller, model, view, etc. I loved the idea of Sprockets -- grab all these files and stitch them together. While it worked well for a while (on the command-line), I got fed up with how slow it runs, especially on Ruby under Cygwin. So, what to do? Node.js of course. Why? It's fast, it's super-easy to install and…

A quick and dirty way to use namespaces in CoffeeScript

# Code: # namespace = (target, name, block) -> [target, name, block] = [exports ? window, arguments...] if arguments.length < 3 top = target target = target[item] or= {} for item in name.split '.' block target, top # Usage: # namespace 'Hello.World', (exports) -> # `exports` is where you attach namespace members exports.hi = -> console.log 'Hi World!' namespace 'Say.Hello', (exports, top) -> #…

Extract changed files from Git and prepare a deployment (Bash script)

So, you have moved over to Git. Well done! You have big plans for your future deployment process -- it is going to be automated and thoroughly tested... but you still have to support your existing legacy products. If you are like me, you most likely started with simple FTP copies (oh, this takes me back). I moved over from SVN and TortoiseSVN was my primary choice for a desktop client. After each…

Vim 7 on Red Hat Enterprise Linux (RHEL)

Following my last post I moved on to installing Vim 7.x as the one that comes with RHEL 4 is pretty outdated (6.x). Vim 7.2 from SVN Tested on RHEL 4 i386: $ cd ~ $ svn co https://vim.svn.sourceforge.net/svnroot/vim/vim7 $ cd vim7 $ ./configure --prefix=/usr --with-features=huge --disable-gui --without-x --enable-rubyinterp --enable-cscope --enable-multibyte $ make && make install $ vim --version…

Git on Red Hat Enterprise Linux (RHEL) 4 i386

I have been struggling with this for a while now. There is no yum to begin with and up2date doesn't help much either (no git-* packages). Here is a quick solution: $ cd ~ $ wget http://packages.sw.be/git/git-1.7.3-1.el4.rf.i386.rpm $ wget http://packages.sw.be/git/perl-Git-1.7.3-1.el4.rf.i386.rpm $ rpm -ivh --nodeps git-1.7.3-1.el4.rf.i386.rpm perl-Git-1.7.3-1.el4.rf.i386.rpm $ git --version You…

MinTTY at your fingertips

How often do you need to get in and out of your terminal as quickly as possible? I use Cygwin for Linux emulation under Windows and MinTTY as my terminal of choice. MinTTY is great as it supports semi-transparent backgrounds and fullscreen mode (and lots more, be sure to check out the homepage). It is so tiny I don't mind having a copy of it running at all times, however it bugs me when I see its…

cd with bookmarks and auto-completion for Zsh

If you are like me, you do a lot of terminal work and cd is your friend (or enemy). I was getting really tired to cd /home/stan/projects/important-project/src/ every time I launch my shell. It's bad enough when you have one project to work on, but as things get scattered, you tend to do more directory traversing than actual coding. Up until recently I was using go-tool . From the website: go is a…

Building and using node.js on Windows (32 and 64-bit) through Cygwin

I have been going through the existing GitHub page for building node.js on Cygwin /Windows adding my own comments/steps and missing packages. I believe this is now a full set of instructions that should get you cracking pretty quickly from scratch. Building and using node.js on Windows (32 and 64-bit) through Cygwin

Alternative Cygwin terminal & shell

I just realised many, if not most, Cygwin users stick with their default terminal which is the Cygwin Bash Shell . I never understood why this is the default with each installation. It is no better than Command Prompt -- horizontal window resizing is out of the question, custom fonts are limited and mouse support is, well... missing. Terminal If you have used PuTTY to connect to remote machines,…

node-paperserve - Quick and dirty web server from your working directory

Install $ npm install paperserve Usage paperserve [path-to-serve] -p, --port [PORT] set the port to listen on, default 8000 -q, --quiet turn off any logging, default false -h, --help display this help message Here's what the output looks like: >>> paperserve: running on port 8000, serving from '/cygdrive/d/Workspace/public/node-paperserve' >>> paperserve: Press Ctrl-C to stop. Source code can be…

Cygwin, CoffeeScript & Growl for Windows integration

Let's start by adjusting where node.js looks for libraries. We will need this later on when we use the newly implemented -r command-line switch in CoffeeScript. Open up your shell init file, in my instance ~/.zshrc : $ vim ~/.zshrc and add a line in there: export NODE_PATH="/cygdrive/d/Workspace/public/coffee-script/.coffee_libraries:$NODE_PATH" The path can be anywhere on your system so adjust it…

Styling XUL applications like web pages

If you don't know of XUL applications there are many out there in the wild. You are probably using a Mozilla XUL-based app without even realising it. I am a Komodo Edit user myself and I love the platform. I have posted several extensions if my words are not enough to prove it. The greatest weakness of XUL apps in my book is how static they feel. They are not as dynamic and rich as HTML documents…

Get my Coffee, Compass and web server in the background, please

This is a simple bash script I run from my project's working directory to get CoffeeScript , Compass and a simple web server running. Any changes to *.(coffee|scss) files will be compiled on the fly. Remember to check the console every now and then if you think you've made an whoopsy: #!/bin/bash stop() { echo "Shutting down..." if [[ $SERVER_PID ]]; then kill -HUP $SERVER_PID; fi; if [[…

In need of a simple web server

I was hacking away on an AJAX application and needed to do some XMLHttpRequest goodness. Needless to say, working with the file:// protocol has become very restrictive lately so I was in a need of a simple web server - this meant no configuration, no support, no hassle whatsoever: $ python -m SimpleHTTPServer & and your working directory is now accessible over at http://localhost:8000/

The difference between "We don't offer this" and "We don't have it available, but..."

I picked up smoking recently after 4 years of active non-smoking. Reasons put aside, being back 'in the game' I seem to have forgotten most of the brands I used to buy back in the days. I went to a local store the week before, and asked for a brand that I probably made up since I couldn't remember the name. The cashier politely explained they "don't offer this" so I had to leave empty-handed. On…

European Elections

Financial markets require control Nuclear is core energy Free trade, mobility and cultural exchange Cars should run on electrical power Education is an investment in the future Optimised food is the future Head over to the European Parliament @MySpace for more information (if you have AdBlock Plus installed, you may need to disable it for that page only).

Neurologist V.S. Ramachandran on your mind

A fascinating talk about the human brain and how people who have sustained an injury help science put the bits of the puzzle together: Three-pound mass of jelly [...] and it can contemplate itself contemplating the meaning of infinity. — Vilayanur Ramachandran

The 'Big Brother' Advertising Framework

Advertising still remains the number one income source for most websites. Whether you are a blogger who gets a handful of visitors or a company such as Facebook, it is likely you rely on adverts to generate a revenue. Nowadays you can start making money within minutes, all you need is a Google AdSense account and a couple of your best friends to get you started. Most solutions rely on content from…

The Social Mobile Device Concept

If I am to ask you 'Which handset on the market has the best set of features', you would probably go for an iPhone, an Android phone, Windows Mobile or perhaps Palm's recently announced WebOS platform? Each of these has it's own unique set of features and flaws, but do they make a great social device? While you may be able to use your Google Calendar and Mail on most of them, you would still have…

How much personal information do we share on-line?

Disclaimer: I am a software engineer and as much am involved in many projects some of which may require the use of data mining. I am in no means a data mining expert. We go on with our on-line identities without paying much attention to the details we share about our personal lives, interests, hobbies and friends. We have profiles on Facebook, accounts on Twitter, Flickr, YouTube, discussion…