Ask Brandon Sanderson all your burning questions with the SanderBot!

This small project combining JavaScript practice and Brandon Sanderson obsession probably is best first experienced without too much introduction. You can find it here.

Once you’ve gotten an idea of its brilliant algorithm, however, let me explain a little more. Brandon Sanderson, my favorite author, sometimes responds to questions about his books with the answer “RAFO” – Read And Find Out. In other words, no, I’m not going to answer your question, you’re either going to need to wait and read a later book to get the answer to your question, or maybe the answer is already hidden in the text and you just need to look for it a little harder, or then again maybe I’m just trolling you. Brandon Sanderson also is widely known to secretly actually be a collection of robots (sometimes referred to as Sanderbots), because he’s far too prolific to just be one human guy. So thus I decided to write my own clone of the Sanderbot RAFO procedure.

Intelligently generate text with Markov Text Generator

Give this small program some text, and it can analyze what letters or words tend to appear together, then generate new text that’s statistically similar. You can configure it to look at pieces as small as individual letters, or at large pieces like whole groups of words. Under the hood, it counts how often particular letters or words appear after each unique piece, then uses those probabilities to build a new chain of pieces. I was informed that these are called Markov probability chains; thus, Markov Text Generator.

I originally wrote it since I wanted a program that could look at a few words in a language I was starting to make up and then create some more words that were similar, helping me get a better sense of the shape and sound of the language. But I soon discovered that I could use the same algorithm to generate all kinds of interesting text.

Unfortunately, this software only runs on Windows and has no nice user interface – it’s just a command line tool.

If you’d like to try it out, though, here’s how. First off, you can download Markov Text Generator here by clicking to download (You can also look at the source code there on GitHub.) Save the zip file somewhere, unzip it, and then open a command prompt and navigate to that folder. If you can figure out how to do that, you should be able to use MTG without much trouble.

Okay, so here we are in the folder where MTG is. Now you need to create some input text for MTG to analyze. How about first we try giving it a bunch of Alethi names from Brandon Sanderson’s Stormlight Archive, and see if it can generate some similarly Alethi-sounding names? I’m going to open up Notepad and put this text in a new file:

Kaladin Shallan Adolin Dalinar Kholin Renarin Gavilar Torol Sadeas Meridas Amaram Lirin Hesina Navani Jasnah Elhokar Laral Ialai Lin Balat Wikim Helaran Merin Aesudan Aladar Roion Coreb Avarak Matal Hashal Bashin Bethab Hatham Havar Jakamav Teleb Shulin Wistiow Tien Lamaril Natam Rillir Roshone Sebarial Ruthar Salinor Teshav Thanadal Vamah Yenev

I’ll save that file as “Alethi.txt” in the same folder that MTG is in, and then head back to my command prompt.

Now let’s try running MTG on this file with some basic configuration. In the command prompt, I’ll run MarkovTextGenerator.exe -i Alethi.txt -o 15. This means its input text is in “Alethi.txt”, and it should output 15 new words. Let’s see what we get…

Hmm, we’ve got some pretty odd words there. They look vaguely Alethi, but some of them are way off. How can we fix that? Well, right now by default, MTG is looking just at what comes after individual letters. It doesn’t see each letter in context. But if we told it to look at groups of letters instead, it can be more smart about what letters appear in what contexts…

So now let’s try running MarkovTextGenerator.exe -i Alethi.txt -o 15 -g 2. This tells MTG to use a “group size” of 2. Instead of seeing what tends to come after each unique letter, it will see what tends to come after each unique group of 2 letters.

We’ve still got some weird names in there, but we’re closer to actually sounding Alethi. Maybe try a group size of 3 with MarkovTextGenerator.exe -i Alethi.txt -o 15 -g 3?

Now we’re getting names so similar to the original ones that it’s not quite as useful anymore. See, group size is a sliding scale. At one end, with small group sizes, you get output that’s very different from the original text. As group size increases, the output becomes more and more similar to the original text.

So far we’ve just been using MTG to generate words. But how well can it do generating whole phrases and sentences? This time, I’m going to try giving it the entire text of Charles Dickens’ Great Expectations, snagged from Project Gutenberg. I took out the Project Gutenberg intro and licensing stuff at the beginning and end, then saved the text of the book as “Great_Expectations.txt”. So now let’s try running it through MTG, starting out with a large group size so that it will consider whole words and their usage instead of just letters. Something like MarkovTextGenerator.exe -i Great_Expectations.txt -o 30 -g 5.

Your result might be something like this. Pretty nonsensical, though it does mostly produce real English words. With larger group sizes, you might improve the output a bit…but there’s also another option. So far, MTG has been splitting up the text for analysis based on letters. But we can also tell it split up the text by words instead using the -w flag, like by running MarkovTextGenerator.exe -i Great_Expectations.txt -o 30 -w

This will probably take a while – it’s a pretty long book, after all – but once you’re finished you should get something along this line. Looking a bit better! But to improve it even more, we can set group size here, too. Instead of grouping letters like it did before, this will group words, so MTG will see what words tend to appear after each unique group of, say, 2 words. So let’s try running MarkovTextGenerator.exe -i Great_Expectations.txt -o 30 -w -g 2.

Nice! MTG is never going to generate text perfectly, since it’s totally unaware of rules of grammar and such. But the more input you give it to learn from, and the more you tweak the group size, the better output you should be able to produce. You can at least get some pretty entertaining nonsense.

If you enjoyed MTG, comment here or contact me and let me know!

How to follow a Twitter account without using Twitter

Say you’ve found a Twitter user whose posts you’d like to read. You don’t want to post anything yourself, you don’t want to know what other people are posting, you don’t care about trending topics or popular users or hashtags or whatever – you just want to follow that one user’s Twitter posts without any fuss.

This is surprisingly difficult.

I recently thought that I’d enjoy keeping up with Brandon Sanderson‘s posts on Twitter using my new Android smartphone – maybe I could just get a quick notification and a link to his tweet on my phone whenever he posts something. I looked into using an RSS feed to do this, but nope, Twitter doesn’t do RSS. So I gave in and decided to try using a proper Twitter app on my phone. And there are lots of nice Twitter clients to choose from on Android…but, well, that’s exactly the problem. There are too many to choose from, and they have too many distracting features I don’t care about, like tools for posting tweets yourself…while they don’t have features I do care about, like options that would let me see Brandon Sanderson’s replies to other users along with his normal tweets.

But there is a better way! And what’s more, with this method you can do more than just get notifications on an Android – you could also get notifications on an iPad or iPhone, or email notifications, or an SMS, or a phone call where a robot reads out the tweet…Though you may want to avoid that last one if you share a phone number with anybody.

Where we’re going today

IFTTT (“If This, Then That”) is a website that lets you automatically trigger a certain action when a certain thing happens. That sounds very vague, but that’s because IFTTT is so versatile. The trigger action can be anything from “My Android phone connected to my home wifi network” to “I posted something new on my blog” to “It’s 5:00 pm on Sunday” to “Somebody mentioned me on Reddit”. The resulting action can be anything from “Send me an email” to “Post a new photo on my Facebook account” to “Turn off my lights” (if you have the right kind of lights) to “Upload something to my Dropbox account”.

With IFTTT, you create a “recipe” that has one “trigger” and one “action”. I’m going to use IFTTT to create a recipe with a trigger of Brandon Sanderson tweeting something and an action of a notification being sent to me. I’ll show you how to get Android notifications as well as two different types of email notifications.

Setting up a Twitter trigger

Okay, let’s get going! First you’ll need to go to the IFTTT website and sign up for an account. Click the blue button. I know it’s hard to find, but I think you can do it.


Fill in the information and click “Create account”.


Go through the introduction…




IFTTT asks you to choose three “Channels” you’re interested in using so it can recommend some recipes to you. It doesn’t matter what you choose, though.


Now let’s start actually creating our recipe for getting notified of tweets. In the top right-hand corner, click on the little arrow next to your username, then click on “Create”.


First we’re going to set up the trigger action – in my case, Brandon Sanderson tweeting. Click on “This”.


There are a lot of options for triggers! But for now we’re just looking for the Twitter one. Find or search for it and then click on it. (You’ll probably see an icon for Twitter there, unlike me with my strange Internet connection.)


Now we’re going to have to activate the Twitter channel, which is a bit of a pain…but you won’t have to do it again if you make another IFTTT recipe using Twitter!


To do this you’ll need a Twitter account. If you already have one, you can just sign in, but I’m going to quickly sign up for one here. I’ll use this account to activate IFTTT’s Twitter channel and never use it again.


Fill in the information and click Sign Up. Like I said, I’m only making this account so I can use IFTTT with Twitter, so I’m not even bothering to give Twitter an email that I actually check – I’m using a disposable email address from Mailinator.


Now click “Authorize app” and IFTTT will be able to create a Twitter trigger.


Twitter will send you back to IFTTT; click “Done” and then go back to the browser window where you were working directly with IFTTT. Now you’re be able to click “Continue to the next step.”


Now it’s time to actually choose what will trigger a notification! So, we should choose the “New tweet by a specific user” trigger, right…?


Actually, that depends. If you choose this trigger, you’ll get all the tweets that the person you choose sends out to everyone….but if they direct a message to a specific user, on the other hand, you won’t get it. So if Brandon Sanderson tweets “The 5th Alcatraz book is coming out today!”, I’d get it, but if he tweeted “@MarcTauss What exactly is that wooden thing on the cover of the 4th book?”, I wouldn’t be notified. Now I, for one, love to eavesdrop on Brandon Sanderson’s exchanges with fans, so I want to make sure to get all the tweets he sends to specific people. And so I’m going to choose another trigger – the “New tweet from search” one.


Now I’ll search for everything coming from Brandon Sanderson. In Twitter search lingo, this is “from:BrandSanderson include:retweets”. If you’re trying to follow another user besides Brandon Sanderson (though why I can’t fathom), put their username in instead of “BrandSanderson”. So for instance, “from:FiatLingua include:retweets”. This is how you can get all the messages coming from somebody, not just the ones they send out generally.


You’ve successfully set up a trigger! Now let’s see how you can get a notification sent to you when your trigger fires.

Setting up a notification action

Start by clicking on “that”.


Well, there are sure a lot of choices here, too! I’m only going to demonstrate how to set up Android notifications and email notifications, but clearly there are plenty of other options available for you to try.

For now, though, let’s see how you could set up…

Simple email notifications

Find the cleverly named “Email” channel and click on it…


Then click “Send me an email”.


Now you can tell IFTTT what the subject line and text of each notification email should be. See those weird gray boxes? When you actually get an email, they’ll be replaced by information from the actual tweet. So if Brandon Sanderson sent out a tweet saying “The 5th Alcatraz book will be released tomorrow!”, I’d get an email with the subject “@BrandSanderson: The 5th Alcatraz book will be released tomorrow!”, and once I opened up the email I would see “via”.


If you click on one of the grey boxes, they’ll change to text surrounded by double curly braces, and then you can move them around as you like.


Once you’re editing some text, you’ll also see a little test tube icon in the upper right corner. If you click on that, you can add more magical grey boxes that will replaced with different things when you actually get the email. I’m going to add a link to the actual tweet in the body of the email. So I’m going to click on the test tube icon, select “LinkToTweet”, and then click “Add Ingredient”.


Additionally, I would like to have the text of the tweet put in the body of the email, so I’m going to move that {{Text}} thing. I’ll also make a few other changes. As you see, you can add text wherever you like; just don’t change what’s in between curly braces or the grey boxes won’t magically get replaced by information from tweets anymore.

When you’re finished, click “Create Action”.


Now you just need to give your recipe a title, click “Create Recipe”, and you’ll be all set!


And there you go! Next time the user you chose tweets, you’ll get an email like this:


Email digest notifications

Instead of sending you an email every time somebody tweets, IFTTT can instead just send you an email every day or every week with all the tweets that have been sent out in the interim – an email digest. Let’s see how that would work out. First off, once you’re at the “that” part of making an IFTTT recipe, find and click on the “Email Digest” channel.


Now decide whether you’d like to get an email every day or every week. I’ll be trying a weekly digest, but it’s basically the same process to set up a daily one.


Here you can tell IFTTT when you want to get your digest and what should be in it. As I explained in the instructions for normal email notifications, you can move around the curly-braced grey boxes or delete them as you’d like, and you can add in other grey boxes by clicking on the test tube. Besides that, you can add or delete whatever other text you want.


When you’re done, click “Create Action”…


…name your recipe, click “Create Recipe”…


…and you’re done! Now at the time you set, you should get an email from IFTTT with tweets like this:


Android notifications

Now let’s try something a little more tricky: an IFTTT recipe that sends a notification to my Android phone when Brandon Sanderson tweets. So, once you get to the “that” part of a recipe, find and click on the “Android Notifications” channel…


Click “Send a notification”…


Now you can decide what the notification will actually say, using those same magical grey boxes I showed you before.


I’m going to switch around a few things and then click “Create Action”.


Name your recipe and click “Create Recipe” as always.


But wait a minute. How will IFTTT know what phone to send the notifications to? It won’t…until you install the IFTTT app on your Android device! Let’s see how you can set that up. First, head over to Google Play and search for “IFTTT”.


Now choose “IF by IFTTT” and install it.


Click “Accept”. It does want access to a lot of stuff, but that’s because you can use it to do a lot of stuff.


Once it’s finished installing, open it up…


…flip through IFTTT’s little intro…


…and you’ll get to a login screen. You’ve already made an IFTTT account, so click on the “Sign In” link at the bottom.


Fill the username and password you chose and click “Login”…


…and there you go! Now when Brandon Sanderson tweets I’ll hear my message tone, and then when I look at my phone I’ll see a notification:


Which I can then click on:


Which I can then click on again:


And then I can click the “Open in Browser” button to open up the tweet in my browser, which will show me any replies to the tweet as well as any other tweets it was replying to.


And there you go, that’s how I’m now following Brandon Sanderson’s tweets without having to bother with the rest of Twitter. If you try this yourself, let me know how it goes!

How to record your computer’s sound output (on Windows) with Audacity, Virtual Audio Cable and SoundLeech

Update on 12 August 2014: In the comments, Riverlandsmj alerted me to another, simpler way to record your computer’s sound output while still playing it through normal speakers. I added this method below and generally revamped the article. Thanks!

This is a tricky question I’ve bumped up against multiple times. What if I want to record my computer’s sound output? I can use the microphone to record what’s coming out of the speakers…but there’s naturally going to be a large loss of quality, since the sound has to go through both my bad speakers and my bad microphone. It would be much better to to have software on my computer directly record what’s coming out of my computer. If you do a little searching, you’ll find lots of people saying, “Oh, just use Audacity and select ‘Stereo Mix’ or something of the sort as the microphone!” Sorry…but not all computers support that – including mine! You will probably also find various programs that promise to record sound output…but that you have to, like, pay for. Which perhaps is fine if you intend to be recording sound output a lot, but not for me, who only needs to once in a while. But despair not! There is a free solution. In fact, there are THREE!

I’m going to show you the three methods I’ve come across, in order of how good I think they are. First, you can use Audacity, which is fairly simple, works in all situations, and lets you still output your computer’s sound through your normal speakers/headphones/whatever it is. Secondly, you can use VB-Audio Virtual Cable (catchy name, I know), which also works dependably, but is more complicated to use and can’t keep playing your sound normally unless you install extra programs. Finally, there’s SoundLeech, which is very simple to use and lets you still output your sound normally, but doesn’t work in all situations.


This lovely open-source sound recording and editing program runs on Windows 2000, XP, Vista, 7 and 8, and is also available for other platforms, though the protocol for recording sound output is probably different on different operating systems. A feature was recently added that lets you choose a sound output device as an input device – so for instance, you can choose your speakers as your microphone. Let’s see how this works.

First of all, let’s download Audacity:

Audacity Free Audio Editor and Recorder - Google Chrome_2014-08-12_17-25-57

Once you’ve downloaded the file, run the installer:


Tell Windows that you really do want to run the installer:

Open File - Security Warning_2014-08-12_17-32-34

You may need to tell Windows again that you really, honestly, do want to run the installer, but eventually you should get to the language selection dialog.

Select Setup Language_2014-08-12_17-39-54

Now just follow the dialogs to install Audacity. When you’re done, open it up if you haven’t already.


Now look at the upper left corner, at the bar right underneath the controls for stopping, pausing, etc. Do you see that first drop-down box, the one that says “MME” right now?


Click on it and choose “Windows WASAPI”.


Now move over to the third drop-down box, the one with a little microphone next to it. Choose the sound output device that you want to record sound from – probably your speakers.


Start recording by clicking on the big, round red button. Don’t worry if nothing much happens at first.


Now start playing whatever you want to record through the sound output device you picked (again, probably your speakers), check back, and there you go! Audacity is recording your sound output even as you’re hearing it.


If you want to change the volume of what you’re recording, you’ll need to change the volume in the program playing the sound; changing the volume of your speakers or whatever other output device you chose won’t make a difference, in my experience.


You can also always use Audacity’s “Amplify” effect once you’re done recording to change the volume.


Both Riverlandsmj and I experienced some problems with the sound dropping out occasionally while recording this way, particularly at the beginning of recording, which seems to be because Audacity has a different default sampling rate than our sound cards. To fix this, Riverlandsmj suggests changing the sampling rate on your speakers to the same level as Audacity’s, like this. Go to the system tray in the bottom right corner of your screen, and find the volume control. Right-click on it and choose “Playback devices”.


Select the speaker in question, and then choose “Properties” below.


Now go to the “Advanced” tab…

Speakers Properties_2014-08-12_18-02-47

…and in the first drop-down box, pick “24 bit, 44100 Hz (Studio Quality)”.

Speakers Properties_2014-08-12_18-04-40

Click “OK” below, and hopefully this will fix the problem!

Speakers Properties_2014-08-12_18-04-49


If it doesn’t, you can try opening up Audacity, then going to Edit > Preferences > Quality and seeing what the “Default Sample Rate” is. Then you can change your speakers’ rate to be the same, as I demonstrated above.

Preferences Quality_2014-08-15_10-52-18

VB-Audio Virtual Cable

Okay, on to VB-Cable! As I mentioned earlier, this program works consistently, but it’s trickier to use and you can’t output sound through a speaker while you’re recording from it. VB-Cable is supposed to work on Windows XP, Vista, 7 and 8. It basically works by pretending to Windows that it’s some speakers and also pretending that it’s a microphone. Then, if you tell Windows to output to VB-Cable’s “speakers,” VB-Cable will send whatever goes into those speakers to the VB-Cable “microphone.” So if you use a recording program – Audacity or whatever else – and select the VB-Cable “microphone” to record, you’ll get whatever is being sent to the VB-Cable “speakers.” I’ll demonstrate below by trying to record Windows Media Player playing an MIDI file using Audacity.

First we’ll need to download VB-Cable from its beautiful website:

VB-Audio Virtual Cable - Google Chrome_2014-01-09_07-16-19

You’ll get a .zip file. Extract it somewhere, look inside, and you’ll see…a lot of stuff. Never mind all that. Look at readme.txt if you want to. Then, if you have a 32-bit version of Windows, right-click on VBCABLE_Setup.exe and choose “Run as administrator;” or, if you have a 64-bit version, right-click VBCABLE_Setup_x64.exe and choose “Run as administrator.”


If you’re not sure what sort of operating system you have, open up the Start Menu and go to “Control Panel,” then “System,” and look at “System type” under “System.”

All Control Panel Items_2014-01-09_07-18-50


(I know, I don’t have a very impressive computer.)

Windows will make sure you really want to run this program – click “Yes.” Now click “Install Driver” to actually start installing VB-Cable. It may say it’s not responding for a while, but that’s fine.

VB-Audio Virtual Cable Driver Installation (Version

Windows will make sure you want to install VB-Cable’s drivers – these are its fake speakers and microphone. Click “Yes,” and there you go! You might want to restart after finishing, as the program tells you to, but I got away with not rebooting, at any rate.

VBCABLE Installation_2014-01-09_07-22-12

Now let’s see what VB-Cable can really do! First, right-click on the volume control in the system try and choose “Playback Devices.”


Click on the sound device called “CABLE Input” (that’s VB-Cable’s fake speakers) and click “Set Default” below.


Now all sound the computer outputs will be sent to VB-Cable, which VB-Cable will then promptly send to its fake microphone, which you can see if you click on the “Recording” tab.


So, let’s open Audacity and choose “CABLE Output” as the microphone…


Start recording…


Now I can open up my MIDI file in Windows Media Player and let it play, and when I check in Audacity – ah yes, it’s recording the sound produced by Windows Media Player!


To finish off, I can stop recording in Audacity, save the file, etc., then right-click on the volume control and pick “Playback devices” again, and set my normal speakers as default again.


This reveals one problem with VB-Cable – you can’t record sound output with VB-Cable and listen to it at the same time, since Windows is sending the sound to VB-Cable instead of actual speakers. If you want to listen while recording sound output, you could, again, try the Audacity or SoundLeech methods.


So there’s also SoundLeech, the simplest program, which runs on Windows XP, Vista and 7 (not sure about Windows 8). Here’s the basic idea: When it’s running and you tell it to “start leeching,” it tries to detect any programs playing sound, and then records what they’re playing to a .wav file. The problem is that it doesn’t always detect programs playing sound – it only seems to support some programs. So if you’d rather not mess with Audacity or VB-Cable, you could try SoundLeech, but it’s a bit less flexible and doesn’t work 100% of the time. I think SoundLeech is pretty straightforward, and the developer also has some info on how to use it on his website, so I won’t demonstrate it here.


And there you have it! I am very happy that I finally found some good solutions for this problem. Hopefully they will be useful to you too!

Ack! I can’t record while playing sound!

I really like my computer, I have to say. It’s a bit low-end, but it’s small and portable while still having a fairly high-resolution screen. It runs fast enough for me most of the time, and it has enough RAM and the like to run Linux virtual machines. In general, I’ve been satisfied with it and haven’t had any problems.

Except for one rather annoying one. With the default settings with my Conexant High Definition Audio microphone jack, I can’t record sound if I’m playing sound at the same time.

Now, usually, I don’t need to play sound while I’m recording, but sometimes I do. For instance, when I played my “Angels We Have Heard on High” arrangement, I really did need to listen to the melody while I played the harmony parts. But if I tried, the resulting recording would be very quiet most of the time, then suddenly get loud, then get quiet, then have odd staticky sounds, then cut out…no matter what microphone I used, internal or external. Very, very annoying, because I tend to be most annoyed by problems that make no sense to me, and this one didn’t make much sense. However, I obviously did manage to finish my “Angels We Have Heard on High” project, so yes, I did fix the problem.

Here’s how I managed to record while playing sound without ending up with a wacko recording. First, I right-clicked on the volume control and picked “Recording devices”:


Then once that opened up, I selected my microphone and clicked “Properties”:


I went to the “Microphone Effects” tab:

Microphone Properties_2014-02-01_10-39-54

Then I unchecked “Acoustic Echo Cancellation” and clicked the “OK” button.

Microphone Properties_2014-02-01_10-40-24

And that fixed the problem. Now I can record while playing sound without any problem. So I don’t know if these odd issue has annoyed anybody else, but this is how I, at least, was able to fix it.

Chimer Mawmaw

Chimer Mawmaw is a simple and light program to chime the hour.




Latest Version (1.1), as Windows installer(this is an executable file that installs Chimer Mawmaw, you can just double-click on it to install if you’re using Windows. Note that while Google Chrome may warn you that it’s “not commonly downloaded and may be dangerous,” you can ignore the warning if you trust me – this is, after all, the exact same executable I used to install Chimer Mawmaw on my own computer.)

Latest Version (1.1), as zip file(you should extract this zip file somewhere, then you can probably just double-click on ChimerMawmaw.jar to run. This will work on most operating systems. See the main Computers & Programming page for more information.)

Source Code for 1.1 – (this is the Java code of the program. Most people don’t want this.)


When you first start the program, you should see a small icon in your system tray (the place where it also shows the time, internet connection status, volume, etc). You might have to click on the arrow to see the icon. Chimer Mawmaw will just sit here doing nothing until the next hour, at which it will play a sound. By default, it will play the sound file default.wav, which is in the place where you installed Chimer Mawmaw (usually C:/Program Files/Chimer Mawmaw, or C:/Program Files (x86)/Chimer Mawmaw; or, if you didn’t use the installer, the folder in the zip file you extracted with ChimerMawmaw.jar). If you want to change the sound, remove or rename the current default.wav, copy another .wav file into the place you installed Chimer Mawmaw, and name it default.wav.


You can also have Chimer Mawmaw play a specific sound at a specific hour. To do this, copy a .wav file into the installation folder with the number of the hour according to a 24-hour clock. For example, say I wanted Chimer Mawmaw to say “Snacktime!” at 4 o’clock. I would record a .wav file of somebody saying “Snacktime!”, then I’d name the file 16.wav. After this, I would copy 16.wav into the installation folder. Perhaps I want Chimer Mawmaw to say something different at 11 o’clock in the morning. I would name the .wav file of what I wanted it to say 11.wav and copy it into the installation folder. You can do this for as many or as few hours as you want.


To exit Chimer Mawmaw, right-click on the icon and choose “Exit”.


How can I keep Chimer Mawmaw from starting with Windows?

(This will only happen in the first place if you used the Windows installer.)

Click on the Start menu button, or the Windows button, if you’re using Windows Vista or Windows 7.


Go to All Programs > Startup.


Right-click on the Chimer Mawmaw icon and choose “Delete”.


This will not remove Chimer Mawmaw from your computer – it will just stop it from starting automatically. You can start Chimer Mawmaw again by going to Start > All Programs > Chimer Mawmaw, and clicking the Chimer Mawmaw icon.

How can I uninstall Chimer Mawmaw?

(This is only applicable if you used the Windows installer version. If you just extracted a zip file, well, just delete the zip file and folder extracted from it.)

Click on the Start menu button, or the Windows button, if you’re using Windows Vista or Windows 7. Choose the “Control Panel” item. Now go to Add and Remove Programs, if you’re using Windows XP; otherwise, go to Programs and Features. Scroll through the list until you find Chimer Mawmaw. Click on it and choose the “Uninstall” button above.

Programs and Features_2014-01-04_09-52-04


1.1 (January 2014) – Made file names for sounds to play at specific hours go by a 24-hour clock instead of being weird like they were before; removed some debug code

1.0 (September 2012) – Initial version

Row Counter

The Row Counter is a simple cross-platform program for knitters to keep track of what row they’re on. I’m not sure when I originally wrote it; 2012, maybe?




Latest Version (1.2) (this is an executable file, you can probably just double-click on it to run it. For more information visit the main Computers & Programming page.)

Source Code for 1.2 (this is the Java code of the program. Most people don’t want this.)


When you first start the program, you should see a screen like this.


Click the “+” button to add to the row number, or click the “-” button to subtract from it.



If you want to set a particular number and would rather not spend ages clicking the “+” button, select the text field, enter a number (in numeral format – e.g. 6, not six) and press the return key. The status bar (bit at the bottom of the screen) should then report that the number was set.


Click the “X” in the top right of the window to exit.


Version 1.2 – Added status bar.

Version 1.1 – Added ability to enter number into the row field.

Version 1.0 – Just add/subtract buttons, with the row field being uneditable.