When Elixir's performance becomes Rust-y
In this post Nick explores how we can delegate to Rust when we need more compute power in our Elixir app.
Generating CSS from scratch with PostCSS
Real World Phoenix |> Let's d4y
In this episode of Real World Phoenix Tjaco explores how easy it is to deploy our Phoenix app into the Real World!
Real World Phoenix |> Let's Send Some Emails
In this episode of Real World Phoenix we'll find out how easy it is to welcome our new users with an email when they sign up for our app.
Real World Phoenix |> Sign Up Flow SPA style with LiveView!
We're back with another post in our Real World Phoenix series! This time we'll explore usertype based registrations.
HTTP caching gotcha: Heuristic Freshness
I recently ran into an issue where after deployment of an SPA, a situation would occur where the page looked broken because CSS could not be loaded.
TIL about VCR
A while ago I had to dive into the VCR source code. I discovered some VCR features I did not know. Here are six things you might not know about VCR.
Matching multipart request bodies with VCR
When using VCR to test a HTTP multipart request, you might experience mismatching cassettes because of multipart boundaries. Here's how to solve this problem.
Running multiple Docker containers in parallel with Jenkins
Running multiple Docker containers in parallel with Jenkins is easy. The only hard part is figuring out how to do it for the first time.
Reactive Java using the Vert.x toolkit
A guided tour of Vert.x, a toolkit for reactive applications on the JVM
Real World Phoenix | User Roles | The Explicit Way
Last time we implemented user authentication. Now let's see how we can implement user authorization by implementing different user roles into our system.
How to manage dotfiles with GNU Stow
Dotfile managers basically create symlinks to the dotfiles in the home directory. But do we really need a dotfile "manager" to symlink some files?
Real World Phoenix |> Let's auth some users |> Pow!
In this episode of 'Real World Phoenix', Tjaco will explore and find out if there is a library in Elixir land to get user authentication up-and-running easily.
Git: Putting the Knowledge into Practice
In this final part, we'll discuss some more practical examples of what happens when use certain Git features.
Git: Content based addressing, branches and tags
In part one of this series, we learned that objects are referenced by a hash. Let's find out how these hashes are determined, and why it matters.
How the CSS stacking context works
In this blogpost I’ll explain how understanding stacking context may help you to solve future stacking issues.
Git: The Object Database
Nowadays, Git is probably the most used version control system. This Blog Post will help you understand Git better. It makes using Git a lot less daunting.
[LUNCH & LEARN] ESLint | Get more out of it for your project!
In this L&L Matthijs talks about ESLint. The talk is focused on `no-restricted-syntax` and the creation of a custom plugin.
Caveats storing large amounts of data in Elixir Agents
Recently while working on an Elixir project I ran into an interesting gotcha with Agents that caused massive amounts of resource usage.
Node version management in Docker containers
Recently I came across a solution to a Docker specific problem that I didn't know about. I'd really like to share this with you in my brand new blog post.
Cost-saving with NAT instances
In this blog post I will outline our reasons for moving from NAT Gateways toward NAT instances, instead of the opposite direction.
Real World Phoenix |> A LiveView Dashboard
There is some real excitement going on in the Elixir community after the fact that Chris McCord made his PhoenixLiveView available to the public.
Enriching requests with an AWS Lambda Authorizer
What is an Amazon API Gateway Lambda Authorizer exactly, and what can it do? Do you know it can also enrich the request with additional session information?
Splitting domain logging from application logging in Sentry
For one of our customers our goal lately was to make the logs more actionable. We ran into limitations in "sentry-sdk" this is how we tackled those problems.
[LUNCH & LEARN] ReasonML | Pascal Widdershoven
[VIDEO] In this presentation, Kabisa Software Artisan Pascal Widdershoven talks about his experiences with ReasonML.
[Lunch & Learn] Kubernetes: The Emerging Standard for Container Orchestration
During a Lunch & Learn a Kabisa Artisan tells his colleagues something about a relevant software subject. We recorded the presentation.
Sending Data to the Other Side of the World: JSON vs Protocol Buffers and REST vs gRPC
If you had to pick a communication protocol for your app, would it be REST or gRPC? How about the data representation? Would it be JSON or protocol buffers?
Things you could do with Mix (4)
Part 4 of my blog post series: Exploring Things you could do with Mix.
Things you could do with mix (3)
Hello again! This is part 3 of my blog post series: Exploring Things you could do with Mix
Jenkinsfiles for Beginners and Masochists
Continuous-delivery pipelines in the form of Jenkinsfiles are great. This post gives an introduction and describes some pitfalls.
Setting up Dokku on Azure with Terraform and Ansible: a Guided Tour
If you want to get started with infrastructure as code, why not start by reading this blog post?
Things you could do with Mix
Recently I gave a talk at the Code Beam Lite conference in Amsterdam. Now I share my thoughts in the form of a blog post as well...
Good-looking PDFs with CSS for Paged Media and Markdown
Transforming your Markdown documents into good-looking, printable PDFs isn't hard and can even be free.
5 reasons not to use safe navigation operators
Ruby and Rails include some techniques to "safely navigate" objects. However, using those techniques can lead to bad code.
Clean and maintainable Docker images using multi-stage builds
In this post I'm going to show you how you can keep your Docker images maintainable by making use of multi-staged builds.
Check the latest videos of the Serverless Meetup in Eindhoven
Kabisa organised a Serverless Meetup in Eindhoven on October 9th. All the presentations were recorded. You can find them on our Youtube channel.
Does your test tell a story?
Every developer will tell you that a good codebase is DRY and has details abstracted away. However, in my opinion those rules do not apply to tests.
🌶 Spice up your server-side rendered apps with Stimulus and Turbolinks
A brief look at using Stimulus and Turbolinks to improve your server rendered apps
Confidence in your software
If you want to develop powerful software with speed, you need to be able to rely on your application. No fingers crossed when you deploy, do it with confidence!
Dashbling - hackable React-based dashboarding
Dashbling is an open source React-based dashboarding tool.
Project Management from the perspective of a free agent
As a freelance software developer you’re in a constant struggle between client, project and managing expectations. How to avoid unhappy customers?
How to use fonts in your hybrid mobile app
What can you do to to make sure you're correctly embedding fonts in your hybrid mobile app?
An introduction to GraphQL
During a lunch 'n learn, I gave a presentation about GraphQL for my colleagues of Kabisa.
Integrating 3D graphics into a website using BabylonJS
BabylonJS is an engine for visualizing 3D elements within a website.
Dockerizing a Custom Karaf Distribution in 5 minutes
A Karaf distribution on Docker creates an OSGi environment which you can easily bootstrap and is also high scalable. Here is how to set one up from scratch!
Docker workshop - Getting started with Docker
Take your first steps into Docker. Follow along from running your first container until building a complete application of multiple containers.
Print list of integers as integers in IEx
Workaround for confusion when list of integers show up as charlist/string in your IEx console.
macOs Sierra: Cursor not moving when holding a key
After upgrading my machine to macOS Sierra 10.12 I noticed an issue using the keyboard: when holding a random key the cursor on the screen was not moving.
Building GitHub Pull Requests using Jenkins Pipelines
This post shows you how to build Github Pull Requests using Jenkins pipelines and (optionally) Docker
How to avoid `ORA-12899: Value too Large for Column` in your Rails application
Use Ruby on Rails metaprogramming to avoid and ORA-12899 error when using an Oracle database
Hanami and Multi-Database Testing with Travis
Hanami: good! Travis: good! Testing your code against multiple databases: priceless!
Installing nokogiri / libv8 / therubyracer on OS X
Tired of fighting to install nokogiri, libv8 or therubyracer on OS X? Me too! So follow these steps for a hassle free bundle install of these three gems.
Flight Tracking For Fun and Learning - Getting Started
There are various places where you can obtain a prebuilt flight tracker, but where is the fun in that? Let's build one from from scratch!
Deploy a Spring Boot app on your own server in less than 15 minutes
Tutorial on how to deploy a Spring Boot app on your own server in less than 15 minutes, using the open source Dokku PaaS
How to enable or disable the "Press and Hold"-menu in Mac OS X
Enabling or disabling the "Press and Hold"-menu in Mac OS X is pretty easy. If you know how to do it at least ;)
Build and deploy static sites w/ Middleman, CircleCI and Amazon S3
Build a static site with Middleman, host on Amazon S3 and managing the deployment process with CircleCI
Lunch break game development
Rails generate model: be specific
Rails offers some useful generators, one of which creates a new model. But did you know you can get into the specifics right from the command line?
Technical Debt: Cucumber
That awkward moment when you realize your cucumber feature tests have become technical debt. What went wrong?!
Learn Ember with our free workshop
Kabisa offers you a freely available workshop to learn Ember.js. You decide when to learn and how much time you want to spend.
ElixirConf EU 2015 impressions
On April 22th and 23nd the Elixir Europe Conference took place in Krakow, Poland.
Jenkins + Docker = awesome CI
Recently we’ve upgraded our CI environment to be even more awesome. Here’s how.
Sorting displayed data in Ember.js
I think this subject makes a pretty good candidate for a recipe in the Ember cookbook. I suggested this as a pull request, I hope this post will help you.
Dealing With Technical Debt
Needless to say, as most projects of this size and age, this one has plenty of technical debt. Let's make an inventory.
Backup PostgreSQL from a Rails project to Amazon S3
Creating a backup of a (PostgreSQL) database in your Rails application should be easy. Well, so seems to be playing Eddie Van Halen's Eruption.
The Guild 2
On February 2014 The Guild kicked off it’s second public edition. With over 50 people attending The Guild was a great success.
Open sourcing at Kabisa
We, at Kabisa, can proudly announce we have open sourced 2 gems! We developed these gems as part of one of our latests projects.
Building GitHub Pull Requests with Jenkins
We at Kabisa are Jenkins users. We live and breathe Test Driven Development, so a CI server continuously running our tests and building our apps is vital.
Kabisa supports Rails Girls
Kabisa wants to make software engineering accessible to everyone. Kabisa is committed to sponsoring Rails Girls events in our region.
The Guild 1
The Guild opens its doors for the first time. With about fifty craftsmen in attendance, this edition was a great hit!
Last month I had the privilege of attending the CamelOne 2013 Conference thanks to Kabisa. Looking back the trip to CamelOne 2013 was definitely worth it.
Discussing, discovering, and enlightening yourself with tools, tips and techniques: that’s what Devoxx is about
Devoxx 2012: Talks roundup
This year Kabisa attended the Devoxx University Days in Antwerp, Belgium. There were lots of interesting talks, in this post you'll find a short summary.
Setup remote pair programming
At Kabisa we are big fans of pair programming. Unfortunately, we can't always sit fysically together when doing so.
EuRuKo 2012 Highlights
Kabisa got to attend EuRuKo, an annual Ruby conference that was held in Amsterdam this year.
Kabisa at #arrrrcamp 2011
We're posting this one right at ya from Arrrrcamp 2011 in Ghent. Arrrrcamp is one of the best known RoR events in Belgium.
Xcode4: Attaching to MyApp
Today I imported an iOS project, originally written in Xcode3 into Xcode4. I ran into an issue that prevented me from debugging the app.
Long running migrations? Use the right tool for the job!
Thinking about the code you put in your migrations is very important and will pay you back in less database downtime during deployments.
Share sessions between Rails 2 and Rails 3 applications
We started building a Rails 3 application for one of our customers which had to share data with their existing Rails applications, built with Rails 2.
Handle CMYK colorspace uploads with Paperclip
When saving images in general, and JPEG in particular, a colorspace is used. The two most commonly used colorspaces are RGB and CMYK.
Headless Cucumbers and Capybaras with Selenium and Hudson
Nowadays software engineers can't live without their favorite test frameworks. Kabisa is using Hudson, Cucumber and Selenium
Dynamic Queue Assignment for Resque Jobs
Resque is a Redis-backed library for creating background jobs, placing those jobs on multiple queues, and processing them later. Sounds great!
Setup a self-signed SSL site with Apache2
This guide will show you how to quickly set-up a SSL site with a self-signed certificate and automatic HTTP-to-HTTPS redirect.
How to setup Ruby on Rails, Apache and Passenger on Debian Linux
For this article I'm going to install a single (virtual) server to run a standard Ruby on Rails application.