Blog
Home Blog About Contact
  • Using SIMD for Parallel Processing in Rust

    Using SIMD for Parallel Processing in Rust

    Jul 1, 2024

    SIMD (Single Instruction, Multiple Data) is a powerful tool for accelerating data-intensive operations in high-performance computing. While our previous exploration focused on thread-level parallelism with Rayon, SIMD enables parallelism within a single core, simultaneously operating on multiple data points. Understanding and leveraging SIMD is vital to squeeze every ounce of performance out of your code. As of mid-2024, Rust offers multiple avenues for SIMD development. While the standard libr

    Read more
  • Parallel Processing with Rayon: Optimizing Rust for the Multi-Core Era

    Parallel Processing with Rayon: Optimizing Rust for the Multi-Core Era

    Jun 24, 2024

    Learn how to use the Rayon library in Rust for parallel programming. Explore core concepts, key features, practical examples, and best practices to enhance performance with multi-core processors.

    Read more
  • Building Reactive Systems with Event-Based Architecture

    Building Reactive Systems with Event-Based Architecture

    Mar 4, 2024

    Software is in a constant state of flux, driven by the need for more responsive, scalable, and adaptable solutions. Event-based architecture is a practical solution to these challenges, shifting the focus from monolithic, synchronous processes to a more modular, asynchronous approach. This architecture enables systems to react, adapt, and scale with the evolving needs of businesses and their users. To illustrate this, let's consider the example of building a Software as a Service (SaaS) platform

    Read more
  • Atomic Commits

    Atomic Commits

    Feb 26, 2024

    Enhancing Code Quality and Review Efficiency

    Read more
  • The Art of Communicating at the Right Altitude

    The Art of Communicating at the Right Altitude

    Feb 24, 2024

    As developers, the precision in our code must echo in our communication. I call this balance 'communication altitude.' This subtle art, like a pilot adjusting between cruising altitude and a detailed survey of the terrain below, involves knowing when to zoom into the specifics and when to pull back, offering a panoramic view of the project landscape. Imagine you're deep in the code, intricately solving a complex problem. This is your low altitude flight, where every detail on the ground is vivi

    Read more
  • Handling environment variables with Axum

    Jan 19, 2024

    When writing a web application, the need to thread environment variables into your request handlers is almost always a necessity. For example, access an API secret or some configurable url is commonly required. Working with Axum is no different. I've waffled on several different approaches to this and I've landed on something quite simple that serves as a convenient way to access environment variables wherever they are needed. #[derive(Clone, Debug)] pub struct EnvironmentVariables { pub d

    Read more
  • How to host Ghost on Railway

    Jan 15, 2024

    I set this new site up with Ghost + Railway. It took a bit of tinkering to get emails sending properly. Here's what I discovered. Ghost uses Mailgun to send email so if you want to be able to send password reset emails or newsletters, you'll need to configure it properly. To start, create a new project on Railway and select Deploy a template. Choose Ghost (Docker) + SQLite. A few minutes after you make the selection, you'll have a new deployment up and running with a functional Ghost site. Fr

    Read more
  • Idiomatic Error Handling in Rust

    Feb 14, 2023

    Say Goodbye to Unhandled Exceptions with Rust's Error Handling

    Read more
  • Understanding Rust’s Ownership Model

    Jan 13, 2023

    Climbing the steepest part of the learning curve

    Read more
  • Getting Started With Rust and Cargo

    Jan 8, 2023

    A straightforward primer for working in Rust

    Read more
  • How to Publish a Python Package to PyPI: A Comprehensive Guide

    Jun 19, 2019

    In this guide, I'm going to show you how can easily publish a package to the Python Package Index so that others can install and use your work. Once the package is available on PyPI, anyone will be able to run pip install to install the package on their machine. This allows people to import your code into their own modules as a library, but you can also release command-line tools via PyPI; I will show you how to do both. note: these instructions are Mac and Linux centric. I don't think they wou

    Read more
  • De-Googling My Life

    Jun 12, 2019

    June 30, 2024 update: As I resurrect this blog post from 2019, I find myself reflecting on how my perspective has evolved over the past five years. While my original motivation to distance myself from Google's ecosystem stemmed from privacy concerns, I now have a more nuanced view. I'm increasingly drawn to technologies that champion the open internet, like the AT Protocol and ActivityPub. These technologies have captured my interest as they promote a more decentralized and interoperable web. T

    Read more
  • What We Have Now Is Not Advertising

    Jul 28, 2018

    Billboards, TV commercials, magazine ads – these are what I would call advertising. There is no way to measure the number of times a billboard on the side of a highway has been looked at. It is impossible to estimate the percentage of people who glanced at a magazine ad and subsequently bought the product. You can estimate, sure, but it is an inexact science. What we have today is not advertising. The amount of personally identifiable information companies have about their customers is absolute

    Read more
  • How to use HttpClient and HttpInterceptor to Cache Requests in Angular 5

    Apr 27, 2018

    Recently, I’ve delved back into Angular on a new project for the first time since the Angular 1 days. The new Angular seems familiar yet much more robust and productive since embracing object-oriented programming principles. One requirement I had was to implement a simple request cache, as data from the API I am consuming doesn’t change too frequently. I initially approached the problem with a simple solution but soon found some documentation related to the relatively new HttpClient API. HttpCl

    Read more
  • A Naïve Peer Discovery Implementation with Node.js and ZeroMQ

    Apr 8, 2018

    Recently, I’ve been thinking about building a simple blockchain implementation to better understand the pattern. As blockchain systems are distributed, the first challenge that came to mind was how to allow peers in the network to discover one-another. My ultimate goal of this exercise is to keep things as simple as possible, so, my first thought was to use UDP multicast for peer discovery. In essence, every node would simply emits its state to a multicast group every n seconds. And while UDP mu

    Read more
  • Using UDP multicast With Node.js

    Apr 5, 2018

    With all the modern languages and tools we use, it’s easy to forget how simple yet powerful some low-level protocols are. Recently, I’ve been thinking about building a blockchain system as an exercise to better understand distributed ledger technology. As part of this thought exercise, I’ve been thinking about simplifying and optimizing process of sharing state between many nodes in a network which has led me to playing around with the UDP protocol. UDP is considered part of the transport layer

    Read more
  • Using React, Firebase, and Ant Design to Quickly Prototype Web Applications

    Mar 26, 2018

    In this guide I will show you how to use Firebase, React, and Ant Design as building blocks to build functional, high-fidelity web applications. To illustrate this, we’ll go through an example of building a todo list app. These days, there are so many tools available for web development that it can feel paralyzing. Which server should you use? What front-end framework are you going to choose? Usually, the recommended approach is to use the technologies that you know best. Generally, this means

    Read more
  • Switching From Sublime Text to Visual Studio Code

    Switching From Sublime Text to Visual Studio Code

    Mar 19, 2018

    I’ve been a loyal Sublime Text user for more than 6 years and have thoroughly enjoyed using it. Over the past week I’ve spent some time trying other text editors and IDEs to see if there is anything new worth using. To my surprise, using Visual Studio Code has been an incredible experience and has been a boost to my productivity. Why I decided to look for alternatives After so many years of satisfaction, it became apparent that I needed to explore the option of a more powerful IDE. I’ve been

    Read more
  • Gaining Perspective

    Jun 5, 2017

    I remember the first time I truly understood what gaining perspective meant. I was on a hike, pushing myself up a steep trail, my legs and lungs burning. As I reached the summit, something happened. My entire city spread out before me. From there, I could see it all—the downtown core, the suburbs, even my neighbourhood, now just a tiny patch in the vast urban landscape. It hit me then. This view—this perspective—was changing how I saw my daily life. The problems that had seemed so overwhelming

    Read more
  • How to Set up a Super Productive Docker Development Environment

    How to Set up a Super Productive Docker Development Environment

    Jun 1, 2017

    If you’ve ever worked on a large piece of software, I’m sure you’ve endured the pain of setting up a complex development environment. Installing and configuring a database, message broker, web server, worker processes, local smtp server, (and who knows what else!) is time consuming for every developer starting on a project. This guide will show you how to set up a docker development environment which will enable you and new developers to get up and running in minutes with even the most complex s

    Read more
© 2025 Nicholas Rempel
GitHub LinkedIn Bluesky