Posts Tagged “software”

Permanent Redirects Get Cached

Published on April 20, 2019

I maintain multiple tools at work that all run in Docker containers on the same machine. The overall setup looks like the following diagram:

Tool Network Diagram

The router container on top (nginx) routes traffic to the various application containers based on the hostname seen in each request (each tool has its own internal domain name). Each application has an nginx container for serving static assets, and a gunicorn container to serve the dynamic parts of the application (using the Django framework).

Earlier this week, I was trying to add a redirect rule to one of my application containers (at the application nginx layer), because a URL was changing. As a convenience for users, I wanted to redirect them to the new location so they don’t get the annoying “404: Not Found” error. I set up the redirect as a permanent redirect using a rewrite rule in nginx. For some strange reason, the port of the application’s nginx layer, which should never be exposed to the outside world, was being appended to the redirect!

Adding the port_in_redirect off; directive to my nginx rules made no difference (or so I thought), and I struggled for an entire day on why this redirect wasn’t working properly. At the end of the day, I learned that permanent redirects are aggressively cached by the browser! This annoyance means you need to clear your browser’s cache to remove bogus redirects. I wasted an entire day because my stupid browser was using a bogus cached reference. Ugh!


Published on January 8, 2019

I consume nearly all of my news and web reading through RSS feeds, and have done so for many years. Back before July 2013, I used Google Reader, before Google shut it down for good (the bums). Shortly after Google Reader was closed, I switched to NewsBlur, which closely resembles the Google Reader of yore. I cannot imagine surfing the web without it.

The service can be used for free (up to a maximum of 64 feeds, and only 5 stories at a time in the “river of news” mode), but I pay a yearly fee ($36) to have an unlimited number of feeds and stories.

One of the best features of NewsBlur is being able to “train” the reader to know what you like and don’t like from various sites. I’ve trained several of my gaming feeds to exclude anything about Fortnite, because that’s a game I have no interest in. As a result, stories on that topic are never shown to me; I’m in control of what I read! Similarly, I’ve also trained a few feeds to flag articles from authors I like. Those articles are highlighted, and I can view just those highlighted ones if I so choose with the “Focus” mode.

There are lots of other features to recommend about NewsBlur: searching for stories across all of my feeds, sharing stories with friends on the service, a pretty nice Android app, and lots more. If you haven’t given NewsBlur a try, be sure to.


Published on January 3, 2019

One of the web comics I follow is Saturday Morning Breakfast Cereal. The official RSS feed for this comic only includes the comic itself and the associated hover-text joke. To see the extra joke, you have to visit the SMBC website. But no longer!

I’ve just created a new project on GitHub that fixes this issue. It’s another RSS feed generator, and the feed that it generates contains the daily comic, the hover-text joke, and the hidden joke, all inline.

As always, there’s room for improvement in a place or two. Let me know if you spot any issues.

Is WordPress the Next FrontPage?

Published on December 18, 2018

Remember the days of Microsoft FrontPage? I first cut my web development teeth using that tool, and at the time I thought it was amazing. Designing a web site was made easy and I really liked the WYSIWYG editing style. I eventually migrated to Adobe Dreamweaver which seemed (and was) even more powerful.

Nearly 20 years have passed since my start in web development. With a computer science degree under my belt, along with 13+ years of professional experience, I can only look back on those days and laugh at my naivety. Those tools seemed slick at the time, but they were pretty clunky in actuality. The HTML and rudimentary CSS that each generated was ugly and bloated. That said, the WYSIWYG movement never really died. With modern companies like Squarespace and, the “build it as you go” web model is still alive and kicking.

WordPress now also seems to be headed that way. I use WordPress here at Born Geek, and I just recently updated to version 5.0. The giant new feature in this release is the new Gutenberg editor, which offers a visual means of laying out your content. To a technical minded person like myself, who typically writes posts in Markdown, the editor is incredibly confusing. I don’t want to have to insert “blocks” with my mouse every time I need a bulleted list or image.

The new editor in WordPress is no doubt an attempt to win users from the Squarespaces and Wix.coms of today’s market. I wonder, however, if this comes at the cost of alienating technical users or users who are simply used to the old look and feel. Giant changes are always likely to have push back, especially with a user base as large as that of WordPress. Given, however, that the Classic Editor plugin already has over one million users, I’d say that this change has a bigger negative opinion than the WordPress powers-that-be might be willing to admit. It will be interesting to see how things progress over the next few months. I’m just thankful that the Classic Editor plugin even exists.

King Features Comics Feeds

Published on October 6, 2018

Since I no longer subscribe to my local newspaper, I now primarily read daily comic strips through RSS feeds. carries the vast majority of the strips I read, but several key strips are not included. It turns out that these missing strips are all owned by King Features which, frustratingly, doesn’t provide RSS feeds to their strips.

I have now fixed that.

My new project, comics-rss, is now available for users interested in creating RSS feeds to the comic strips provided by King Features. The project is admittedly brittle at the moment, but it has worked well for me so far. A number of improvements are planned:

  1. The script currently caches the comic strips locally, linking to the cached copy. I’d like to provide an option to use direct links instead, skipping the cache altogether.
  2. Cached strips are not currently cleaned up, so the folder into which they are stored will grow each day. I’ll be adding an “expired” configuration option to clean things up.
  3. Error checking in the configuration file isn’t very robust, and needs to be improved.

I would be interested in any feedback you might have on this project. If you find bugs or have suggestions for improvement, be sure to file them on the project issues board.

High Contrast Mouse Pointer

Published on February 19, 2018

As I age, my vision is getting worse (and it’s already pretty bad). At work, I use a three monitor setup: my laptop is the middle screen, and two external monitors sit to either side. Given the large screen real estate, and given my increasingly bad eyesight, I’ve been having a tough time finding my mouse pointer. Windows has an option to show the location of the mouse pointer when you press the Ctrl key, but that has limited usefulness (though I do use it from time to time).

I recently stumbled upon a neat feature in Windows 10 that has helped me tremendously. There are several mouse-specific features in the Ease of Access section of the Windows settings. The pointer size can be adjusted (which is helpful to a degree), but the most helpful feature is the Pointer Color setting. There’s an option to adjust the pointer color based on whatever color is beneath it. It took a little getting used to, but I can now find the mouse pointer a lot easier than I could before.

Monkey Album 2.0

Published on November 18, 2016

Over the past few weeks, I’ve been diligently working on rewriting the software that powers my photography site. Today, the new version has officially launched! This rewrite is mostly a bunch of back-end changes to make my life a lot easier, but it also includes some front-end changes as well. Here’s what’s new from a technical perspective:

  • The site is now served over SSL thanks to DreamHost and the Let’s Encrypt program. Security boost for the win!
  • Collections have been replaced with Tags. I’m in the process of tagging things more carefully than they were previously.
  • The site now uses HTML 5.
  • The site is now powered by Python instead of PHP. I’m using the Django framework, which I’ve really come to enjoy. As a result, the number of lines of code have been drastically reduced (the project is nearly 50% smaller!).

As is typical when I launch stuff like this, there are still a few known issues:

  • The site doesn’t yet render like I want it to on mobile devices
  • Swipe support for navigation isn’t yet in place
  • The RSS feed doesn’t work (I simply forgot to implement it) This has been fixed!

I’m sure there are probably bugs lurking here and there. Let me know if you encounter any.

Fixing the Thinkpad Hot-key On-Screen Display

Published on April 6, 2015

Lenovo Thinkpads have an on-screen display for various hot-keys. For example, when you change the monitor brightness, or the volume level, an on-screen overlay will display showing the current brightness level or volume level, respectively. Twice, I have received laptops from Lenovo that have this software installed, but the on-screen display never appears. Frustrated by this bug, I used the Dependency Walker to troubleshoot this problem a while back, and subsequently found the solution.

Simply install the Visual Studio 2010 C++ redistributable, available from Microsoft (make sure to install the x86 version, even on a 64-bit system; the on-screen display application is a 32-bit process). Once this package is installed, and the laptop rebooted, the problem should go away.

Setting the Time Zone in GitLab

Published on February 27, 2015

GitLab defaults its time zone to UTC, which may not be what you want. Thankfully, you can update the value directly from your gitlab.rb file. Here’s the relevant line:

gitlab_rails['time_zone'] = 'America/New_York'

Once you’ve added the field, simply reconfigure and restart:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

A list of all the available timezones is available on Wikipedia.

Firefox Extension Utilities

Published on April 28, 2014

I have created a GitHub repo storing several Firefox extension utility scripts that I wrote. Here’s the rundown on what this repository contains:
Compares all of the locales it finds against a “master” locale (`en-US` by default) and reports the number of exact duplicate entries for each. This is useful for figuring out which locales have not been updated.
Converts a given list of locale entities into corresponding properties. Handy for migrating existing entity localizations into a `.properties` file.
This script removes a given list of entries from all of the locale folders it finds in the current working directory and below. Useful for cleaning up strings that are no longer needed.

Hopefully others will find these scripts to be useful. I hope to add additional scripts to this repository over time.

Fixing Location Services in Android

Published on November 5, 2012

I have a Samsung Galaxy Tab 7.0 Plus running the Ice Cream Sandwich version (4.0.4) of Android. For some unexplained reason, the location services feature stopped working a few months ago, but only for what seemed like a few applications. Google Plus no longer knew my location, Radar Now no longer knew it, and the stock web browser was also clueless. Google Maps, on the other hand, knew right where I was. Since I use the tablet in the house, GPS isn’t much help. I frustratingly was unable to fix things, until today, when I stumbled on a solution. Here’s how I did it:

  1. I opened up Settings » Location services and unchecked the Location and Google search option
  2. I rebooted my device
  3. Back in Settings » Location services, I rechecked the Location and Google search option
  4. I then toggled the Use wireless networks option, and answered a prompt that appeared about using my network location in third-party apps (or something similar; I don’t have the exact message in front of me).
  5. Success!

Using GPS to lock in on my position worked outside, but that alone didn’t seem to set things right. Disabling the above option, rebooting, and then re-enabling it seemed to do the trick. Hopefully this will help anyone else who might have a similar problem.

Installing iTunes Without the Bloat

Published on October 25, 2012

I went looking for how to install iTunes recently without the bloat (because I remember seeing an article about doing just that a while back), and though I found the article, it had apparently moved from its original location. As such, I’m going to note down the steps here in case said article ever disappears. The following is intended for use on a Windows 7 64-bit system, but I think these steps should work in general. It’s also intended for using an iPod classic, which is the only Apple device I care to use (though these instructions also work with the nano, mini, and shuffle variants).

  1. Download the iTunes installer
  2. Unpack the installer using something like IZArc
  3. Run the installers, using the given commands, in the following order:
    • AppleApplicationSupport.msi /passive
    • Quicktime.msi /passive (if this installer is present)
    • iTunes64.msi /passive

Access Denied in PuTTY 0.61

Published on August 23, 2011

Update: This problem has been fixed in PuTTY 0.62.

Back at the beginning of last month, PuTTY 0.61 was released after four years (!) of development. Since upgrading to this new release, I’ve noticed the occasional “Access Denied” message when connecting to certain Linux systems at work. The odd thing about this message is that it appears between the user ID prompt and the password prompt; in essence, before I even get the chance to log in! Example output looks something like this:

login as: root
Access denied
root@myserver's password:

Making things stranger, I can enter the correct password and log in to the system with no problems. As I found out from a commenter on another blog, it turns out this message is due to a new feature in PuTTY 0.61. To prevent this message from appearing, do the following:

  1. Drill down into the Connection » SSH » Auth » GSSAPI section of your session’s configuration
  2. Uncheck the Attempt GSSAPI authentication (SSH-2 only) option

The phantom access denied message should then go away.

Improvements in PhotoMerge

Published on October 12, 2010

I recently updated to Photoshop CS5 on my home computer, and I wanted to briefly share how particularly impressed I am with the new capabilities of their PhotoMerge process. The old PhotoMerge was a hassle to work with, and tended to screw up panoramas in weird ways. Getting the perspective right was usually a guess and check affair. Happily, the new system blows the old one out of the water.

Here’s are two examples to compare the systems:

The results with the new system are much better, and more in line with tools like Microsoft Research’s Image Composite Editor. I will be going through my panorama collection over the coming days and updating them as necessary, cleaning them up where needed. I’m looking forward to producing better panoramas in the future with this help of this great tool.

Early Thoughts on Windows 7

Published on June 21, 2010

On Friday afternoon, I finally upgraded my home system to Windows 7. Windows XP was feeling dated, and my old system had slowed to a crawl for unexplained reasons. I also figured it was time to upgrade to a 64-bit OS, so that’s the version of 7 that I installed. Here are a few brief thoughts I’ve had on this new operating system:

New Task Bar
Interestingly enough, the steepest learning curve I’ve had with Windows 7 has been with the new task bar. I’m quite used to XP’s task bar, complete with the quick launch toolbar. The new task bar in Windows 7 rolls these two toolbars into one; essentially combining currently running applications with ‘pinned’ applications. Also, by default, only program icons are displayed; none of the window titles are shown as a part of each process’ button. This new scheme is a little confusing at first, but I’m becoming accustomed to it.
Updated Start Menu
Microsoft finally got smart with the new start menu. No longer does it stretch to the top of the screen when you have a million applications installed. Instead, the “All Programs” menu simply transforms into a scrollable pane, showing the items available. This is a terrific UI change that should have been done at least 10 years ago.
Improved Speed
In the midst of going to Windows 7, I also made several hardware improvements. I upped my memory from 2 GB to 4 GB (I may go to 8 GB if 4 doesn’t suffice), I am using a new brand of hard drive (Western Digital, instead of Seagate), and I added a new CPU heat sink. Since I updated a few hardware components, I’m not sure what really made the difference, but most of my applications now start noticeably faster than before. For example, iTunes starts nearly instantly, which blows the previous 15 to 20 second startup time out of the water. Games also start way faster, which is a plus. I love getting performance boosts like this; hopefully they will hold up over time.
There are other minor things that I find interesting about the Windows 7 experience:

  • Installation was amazingly fast, and I was only asked one or two questions.
  • Drivers thankfully haven’t been an issue (so far).
  • The built-in zip file support has apparently been vastly improved; it’s orders of magnitude faster than XP. I’m not sure I’m going to install WinZip seeing as the built-in support is so good.
  • The new virtualized volume control is epic; why wasn’t it like this all along?

So far, I’m pleasantly surprised with Windows 7. Some of the new UI takes getting used to, but this looks like a positive step forward; both for Microsoft and for my home setup.

MSE Saves the Day

Published on January 26, 2010

Last night, while surfing around for some medical information, one of the sites I stumbled upon through Google’s search results tried to install a Trojan on my computer! This was surprising, seeing as I was using Firefox 3.6 with AdBlock turned on. Thankfully, Microsoft Security Essentials saved the day, alerting me to the fact that a nefarious application was trying to install itself. The tool caught the incursion, alerted me, and successfully removed it from my system. I then did a full scan and it found no other problems.

I’ve read that drive-by attacks like this are becoming more common, but until now I hadn’t ever been affected. Several of my plug-ins were outdated, so I updated them, though I’m not certain any of them were involved in this attack (Java never loaded, and there was no embedded media on the site).

That being said, make sure to surf with protection; there’s some nasty stuff out there.

Quitting Symantec

Published on December 2, 2009

For a long, long time now, I’ve run the Symantec anti-virus program (corporate edition) on my home desktop computer. I got the original binary from college and I’ve kept it ever since, undoubtedly breaking the license agreement in the process. Over the Thanksgiving holiday, however, I ditched the bloated, slow Symantec mess for the newer, freely available Microsoft Security Essentials (MSE). Having read good things about the product, I figured I’d give it a try.

So far, so good. Boot times are noticeably faster, which is a big plus in my book. With Symantec, my boot times had become horrible; it would literally take 2 or 3 minutes for the machine to become usable. Now, it’s ready in about a minute or a minute and a half (still too long, in my opinion; maybe Windows 7 will fix that). MSE is also quite easy to use. The interface is intuitive, and updating happens auto-magically, with no need to schedule updates. Performing a quick scan took a little while, but seemed to run faster than Symantec did. To top it all off, the MSE memory footprint is much smaller, though it’s still one of the larger memory using apps on my system.

What do you guys use for anti-virus solutions? I’m pleased that Microsoft is offering a quality solution to this problem. And the price couldn’t be better.

Microsoft’s Big Day

Published on October 22, 2009

Today is the big day for Windows 7: release day! I’m thinking about picking up a copy of the new OS at some point in the near future for my gaming machine at home, though I’ll probably wait until the price drops. Is anyone here going to upgrade?

I saw in the news recently that Windows 7 has eclipsed Harry Potter for the number of pre-orders on Amazon UK. That’s saying something, seeing as Harry Potter is wildly popular over in Great Britain. I’m looking forward to giving this new OS a shot. It’s definitely time for something new (XP is feeling increasingly old and clunky).

Two Lotus Notes 8 Tips

Published on September 15, 2009

At work, we are being forced to Lotus Notes 8 by the end of the year. I recently rebuilt my laptop, and performed this upgrade at the same time. Since doing this, I’ve learned a few things that I thought I would share, seeing as Lotus Notes documentation on the web is very poor.

Tip 1: What to Copy During Upgrade

Apparently, copying your data file from one Notes installation to another isn’t a good idea (more specifically, when changing Notes versions). However, there are a few things worth migrating so you don’t lose all of your previous data. Here’s a short list of things I found worth copying:

  • bookmark.nsf
  • desktop6.ndk
  • {USERNAME}.ID (where USERNAME is your user ID)
  • names.nsf
  • user.dic
  • archive/*.nsf
  • mail1/*.nsf

There are other files worth copying, so I hear, but these were the only ones I cared about.

Tip 2: Removing the MS Office Toolbar

One of the more annoying features of Lotus Notes 8 is a new “Office Add-in” that will appear in all of your Microsoft Office applications. It’s a small toolbar containing three icons and, if you turn it off, it will reappear. You cannot uninstall this feature, but happily, you can disable it. Here’s how:

  1. Open a command prompt.
  2. Change to the \notes\framework\brokerbridge directory.
  3. Issue the following command: regsvr32 /u officeaddin.dll

This will deregister the plugin DLL, preventing the toolbar from showing up in your Office applications.

Replacing GFS

Published on August 14, 2009

The Register recently had an an interesting article on GFS2: the replacement for the Google File System. It offers insight on the problems Google is facing with the aging GFS. In today’s world of video streaming, GMail account checking, and more, the GFS model doesn’t hold up as it once did. According to the article, the new Caffeine search engine that Google is rolling out supposedly uses this new back end, resulting in faster search results. It should be interesting to see what other benefits come our way as Google tinkers with their engine.

Copyright © 2004-2019 Jonah Bishop. Hosted by DreamHost.