Well, this is embarrassing. Well, it turns out it’s been over 4 years since I last wrote a blog post. Whoops. Pretty much the entire time I’ve been occasionally telling myself “Oh yeah, I should start writing blog posts again.” Well, here we go. Yet another “I’m still alive” post. If you’re wondering what I’ve been doing, I recommend taking a look at the title of the site. After realizing I didn’t have enough savings to try to launch a product I took another job which ended up taking up all of my time and nearly killing myself with stress. Well, it turns out it’s been over 4 years since I last wrote a blog post. Whoops. Pretty much the entire time I’ve been occasionally telling myself “Oh yeah, I should start writing blog posts again.” Well, here we go. Yet another “I’m still alive” post. If you’re wondering what I’ve been doing, I recommend taking a look at the title of the site. After realizing I didn’t have enough savings to try to launch a product I took another job which ended up taking up all of my time and nearly killing myself with stress. Read more (300 words) →

sated: a Programmer's Editor for you Update (2015-09-28): I am no longer working on sated. A short while after writing this post I ended up taking a job which involved working on a text editor and so continuing work on sated would have been a conflict of interests (and potentially caused my work on sated to be the property of my employer at the time). So I stopped working on sated, and now here I am, three jobs later, and I’ve started using Atom, and while it’s not exactly what I had in mind for sated, it is close enough that I’ve stopped using Emacs and I don’t really have any plans to start up work on sated again. Update (2015-09-28): I am no longer working on sated. A short while after writing this post I ended up taking a job which involved working on a text editor and so continuing work on sated would have been a conflict of interests (and potentially caused my work on sated to be the property of my employer at the time). So I stopped working on sated, and now here I am, three jobs later, and I’ve started using Atom, and while it’s not exactly what I had in mind for sated, it is close enough that I’ve stopped using Emacs and I don’t really have any plans to start up work on sated again. Read more (2000 words) →

Comic-Fu Angie has been slaving away working on Company-Y lately, and I think it’s coming along quite nicely. Yesterday I decided to give her a break by helping with the coloring of the latest page “I love it when a plan comes together”, and I realized that the coloring process could be greatly sped up if we could simply flood fill the various areas, rather than having to draw around the outline of the area before flood filling it. Angie has been slaving away working on Company-Y lately, and I think it’s coming along quite nicely. Yesterday I decided to give her a break by helping with the coloring of the latest page “I love it when a plan comes together”, and I realized that the coloring process could be greatly sped up if we could simply flood fill the various areas, rather than having to draw around the outline of the area before flood filling it. Read more (400 words) →

⚃ Rolling Dice with JS and Unicode ⚂ I recently discovered the unicode xscreensaver hack, and have had it running on my secondary monitor for the heck of it. I found out that there are dice face symbols, and I was inspired to do something with them. So, I made a simple Unicode-dice roller in JavaScript. I know the same thing could be done in JS, but this way you can roll some numbers to paste into Twitter or something, if you feel like it. I recently discovered the unicode xscreensaver hack, and have had it running on my secondary monitor for the heck of it. I found out that there are dice face symbols, and I was inspired to do something with them. So, I made a simple Unicode-dice roller in JavaScript. I know the same thing could be done in JS, but this way you can roll some numbers to paste into Twitter or something, if you feel like it. Read more (300 words) →

A save your place bookmarklet (image source) I read a lot of web comics, and one of the things that happens when reading through the archives of a comic is that I lose my place in the history, so when I come back, I have to spend a lot of time searching to find where I left off. I wrote this simple set of bookmarklets to help me in this situation. The “save place” bookmarklet stuffs the current URL into a cookie (cookies are per site, so there will be one cookie for each site you use this on), and the “restore place” bookmarklet takes the URL out of the cookie (if it exists) and loads that page. (image source) I read a lot of web comics, and one of the things that happens when reading through the archives of a comic is that I lose my place in the history, so when I come back, I have to spend a lot of time searching to find where I left off. I wrote this simple set of bookmarklets to help me in this situation. The “save place” bookmarklet stuffs the current URL into a cookie (cookies are per site, so there will be one cookie for each site you use this on), and the “restore place” bookmarklet takes the URL out of the cookie (if it exists) and loads that page. Read more (300 words) →

Fun with bookmarklets and CSS3 transforms I recently read about the CSS transform property, and I was inspired to give it a try in a fun and mostly useless way. After a bit of fidding, I present to you the “Rotate!” bookmarklet (click it several times if it doesn’t work the first time): Rotate! Simply drag the above link to your bookmarks toolbar, and whenever you get bored with a webpage, click that link, and see what happens! I recently read about the CSS transform property, and I was inspired to give it a try in a fun and mostly useless way. After a bit of fidding, I present to you the “Rotate!” bookmarklet (click it several times if it doesn’t work the first time): Rotate! Simply drag the above link to your bookmarks toolbar, and whenever you get bored with a webpage, click that link, and see what happens! Read more (200 words) →

A Simple Lisp Parser in Python A managed to sneak in a little time recently and write a simple Lisp s-expression parser in Python. I started out with a version that just understands parentheses, atoms, and strings, but it was just a couple of extra lines to add in support for the quote “operator”, that I went ahead and threw that in there, too. I’ll go ahead and go through it bit-by-bit here, though I think it’s pretty straightforward. A managed to sneak in a little time recently and write a simple Lisp s-expression parser in Python. I started out with a version that just understands parentheses, atoms, and strings, but it was just a couple of extra lines to add in support for the quote “operator”, that I went ahead and threw that in there, too. I’ll go ahead and go through it bit-by-bit here, though I think it’s pretty straightforward. Read more (800 words) →

IE7 Requires type="submit" for <button> elements If you don’t specify type=“submit” for a <button> element, IE7 (and probably IE6, too) will do nothing when that button is clicked (well, unless you have an onclick handler on that element, of course). The W3C HTML standard states that the default for a <button> element should be “submit”, but if you want it to work with IE7 or earlier, you’ll have to be explicit about it. I lost some precious time on this fun bug. If you don’t specify type=“submit” for a element, IE7 (and probably IE6, too) will do nothing when that button is clicked (well, unless you have an onclick handler on that element, of course). The W3C HTML standard states that the default for a element should be “submit”, but if you want it to work with IE7 or earlier, you’ll have to be explicit about it. I lost some precious time on this fun bug. Read more (200 words) →

Walking Journal: 45 miles, starting a Twitter client chain I’ve been neglecting both walking and posting on here, though I’ve neglected posting more, obviously. I’ve been very busy with work and side projects and my house trying to fall apart on me, so I’ve been out of free time lately. Anyway, my total is now up to 45 miles of walking. Not too much more than last time, really. I’ve gone on some walks around the neighborhood with Angie, and I’m not counting them, mostly because I don’t know how long they are, really. I’ve been neglecting both walking and posting on here, though I’ve neglected posting more, obviously. I’ve been very busy with work and side projects and my house trying to fall apart on me, so I’ve been out of free time lately. Anyway, my total is now up to 45 miles of walking. Not too much more than last time, really. I’ve gone on some walks around the neighborhood with Angie, and I’m not counting them, mostly because I don’t know how long they are, really. Read more (800 words) →

Walking Journal: 9 miles, thunderstorm, etc. I walked at least 4 miles today. I’m not sure if I got too far over that, though, because a thunderstorm came through and killed the power before I could look at the exact amount on the treadmill. The last time I looked it was 4, so I’ll count it as that. Thunderstorm I was excited when I first saw the clouds rolling in, because we haven’t gotten a good rain for months now, and our lawn (as I mentioned in my last entry) is getting pretty brown. I walked at least 4 miles today. I’m not sure if I got too far over that, though, because a thunderstorm came through and killed the power before I could look at the exact amount on the treadmill. The last time I looked it was 4, so I’ll count it as that. Thunderstorm I was excited when I first saw the clouds rolling in, because we haven’t gotten a good rain for months now, and our lawn (as I mentioned in my last entry) is getting pretty brown. Read more (700 words) →

Walking Journal: 5 Miles I’m starting a walking journal, to keep track of how far I walk each day, and to give me something to post about more frequently. Despite the fact that most of my posts on here are Probably about Programming, this is still, in fact, a personal blog, so I think posting personal things on here pretty much makes sense to me. I’ll also use the walking journal as an actual journal, to talk about things other than walking. I’m starting a walking journal, to keep track of how far I walk each day, and to give me something to post about more frequently. Despite the fact that most of my posts on here are Probably about Programming, this is still, in fact, a personal blog, so I think posting personal things on here pretty much makes sense to me. I’ll also use the walking journal as an actual journal, to talk about things other than walking. Read more (600 words) →

Live List of the Most Popular Twitter Clients I just put up a live list of the most popular Twitter clients. The contents of that page are updated every 60 seconds (the length of time twitter caches their public timeline). For some reason I woke up at 7 this morning, unable to get back to sleep, and I was randomly wondering how many Twitter clients were out there, and which were the most popular. So I decided to find out. I just put up a live list of the most popular Twitter clients. The contents of that page are updated every 60 seconds (the length of time twitter caches their public timeline). For some reason I woke up at 7 this morning, unable to get back to sleep, and I was randomly wondering how many Twitter clients were out there, and which were the most popular. So I decided to find out. Read more (400 words) →

A brainfuck synthesizer For my latest in my series of 500 Programming Languages, I decided to write a (simple) synthesizer in brainfuck. Introduction to brainfuck brainfuck is an esoteric programming language based on the idea of making a language with the smallest possible compiler. Indeed, my Python brainfuck compiler is only 30 lines of Python code, and I’m sure there are some optimizations I could have done to make it shorter if that was my goal with the whole thing. For my latest in my series of 500 Programming Languages, I decided to write a (simple) synthesizer in brainfuck. Introduction to brainfuck brainfuck is an esoteric programming language based on the idea of making a language with the smallest possible compiler. Indeed, my Python brainfuck compiler is only 30 lines of Python code, and I’m sure there are some optimizations I could have done to make it shorter if that was my goal with the whole thing. Read more (1400 words) →