RSSAmplifier

Blog

Caleb Schoepp

Recent content from Caleb Schoepp

/RSS feed ↗47 posts

Latest posts

Year in Review: 2025

Here is the 2025 edition of my year-in-review post. This means I’ve been doing this for six years now ( 2020 , 2021 , 2022 , 2023 , 2024 )! Top 10 Experiences RIZN — Serving as a RIZN leader has been such a blessing in my life. I gained a new community, made amazing memories, and had an impact on the youth. Highlights include RIZN Camp, winning Water War, World’s Best Saturday, slip…

2025 Race Season

Traditionally I have written individual reports for each race that I’ve done. This year (partly due to laziness) I’m going to do a single post that summarizes my entire year of training and races. I’m hoping this might be a better format since it will capture the ups and downs of my year rather than isolated events. In 2024 I ran my first ever triathlon and quickly followed it…

A Primer on Authorization

Software applications need to secure themselves by authenticating and authorizing requests that they receive. Authentication (authN) is the process of verifying a user’s identity — who they are. Authorization (authZ) is the process of verifying a user’s scope of access — what they can do. This blog post will help you build a mental model for how authorization is modeled and the…

Year in Review: 2024

For the past four years, I’ve been writing a year-in-review post ( 2020 , 2021 , 2022 , 2023 ). Writing these has been a wonderful exercise in reflection and gratitude. I’m excited to continue the tradition with this post. Top 10 Experiences Getting baptized — In 2023, I decided to follow Jesus. This year, I decided to get baptized to publicly declare my faith in Christ. Trip to…

Three More Things You Should Buy and Use

I’m continuing my hit series 1 of three things you should buy and use . Alarm Clock No, I don’t mean the app on your phone. Breakthroughs in technology have allowed for an alarm to be built in to a device that physically sits on your bedside table. The technology we have access to nowadays is truly a marvel. Putting the sarcasm aside, spending $10 on a cheap alarm clock can make a…

Run The River Half Marathon Race Report

Here is my race report for the Run the River Half Marathon on September 22. This was the first half marathon I ever completed and I had a great time. Training This race was the capstone to the two other triathlons I completed this summer. I signed up for it with my brother Jon because we both wanted to race our first half marathon. I also figured since I was training for the other races I may as…

Configuring AKS NGINX Ingress Controller

Every time I try to set up ingress into an AKS cluster, I forget how, so I thought I’d quickly write down the steps. This tutorial assumes you’re familiar with Kubernetes concepts and interacting with a cluster. Prerequisites A running AKS cluster . kubectl config for the cluster setup. Helm installed on your machine. The application you want to expose running in the cluster. For the…

Do North Sprint Triathlon Race Report

Here is my race report for the Do North Sprint Triathlon on August 24. Training I signed up for this triathlon on a whim after completing my first one because I thought doing a triathlon in the Edmonton River Valley sounded lovely and I figured I could build on my pre-existing training. Simultaneously, I was also training for a half marathon which meant most of my training load was in the run.…

Great White North Sprint Triathlon Race Report

On March 25, 2024 I signed up to compete in the Great White North Sprint Triathlon . This decision was preceded by months of me mulling over competing in my first ever triathlon. Race day (July 7) has come and gone and I’m so glad I decided to participate. Here is my race report. Training I had just about three and a half months to train for my first ever triathlon. This was adequate, but I…

Four Remote Communication Anti-patterns to Avoid

Communication is hard. It’s even harder when you’re working remotely. Not only do you lose out on the benefits of talking to someone face-to-face, but you also have to deal with the challenges of asynchronous communication. You need every advantage possible when communicating remotely so here are four remote communication anti-patterns you should avoid. Overusing DMs Most messages…

The Future of AR and Remote Work

Like every other geek on earth right now the Apple Vision Pro has me excited. And though I haven’t tried one yet, it has me excited about how AR 1 could change the future of remote white collar work. There is a lot to love about remote work: having no commute; freely choosing where you live; making your own hours; and much more. But, remote work has some serious disadvantages too. In my…

Name Your Stuff

I like to name my stuff. I picked up the habit a few years ago when I purchased my first bike during the pandemic — a beautiful rose colored Kona Rove gravel bike. I named her Rose . Some might find a name like that too on the nose, but I don’t mind an obvious name. I think there is beauty in its simplicity. That’s why when I bought my first car — a lovingly used ruby red Ford Escape —…

Year in Review: 2023

The year of 2023 was the first year in my life where I wasn’t a student. As can be expected with such a transition I had lots of fun and encountered some struggles along the way too. Without further adieu here are my top 10’s of the year. Top 10 Experiences Following Jesus — 2023 was the year I decided to follow Jesus. It was a big decision for me and I put a lot of thought into…

WebAssembly Reading List

I’m giving a talk titled “What Actually Is WebAssembly” at Cloud Native Rejekts 2023. As part of my talk I want to help people further explore the world of WebAssembly. This is a list of blog posts, documentation, and videos that I think might be interesting to someone who is learning about WebAssembly. I’ll do my best to keep this up to date. Without further ado here is my…

How I Built an AI Inferencing API With Llama2 on Spin

If this fails to redirect automatically you can find the post here .

Debugging With the Key/Value Store Explorer

If this fails to redirect automatically you can find the post here .

How I Built a Like Button for My Blog with Spin

If this fails to redirect automatically you can find the post here .

Tackling My Overflowing Reading List

Do you ever find yourself opening endless tabs on your phone’s browser with posts you want to read, but never actually get around to reading them? Recently, I discovered a technique to help me manage my ever-growing reading list, and I thought it would be worth sharing. Whenever I come across a page I think I would enjoy reading I open it as a new tab in my phone’s browser. Between…

Learning to Play Hockey as an Adult

A little more than a year ago I started teaching myself to skate at the outdoor rink near my house. Five months ago I enrolled in a beginner hockey program for adults called Discover Hockey . Two months ago I started playing on my first adult hockey team. Going from not knowing how to skate to playing on a hockey team once a week has been quite the transition. I wanted to document what learning to…

Questioning My Approach to Advice

Good advice is very difficult to give. This is because it is inherently context dependent. Advice is inextricably linked with the lived experience of the person giving the advice. No matter how well conceived or written, the value of advice is limited by its applicability to a given situation. Given how unlikely it is to produce advice that is helpful, what is someone like me with a blog supposed…

Year in Review: 2022

It’s hard to believe that 2022 is nearly over. In keeping with the tradition , here is my year end review. The review is composed of three parts: my top 10’s for the year; a reflection on 2022 similar to my halfway check-in ; and my goals and aspirations for the new year. I always find a review like this to be a joyous and worthwhile exercise. It’s easy to forget about all the…

Inception Studio Weekend Reflections

I recently spent a weekend in California at a hackathon put on by Inception Studio. For three days I hacked on large language model (LLM) ideas with some really smart people. I learned so much from the experience that I wanted to write down some of my biggest learnings. Life Take more risk At this time in my life I should take as much risk as I can fathom. Taking large risks early in life means…

A Programmer's Three Identities

One of the reasons I enjoy programming so much is that it asks you to to simultaneously take on three unique identities. Each identity requires you to think differently and the identities may be called upon to different levels depending on the programming task. And it is absolutely possible to program with only one or two of these identities. But, to be a truly great programmer you must be able to…

2022 Halfway Check-In

My 2021 year in review outlines my goals for 2022. Now that we are a bit more than halfway through the year I thought it would be a good idea to stop and reflect on these goals 1 . Time to see where I’ve excelled and where I’ve slacked and determine what is still worthy of pursuing and what I should give up on . Checking In On 2022 Career By the end of this year I’ll graduate.…

Productivity Porn

I have a pornography problem, but it’s not what you’re thinking. In fact, if you’re anything like me, you might too. It is well understood that social media can have a negative impact on your life. Whether you are doom-scrolling on Instagram, furiously retweeting on Twitter, or on your fifth hour of watching YouTube, you might experience: Feelings of jealousy, anxiousness, and…

When Should I Give Up?

When should I give up on something and when should I see it through? I’m asking this question after my third attempt this week at writing a blog post I’ve been thinking about writing for the past year. The idea for the blog post seems so promising when I think about it. I’m able to imagine it in its fully finished form and I can picture the effect it would have on the reader. But…

Chrome Shortcuts I Use Everyday

My favorite web browser is Google Chrome. I want to share with you some of the shortcuts that I use everyday. It’s too dramatic to say that I couldn’t live without them, but, it is accurate to say that they make my life way better. You’re going to notice lots of these shortcuts are only avoiding relatively easy mouse movements. For example pressing CTRL + T instead of moving your…

6 Tips for Starting a Software Engineering Internship

On Monday I’ll be starting my third internship with Microsoft, and my fifth internship in total. Reflecting on my previous internships and preparing for the coming one I came up with six tips that have helped me in my internships 1 . 1. Ask lots of questions This very well might be the cardinal rule for interns. It can be scary to ask questions because you don’t want to show that you…

Stating the Obvious

A common excuse people use for not writing is that they don’t have anything insightful to say. Or in other words they don’t want to state the obvious. I think this is a poor excuse and that more people should write about obvious things 1 . Setting aside the likelihood that you do have insightful things to share, here are three reasons why stating the obvious is a good idea. First,…

Three Things You Should Buy and Use

Inspired by Dynomight’s list of creative nonfiction training exercises , here is a list of three things that I think you should buy and use. Password Manager It took me way too long to get on this train, but using a password manager has removed so many problems from my digital life: Trying to think of a new password when creating an account Trying to remember which variation of a password I…

Discovering Blogs

One of my favorite things is when I discover a new blog. How I find the new blog always varies. I might find it while hunting for the answer to a specific technical question. Perhaps it’s been linked to from social media or newsletters I subscribe to. Or possibly I follow a link their from another blog. But, if that first post is any good, what I do next is always the same. I find their…

Skating My Way to a New Mindset

One of the things you quickly learn as an employee at Microsoft is that the company is really big on the idea of a “growth mindset”. This platitude is everywhere — employee training, corporate messaging, employee reviews. I initially found this messaging quite abrasive. I was allergic to a company preaching about how I should think. In an ironic display of a fixed mindset (the opposite…

I Want to Be an Entrepreneur so That I Can...

Be Involved in the Entire Process I love building software, but, it’s never quite felt like enough. I’m not happy just being a cog in the machine shipping widgets. I want to be involved in the product design, marketing, support, business decisions etc. Have More Flexibility Working for yourself can give you the freedom to construct a life you want to live. Ironically by constraining…

Building StudyBuddy at HackED 2022

This past weekend I participated in HackED 2022 , the annual hackathon put on by the U of A Computer Engineering club. My teammates Armi, Cyrus, Ryan, and I built a web app called StudyBuddy and we finished in first place winning a $1000 grand prize. I wanted to reflect on the experience like I did last year . Demo Before I go over the story in a chronological order I want to share a demo of what…

Year in Review: 2021

As 2021 comes to a close it’s time to look in the rear-view mirror and reflect on what I’ve done, where I’ve been, and what I’ve consumed. I’ll also look forward to what I want next year to look like. Top 10 Experiences Travelling to Portugal for ~2 weeks — port tasting and the Castle of Marvão were some of the highlights. Spending ~2 weeks with my family in Mexico —…

Compiling espeak-ng in Xcode for iOS app

Recently at work I’ve been busy getting neural net text-to-speech to run offline on iOS. One of the steps for this text-to-speech pipeline is turning text into phonemes. At Resemble AI we depend on a library called eSpeak to phonemize the text. The library can be found on Github at espeak-ng . It turned out to be quite an involved process getting eSpeak to compile for an iOS app in Xcode so…

Ideas are worthless, execution is everything

This post serves as a reminder to myself that “ Ideas are worthless, execution is everything ” 1 . I want to stop believing that the only thing holding me back from starting a company/open-source project/etc. is a lack of good ideas. The idea fallacy is so common that the entrepreneurial community has developed memes to defend against it; “ Ideas are worthless, execution is…

How to Setup Oh my Posh On Ubuntu

While onboarding at my latest internship I noticed that my manager had a very aesthetically pleasing shell. Upon further inspection I discovered he was using something called Oh my Posh . It markets itself as, “A prompt theme engine for any shell.” It’s more than pretty though — it will also show you Git status, error codes, Python versions, and can be configured to do more . I…

Building GrokJS at HackED 2021

This past weekend I participated in HackED 2021 , the annual hackathon put on by the U of A Computer Engineering Club. I wanted to take some time to reflect on the experience. Unlike previous hackathons I have attended, I came into this hackathon with a clear picture of a problem I wanted to solve. Thankfully, when I pitched the idea to my team before the hackathon, they liked it. I intend to…

Year in Review: 2020

Top 10 Experiences Freedom camping across New Zealand. All the adrenaline rushes (skydiving/bridge-jumping/diving). Evening excursion to Taupo hot pools. Summiting Crown Range alone. Becoming friends with my Airbnb host Lydia — specifically our Easter dinner and walk around Half Moon Bay. Moving out. Overnight canoe trip on the North Saskatchewan with my Dad from Genesee to Fort Saskatchewan.…

Nanosleep Error: Storage Size Isn't Known

Compiling a C program that used nanosleep turned out to be quite the thorn in my side. I&rsquo;m documenting this here for anyone else facing the same issues. TL;DR — Try compiling your program with a GNU standard e.g. gcc -std=gnu11 ... Debugging Here&rsquo;s a simplified version of what I was trying to compile. // Compiled via: gcc -std=c99 main.c #include <time.h> int main () { struct timespec…

Adding A List Data Type To Lox

Lists are an important data type for any kind of serious programming. The following is a detailed walkthrough of how to add lists to the interpreted programming language Lox. We&rsquo;ll go over the entire design including things like bytecode representations and syntax grammars. You can also expect a lot of code snippets 1 showing the actual implementation details. Lox is a programming language…

Spenser Skates on the Indie Hackers Podcast

I just listened to a great Indie Hackers podcast. In it, Courtland Allen interviews Spenser Skates from Amplitude . Some of the things they talked about are too good to forget; so instead of relying on my leaky brain to remember them, I&rsquo;m going to pen some of them down here. All of the following quotes are from Spenser Skates. Seriously though, if you&rsquo;ve got an hour (or 45 minutes if…

How to Organize Your Code

When I first started programming, I struggled a lot with how I should organize all my code. I needed an orderly way to keep track of the tutorials, code snippets, and side-projects I was rapidly accumulating. It&rsquo;s definitely a tough problem. Thank you to Dan Fletcher for his blog post on this very topic. He helped me figure this out when I was starting out. The following is a summary and…

The Importance of Maintaining Dev/Prod Parity

One of my side projects recently died on the vine and it didn’t have to. The project was a web service to convert an email newsletter into a PDF for offline reading where all the links would still work. This was done by pre-rendering the content of the links into the PDF. Generating the PDF required a plethora of tools. I used Puppeteer to render links as HTML documents and convert them to PDFs; a…

Replacement for Alt-tab on the Kinesis Advantage 2

I’ve been looking for a convenient way to switch windows, ever since making the Kinesis Advantage 2 my main keyboard. I used to use alt + tab but the unconventional shape of the Kinesis caused me to stop. It required my hand to contort too much. Recently, I found an alternative that I even prefer to alt + tab . Rofi is a Window Switcher for Ubuntu. Its key feature is that it allows you to use…

Storing Empty Interfaces in BigCache

Recently at work I was tasked with adding some caching to one of our Golang services. The particular service required incoming requests to provide an API key for authentication. So on every request the service was making an extra round trip to the database to verify the API key even though it was usually the same key. Not great. Implementing the cache ended up being much harder than I thought it…