RSSAmplifier

Blog

Julian's Notes

Notes on technology, software architecture, research, business, and life by Julian Duru.

julianduru.comRSS feed ↗41 posts

Latest posts

We need to build Wealth

I never cared about wealth growing up. My philosophy was always simple: if you follow your purpose diligently, wealth can be a byproduct.

Who Gets Paid When the Machines Can Think?

For a while, I struggled with the right name for this article. I haven’t put up a blog post in months. But I’ve been writing. I’m always writing. I’ve been locked in, doing research, engineering, building communities, working with startups. It’s been quite the journey. Last year, I left Moniepoint after a decade-long career to […]

On Leaving Moniepoint

Today is my last day as a software engineer at Moniepoint. It’s been 10 years since I started my career at this great company. 10 years of blood, sweat, tears, and triumph. What a journey it has been!! We started this company from nothing, and today Moniepoint is a unicorn, supporting millions of people and […]

Unlocking value on the private internet

The current global economy incentivizes organizations to hoard data for competitive advantage. Although everyone thrives when valuable ideas circulate, competition rewards exclusive control over valuable knowledge. This manifests as network effects, which create a compounding advantage for existing platforms, cementing internet monopolies. The implication of this is reduced competition, which…

Monitoring and Observability of Distributed, High-Traffic Systems

You’ve probably come across the saying, “You can’t manage what you can’t measure”. A popular mantra in the business world, it underscores the importance of data for effective running and continuous improvement of business operations. Without keeping track of key metrics, it’s hard to know what to improve or if you’re making any progress towards […]

Calling Bullshit on AI Hype

When choosing a name for this note, I wanted something clickbait-ey and provocative. “Calling Bullshit on AI Hype” felt right. In recent years, Artificial Intelligence has been surrounded by immense hype. Challenging a hype cycle is often an effective way to capture attention. So, now that I have your attention, let me start by acknowledging […]

Applying Change Data Capture at Scale

Change Data Capture (CDC) is a technique used to track and capture changes made in a data source, typically a database, and utilize those changes in various downstream systems or processes. With CDC you’re capturing inserts, updates, and deletes – the classic CRUD operations – and using this information to perform tasks, which could be […]

Microservice Architectures and Design Patterns – Part 2

In my previous post, I discussed the Microservices architecture and the process of decomposing a business domain into constituent services. Today, we’re going a step further by diving deeper into this paradigm and exploring additional concepts that are essential for the successful application of microservices. At the core of any engineered system lies its primary […]

Microservice Architectures and Design Patterns

In today’s rapidly evolving software development landscape, staying competitive and keeping up with user demands is more critical than ever. Microservices offer a flexible, scalable, and resilient solution to building complex applications. But before we dive into the world of Microservices, let’s first take a closer look at Monolithic Architecture. Monolithic Architecture is a straightforward […]

SpringBoot Integration Testing using TestContainers and docker-compose

Integration testing is an important part of any software development process. It is a phase of software testing where different components of a system are tested together as a group. This helps ensure that the different components work together as expected. With the rise of micro-services and containerization, Integration testing has become even more crucial. […]

Continuous Integration of Maven Artifacts with GitHub Actions

A major requirement in developing a non-trivial software product is the establishment of a formal workflow for Continuous integration and Continuous delivery. Whether it’s an individual or group project, the CI/CD workflow lays the groundwork for getting code from the developer’s box to the live environment. But it goes beyond that. CI/CD allows code to […]

Naija Playlist 2022

My favorite Nigerian songs for the year 2022. I asked my brother Ebi to chip in a few. Not all of them were released this year. But they all made my list. Here’s the links on Apple Music and Spotify.

Tyranny of Small Decisions

I saw an ad by Amazon hosting job interviews for Nigerian engineers who wish to relocate to the US, Canada, or Ireland. Brought to my mind this thing called the Tyranny of Small Decisions. Basically, multiple actors within a system make favorable decisions for themselves within their local context. But the combination of those seemingly […]

Reactive Programming – Part 2

I continue to expound on reactive programming concepts in this note, by diving deeper into the reactor module. Remember in the previous note, I outlined different implementations of the Reactive Specification; Reactor being one of them. This note presents some of the fundamental concepts in the reactor module and how they facilitate programming in a […]

Reactive Programming

My foray into reactive programming began sometime last year. I had been seeing blogs and articles referencing this programming paradigm which appeared to offer more in terms of scalability than traditional blocking and imperative programming patterns. I did a deep dive into the concept and have since started using Reactive Programming on my projects. So […]

We need to raise better men

I couldn’t think of a better title for this note. There’s a lot to be said about the quality of men in the world today; the quality of people in general. But I’ll focus more on the men because my mind has been on the matter for quite some time. There’s no better way to […]

Things I learned in 2021

For as far back as I can remember, I have always prioritized the pursuit of knowledge. All through my school years, I was almost always one of the top students in class. I saw knowledge as a kind of power I could wield under appropriate circumstances to my benefit and the benefit of those around […]

Naija Playlist 2021

2021 was a stellar year for Nigerian music with Afrobeats gaining more global recognition. Last year I compiled a list of my favorite Nigerian songs. So I thought I’ll do the same this year. For a number of artists, Buju and Tems in particular, 2021 was a breakout year. Also, many club bangers made it […]

My Thoughts on Crypto-currencies

As I stared at the wallet balance on my Bundle app, I couldn’t help wondering what was going on. Date: May 13, 2021. My crypto portfolio had lost over 20% value in 24 hours. It was a bloodbath. From Bitcoin to Ethereum, Cardano, BNB. All were in the red. What manner of fuckery?? The crypto […]

2021-05-22. Wagwan Julian

For the past few months, I haven’t written any new articles. This is partly due to laziness, but also because I’ve been on a journey of self-rediscovery. I call it rediscovery because I thought I had already figured myself out. I believed I knew who I was and who I wanted to be. However, life […]

A note on the Human Pursuit of Happiness

Some time ago, I found myself ruminating on a pertinent question; one I have asked myself multiple times. I’m pretty sure you might have asked yourself the same question if you’re a thinker like me. What do I really want in life? It’s interesting though. For many people, whenever this question pops up, they can’t […]

Collaborative Filtering Techniques for Recommender Systems ( KNN – continued )

Quite recently, I started dabbling in Recommender Systems. My interest was piqued as a result of the pervasiveness of these systems in major technology platforms. Think of any site you use which offers suggestions to you based on your past activity: Amazon recommends books similar to ones you have liked and purchased; Netflix recommends movies […]

Naija Playlist 2020

Anyone who has followed Nigerian music over the years can acknowledge it has come a long way. Once there was a time I didn’t fancy much of the jams our artists put out. I would label them as too loud or too fast, with inordinately shitty lyrics. But times have changed. I guess the current […]

K Nearest Neighbors – Deep Dive (Part 2)

The first note in this series gave an introduction to the K- Nearest Neighbour algorithm. In the note, I went ahead to point out some of the concerns around KNN. I also did a primer on concepts like Feature Scaling and Euclidean distances. In this note, we will be implementing a simple movie recommender system […]

K Nearest Neighbors – Deep Dive

Much of Machine Learning involves finding and exploring patterns in data. ML algorithms will typically learn patterns from training data and apply what is learned on new data. One algorithm deviates slightly from this method, however; instead choosing to discover patterns as it encounters new data. K Nearest Neighbours (KNN for short) is an algorithm […]

The Unending Cruelty of a Nation’s Ruling Elite

Throughout last week, I was unable to shake off an overarching feeling of dread. Usually, I’m not one to allow external circumstances to influence my mood. Life is hard. Shit happens. You can’t take many things to heart. But if you’re a Nigerian like me, then you probably followed the recent protests against police brutality […]

Migrating from Java 8 to Java 14

Java developers will agree that Java 8 felt like a huge paradigm shift from Java 7. Java 8 was released in March 2014, and most notably introduced functional programming concepts, lambdas, and the Streaming API. Functional Programming in Java was a huge win for a language that already had a reputation for being too imperative. […]

The value of Technical Insight in Business

About a few weeks ago, I was mindlessly scrolling twitter when I stumbled on a tweet by Vala Afshar. In the tweet, he mentioned that google came into operation in the late 90s, at a time when there were several search engines already in the market. The tweet also included a nostalgic video clip of […]

Simple Linear Regression – Deep Dive (Part 2)

Although it’s very possible to code a typical Machine Learning algorithm from scratch, most times we wouldn’t want to do that. The reason is that there are already a bunch of libraries that have been built to solve the common problems you will encounter in the course of implementation. Hence, in practice, it’s always best […]

Implementing the Flux Architecture Pattern in VueJS

Modern frontend development has really gone far. Honestly, if you can remember the early days, you know we’ve come a long way from relying on spaghetti JQuery code to deliver functionality to users. Today we have frameworks like React, Vue, and Angular. These frameworks encapsulate the MVVM and MVC software architecture patterns that make it […]

Simple Linear Regression – Deep Dive

The most basic form of machine learning you can do is a Simple Linear Regression. Remember in an earlier post, I mentioned that Supervised Learning is a form of machine learning in which we utilize training data to teach our algorithm to derive a function that can make predictions on new data. SLR is a […]

The DevOps Philosophy

As technology has evolved over the years, countless systems have sprung up into existence; each system formed on the basis of the intelligent application of knowledge and design principles. In our line of work, we design and build systems that provide services to our fellow humans. Think of all the great services we enjoy today: […]

The Magic of Shazam

There is always that moment when you hear a good song playing on the radio or in public and you just wish you could know the name of the song. If you have ever used the music recognition app, Shazam, then you are very much aware of the service it provides. With Shazam, you can […]

Setting up a Local Environment for Machine Learning

Before we can get started doing Machine Learning stuff, we need to ensure we have the right environment setup. Here’s a list of things you can do to get started coding ML: Install Git Install Python / Anaconda Get comfortable with the Command Line Install Git Git is a version control system that allows tracking […]

Embracing Imperfection

The very idea of perfection is the notion that something is without blemish. This idea is not so far-fetched because, in one way or another, we encounter it in our daily lives. We as humans are used to experiencing perfection in so many ways: the song that comes on the radio and completely caters to […]

My Reflections on Leadership

The other day I was pondering the topic of Leadership. I can’t remember exactly why. I guess it was one of those days I allow myself to think about anything that interests me. As I took the time to reflect on the things I already know about leadership, I realized there was so much more […]

An Overview of Machine Learning

Machine Learning is a subset of Artificial Intelligence that applies mathematical models and statistical methods to teach computers to make decisions towards achieving a goal. The term ‘Artificial Intelligence’ (or AI for short) is used to indicate some resemblance to human intelligence being exhibited by computers or machines. AI systems exhibit behaviour that mimics human […]

Git Version Control – Fundamentals (Part 4)

Often times, multiple branches exist in a project and incorporate divergent changes. There is always need to combine these changes in a process that results in a (new or existing) branch that includes changes across the different branches. In the world of git, there are two primary routes you can take when combining changes: Merging […]

Git Version Control – Fundamentals (Part 3)

To recap, a Git commit allow us save a snapshot of our project at a specific point in time. The snapshot makes it possible to retrieve the state of the project at a later time. Git starts to get interesting when you’re collaborating with other developers on a shared repository. First, you need to be […]

Git Version Control – Fundamentals (Part 2)

Now that we have git installed locally, we can start playing around with some of the basic commands. The first thing you want to do is initialise a git repository. As far as I know, there are two ways to accomplish that: Clone an existing Repo Initialise an empty Repo Cloning an existing repo will […]

Git Version Control – Fundamentals (Part 1)

As you progress through your software development journey, chances are you will grapple with projects that vary in complexity. While some projects can be hacked in a weekend, others might demand a much longer time due to considerable effort required in implementation. There’s hardly a relevant software project in existence that does not employ some […]