We visited the J.C. Raulston Arboretum in Raleigh today. If you’ve never been, check it out; it’s particularly nice this time of year. I of course took my camera and got some macro photos while there.
I maintain multiple tools at work that all run in Docker containers on the same machine. The overall setup looks like the following 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!
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!
My most recent woodworking project was also the toughest one to assemble. This time around, I built a garden trellis to support the beans and peas my wife planted. Here’s a picture (which you can click to view a larger variant):
The legs and horizontal frames are all cut with compound miters at 7 degrees. This made assembly difficult, as there weren’t any “flat” surfaces on which I could clamp things together. I purchased a cheap pneumatic nail gun which helped tremendously with this, but it was still a challenge. In the end, I think the final product looks pretty nice. Woodworking is a real fun hobby!
My wife and I often daydream about returning to Switzerland. One of the things we loved most about our trip there was the ability to go everywhere we needed via public transportation, most often on trains. Imagine my delight when, purely by chance, I recently happened upon a YouTube channel that is nothing but rail trips through Switzerland from the driver’s point of view! There are hours and hours of videos, so I know what I’ll be watching over the next few days.
I recently completed the first project of the online woodworking course I’m taking. Building this one was a lot of fun, and it was the first project I’ve put finish on (paint, in this case). My wife and I chose a bright blue color for the table, as it goes nicely with our orange-ish deck. This will be real useful to have on our deck when we grill or just sit outside to enjoy nice weather.
A few weeks ago, my wife and I watched the film All the President’s Men, about the Watergate scandal. I had seen the movie before, but it was a real treat to watch it again (it’s truly an excellent film). Seeing the movie got me interested in the book on which it was based, so I picked up a copy from my local library.
Wow, what a read! This book ought to be required reading for American citizens. Though it’s a non-fiction book, it reads like an action adventure novel. It was difficult to put down, and was a real eye-opener into just how corrupt our politicians are. I cannot recommend it highly enough.
I’ve been interested in woodworking since I was little. As a kid, Saturday afternoons often involved watching This Old House, The New Yankee Workshop, and The Woodwright’s Shop. Late last year, I decided a change was needed in my extra-curricular activities. Many of my existing hobbies were becoming less interesting to me, and I wanted a new outlet for my energy. Woodworking is the hobby I chose to pursue.
During the months of December and January, I voraciously consumed woodworking videos of all types on YouTube. One particular channel stuck out: Steve Ramsey’s Woodworking for Mere Mortals. I really liked Steve’s down to earth presentation, and his attitude that anyone can do woodworking with basic tools.
In January, I signed up for his online course The Weekend Woodworker. The course contains six projects with a bonus workbench project to build first. Over the past week (I haven’t been able to get to it until now due to lousy weather), I built the workbench project. Pictures of the build process are at the bottom of this post.
Years ago, while watching a public television show about artists in North Carolina, a metalwork artist said something about the learning process that really stuck with me. He said that prior to becoming a metalworker, the only difference between metalwork artists and himself was that metalwork artists were actually doing it. That’s the attitude I’m taking this year with woodworking; why think about it when you can just do it, learning something in the process? I’m looking forward to tackling the projects in the course, and I’ve already got plenty of ideas on other projects to build. Stay tuned for more!
I recently stumbled on yet another enjoyable YouTube channel: Company Man. Each video tackles a particular company (or pair of companies), discussing how they got to where they are today. Some of the interesting ones I’ve seen so far:
- Cracker Barrel – Why They’re Successful
- Little Caesars – The Rise, Fall… and Rise Again
- Lowe’s vs. The Home Depot
- Carl’s Jr. and Hardee’s – Why Two Different Names?
New videos are posted each Wednesday.
I’m not a car guy, but tonight I stumbled upon a great little video series (still in progress, as of this writing!) of a guy restoring a 1985 Pontiac Fiero. The car sat unused for 20 years and he’s working on bringing it to life. Part 1 of the series is where to start. It’s a real pleasure to see this guy’s effort paying off.
One of our local news stations recently deployed an anti-adblock package (Admiral) on their website. It detects the presence of adblock software on the client, and prevents access until you white-list the website. The ads shown by this particular website have previously included malicious ones that attempt to deploy malware. As such, I refuse to white-list their site, having had bad experiences in the past.
While searching for tactics to sidestep this, I stumbled upon two Reddit threads (thread 1 and thread 2), both of which gave me enough information to figure out what was going on. The second thread above points to a repo of domain names used by this third-party solution for serving their adblock detection software. There are enough similarities in the domain names they use that make it pretty easy to pick out patterns. A typical pattern they employ is:
This is similar to how default Docker containers are named. An example is
unequalbrake.com, which also happens to be the domain serving the aforementioned news website instance.
Adding this domain (or list of domains) to your adblock filter list should block the adblock blocker.
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.
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.
My wife and I have had three floor lamps, all purchased at different times, fail in the same exact way (the third failed tonight). In each case, the crappy concrete base falls apart and the lamp separates from it. Here are some photos:
We will now institute a “no floor lamp” policy in our household, seeing as these things are so poorly manufactured. Has anyone else had this experience?
I’ve been tracking my weight using the Libra Weight Manager application for Android since June of 2010. It’s been a long time since I’ve mentioned it, but I thought I’d provide an update on where I am:
The figure above shows the entirety of my data set, from 2010 to today. The red line is my weight trend line, while the blue line is comprised of the actual data points (my daily weights). Each horizontal line is a span of five pounds, for a sense of scale.
There are a few interesting things to point out here. Tracking my weight was a great way to lose weight in the beginning (note the ever decreasing slope at the start of the chart). I try to keep myself honest by tracking this data, but you can see that I’m starting to slip (trending upwards). The giant dip near the middle of the chart correlates to my getting married, which I find interesting. I suppose that weight loss was primarily stress based.
One of my goals in 2019 is to bring this trend line back down about 10 pounds or so. I’ll try to post an update sometime in the new year to log my progress.
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 Wix.com, 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.
At 4:30 this morning, I awoke to our daughter (for the umpteenth time) crying out from her bed for who knows what reason. My wife had just put her back to bed after an early morning feeding. Seeing as my wife had just gotten back to bed herself, I got up to give her a break. After calming our daughter down, our cats decided it was immediately time to eat. Rather than put up with another hour or so of cat mischievousness, I decided to go ahead and feed them.
Having fed the cats, I headed back upstairs to bed. About ten minutes later, I hear a metallic thunk from downstairs. Getting up once again, I went back downstairs to find that I had left the can of cat food on the counter. Our incredibly food-motivated calico had eaten about half of the can, and had knocked it onto the floor, spilling cat food everywhere. After ten more minutes of cleaning (and swearing), I was now wide awake. So I decided to go ahead and get up.
At 6:45, after working for awhile, I decided to have breakfast. Something tasted off, but I chalked it up to being sleep deprived. Halfway through the meal, however, I discovered that the milk I was using was spoiled. I ended up having to toss the rest of the meal, and was too tired to make something else.
As I was about to head out the door to work, our daughter started fussing again, loudly. I brought her back downstairs to calm her down and give my wife some more sleep. After another hour, our daughter fell back asleep, and I put her back in her bed. I quickly gathered my stuff and headed to work, dazed, confused, and hungry.
I’ve loved trains since I was a child, and it’s a passion I never grew out of. In fact, one of the best parts of our trip to Switzerland last year was riding the rails, which we did each day. That is one of the (many!) reasons we wish to return to that fantastic country.
Here in the United States, train spotting (i.e. railfanning) primarily consists of watching freight traffic. As fun as it is to see a train in person, I have neither the time nor the inclination to get in my car and ride around chasing trains. To my good fortune, there are plenty of people on YouTube who do enjoy that pursuit and who film their efforts.
One of the best channels I’ve found to help me scratch that itch is Distant Signal Productions. Danny Harmon, based near Tampa, Florida, wonderfully narrates his railfan adventures. That he works in television is apparent, both from the professional voice-overs to the fantastic video editing. Here are two great introductory videos to his channel:
I learn quite a bit each time I watch one of his videos, and I enjoy it immensely. Another channel worth checking out is Delay in Block Productions, another very professional channel. This video on the Blue Ridge Southern Railroad was exceptionally shot, and fun to watch.
My wife and I welcomed our first child, a daughter, in late October. Our lives have changed so much in the few short weeks since. Former routines have been shattered. Thought patterns changed. Our two house cats even behave differently!
Prior to her arrival, we often got similar comments from friends and strangers: “sleep while you can.” If another parent happened to say these words, they inevitably came with a knowing glance or twinkle of the eye. Though unsaid, the implied “trust me on this, and enjoy it while it lasts” always came through with conviction.
Now that we’re several weeks into parenthood, I can better identify with those parenting veterans. I knew sleep was going to be a precious commodity, but I didn’t know to what extent. Some nights are better than others (and things are slowly improving), but lots of mornings still start in a dense fog of exhaustion. I’m most amazed at how my body has adjusted to this change. As it turns out, we humans can apparently survive on less than 8 hours of sleep a night; who knew?!
In the end, the lack of sleep is small potatoes. When your child needs you, you’re there for her in a heartbeat. And when she looks at you and smiles, it gives you the energy to do it all a hundred times over.
I’m transcribing the White Lily biscuit recipe here, because I hate having to look for it when I want to make some biscuits. This is a great and simple recipe that yields terrific results. Be sure, however, to use the right kind of self-rising flour (White Lily or Southern Biscuit brands are best). These brands consist of soft winter wheat, which is generally better for biscuits.
I also typically double this recipe, since I cut them larger than the recipe calls for (I use a 2 and 3/4 inch cutter).
- 2 cups self-rising flour
- 1/4 cup vegetable shortening (e.g. Crisco)
- 3/4 cup buttermilk
- Heat oven to 475°F.
- Place flour in a large bowl. Cut in shortening with a pastry blender (or two forks or knives) until the crumbs are the size of peas. Add buttermilk, stirring with a fork until the flour is moistened.
- Turn the dough onto a lightly floured surface. Knead gently 5 or 6 times. Roll the dough into a circle that is 3/4 to 1 inch thick. Cut out biscuits using a 2-inch biscuit cutter, and place on a baking sheet 1 inch apart (for softer biscuits, arrange so edges almost touch). Shape dough scraps into a ball, flatten into a circle, and cut remaining biscuits.
- Bake for 8 to 10 minutes until golden brown. Remove from oven and brush with butter, if desired.
Yields about 12 biscuits.
After what seems like an eternity, I’ve finally had some spare time to dedicate to this website. I’ve developed a brand new theme for the site, which is visually a lot simpler than the old one. I’ve ditched the old branding, deciding to stick with a simpler-is-better mindset. In the process of doing this update, I’ve removed a number of old posts that I feel no longer fit here (namely all the posts on my now-unsupported Firefox extensions and tutorials).
I hope to take this website in a slightly different direction than I have gone in the past. This visual refresh is one step on that journey.