RSSAmplifier

Blog

ACME Updates

What's new at ACME Laboratories!

acme.comRSS feed ↗40 posts

Latest posts

07Jun2026 select

I noticed that my select(1) text database program would fail on lines longer than 1000 characters. The bug had to do with handling continuation lines incorrectly. An easy fix once I diagnosed it.

07Apr2026 https outage

Starting on February 25th and lasting a little over a month, acme.com has suffered intermittent network outages. The symptoms were very high ping times and packet drops. The outages would last a few hours and then go away foir a while. The problems started right after my internet provider, Sonic, did some scheduled maintenance and switched me to a new network. I worked with Sonic support to try…

27Apr2026 https update

After a month with https turned off, I opened it to check if I was still getting hammered. Yep. It's over half my traffic, about 500 requests per second. Poor old single-threaded natd on my old hardware just can't keep up. Then I had a thought: when if I moved my blocklist firewall rules to before the natd divert rule, instead of after? Would that take the load off natd and let me re-open https?…

13aug2018 Converting *Your* Google Maps to Leaflet

If you have a Google Maps API page that is suddenly costing you real money, and you want to switch to Leaflet like I did, here's how! First, go to the Leaflet.js page and bookmark it. You will be referencing it a lot. The Leaflet page has a section called Tutorials, and the first tutorial is called Leaflet Quick Start Guide . It's a nice simple guide to making your first Leaflet map. Read through…

27May2025 date_offset again

I realized that the new date_offset features from last week could result in days which don't exist, for example if it's May 31st and you do date_offset +1o you would get June 31st. Similarly for February 29th on non-leap years. Oops. So I fixed that. But how to test it? I could wait for the 31st, which is actually only a few days away. I could change the system date, but that might mess up a lot…

20May2025 New version of date_offset

It can now handle week, month, and year offsets as well as second, minute, hour, and day. http://acme.com/software/date_offset/

01May2025 New releases of graymilter, blackmilter, spfmilter

I needed to do a release of graymilter to add a feature. I also had unreleased changes to update the terminology: whitelist becomes allowlist and graylist becomes laterlist. There were similar changes to blackmilter and spfmilter. So I released new versions of all three. graymilter , blackmilter , spfmilter .

15Nov2022 e-1.04 released

This is a formatting-only release. Back in the Long Long Ago, there was a program called ctags which indexed source code. It was kind of dumb and required function names to be at the beginning of the line. I never once used ctags even back then, and certainly don't use it now, but I obeyed the coding standard anyway. No longer. In this release all function declarations are a single line. e - tiny…

10Sep2022 No Inertia

I updated ACME's maps to Leaflet version 1.8.0 this morning. I immediately noticed there was a problem with panning inertia. That's the feature where when you move the map, it keeps moving for a little bit. Well, it was moving by a lot . Like, a slight flick of the mouse could take me to Antarctica. As a workaround, I disabled panning inertia on all my maps. If the problem gets fixed in a future…

24Aug2022 e - tiny EMACS-like text editor

Back in late May, possibly due to pandemic boredom, I started writing an Emacs-like text editor. I chronicled the development process in a Twitter thread . Today, after three months of work, the first release is ready. e - tiny EMACS-like text editor

17Apr2019 GeoRSS Date Picker

I added a date selection feature to my GeoRSS viewer . One problem with this idea is that standard GeoRSS does not include a date in the items. However, regular old RSS does include a date, and GeoRSS is based on RSS, so I decided it was ok to use RSS's <pubDate> element for this. RSS wants an RFC822 date in the element, but any date format that JavaScript understands will work. So far the only…

20Aug2022 .tar.gz issue

A few people have reported that when they download a .tar.gz file from acme.com, their browser "helpfully" gunzips it but leaves the filename the same. So they have a .tar.gz file that is not gzipped, which is confusing and annoying. My own browser does not do this, yet, but perhaps it will the next time I update it. As an experiment, I have changed acme's web servers to not send the…

19Aug2022 leakfinder released

I wrote this simple memory leak detector years ago, dusted it off for a current project, and decided to prettify and package it up for release. So: leakfinder .

09Apr2020 Caption Maker improved

I added a bunch of improvements to the Caption Maker from a few days ago, including a popup color picker. Which is itself available as a JavaScript widget .

02Apr2020 Caption Maker

Shelter-in-place boredom prompted me to write a little widget that creates simple text captions, styled as you like, which you can then screencap and use. ACME Caption Maker

13Oct2019 Outgoing Email

Sonic did some config change a week ago that made my outgoing email stop working. That's ok, I was doing it the wrong way anyway - I was trying to send mail directly, while Sonic wants customers to relay through their server for better spam protection. Fine. But when I tried setting up the relay, I had some trouble getting it to work, Sonic's server was rejecting my authentication. Turns out the…

01Oct2019 Internet Outage

ACME's Sonic fiber internet was down from 12:15am to 1am. When it came back, we had a new DHCP IP number, so that took a while to propagate through DNS. Traffic got back to normal levels after about half a day.

10mar2019 Unicode in JavaScript

I was doing some Unicode stuff in JavaScript today. I needed to extract the code points from a string. You might think that the way to get the code point at a given position in a string is: cp = str.codePointAt( i ); Hah hah, no. That only works for points in the 16-bit Basic Multilingual Plane. If you have characters outside there, such as many emoji, you get garbage. To handle points past 16…

26oct2018 New version of mini_httpd

I stored out version 1.30 of mini_httpd. This includes an important security fix. Prior versions allowed remote users to read arbitrary files in some circumstances. This version plugs the hole. I checked all my other web servers and they do not have the same bug.

26feb2019 ACME Mapper photos bugfix

Fixed a super annoying bug in Mapper's Flickr photos feature. The first time in each Mapper session that you changed the number of photos, you would lose all your option settings! Now your settings are safe again.

20dec2018 Map Cursor Changes

I made a minor change in the mouse cursors on all ACME maps. Under Google Maps API, the mouse cursor is an arrow and changes to a hand when dragging. In Leaflet, the cursor is the hand and when dragging changes to a pointing hand. I figured out how to make Leaflet's pointers be like Googles, which I prefer.

11nov2018 Brain Transplant

Acme's main server froze around 2am, and when I woke up it remained unresponsive. I had a spare motherboard on hand because this model is known to die after a few years of uptime. I swapped in the new one and things seem to be fine now.

26sep2018 Geocoding

So after converting all my map pages from Google to Leaflet, I was still using Google for geocoding (converting addresses into coordinates). The level of geocoding requests on my big map averaged just a little under Google's new $200/month free allowance, so I figured why not just leave it going. However I noticed that some days a runaway webcrawler would hammer on my geocoding form, so I set up a…

27aug2018 More Map Changes

Got an email from Mapbox this morning saying "Hi there, It looks like your Mapbox account has used 100% of the free services included with your plan." Ok, not a big deal, I'm probably just barely over for the month. Checking... No, actually I went over the free limit weeks ago, but Mapbox didn't notify me until the end of the billing period today. Now I owe them $432. Fine. But I won't be using…

09aug2018 ACME Mapper Options Updated

I have finished updating Mapper's Options popup. Some things to note: The layers control can be set to be always open, instead of opening on hover. Some folks have asked for this, and now they have it. The scale widget can be set to show meters/kilometers, feet/miles, or both. Scroll-wheel zoom can be set to zoom at the mouse pointer instead of at the map center. I personally prefer the map-center…

07aug2018 ACME Mapper Options Changing

I have been doing some work on the options system. It has mostly been behind the scenes with no user-visible changes so far. However today's change means some of your saved options got reset to the default values. Don't panic, just set them back the way you like them. I'll try not to lose settings more than this one time. This work is in preparation for some user-visible changes to the Options…

04aug2018 Photo Markers

A long time ago, ACME Mapper could be used to display Flickr photos taken in the area shown. That capability broke when Google switched their map API from version 2 to version 3, and I never got around to fixing it. Well I just got it working in the new Leaflet version. To use it, bring up the Options panel and click the Flickr checkbox at the bottom. It's much easier and faster than Flickr's own…

03aug2018 New Maps

I have finished converting all twenty-two ACME maps from Google Maps API to Leaflet.js . Let me know if you run into any problems. To recap: on 15 July, Google raised prices on the Maps API by 14x, and lowered the free allowance by 30x. This means my cost for providing maps would have gone from $0/month to $1000/month. After waiting a couple weeks to see if Google would come to their senses, I…

18jul2018 Maps

Google recently made some changes to their Maps API, which ACME uses on many pages. They switched from having a free level of service to charging for everything but giving a $200/month credit. By itself that would be no big deal. However they also raised the effective price of serving maps by about a factor of ten . The price increase was not mentioned in the announcement of this change. The Maps…

29jun2018 FIBER!

ACME Labs is now on the net via gigabit fiber from Sonic . A thousand times the bandwidth for 1/5th the cost. Woo hoo! The install happened a month earlier than I had scheduled, which is good. It also took 8.5 hours, which is not so good. But it works great now. Lots of web sites that I thought were slow, e.g. Flickr and Google Maps, turns out are not slow when I have good bandwidth. Amusing side…

27May2018 handle more HTTP methods

I have stored out new versions of thttpd , mini_httpd , http_get , and oauth_sign . The change is the same in all of them: handle more HTTP methods besides the usual GET/HEAD/POST. This was necessary because of one new call in the Twitter API that requires HTTP DELETE, for no good reason. I also stored a new version of http_post to accomodate a different new Twitter API call that needs a new…

23apr2018 Flickr and SmugMug

Flickr was recently bought by SmugMug. Hurrah! Flickr is a photo sharing site that has been around since 2004. I've been using it every day since a month after it launched, and love it dearly. It has gone through a lot of changes, getting bought by Yahoo!, stagnating for years, then getting handed off to Verizon when Yahoo! died. A lot of people were worried it would just shut down. Well we don't…

04feb2018 new versions of thttpd/mini_httpd

I have released thttpd 2.28 and mini_httpd 1.28 . They both include a fix to a buffer overrun bug in htpasswd, reported by Alessio Santoru as CVE-2017-17663. If you are just using htpasswd to set up your own web auth files locally, there is no security implication from this bug. On the other hand if you are giving remote users access to htpasswd, they could conceivably use the buffer overrun to…

12Aug2017 Comments Weblet

I updated the ACME Comments Weblet to reasonably modern technology - JavaScript, CSS, and a JSON API. The old version, written in 2005, used <iframe>s. Remember <iframe>s? I didn't!

26nov2016 mini_httpd 1.26

This fixes a long-standing bug on FreeBSD using http but not https. Files were getting truncated at 1MB. This was due to improper usage of sendfile(2), and not testing the http path since I only use mini_httpd for https. Since Linux has a completely different sendfile(2) call, it was not affected. And since https does not use sendfile(2), it also was not affected. New tarfile available on the…

21Jun2016 Space War

Back in 2007 I wrote a version of the classic Space War game in JavaScript. It used sprites for graphics, which worked ok but was complicated and inflexible. Since then, web browsers have gotten good support for HTML5 Canvas , a way to draw arbitrary graphics on a web page. I adapted my old Space War code to use Canvas instead of sprites, and it looks great! Try it out.

11jun2016 Zoom5

Google's map API folks decided to get rid of the slider-style zoom control. I thought about re-implementing it, and actually made a pretty good prototype, but then I had a different idea. How about in addition to the standard +/- buttons, an extra pair of +5/-5 buttons that zoom five steps at a time? This turned out to be very simple to implement. It's called acme.maps3.zoom5 .

10May2016 mini_httpd 1.24 released

New version of mini_httpd to fix an obvious and serious bug in binary POST request reading.

09Mar2016 DROWN

Stored out new versions of all my SSL-capable programs - mini_httpd , http_get , http_post , http_ping , xmlrpc - with SSLv2 disabled to prevent the "DROWN" attack. SSLv3 had already been disabled in February 2015 to prevent the "POODLE" attack.

28Dec2015 mini_httpd 1.23 released

I made a new version of mini_httpd to fix CVE-2015-1548, a buffer overflow via snprintf.