Luke Bouch
Home Archive Photos Replies Also on Micro.blog
  • I bought a OneWheel Pint second hand today.

    → 11:08 PM, Sep 12
    Also on Bluesky
  • MABDR Trip: Day One

    It’s the end of the first day of our MABDR trip. We jumped on the route in Harper’s Ferry on section 5 this mornin and are 1/3 through section 6 as I sit here by the fire, drinking some warm tea out of my very flimsy rubber collapsible cup, thinking back on what a fantastic day it was. One full of plenty of humor and amazing scenery.

    One of the riders in our group had his mind set at leaving Charlottesville, VA at 6am this morning so we showed up at our meeting location around 5:40am. We pair all of our intercoms successfully after some trial and error and headed north.

    After approximately two hours of riding, we stopped for breakfast at a little cafe and then continued on to join the MABDR at section 5 in Harper’s Ferry.

    Only two of us went down today; me being one of those. I ruined yet another pair of nice pants to a tear caused by gravel and the blood that later soaked in to it. My bike sustained very little damage. One of the panniers was bent and became loose but it should last the rest of the trip until I have an opportunity to repair it when I return home.

    I’m going to bed now so that I’m well rested tomorrow for the long, and possibly rainy, day ahead of us.

    → 5:32 PM, Aug 29
    Also on Bluesky
  • Leaving on a motorcycle trip to ride the northern section of the MABDR.

    → 5:58 AM, Aug 27
    Also on Bluesky
  • Finished reading: Investing Made Simple by Mike Piper 📚

    → 10:14 PM, Aug 21
    Also on Bluesky
  • Inside the Charlottesville UPS main terminal

    → 5:49 PM, Aug 21
    Also on Bluesky
  • The moon looks huge tonight.

    → 9:42 PM, Aug 19
    Also on Bluesky
  • Amazon cannot decide whether or not it delivered this package today or yesterday. It’s simultaneously saying both.

    → 11:36 PM, Aug 15
    Also on Bluesky
  • → 11:22 AM, Aug 15
    Also on Bluesky
  • I’m back on Micro.blog! After being gone for a little while, I have migrated my blog back to being hosted on Micro.blog. This makes posting much easier and my post frequency should pick up in the weeks to come.

    → 10:04 PM, Aug 13
    Also on Bluesky
  • Abandoned VDOT Signs

    VDOT here in Charlottesville has gotten a little lazy when it comes to picking up their construction signs after the road work they are performing is complete. On my short drive home from church tonight, I spotted two abandoned signs, one of which has been there several weeks since the concussion of the work. Both of which have no relevance to the conditions of the road.

    → 10:02 PM, Aug 13
    Also on Bluesky
  • Choosing a Book Instead of YouTube

    After I finished work and spent a few hours working on a few projects today, I had a few options for how I could spend the last little bit of time of my day. I decided to read a book instead of watching YouTube videos and I’m so glad I made that choice. The time spent was so much better used reading than watching a YouTube video for a number of reasons. It was relaxing, taught me a lot more than I would have gotten from a video, made me feel like I had spent the time wisely, and did not suck me in like endless videos do.

    I hope to make this a pattern.

    → 10:59 PM, Aug 12
  • Fountain Pens

    Ball point pens are the standard. You see them everywhere. They are cheap, really don’t take any skill to use, and are disposable which is just what most Americans like. But a few months ago when I learned about fountain pens, I decide to give them a try.

    It turns out that they are actually quite popular among writers and calligraphers. They provide a unique feel when writing that’s unlike any ballpoint pen I’ve used, requiring very little pressure. They are also very cheap to refill and the fact that you can buy cartages that you can put whatever ink you want in them is pretty interesting. They are usually more expensive to buy initially than a ballpoint and require a little getting used to but I have found them to be very enjoyable to use.

    I’m currently using the very popular “Platinum Preppy” that is available for around $5. I own four that I have scattered around the house and one at the office. I currently have almost 20 refills which can be purchase for about $0.50/refill. I might upgrade to a Lamy Safari soon but right now I’m happy with the Platinum Preppy and it’s nice having several that are all the same.

    → 10:48 AM, Jan 18
  • Boy's Camping Trip 2023

    Ever since I was three, my dad has planned an annual camping trip up in the mountains for fathers to take their sons. It changes a little bit every year and the group is always a little different. But my dad, Uncle, cousin and I have been going for 18 years and I’ve been yet to miss one.

    Day 0

    This year, I friend of mine suggested him and I go up one day early. Since today I’m considering a bonus day, I’m calling day 0 since the rest of the group won’t be joining us until tomorrow.

    Carter and I loaded up after he got off work today. We had already had a sport in mind of where we would be camping but when we got there, there was already someone there. Luckily, I knew of another great spot that would work for the two of us but it’s not big enough for the whole group.

    Tomorrow, we are going to drive back down to the large spot and ask the guy staying their when he is going to leave. Hopefully, he is just staying tonight and will be gone in the morning. If not, we will either ask him to move considering it’s just one guy taking up one of the largest camp site or we will try to make another site work.

    I look forward to the rest of the group joining us tomorrow.

    Day 1

    Today was a pretty uneventful day. since we got to bed so late last night, Carter and I slept in until about 10am this morning. We cooked eggs for breakfast and then hopped in the car.

    On the way in yesterday, we had seen a sign saying that one of the roads we drove on was going to be closed starting today and drove to see if we were going to need to find an alternative route for the rest of the group. Luckily, it was closed farther down the road and it was not going to affect us.

    On the way down the mountain, we also check to see when the guy in the camp site we wanted was going to leave. Unfortunately, he said he was going to be there a few more days. He was super nice and offered to move to a smaller spot and let our large group take the big one but we did not want to bother him so we made another spot work.

    The rest of the group made good time and showed up around 3pm. One of the guys showed up with less than half of the firewood he started out with left on the back of his truck. It was actually pretty funny.

    For dessert, we had dump cake and homemade ice cream which was amazing!

    Nothing super exciting happened today but it was still a great day. I’m getting up at 5am tomorrow morning to see the sunrise from the top of the mountain. As it is already 12am, I better get to sleep.

    → 5:30 PM, Jul 16
  • Camping Along the ADT

    On May 18th, my cousin left Delaware on foot to walk across the United States following the American Discovery Trail. His brother, my brother, I decided to plan a trip to meet up with him in West Virginia and cap with him.

    We headed out of town all loaded up on Saturday June 3rd. It took us longer than expected but we arrived at Indian Head Campground just outside of Maysville, WV, around 1:30pm. After dropping my teardrop, we headed down the road about 10 miles to puck up Ben since he had not quite made it to the campsite.

    After we brought Ben back to the campsite and got our stuff setup, Ben and Carson wanted to go rock climbing at a near by preserve (Bear Rock Preserve). It was only about 25mins away. I brought my camera along to get some photos of them climbing but also came away with some amazing landscape photos. Here are a few of the best ones.

    We got back to the campsite and started preparing dinner. I helped out some but Carson and Levi seemed to enjoy cooking and so I stepped back.

    Almost every trip we forget at least something and this time we forgot the oil for the griddle. We made do with the grease from the steaks and a few pieces of bacon we stole from breakfast. In the end though, our steak fajitas turned out amazing! Great work Carson and Levi!

    The rain held off the whole day but just as we were winding down and about to go to bed, it started to rain. We were fairly well protected by the trees we were under but we could hear thunder off in the distance.

    On Sunday evening, we cooked another amazing meal (eggs and bacon), enjoyed each others company, packed up, and then dropped Ben off where we picked him up the day prior before heading home.

    Overall, Indian Head Campground was a pleasant place to stay. At night it got a little loud because it is located quite close to a main road. If you are planning to stay at the campground you should not expect much in the way of amenities. There is WiFi that works ok if you walk a few hundred feet from where we camped and there is a place to throw trash. But as far as bathrooms and showers go, you need to bring your own.

    → 10:10 PM, Jun 22
  • People Can Wait

    This is something my parents have been telling me for years but until now, I did not agree with them. After reducing the notifications I get on my phone and realizing what a relief it has been, I’m considering turning off notifications for all texts and instant messages.

    My logic for it is, if someone needs my immediate attention, they should just call me. Yes, they will lose some convenience of just being able to type out a quick message and send it and instead have to call and wait for me to answer, but I think it should take some effort to interrupt what I’m doing. If they are unwilling to call me, the situation is really not urgent so they can wait until I actively choose to pull out my phone and check my texts.

    → 11:00 PM, Jun 6
  • Monthly Vs. Yearly Billing

    This is a blog post I’ve been meaning to write for a while. I’m actually glad I waited this long as my opinion on it has changed slightly.

    The post I was going to write was about why I pay for subscription-based software on a yearly basis if available. But something has happened since then. I switched software, and here’s why that’s significant.

    After using the note taking app Bear for about 9 months, I started realizing I wanted a platform independent way of taking notes. All of my notes were stored in a way where they can only be accessed via a single app (Bear) on devices made by a single company (Apple). Since I had purchased Bear Pro approximately 9 months earlier, I had three months remaining before my subscription was set to renew. I cancelled my subscription and I started looking for alternatives.

    Once I had found what I was looking for, I started taking all my notes in the new system. Why would I write notes in the old app whose days are numbered. Literally, since I had already cancelled my subscription the days left on my yearly plan were counting down.

    And here lies the problem. When I switched from one thing to another, I usually do so preemptively. And most of the time, I give myself more time to switch than is necessary. In this example, I payed for an entire year and saved about 16% but ended up wasting about 25% of the subscription because I switched to a different app before the plan expired. I would have been better off paying monthly rather than yearly.

    Now don’t get me wrong, yearly does have it’s advantages. It did keep me using Bear for 9 months instead of jumping back and forth, trying out different apps, because I had already paid for Bear Pro. If you know you are going to use something for at least a year, paying for a whole year in advance can save you money. But in general, I think monthly subscriptions are the way to go because they are, in my opinion, cheaper on average and offer more flexibility.

    You Need A Budget (Affiliate Link) is an example of where I pay yearly because I know I’m going to use it for a while. And I also want to force myself to stick with it because of how important it is in my life. Finances is usually not an area in your life to experiment with.

    → 4:58 AM, May 20
  • Reducing Notifications

    Over the past several months, I’ve been planning to ditch the iPhone and flash a Google Pixel with GrapheneOS. One of the major challenges with switching is the lack of push notifications on most apps on GrapheneOS (unless you install Google Play Services, which I don’t want to do for privacy reasons).

    While at first this was a problem for me, I quickly started realizing over half the notifications I get on a daily basis I don’t actually care about. And most of the notifications I actually act on are from just a few selected apps.

    Even though I have postponed my abandonment of my iPhone 13 mini, I have gone down a rabbit-trail turning off notifications for almost apps on my phone. The apps I do have notifications turned on, I have them just set to badges so I can check on anything requiring my attention at my convenience.

    Even though I’m only into my new notification stripped-down phone a few days, I’m really enjoying it.

    → 11:12 PM, May 2
  • Why Material UI?

    I don’t understand why Material UI has become so popular. Today at work, I was doing some research on Vue UI Libraries and the majority of the ones I found were implementing it.

    In my opinion it is actually not very pleasing to use but maybe that is just because it so heavily used by all of Google’s app and I so strongly dislike Google after all of the privacy issues that have come out.

    → 2:48 PM, Jan 10
  • Experiment: Work Schedule

    After reading this post from Mike Crittenden on experimenting on myself, I decided to run my own experiment this past week.

    I asked my boss if it would be ok if I started work at 7am instead of my usually 8am and then take an extra hour off for lunch. This gave me an hour and I half off for lunch and it was super nice! Not only did it give me a break from siting at a desk all day but it also gave me a chance to get a few things done.

    I’m going to talk to my boss and if he is ok with it, I think I’m going to make this my new schedule.

    → 11:12 PM, Nov 5
  • Choosing the Long Line

    Something interesting happened the other day. I was going through the Chick-fil-a drive-through and there had two lanes. One of the lines had a significant line while the other one had no cars in it. The way it wraps around the building, I could not tell if their where people working both lanes or just the one. And so I wondered, is this second lane open, and if so, why were was no one in that lane. It took me a moment to try to decide what line I should enter.

    It was fascinating, because I chose to enter the line of cars in lane one as opposed to taking the risk of entering lane two and it turning out to be closed. I later approached the area where you place you order and realized both lanes were in fact open. Yet, in fear that I would end up in a lane that was closed, I opted to join the long line and play it safe.

    Just and interesting observation. I’m sure their have been plenty of people that have studied this.

    → 10:35 PM, Oct 15
  • Migrating from Laravel's Token Guard to Sanctum

    In an application I was working on today, I had to migrate from Laravel token authentication to Sanctum. The process went relatively smoothly but just in case someone else has trouble, I thought I would layout the migration process.

    Installing Sanctum

    I’m going to direct you to the official documentation for instructions on installing Sanctum. It’s very straight forward and should be easy for anyone follow.

    Migrating Api Keys

    In this application, we had a ApiUser model to distinguish between regular users and other applications that talk to our api. While Sanctum uses a second table to store the access tokens (personal_access_tokens), with the Laravel token authentication guard, we were storing the token directly on the ApiUser model itself. We did not want to invalidate all of the api keys we already had in the database so migrating them all over to Sanctum’s personal_access_tokens table was essential.

    Following the documentation, I added the HasApiTokens trait to the model I was going to be associating the tokens with. This provides all of the necessary methods and relationships in order to both create tokens for the model and to authenticate the incoming request against the model.

    To migrate the tokens from the old table to the new one was a little bit tricky and I had to do some digging in the source code of Sanctum in order to come up with a solution. You see, we were storing our tokens in plain text in the database, but Sanctum hashes the token before storing them. This meant it was not just as simple as coping the tokens from one table to the next.

    I first tried using the createToken() method the HasApiTokens trait provides. The problem with this is was, it generates the token for you and does not allow you to actually specify you own string to use as the token (which is what I needed to do in order to migrate the old tokens over).

    I was able to dive into the source code for createToken() and realized all it was doing was creating a PersonalAccessToken with a randomly generated string and saving it to the model. I copied and pasted this function and with a little modification, was able to create this migration that would work.

    return new class extends Migration
    {
        public function up()
        {
            ApiUser::all()->each(function (ApiUser $apiUser) {
                $plainTextToken = $apiUser->api_token;
    
                $apiUser->tokens()->create([
                    ‘name’ => ‘Migrated Token’,
                    ‘token’ => hash(‘sha256’, $plainTextToken),
                    ‘abilities’ => [‘*’],
                    ‘expires_at’ => null,
                ]);
            });
        }
    };
    

    Changing the Authentication Middleware

    I had to then instruct Laravel to use Sanctum as opposed to the token guard for authentication to our api. I did a search for ->middleware([‘auth:api’]) and replaced all instances of auth:api with auth:sanctum.

    Updating Tests

    With the all of the tokens successfully migrated over to the personal_access_tokens table and our api.php routes file updated to use the new middleware, the last thing to do was to update all of our tests that were manually passing a bearer token in the authorization header with every request to using this snippet that I found and modified from the documentation: Sanctum::actingAs(ApiUser::factory()->create(), [‘*’]);.

    Conclusion

    In conclusion, migrating to Laravel Sanctum is not as hard as I expect it would be. It’s fairly straight forward with the hardest part being the migration of old api tokens.

    I hope this article will be helpful to you as a guide for the process of migrating to Sanctum.

    → 12:01 PM, Oct 13
  • Overlanding Expo East 2022

    This weekend, I went camping with some friends and my dad and brother. We went to Overland Expo and here are some photos I got from it.

    → 9:05 PM, Oct 9
  • Replacing the Heater Core on my 2001 Jeep Cherokee XJ

    I have had the sneaky suspicion that my heater core on my Jeep has been leaking for a little while now and have been waiting for a good time to replace it. With a camping trip coming up, I finally decided to tackle it. I had read online that it would take roughly 5-10 hours to complete so on Saturday evening, I began the process of completely taking the dash apart.

    It took me Saturday night, most of the day Sunday, and the past several evenings after work to get the job done. And boy was it a big job! I would say I have ~15hrs into it but that also includes flushing out the entire coolant system.

    I’m super glad to have finally have heat that does not result in all the windshield fogging up.

    Oh… and it rain all weekend while I was working outside.

    On a side note, I went ahead and decided to replace the thermostat because I wanted to remove the housing to properly flush out the engine. These Jeep’s take a 180 degree thermostat but it is not uncommon for people to unintentionally, or without knowing better, replace them with a 195 degree and that was the case with my Jeep. Not to mention, some how a o-ring was suck in the thermostat.

    With a freshly flushed coolant system and a new thermostat, the Jeep is staying nice and cool.

    → 9:09 PM, Oct 5
  • Trip to Illinois: Day 03-07

    I was planning on publishing a post for each day of my trip but I have given up on that. Overall, the trip was amazing and I really enjoyed getting to know the people at Wilber.

    → 8:26 PM, Sep 20
  • Trip to Illinois: Day 02

    → 10:51 PM, Sep 16
Page 1 of 5 Older Posts →
  • RSS
  • JSON Feed