Validating an Idea with 400 Email Signups in 72 Hours

Categories: mvp

The other week I was thinking about what it would be like to work four days per week instead of five. I have a few friends that follow this schedule and it seems great: that extra day gives you time cook, exercise, and generally improve yourself. All of these thing set you up to be more productive the next week. I knew I couldn’t be the only one with this idea and I thought there could be an opportunity to create a job board that focuses on jobs with flexible or reduced hours.

Continue reading »

What We Have Now Is Not Advertising

Categories: advertising

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 not possible 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.

Continue reading »

Does Apple Have a Software Problem?

Categories: apple

Even as someone who is heavily invested in the Apple ecosystem I have to say that the quality of Apple’s products is questionable. Here is a non-exhaustive list of problems that I’m currently experiencing: Apple music on my iPhone inexplicably stopped playing music. The fitness app on my Apple Watch Series 2 freezes when I open it. I must wait for 30 seconds for the app to crash and reload before I can start an activity.

Continue reading »

Node.js Named Parameters

Categories: nodejs

Named parameters are a handy feature that have existed in other loosely typed languages such as Python for some time. With the feature called destructuring assignment available in newer versions of Node.js, we gain the ability to do things like this: const { a } = { a: "b" }; console.log(a); // prints 'b' This is useful but we can also use this in function definitions: function func1({ a, b = 3 }) { console.

Continue reading »

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

Categories: nodejs zeromq peer discovery blockchain

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.

Continue reading »

Using UDP multicast With Node.js

Categories: nodejs udp peer discovery blockchain

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. This post explores a naïve peer discovery implementation using UDP multicast. With all the modern languages and tools we use, it’s easy to forget how simple yet powerful some low-level protocols are.

Continue reading »

The Best Way to Organize Your Web Api

Categories: api rest rpc

For several years I’ve been building APIs for web services. In this time, the most recurrent question that has come up is “how do we structure this API”? After years of working in this area, I’ve made many mistakes and learned many lessons. Now, I feel I’ve come up with the best approach. The most common response to the question of organizing an API has been “Make it RESTful!” While I think that REST is a fantastic pattern for implementing an HTTP API, I don’t think it’s a one-size-fits-all solution.

Continue reading »

Switching From Sublime Text to Visual Studio Code

Categories: sublimetext vscode ide

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.

Continue reading »

A Naïve Blockchain Implementation

Categories: blockchain bitcoin sovrin

This post is the first in a series where I naïvely approach the blockchain pattern in an attempt to better understand the technology. I will be documenting my thought process as I work to implement a simple blockchain. Blockchain — sometimes also known as Distributed Ledger Technology (DLT) — has been exploding in popularity recently. Most people would associate the term “blockchain” with Bitcoin which was the first large scale blockchain implementation.

Continue reading »

Making Python's Asyncio Synchronous

Categories: python asyncio

Python 3.4 introduced asyncio — asynchronous I/O and coroutines which are very powerful tools for writing concurrent code in a sequential fashion. As these tools become more powerful, we are seeing more libraries and frameworks that depend on asyncio. More asyncio is a good thing; but, unfortunately many older frameworks such as Django and Flask don’t play nicely with coroutines. Here’s a snippet that will run your coroutine synchronously: # eventloop.

Continue reading »

Kicking the Disposable Habit

Categories: consumerism

I’ve been thinking a lot about the state of consumerism in Canada and, more broadly, North America and I think we have a serious problem. Nearly everything we buy is designed to be disposable. Clothing, bags, accessories, and other every-day items are usually made as cheaply as possible – usually imported from other countries where labour is cheaper (often unethically cheap) — and simply doesn’t last for very long. This needs to change if we want to combat waste and stop polluting our planet.

Continue reading »

Migrating this site to Hugo and Netlify

Categories: hugo netlify

Up until yesterday I’d been maintaining this site by writing html and css by hand. Finally I decided that it’s time to move to a system that requires a little less work to publish an article. After some thought and recommendations by others, I decided to set up Hugo which is a static site generator. I also wanted to use Netlify as a host which was an absolute breeze to set up.

Continue reading »

Gaining Perspective

Have you ever been on a hike up a mountain and marvelled at how far you could see? You’ve just climbed several hundred metres and now you can see the whole city you live in. Not just your street; but the entire city. You can see the downtown core, the industrial area, all of the different residential neighbourhoods, and even your own neighbourhood and all of your neighbours’ houses. Have you ever flown to a different country and marvelled at how things are done differently than you’re used to?

Continue reading »

Thoughts on Start Small, Stay Small by Rob Walling

link Start Small, Stay Small: A Developer’s Guide to Launching a Startup is a sort of playbook for starting a small business online. The book is written for software developers who want to bridge the gap between creating software and being an entrepreneur. The book is absolutely packed with actionable information. Rob states at the start of the book that there is hardly any filler in this book and he means it!

Continue reading »

Thoughts on Anything You Want by Derek Sivers

link Anything You Want is a super concise book filled with lots of knowledge. I agree with almost everything in this book and I’m inspired by Derek’s success as an entrepreneur. I’m especially inspired by the fact that he was able to grow a business so naturally. He didn’t focus on raising money from investors or writing long business plans, he stumbled across a niche market and focused on the customers and everything else fell into place.

Continue reading »

Turning 30

Today I turned 30. Many people have been carefully asking me how I feel about this transition and response is always the same: I feel great! For some reason, some people treat growing older like some sort of death clock. Growing older means that you used up more of your precious years. We have a finite number of years to live, and 30 of them are already gone! I, for one, find that kind of thinking depressing so I don’t do it.

Continue reading »

Set Tomorrow Resolutions Instead of New Year's Resolutions

Every year, thousands of people sit down and think of several resolutions to make for the following year. They wait patiently for the next year to begin so that they can start eating healthier, start running, or reading more. The clock strikes midnight on January 1st and everyone commits themselves to their new resolutions. Some time goes on; some people form proper habits out of their resolutions and some people fall off the wagon.

Continue reading »

Ditch the Kindle

E-readers might be convenient, but they have a critical flaw: they are designed to convince you to buy more books. This is fine, it’s not that we should expect anything else; still, in the age of the attention economy, I think there’s nothing more invasive while reading a book than being sold something. Hit up the library for some good old fashioned paper books. I believe there is value invisible value in having books in your home.

Continue reading »

Keep It Simple

When I decided to start sharing my writing on this blog, I was evaluating what kind of tools and technology I should use to publish it. I looked at CMS’s, static site generators, hosted solutions, and who knows what else. Eventually, I decided to start playing with Hugo to evaluate it for this site. I spent a few hours reading the documentation and configuring a test site before eventually saying fuck it and wiping the directory clean.

Continue reading »

Hacking Productivity

Engagement and productivity are fickle things. No amount of money is going to motivate a person to be more productive. More content with renumeration, sure; but not more productive. Productivity is the measure of a person’s efficiency in completing a task. To create a environment that encourages productivity, you need two things: first, you need the perception of progress. The human brain is wired to reward a person with gratification if there exists the sensation of completing a task and approaching a goal (so choose the right goal).

Continue reading »

The Generalist, the Specialist, and the Leader

I’ve been thinking a lot about different personality types and how they relate to one’s career. What does it mean to be successful in your career? How can you optimize your career trajectory? I came up with a model that helped me to quantify career success. I realized that it’s possible to reduce the elements of any workplace down to two things: tasks and people. People are the members of an organization and tasks are the things that get done at the company to generate revenue.

Continue reading »

In response to “Electron is flash for the desktop

I recently read Electron is flash for the desktop. The author takes a negative perspective on the comparison and I’d like to offer an alternate one. Here’s the thing: Flash wasn’t bad for the web at all – it did amazing things. It democratized access to publishing creative works and designing media-rich websites on the internet. How is that a bad thing? I spent a lot of time on Newgrounds when I was younger creating and consuming content.

Continue reading »

Being Busy

There’s a difference between being productive and being busy. I’ve noticed some people pack their schedules so tight that they are frequently late or they forget to eat meals. I don’t think being busy should be a badge of honour; I think it’s more a sign of poor time management. Being productive, on the other hand, is something to strive for. How can you be productive without being busy? Learn to say no.

Continue reading »

Exercise and Self-Image

I’ve always had trouble maintaining an active lifestyle. Maybe (probably) it’s because of my career choice (working in front of a computer) or my choice of hobby (also working in front of a computer) that I tend to fall back into a sedentary routine. I’ve always had good stints of activity but I have a history of falling off that wagon. Something I’ve realized recently while trying to stay active is that it’s imperative that you disassociate your self-image with exercise.

Continue reading »

Host Your Own Content

There are some very popular websites out there that offer to host your content for you. Their pitch is that, by writing on their platform, you’ll have access to a network of other writers and readers. These companies make money—or at least they’ve convinced their investors that they will—by monetizing your content. Think about it: they sell what you write. If the content you write has inherent value, why not host it yourself?

Continue reading »

Cooking for Yourself

These days, there are so many ways not to cook your own meals, sometimes I wonder if the act of cooking is becoming a thing of the past. On one side of the spectrum, we have products like Soylent which act as a meal replacement. On the other side, we have a plethora of companies all vying for top contender in the food delivery space and it’s a big industry! Now you can even have robots delivery your food to you.

Continue reading »

Maintaining a Productive Email Inbox

A cluttered email inbox can be overwhelming and cause you to be unproductive. When you open your email client, does it inform you that you have 23,037 unread messages? Trust me, I’ve been there and a clean inbox is much easier to deal with. These are the steps I use to stay productive with email: Don’t delete email, archive it. Digital storage is cheap. I can’t count the number of times I’ve of done a historical search in my inbox for some old email or document.

Continue reading »

The Passwordless Method

Passwords are inherently insecure. It’s more than likely that you use the same password for several different services. If you’re really on top of things, you might use a password manager to generate and remember passwords for you. Even then, the password manager service is at risk of being hacked and your passwords being stolen. Bugs happen that can leave you vulnerable. What is the solution? I present to you the Passwordless method!

Continue reading »

Writing Software From the Top-Down

I came across this article that I wrote a few years back and enjoyed reading it again so I thought I would throw it up here on my new site. If you have an opinion, I’d love to hear it! After a few years of writing software, I’ve settled on one thought process for planning what I create. Whether I’m building a customer facing feature or a command-line utility, I start by thinking about the end-user experience.

Continue reading »