Reagent Front End

16 March 2020

For the past couple days, I’ve started playing with Reagent to do a bit of React programming. I used the Reagent-frontend template for leiningen to get my start. Within a day or two, I had managed to string together a useful little toy application. It only took me a couple hours to get my next toy application put together. Each application is a mere single-page application for doing a single, simple task on a mobile device. It’s a lot of fun, and this opens the door for quickly implementing any toy I want.


Pixel 3 XL

03 March 2020

In Summer of 2018, I had a Nexus 6P that was on its last legs, and I couldn’t quite wait for the Pixel 3 phones to be released in the Fall, so I picked up a refurbished Pixel XL to tide me over until I could see the new devices. That Pixel XL was fantastic, so I just kept it for nearly 2 years. Back in October, the Pixel XL got its last OS update, and I’ve now started seeing news of Android 11 previews, so I got the itch to replace the old Pixel XL even though it still runs pretty well.

I finally got that Pixel 3 XL just a year and a half later. Compared to the Pixel 3a XL, I figured I’d appreciate the higher screen resolution and the bit of water resistance. This device doesn’t seem too much different from my old Pixel XL, though now I’m buying a couple headphone adapters, and I might just end up using my cheap bluetooth headphones more. I’m excited to have wireless charging again, which I had given up with my Nexus 4. The front-firing stereo speakers are back and sounding good, but it’s an adjustment from the way I used to carry the Pixel XL with the single speaker blasting podcasts from a pocket as I wander the house. It seems that maybe driving the extra speaker may drain battery a little quicker. After a couple days, I had to pop into the Developer Options to hide the notch. It’s just a bad idea: I have too many notifications to allow room for a notch cut out between them.

The Pixel 3 XL seems pretty well-balanced with features I want at a reasonable price (about $300 USD for the refurbished one). I already have the March 2020 update before I’ve even owned the device for a week, and I should have updates through 2021. When updates run out, I’ll look at upgrading again. I’ll need to find a use for the original Pixel as a webcam or something, since it’s still in such good shape and had plenty of computing power.


Advent of Code

14 December 2019

For the second year I’m taking part in the Advent of Code with friends and coworkers. I’m using Clojure again this year.

The Advent of Code is a story and series of puzzles released as 2 parts daily. There’s a community of people competing at various levels to complete the puzzles faster than others. I was keeping up fine for the first 7 days or so, but I eventually fell behind like many people. Fortunately, everyone can continue to work at our own pace. The puzzles from previous years continue to be available.

I’m happy to find that I’m having an easier time with Clojure this year, and I’m more easily able to use it to describe the algorithms instead of struggling with the language. I publish my code to Github.


Missing Classes in IDEA

25 November 2019

I use InteliJ IDEA for work when working on Java code. When the IDE doesn’t work, though, it’s incredibly distracting.

I had a problem where IDEA would not find a few auxiliary classes in my application. It would highlight them as errors in imports, and the search would find the source file, but technically not the class definition. I’d poke at the problem over a couple weeks, but I’d otherwise ignore it most the time until it seemed to be losing more and more of my classes, some of which I was actively modifying.

Re-importing the project’s Maven build didn’t fix it; re-cloning a brand new project didn’t fix it; and re-installing IDEA didn’t even work. Finally, I found IDEA’s config directories, and wiped those out to start over, and that cleared up the problem: I was able to find all my classes again.


Using Google Calendar Effectively

21 September 2019

Google Calendar makes the world go 'round, especially for kids who travel between households and have lots of school events. There are a couple things you can do to get the most out of your calendar.

Set Locations

Calendar events obviously come with times and fixed reminders so many minutes before the event. It doesn’t matter where you are or where the event takes place: that notification is coming at the same time.

With a location set on each calendar event, other software, like Waze GPS, can continuously watch your current location and offer you a more useful notification giving you time to travel based on distance and current driving conditions along the way.

Set the Earliest Time

Most my calendar events have just one start time, but my kids' events aren’t that simple. A marching band performance may be at 7pm, but the bus to the stadium leaves at 4pm. Since we live by notifications, it’s important to get those notifications at the earliest time at which we need to act. The other times are likely just extra details that can go into the event title or event details. I can get a notification for 4pm and realize I don’t need to be there until 7pm, but I can’t tolerate a 7pm notification if I was supposed to be dropping a kid at the practice at 4pm.

If I find it’s important to see notifications for all the potential times of an event, then it’s probably best to break that event into more than one event: drop-off, performance, and pick-up.

Share the Calendar

This is the first and most useful collaboration feature of Google Calendar. A personal calendar benefits one person, but invite the other participants (the kids), and then they can start adding and maintaining events and following these rules as well.


Chili Recipe

03 September 2019

John’s Chili (8 qt)

Since I’ve not eaten meat for over 4 years, and I’ve been evolving my chili recipe, it’s probably time to update it.

Ingredients:
  • 58 oz canned plain tomato sauce

  • 93 oz canned dark red kidney beans

  • 46 oz canned black beans

  • 15 oz canned garbanzo beans

  • 1 large onion

  • 2 large tomatoes

  • 1 small green bell pepper

  • 1 small yellow bell pepper

  • 3-4 hot peppers (jalapeño, habanero, red chili, etc)

  • 0.25 cup minced garlic

  • 3 tbsp chili powder

  • 2 tbsp crushed red pepper

  • 1 tsp salt

  • 1 tbsp black pepper

Directions:
  1. Dice all the fresh ingredients.

  2. Combine fresh ingredients with spices in large pot over medium heat.

  3. Add canned sauce and beans to the pot.

  4. Adjust heat for slow bubbling, stirring occasionally.

  5. Let it cook for 45 minutes or longer.


Browser Automation with Geb, Spock, and Groovy

22 October 2018

I recently gave a talk and demonstration, Browser Automation with Geb, Spock, and Groovy, at the Capital Area Software Engineers group in Harrisburg, PA. While explaining the whole stack of software, I showed how to:

  • Start a project in Gradle

  • Get the Geb and Webdriver dependencies in place

  • Get started in Spock testing framework

  • Start up a browser for testing

  • Interact with the page content

  • Wait for asynchronous content

  • Abstract away page components into Geb Page classes

The slides and all the code are available in my geb-preso repo. It includes copies of the code I had prepared, the code we wrote live as a group, and my little toy Planning Poker JS app I was testing.


LetsEncrypt

18 September 2018

Months ago, I started setting up LetsEncrypt using certbot on my Debian web server. It hosts multiple virtual hosts, so I setup 2 different sets of certificates: one for hjsoft.com/www.hjsoft.com and the other for johnflinchbaugh.com/www.johnflinchbaugh.com/blog.johnflinchbaugh.com.

On Debian, at least when I got started, it was recommernded to have certbot shutdown your apache2 and let it start its own temporary web server to verify the LetsEncrypt setup (--authenticator standalone). The other trick is to register multiple domain names for one certificate by repeating the -d option. I did this with this invocation:

certbot \
    --pre-hook "systemctl stop apache2" \
    --post-hook "systemctl start apache2" \
    --authenticator standalone \
    --installer apache \
    -d johnflinchbaugh.com \
    -d www.johnflinchbaugh.com \
    -d blog.johnflinchbaugh.com

I got it started a couple months ago, but I didn’t know how to setup multiple domain names, so I was always getting errors that this certificate was for a different name: johnflinchbaugh.com instead of www.johnflinchbaugh.com, etc.

That’s all sorted out now, and all my sites should be SSL all the time.

For more information on setup, certbot has a great set of guides based on your OS and web server.


2018-07-24 Podcast List

24 July 2018


Watching for GIMP 2.10.1

13 May 2018

I was seeing the new GIMP 2.10.0 doing bad things with multiple gradients on a transparent layer, so I logged Bug 795866. They quickly fixed the bug within 48 hours, but now I’m sitting here reloading the GIMP news page to see if they’ve cut the newest release.

Update: GIMP 2.10.2 just hit Debian Unstable!


End of the Make 365

29 April 2018

While I fell behind and caught up a couple times, I caught up one less time, so this project is done.


2018-03-12 Sanding Stick Fix

12 March 2018

The sanding stick needed a little adjustment to be assembled successfully.


2018-03-11 Sanding Stick

11 March 2018

I finally modeled a sanding stick for small sandpaper belts I bought a year ago to kickstart the project.


2018-03-10 Ben on Skates

10 March 2018

Ben on Skates

A post shared by John Flinchbaugh (@johnflinchbaugh) on


2018-03-09 Enfocus for Cheshire Cat

09 March 2018

I added the Enfocus library to my example Cheshire Cat project to handle dynamic markup on the client.


2018-03-08 CLJS HTTP Client in Cheshire

08 March 2018

I added the CLJS HTTP client to my example Cheshire Cat project.


2018-03-07 JS Alert in Cheshire Cat

07 March 2018

I added a JS/Clojurescript alert to my example Cheshire Cat project.


2018-03-06 Ring-JSON in Cheshire Cat

06 March 2018

I switched the cheshire cat project over to use ring-json.


2018-03-05 JSON in Cheshire Cat

05 March 2018

I had the cheshire cat project produce a little JSON.


2018-03-04 Droid Maker Meetup

04 March 2018

Droid Maker Meetup

A post shared by John Flinchbaugh (@johnflinchbaugh) on


Older posts are available in the archive.