Remaking the excellent puzzle game where the logic of the game is changed during gameplay.
Namespaces are just fine
No need to destructure everything.
Code reviews - Are you checking for this?
One often overlooked thing in code reviews
Reverse-engineering Cuphead's film-grain effect - Behind the Code
A great slam and then some!
Comparing strings - What can go wrong #unicode
What can go wrong with one of the most basic things in programming - lots.
Cross-Site Scripting (XSS) and is your SPA really safe from it?
One of the most dangerous attacks out there
Secure Cookies in 5 steps
Even with the right CORS setup and CSRF protection cookies present a few more attack vectors. Let's discover how to secure cookies.
CSRF tokens for SPAs
Demonstrating two approaches to set up CSRF tokens for SPAs
Demystifying CORS, CSRF tokens, SameSite & Clickjacking - Web Security
One of the best features of the web is its backwards compatibility. But ironically, this also makes the web somewhat insecure by default. Let's have a look
Git aliases for increased productivity
More Git aliases to ease your devlife.
Build Adonis/Vue apps without an API
A prototype of how to seamlessly integrate Adonis.js and Vue.js.
Isomorphic handling of promises in libraries like react.js, vue.js, angular, svelte etc.
If you are working on a SPA that connects to an API somewhere, you are going to need to write a lot of fetch requests. Now it's not as simple as fetching something and putting the result on the page.
Publish to NPM automatically with GitHub Actions
Part three of a series in which we explore GitHub Actions to create a CI/CD pipeline.
GitHub Actions: Setting up Test Coverage for a JS/TS/Node project
Part two of a series in which we explore GitHub Actions to create a CI/CD pipeline.
GitHub Actions: Setting up CI for a JS/TS/Node project
Part one of a series in which we explore GitHub Actions to create a CI/CD pipeline.
Clean URL slugs: The Good, the Bad, and the Ugly
Clean URLs come with great benefits, who wouldn't want one? Well...
Your flexbox is actually not centered
CSS line-height !== leading
1 year with React Hooks - Biggest lesson learned
I've been working with React Hooks for over one year now. Working on a variety of things, there has been one glaring issue that I've run into, not once, but twice.
Vue 3 just got me from interested to excited
Vue 3 has been on my radar for a while, but a recent RFC got me from interested to excited.
Good bye API layer. Uniting frontend and backend
A prototype of how to seamlessly integrate frontend and backend code.
Tailwind CSS - from skeptic to practiced
Introduction to an interactive tutorial on Tailwind CSS.
My webdev related finds for Apr/May 2020
A curated list of blog posts, videos, JS stuff and SVG resources I found in Apr/May.
Introducing learning by vueing
Introducing a platform to learn vue interactively.
Breaking free from the request and argument drilling with AsyncHooks
Introduction to an amazing new feature that landed in Node 13.
You may not need vuex. Here are some alternatives
Let's take a look at two approaches you can take before reaching for vuex!
Add Tailwind CSS to a vuetify project
Want to try out tailwind CSS in your project, but it already uses a component library? Let me help you with that!
Document your thoughts
How writing ideas up helps with conceptualizing thoughts.
Adonis.js - Advanced factories
Little tricks to simplify writing factories in Adonis.js.
Getting things done when you don't have the time
We all have obligations and sometimes it feels it can be quite tricky to make time for side projects.
How TypeScript over babel greatly simplifies creating libraries
Creating a NPM library sounds simple at first but once you think of supporting node, browser, ES5, ES6 etc. it can turn into quite a daunting task. Babel helps but adds a lot of complexity, let's see how you can achieve the same with less using TypeScript.
Vue.js - Cleaning up components
If you write a semi-big vue application you might see familiar patterns popping up repeatedly. Let's take a look at some of these and how we can drastically improve our components.
TDD course with AdonisJs - 9. Cleaning up after ourselves
It's always good to take a pause, look back at what we built and see if we can clean up something.
"git nah" and more handy Git aliases
Creating our own custom git commands for increased productivity
TDD course with AdonisJs - 8. Third party APIs, ioc and custom validators
Let's take a closer look at the ioc container and implement a third party API.
TDD course with AdonisJs - 7. Moderators
Adding a new feature for moderators to modify threads.
Tips on naming boolean variables - Cleaner Code
If there is one thing developers agree on, it is the fact that naming is hard, hopefully these tips can save you valuable time in the future.
TDD course with AdonisJs - 6. Validation
Currently it is possible to create a thread without a body or title. So let's add some validation to our controller.
TDD course with AdonisJs - 5. Middlewares
We learn an important lesson about the difference between integration and unit tests.
TDD course with AdonisJs - 4. Using the auth middleware
Most applications require auth in some sort, it's a breeze with AdonisJs and I show it to you.
TDD course with AdonisJs - 3. Model factories & DB transactions
We take a look at simplifying our tests with model factories as well as one common gotcha.
TDD course with AdonisJs - 2. Our first test
We write our first integration test and set up the database layer.
TDD course with AdonisJs - 1. Let's build a reddit clone
Part 1 of a series in which we engulf in the joy of TDD with AdonisJs.
Simple libraries do not guarantee simplicity
Rethinking popular NodeJs libraries.
Testing made easy with AdonisJs
Adonis lets you write clean tests and is a good candidate for test driven development. I will show how to get started with testing as well as some common techniques regarding the database setup.
A case against component libraries
CSS frameworks are a great way to quickstart a project. They let you focus on your application rather than the design. This is especially great if you are not a designer and don't have one in your team.
tap tap tap
Turn any non fluent API into a fluent one.
Utility-first CSS - You have to try it first!
Utility-first CSS provides many benefits over traditional solutions. The article highlights these and addresses common concerns regarding utility-first CSS.
React Hooks for Vue developers
Let's compare some common vue things and implement them using react hooks, then list up the pros and cons of each.
Common MySQL traps
Exploring some common mistakes with using MySQL like how utf8 is actually not utf8.
We learnt about dependency injection and ioc, there is one last step.
Demystifying Dependency Injection, Inversion of Control, Service Containers and Service Providers
It's really quite simple.
Undo changes in Git - Cheat sheet
Never confuse git checkout, stash, reset, clean, revert, rebase -i, amend again.
Refactoring search queries in Adonis.js
Learn all about model scopes and conditional queries.
Implementing SSR into a Laravel/Vue app
The issues I ran into integrating server-side rendering into an existing Laravel Vue application.
Exploring subclassing, a new addition with ES6.
Explaining shallow / deep copying through acronyms
Vue vs Traditional HTML - Reusability & Components - Beginner's Guide
What babel-polyfill doesn't include
Vue vs Traditional CSS - Beginner's Guide
Let's explore Vue's refreshing approach on CSS.
Avoiding fat controllers in Adonis.js
Taking a look at controllers and how they can grow into big junks of code, and how we can avoid this.