Author: Dennis

  • I went on a hike this beautiful Memorial Day weekend up to the Rocks of Sharon, a famous hiking destination in the Spokane area. Instead of starting from Iller Creek on the North face of the Dishman Hills, I opted to start at the Stevens Creek trailhead. It’s closer for me, coming from the West of Spokane, and it’s a shorter, albeit much steeper, hike up to the top.

    The heat map of my hiker shows that, compared to walking out at the end, my pace was pretty reserved for the hike up. The trip was well worth it though, I had a fantastic time climbing up. I took a break halfway there to rehydrate and have snack, then picked the pace right back up.

    I crossed two dozen hikers coming down or hiking to different destinations, and passed a handful of people on the way up. There was a crew of mountain climbers at “Big Rock”, about half a dozen of them, scaling the rock face. At the top, several people were perched on different rocks, and after a few minutes, so was I.

    Going up to the Rocks of Sharon is my favorite hike in the area. Sure, Palisades Park offers a better view of Spokane, as does Edwidge-Woldson Park, but getting up to the Rocks of Sharon provides a stunning view to the South Plains.

    That, and access to both Isler Creek and Stevens Creek is drive in only, and the hike up is fairly demanding, so you’re surrounded mostly by people who are serious about getting a good hike in for the day.

    Stevens Creek trail leads you up a hill that is adjacent to “Tower Mountain”. I talked to some bikers while resting, and they said they put in on the South Hill. I didn’t ask them where, and I’m kicking myself because it would save me an extra 15 minutes of driving each way if there’s a South Hill entrance to the Iller Creek / Stevens Creek area.

    All in all, I killed two hours getting to the top, taking a good look around, hiking a bit of the ridge trail, and getting back down.

    It’s a solid hike for an afternoon, and can easily be made into a day trip just by continuing to hike more of the Iller Creek trails.


  • I just got a raspberry pi 3 working with a 3.5″ screen using Pi-Hole and running the PADD status board.

    My largest concern was in buying a 3.5″ TFT from Kuman, and not from adafruit (official vs. not). Fortunately, Kuman has a repo for all of their drivers and displays that work seamlessly with the pi 3. 

    So after installing raspbian lite, installing pi-hole, installing the Kuman driver for the 3.5″ display hat, and then rotating the display output 180 degrees, then finally installing PADD, I have a working pi-hole unit.

    I decided to go with a full raspberry pi 3 instead of a pi 0 (w or otherwise), or a pi 4 for a few reasons:

    1. I wanted a hardwired connection, since this will be a DNS server for multiple devices I didn’t want the extra latency of wireless or fiddling around with ethernet dongles for the 0. Any money I would save by getting a 0 would be lost in adapters and resulting complications.
    2. I didn’t want to have to solder on the GPIO pins for the pi 0.
    3. Most cases for the 3.5″ TFT screens are made to fit a full pi board, not the 0.
    4. I wanted better specs than the pi 0, but didn’t need the capability of the pi 4.
    5. I’ve worked with the pi 3 before and I know it’s reliable.
    6. The canakit for the pi 3 is cheaper than ever, possibly due to the popularity of the pi 4. The pi 4 would have been overkill for this project.

    After building, I pointed my phone, my tablet, and my tv at the raspberry pi, and started browsing and watching. After 18 hours of uptime, 709 requests have been blocked out of 8001. I have noticed sites like imgur and Questionable Content running much smoother, and have seen an overall decrease in ads on mobile sites for articles. My next step will be to point my desktop at it, and see how it affects gaming (if there’s any notable lag).

    So for all of $80, I have network level ad blocking across as many devices as I want. Not too shabby.


  • I’ve come across some articles (this one in particular) that bash on convertibles, and don’t pull the punches. 

    I have also noticed, during my recent search for a new car, that American domestics have all but given up the convertible form factor. Your options, as of 2019, for a new convertible are limited to the following: The Buick Cascada, the Chevrolet Camaro, the Ford Mustang, and, even though I would barely count it as convertible, the Tesla Roadster.

    Before I delve any further into refuting the alleged downsides of convertibles, however, I want to extoll their virtues.

    The Highway Example

    Imagine you’re driving down Highway 1 on the golden coast in the middle of summer. It’s a brilliantly bright day, heat tempered into comfortable warmth by the ocean air, occasional patches of mist brush against you, making your skin tingle. The wind is lightly tousling your hair, and you have a playlist of The Eagles and America music keeping you company.

    Now, forget everything in the above paragraph. You’re still driving down Highway 1, but you have no idea what it’s like outside b/c you don’t have a convertible. The A/C is sterilizing the ocean air, the roof prevents any sun from hitting you, and your windshield wipers dispel any mist on the windshield. It’s a clinical, detached experience, devoid of anything that makes driving enjoyable.

    That’s a large difference, but I think it best illustrates why you’d want to own a convertible. It’s not because it’s the fastest, or the most practical, or the safest. 

    It’s because a convertible lets you enjoy the world as you drive through it. It’s an immersive experience, and takes the monotony out of even the most boring of commutes, time and again. 

    But back to talking about convertibles

    I was a little cheesed that there’s not as much in the way of convertible selection as there used to be in America. I can understand why. 

    • They’re not as safe as their full body counterparts.
    • They’re not really practical for a family. (see the rise in SUVs)
    • They’re typically more expensive than their full body counterparts.

    I’d like to imagine that, even given the above facts, convertibles still appeal to the rebel in all of us, even more so than motorcycles. I’m going to rebut most of the claims made by Aaron Miller in the article I’ve linked to above in an effort to make the convertible more attractive.

    1 – He complains about bird poop

    This is laughable as argument number 1. I truly believe you’re more likely to get hit by bird poop walking in and out of work than you are by sitting in a convertible. 

    2 – He says: “Putting the top up is an enormous pain”

    Not really. I push a button, and the car takes care of the rest, even rolling the windows up. I don’t think I’d ever consider it a “pain” or even and inconvenience. It’s just part of parking a convertible if you had the top down.

    3 – He states: “It rains”

    Um… duh? Of course it rains, that’s when you don’t put the top down. I’ve never had either of my convertibles leak on me, and one was almost 20 years old.

    3.1 – He complains about trunk space.

    Neither of the two convertibles I’ve owned have had tiny trunk spaces. In fact, my Chrysler 200 has a massive trunk when you’re not storing the top in there, and even when you are, there’s still a decent amount of space.

    4 – He mentions mold

    Could this not happen to any car that gets water in it, maybe even by means other than rain through the top (e.g. snow on your shoes).

    5 – He claims they’re slow

    I didn’t buy my car to go fast. I bought a convertible to cruise with the top down and enjoy it. And honestly, my 200 isn’t going to be breaking any land records, but it’s no slouch of a car, either.

    6 – He gives some random, outdated example

    Not even worth a response.

    7 – He says convertibles are flexible

    On this point, and on point 11, we are in total agreement. It can be unnerving to feel your car “flex” a little from time to time, but you get used to it. This is a byproduct of the convertible form factor, and unavoidable without being re-engineered.

    8 – He says “We don’t want to see you”

    I cannot tell you how much I don’t care.

    9 – He claims the shapes suck.

    This is largely subjective, but I have to disagree. The new Mustangs, Camaros, and the Tesla Roadster look pretty sweet. I’m not a big Buick fan, but even the Cascada looks pretty sharp.

    10 – He says you can’t hear the radio

    This complaint leads me to believe the author has never ridden in a convertible made within the last 20 years. My 2000 Camaro had a sound system w/two modes. The first mode was for driving with the top up, and, surprise, the second mode was for driving with the top down. You had to manually toggle it, but it worked very well. My 2012 200 also has this feature, but it’s toggled automatically.

    11 – He says: “Sunburns Suck”

    Again, …duh? Sunburns can happen in convertibles, but can also happen if you leave your arm on the side of the car with the windows down. 

    I would hope that I’ve refuted enough common complaints to restore someone’s interest in convertibles. If nothing else, I’d like to be able to send this to someone next time they get snarky about convertibles.



  • I first started using DreamHost shared hosting in college, as an affordable means of hosting web projects. It includes domain management, no hassel SSL certs, MySQL databases, and more. It’s a great solution for most PHP projects.

    My largest frustration was being unable to host more interesting projects; due to the restrictive nature of shared hosting, I had no installation privileges on the server. Without these, running composer is next to impossible. I recently pieced together the process for getting Laravel on DreamHost, and I wanted to share my findings.

    Note: I’m assuming that you, the reader, have experience with DreamHost and Laravel, and I won’t bog down this walkthrough with every minute step of the process.

    Configuring DreamHost

    Step 1

    Create a new domain/subdomain.

    Step 2

    Add /public to the end of the web directory field. This is because Laravel’s index.php file is located here, and is the entry point for all requests.

    Step 3

    If you’re not using another database provider, create a database through DreamHost (it’s included). On the DreamHost admin menu, under “Advanced”, you’ll see “MySQL Databases”. Create a new database, and note the Hostname URL, database name, database username, and database user password.

    N.B. If you’re doing local development, you’ll have to add your IP address to the database user’s allowed IP address field. You can find it by clicking the username in the table at the bottom of the databases page. Any DreamHost domains are added by default.

    Preparing Your Laravel Files (locally)

    Step 1

    Create a new Laravel project locally, or get into the parent directory of your existing project.

    Option A (No Source Control)

    Step a2

    Zip the directory, and upload it to DreamHost. For Mac/Linux users, you can use SCP to quickly upload from the command line. Otherwise, use DreamHost’s in browser FTP service.

    Step a3

    Unzip on the server. You can do this via DreamHost’s in browser FTP service.

    Step a4

    Configure your .env file with the APP_URL and database values you noted down earlier.

    Option B (Using Source Control)

    Step b2

    Initialize a git repository in your Laravel project if you don’t have one already. I would recommend using Laravel’s .gitignore to filter out sensitive files, but it’s your choice. Publish your repository.

    Step b3

    Clone that git repo in your domain directory on DreamHost. git clone https://url-to-git-repo.git . That period is important, as it tells git to pull files to current directory, and not create a new directory.

    Step b4

    Upload any missing files via SCP or DreamHost’s in browser FTP. You might find a hint as to what files are missing in your repo’s .gitignore file.

    Finalizing Your Deployment

    • Before you run any migrations, update app/Providers/AppServiceProvider.php::boot() with
    public function boot()

    This will allow migrations to work with DreamHost’s older MySQL database system.

    • Make sure you run your Laravel migrations (locally, or on the remote server. You’ll have to mess with specifying what version of php to use on DreamHost, so I would recommend running them locally.)
    • Run through your .env file to make sure you have all the necessary fields filled out.
    • Read Laravel’s deployment documentation, it’s always a good idea to read that information from the source.

    And that’s it! Now you’re ready to start developing and deploying Laravel applications for dirt cheap.

    I’d like to thank Alesh Houdek for the well written article that allowed me to get up and running on DreamHost.