Using the API

I live and ride bikes in Lawrence, Kansas. I used to be active in the Lawrence Mountain Bike Club, and I helped with their web site. One of the things that we needed to communicate to mountain bikers in the area was how much rain we’d gotten recently, so that we can help folks judge whether the trails might be too muddy ride.

In the early 2010s, the web site “Weather Underground” offered an API to query their broad database of weather data, including historical weather data. It was exactly what I needed, and gave me the impetus to build a custom WordPress widget for the web site’s sidebar.

The whole thing came to a crashing halt after Weather Underground, which had been purchased by the Weather Company ( in 2012, then got acquired by IBM in 2016. In December 2018, the free API service was entirely discontinued, even for a user like me who was only querying their service for a single weather station, once per hour. If you wanted any weather data at all through their API, you had to talk to a sales rep and pay a fee.

They were going to charge me money, to give me access to National Weather Service data. Public data that, no doubt, Weather Company (and IBM) were accessing and monetizing for free. This was so frustrating, because that data is is public (and paid for with public taxes) and is available for the public interest.

Well, I can play that game.

It took me a while to find, but I finally found the API (, and the source data for the weather station I needed (the Lawrence Municipal Airport:

So now, once again, I’ve got my little weather widget. Woo-hoo. Next step, hopefully soon, I’ve gotta put together a how-to, in case anyone else wants to know how I am using the API.


It’s been a year since my last post. Might as well go for a poem, then.

Digging down into the minutia;
crawling back out,
to bring an idea to the surface –
The goal is not necessarily the light,
it’s just the dirt layer on top.
Yet it’s still an idea,
drug up from the depths
that could be the seed
that with some sun
and some rain
and some tending
might possibly, over time,

Patching OpenSSL on Windows running Apache – fixing the HeartBleed bug

I woke up this morning to learn that there’s a week-old bug in OpenSSL that is all over the news. I feel very guilty for not knowing about this sooner, as I am running OpenSSL on my Windows 2008 that we are using for data collection at my job with the university. But, better late than never, I shut down Apache and started researching how to patch this thing as quickly as possible.

I am a programmer, not a server admin, but I know enough – and I’m controlling enough – that I’d rather manage my own machine. And I’m lucky enough to have that privilege and that responsibility with my job.

But it also means figuring stuff out for myself. And sometime just guessing to see if something will work. And after an hour of Googling to no avail, I just gave up and went for a best-guess solution. Fortunately, this seemed to work. And since it seems no one else has blogged about it yet, here’s my take.

So, if you don’t know if your server’s vulnerable, STEP 1 is to check this site to test it:

STEP 2: If your server is vulnerable, stop the Apache service. Just do it. The install won’t take that long.

STEP 3: Now you need to update OpenSSL. For those of us lucky enough to be running Windows like me (that’s irony, folks), you’ll need to get the appropriate version of the compiled installer for your version of Apache. I’m running the 32-bit version – I don’t even know if there is a 64-bit version for Windows – so I chose the “Win32 OpenSSL v1.0.1g” version from

STEP 3: Run the installer. I chose the option to copy the binaries to the “/bin” directory, because I figured I’d need to copy them over to Apache.

STEP 4: Open the C:\OpenSSL-Win32\bin directory. There are two binaries in there that match files Apache has in it’s bin directory: openssl.exe and ssleay32.dll. Find these and copy them to your Apache\bin directory, replacing the older files there. You might want to make backups of those 2 files before you over-write them.

STEP 5: Restart Apache. If Apache restarts, go back to the test web site (STEP 1) and see if you fixed. Hopefully, you will be.

Good luck!

Opposition to Kansas House Bill “concerning religious freedoms with respect to marriage”

So, I live in Kansas. There some really nice things about this state, but lately politics and state governance are not part of that set.

Today, the Kansas House of Representatives passed a loathsome bill (HB 2453) that legalizes a business’ right to discriminate against a person, “if it would be contrary to the sincerely held religious beliefs of the individual or religious entity regarding sex or gender.” Because this law now continues on to the Kansas Senate, and potentially on to the Governor, I felt compelled to write a letter to my senators and governor expressing my utter disagreement with this piece of legislation. The basic gist of that letter follows.

Dear Senator/Governor:


I am writing in opposition to House Bill 2453 – “an act concerning religious freedoms with respect to marriage” – in whatever form it takes when it comes time for you to vote on it. You must vote against this act. It is a shameful legalization of discrimination, and one that brings ridicule to the state of Kansas. It is unethical. History and our children and grandchildren will look back on this legislation – now a permanent part of who we are as Kansans, having been discussed and passed in the House – and shake their heads, wondering how we could do so much wrong, how we could be so cruel.


Much more than simple ethics, this law is also very bad economically for the State of Kansas. Not only is it a reason for individuals and businesses outside the state to choose not to do business here, common sense says that it the height of foolishness for any interested business to ignore opportunities to profit from demand for goods and services – wherever that demand may spring from.

It’s not just common sense, but economic history that bears this fact out. Bloomberg News illustrates this ( with research showing how the years following the Civil Rights movement and the passage of the Civil Rights Act bore demonstrable economic fruit as the result of the inclusion of minorities into the economy, as employees and as consumers. Allowing any business to use this legislation to decrease the state’s economy is just plain stupid, and very much anti-business.


The argument for this law being an effort to ensure religious freedom is simply wrong. It is a legalization of hate towards a class of people, and it is extremely damaging to the State of Kansas on many levels. This legislation must not be allowed to pass.


Thank you for taking the time to read my letter and to consider my opinion on this matter, as well as your role in this shameful chapter in Kansas’ history.


Lisa Hallberg

I don’t have much hope that this heinous bill will be put aside, given the State legislature’s recent past. However, I am confident that it will ultimately be over-turned by the Supreme Court. But until that day, I cannot sit idly by.

Summer Stroll

I did not abide the sunny paths
But instead, waded through shade
Beneath boughs between swaths of green grass
The gorgeous but searing sun screened
And the cool breeze amplified under the canopy.
Across the glade, shade pool to shade pool,
I strolled to the pond, joined by bluebirds,
Red-winged blackbirds and butterflies.
Garrulous frogs croaked then splashed as I came near.
The cattails dwarfed me and
Lithe willow limbs stretched to the glassy surface.

Facebook apps

So this post is really an experiment. I’m hoping that when I post this, I will see a link show up on my Facebook feed. If that works, I may have successfully integrated Facebook with this blog.

The crazy thing is that, of course, there’s really no coding involved with this process. It’s something that someone else has coded and built beautiful, user-friendly wrappers around nifty APIs and I’m just taking advantage of others’ work. My friend Trina has had this integration in her blog for well over a year – and it took me all this time to figure it out.

But, hey, I figured it out… Or I’m hoping I will see that I figured it out when I actually post this.

So enough of empty typing. Let’s see if this works, shall we?

(moments later…)


Successful Facebook post.
Yes, I run Facebook inside an incognito window. That’s just the way I roll.

The problem is that I now need to get the app to post as my Swingleton page, rather than me. But I feel the biggest hurdle is crossed, the rest is just minutia.

What a good way to get the day rolling.

Fickle April

Fickle April, startle me.
Spring’s shaky hold
knocked loose by the whimsy
of the jet stream,
pulling a curtain of wintry air
and icy dampness
from latitudes far to the north.

But freezing rain is no match
for the inexorable tilt of the globe
and the radiant sun, even through clouds,
draws the dandelions on —
golden lions’ teeth of my lawn.

Unheedful, the earth is verdant,
And me, I have a rain coat
and patience.

I made the questionable boast that I write poetry, and thought that I darn well better actually write something. So here is something.

Another WordPress site

I finally got around to updating with a new design and moved it over to WordPress.

I’m not ashamed to admit that a big hurdle for me was my existing PHP code for allowing people to join the club via our PayPal account. I loathed the idea of having to create some kind of custom page with hard-coded links, styled to look like it was a regular WordPress page.

As it turns out, WordPress is amazingly intuitive about allowing me to add some comment lines to the top of a template page, and then have that template be an option on the default “Add New Page” entry screen. Instead of feeling like a complete hack, integrating my existing code – and even a separate MySQL database – with a WordPress template worked so smoothly, it almost felt like this was the way it was supposed to be – that it wasn’t a kludge-y hack.

Not to bash too hard on Drupal, but nothing with Drupal has ever felt nearly so logical and effortless. I guess I just have to say that I am extremely fortunate that I’ve not had to deal with such complex sites that Drupal offered the only real solution. And when I do cross that threshold, I hope my intuition wakes up and sees the Drupal solution with the same clarity!

(A big hat-tip to for their Responsive WordPress Theme. Thank you!)

First Drupal site is live

I successfully converted my brother-in-law’s static and Dreamweaver-templated web site to Drupal this morning. I don’t know if he will like it, but I can certainly see where it’s going to make my life a little easier. Plus, now he can login and add and edit pages himself.

The URL, by the way, is

He suggested the new design, thought I had to do some interpretation to make it work as a web page. I guess I’ll see if he likes it or not.

One thing I definitely like about Drupal over WordPress for his site is the way views allow me to customize the uploading of images for him, without me having to write a long instruction sheet about how to add them. It automates the creation of thumbnail and basic image quite handily. I also love the way I can customize the look and feel of the user interface for him, so there no overwhelming list of links and terms to muddle through.

Of course, I say all that now, before he’s even opened my email to him, let alone the new web site, but I feel like I need to enjoy the glow of the moment while I can.

It’s a good feeling.

Responsive JQuery rotating images

Sometimes, when I’m in the weeds of a thing – say, figuring out how to build my own custom Javascript solution for rotating images – I wonder if it wouldn’t just be easier to download someone else’s solution and just live with that. But then I figure it out (eventually) and it almost seems worth it at the time.

The real bonus glory (in my mind) only comes later. And, for me, later is today. Today I got my image rotater to work with responsive design: it loads the images (which are all exactly the same size, to make the effect work), and resizes the bounding box (overflow: hidden) with each iteration, so if the viewport resizes, the images rotate in the right place.

It could be better yet – I could actually be resizing as soon as the viewport width changes, but since the rotater is already handling the image change event, that seemed like an easy (and perhaps elegant) place to put the resize logic.

But, more to the point, I feel like having figured out these two things – responsive design and building an image rotater (is “rotater” really a word?) – and then using the knowledge of the one to adapt the other is the icing on the cake.

Knowledge is such an accumulative thing. I have to remind myself that there was a time when I only scratched the surface and struggled through with just a bare understanding. And I know that there is still so much more to learn, but I keep bringing more tools to each project, and each project keeps challenging me and making me better.

I’m so glad I didn’t just download someone else’s script.