Blog

The Breaking Point - Understanding the performance of your systems

Every system has its limits. When designing and architecting systems, sometimes we as engineers like to assume things can scale infinitely. Maybe we can use larger machines, or maybe we can deploy more instances of a service. But even trying to scale systems isnā€™t magically infinite. Itā€™s a smart move to understand the limitations of what we are building upfront so we can make better technology choices, and squeeze the performance out of our existing systems.

Looking back on Clarity Hub

In my projects list on this blog is a set of projects related to Clarity Hub. This was a startup I did with a group of friends where we aimed to create software to enable software product teams to gather customer feedback, and then action on it.

In Good Company, Impostor Syndrome

Weā€™ve all felt it at some point in our careers: that dreaded feeling of impostor syndrome kicking in as we find ourselves in over our heads. Questions like, ā€œAm I truly qualified for this?ā€ and ā€œAre my peers facing the same challenges?ā€ often plague our minds.

Enforcing Localization through Types

When building web applications, enforcing that strings be localized to the userā€™s preferred language can sometimes be achieved via lint rules. But what if we could enforce proper localization using types in Typescript?

Feature Contexts

A common pattern in larger application when trying to track feature usage is to try to namespace events. For example, you might have a button that you want to track clicks on. For the sake of this article, we will use the data-track attribute on elements to track their usage, but you can imagine this works with any tracking implementation where you may need to explicitly call a tracking function (e.g. track(namespace)).

Forbidden Typescript: full/partial objects

When trying to be as type-safe as possible in Typescript, there are times when you may have to dynamically construct an object. You know as a programmer that all the keys will have values, but because you have to dynamically construct the values, the type system doesnā€™t know that the object is complete:

Reviewing Your Frontend Applications

Below are some notes Iā€™ve taken from setting up new code repositories and onboarding new team members. Hopefully they can help improve your current documentation and notes to make onboarding a smooth process.

Forbidden Typescript: ensuring all of a type

When creating more complex systems, there are times where you will want to ensure that an array contains every value of a defined type. We have a union of primitive literal types to define the possible values a type can have:

Smart Contract Security

The crypto craze has died down, but if you are working on Smart Contracts or thinking about creating a new blockchain projects, security is a huge part of making sure the project is successful. Since Smart Contracts often interact with cryptocurrencies, blockchain assets, or other tokens, itā€™s important to make sure the Smart Contract is secure and follows best practices.

Forbidden Typescript: Get Class Name

We donā€™t get a lot of information using typeof in JavaScript or TypeScript. At most, it tells us whether a value is undefined, number, string, or object. If you want to get the class name using a function, you can use the following extended version of classOf that is originally from ā€œJavaScript: The Definitive Guideā€: