The 9elements Blog

Our company's top wizards, stuntmen, and industry experts offer their best advice, how-tos, and insights - all in the name of shockingly good code & design.

Building the Perfect Logo Strip

Create a visually balanced logo strip by adjusting logo heights based on aspect ratios using CSS. By scaling logos dynamically, you can display a harmonious row of diverse logos without manual tweaking.

Read more about Building the Perfect Logo Strip

My Thoughts on CSS Day 2023

Last week, I had the incredible opportunity to attend my first CSS Day in Amsterdam. It was an exceptional experience that left me brimming with newfound knowledge. While I felt confident about certain topics, such as the has-selector and container...

Read more about My Thoughts on CSS Day 2023

Building a combined CSS-aspect-ratio-grid

Recently I was faced with the following problem: I had to build a layout that consists of several rows. In each row are two images with a fixed aspect ratio. The two images should have the same height and fill the entire row. The images' aspect...

Read more about Building a combined CSS-aspect-ratio-grid

More productive through less bullshit

Corporate growth kills individuality – or at least it tries to. We found, at least for us, an approach to combat the slow death of our company culture while growing from a living-room-like office with a few team members to a global player with over...

Read more about More productive through less bullshit

Digital Agency goes Beauty

Produkt- und Shop-Design für J'Tanicals – Als sehr technisch angesehene Agentur mit vielen Projekten und Partnern im IT-Bereich, ist es oft schwer, sich in anderen Branchen zu behaupten.

Read more about Digital Agency goes Beauty

Telegram Service for Ethereum 2.0 Staking

On the 1st of December, the first phase of the Ethereum 2.0 transition from Proof of Work to Proof of Stake will start - and we're happy to be part of the genesis. We  followed this guide to set up a lighthouse client (we love Rust) developed...

Read more about Telegram Service for Ethereum 2.0 Staking

Developing on Windows with WSL2

Last week the keyboard of my MacBook Pro broke. One key just stopped working, and I have lived over months with double keystrokes. It was time to bring it to the Apple store and get it fixed. The dude in the Genius Bar told me it would take 10-14...

Read more about Developing on Windows with WSL2

Gradient angles in CSS, Figma & Sketch

Do you know the feeling when a subject never lets you go? In the last years, I have worked with different graphics programs and have written many lines of CSS. Even though it is now easy to copy CSS code for gradients directly from e.g. Figma, I...

Read more about Gradient angles in CSS, Figma & Sketch

GPT-3 might be the iPhone moment for AI

GPT-3 is a transformer neural net topology that can be used for natural language processing (NLP) tasks. It is an unsupervised learning approach with the core idea that if you feed the net enough text, it eventually will be able to find patterns. It...

Read more about GPT-3 might be the iPhone moment for AI

Ethereum 2.0

We have always been big fans of Ethereum, and we've been on the lucky side to have invested into this idea early on. When the second big bubble of crypto was about to pop,  disillusionment and doubts lured behind the corner: The technology that was...

Read more about Ethereum 2.0

Volatile downloads with Elixir and Phoenix

At some point, almost every product served by a web application needs a reporting functionality for its admins. This may be a page showing a graph and a table, or a spreadsheet download. Admins can usually select a date range, and possibly provide...

Read more about Volatile downloads with Elixir and Phoenix

Sizing Blocks or Areas using CSS Custom-Properties

One of the many challenges when it comes to writing CSS is choosing the right unit. Over the years there has been a lot of controversies whether to use px, em or rem to size text. So I thought, why not add some custom properties to this mixture and...

Read more about Sizing Blocks or Areas using CSS Custom-Properties

Track-switching in a large Elixir web application

We used a feature toggle to gradually re-build parts of the business logic of our app. We were then able to switch to the new logic, and seamlessly roll back to the old logic in case of unforeseen problems. We had to come up with two interesting...

Read more about Track-switching in a large Elixir web application

Aus alt mach’ neu!

Als die-bewerbungsschreiber.de Anfang des Jahres auf uns zu kamen und mit uns die Neugestaltung ihrer Website planen wollten, wurde schnell klar - ein kompletter Rewrite birgt viele Risiken.

Read more about Aus alt mach’ neu!

Creating an animated SVG Neon light effect

We at 9elements organize an annual JavaScript conference called RuhrJS. The key visual shows a shaft tower and the conference name executed with a neon light effect. The main page features the full visual with flickering lights. This effect is...

Read more about Creating an animated SVG Neon light effect

On the Future of Web Development

Rust is a strongly typed, low-level programming language built for safety, speed, and concurrency from the ground up. It is mostly developed by Mozilla and has been battle tested by over a hundred companies including Dropbox and the game...

Read more about On the Future of Web Development

Building a responsive image

How to create a logo that responds to its own aspect ratio There are quite a few articles on the web that deal with responsive logos. The most popular example might be the Responsive Logos website that shows some very well known logos in different...

Read more about Building a responsive image

First Facebook Developer Circle Ruhr

As we are determined to strengthen our local tech community with events like the RuhrJS conference and PottJS Meetups, we are always happy to embrace new chances to do so. We took the opportunity to create a new forum for people to share their...

Read more about First Facebook Developer Circle Ruhr

Kickoff of the Facebook Developer Circle Ruhr

9elements strives to bring local developers together. We successfully host the user group PottJS and the international conference RuhrJS in the Ruhr Area, but development is not all about JavaScript, right? What are Developer Circles? First things...

Read more about Kickoff of the Facebook Developer Circle Ruhr

Elixir child specifications became a lot easier

and keep concerns separate along the way The official announcement of Elixir 1.5 was dominantly about improvements for debugging. Here I want to talk about a seemingly small change to how supervisor children can be specified. This change demonstrates...

Read more about Elixir child specifications became a lot easier

Elixir & Phoenix, mp4 and the Safari

Learn how to serve mp4 files to the Safari browser. With Welect we have a client where we heavily rely on Elixir and Phoenix. Welect is a service you can use to access premium content by paying with your attention by watching ads you choose by...

Read more about Elixir & Phoenix, mp4 and the Safari

Ethereum - The world computer

A lot of people might have heard of Ethereum, the new blockchain technology coming up as a successor to the bitcoin cryptocurrency. Although widely celebrated as the next big thing, the reaction to being stressed by the DAO hacker(s) recently and an...

Read more about Ethereum - The world computer

Why we bet on Elixir and Phoenix

Elixir and Phoenix are promising to become a productive foundation for creating backend applications. While the software ecosystem is not yet on par with Rails, we think that this technology is on a very good trajectory. It is already superior in a...

Read more about Why we bet on Elixir and Phoenix

Retrospect RuhrJS

Let’s wind back the clock for one and a half years. I just started my new job at 9elements and at that time I would have never give thought to organizing a conference. But soon after I became a part of 9elements I took over the responsibility for the...

Read more about Retrospect RuhrJS

Changing versions of Elixir and Erlang

Version managers have been around in the ruby ecosystem for quite some time. You switch (cd) to a project using a different ruby version, and voilà, you are magically using the desired version of ruby. When running ruby, rails or any other binary...

Read more about Changing versions of Elixir and Erlang

An Ember.js application with a Rails API backend

Alright, fellow fullstack developers. In the last few weeks I had the chance to dive into Ember.js - and I would like to give you a complete example of a blog application with Ember CLI for the frontend and Rails as backend server. This article...

Read more about An Ember.js application with a Rails API backend

Project launched: WEF Inclusive Growth Report 2015

This week, the World Economic Forum launched “The Inclusive Growth and Development Report 2015” with combined forces of 9elements and the help of our friends. The report, which covers 112 economies, seeks to improve our understanding of how countries...

Read more about Project launched: WEF Inclusive Growth Report 2015

The ethereal Frontier

Some of you may have heard of the new big thing - You may have heard that Ethereum's co-founder Vitalik Buterin was awarded with $100k within the Peter Thiel fellowship programme. That Ethereum which pre-sold it’s cryptocurrency, the Ether, last year...

Read more about The ethereal Frontier

German Valley Week Review

I just returned from my German Valley Week trip to San Francisco and the Silicon Valley. German Valley Week is an organized trip where entrepeneurs, investors and politicians from Germany visit disrupting startups ranging from new ones like Uber or...

Read more about German Valley Week Review

Go in Production

Some of our projects are gaining traction lately. That’s why we need to scale some parts of the infrastructure. 9elements started the search for a language that gives us more performance but that’s also expressive and easy to write. Since Go is used...

Read more about Go in Production

Using qt-pods to share your code

Adding dependencies to your project can often be very painful, because technically there are many ways to include foreign code. In very simple cases you might just copy over code, in most cases you are going to link against a library and sometimes...

Read more about Using qt-pods to share your code

New project: OECD Data Portal

In July, we have launched a new client site, the OECD Data Portal. The OECD is an international organization that analyses national economies to coordinate the policies of its member states. The OECD conducts well-known studies like PISA and...

Read more about New project: OECD Data Portal

Our First Experience with Swift

Every other month or so we like to do a small Hackathon at 9elements. Last week, after months of hard client work, we finally had the chance to have one again. During the two-day long event, several teams gather to explore new technologies,...

Read more about Our First Experience with Swift

External bundles with browserify and gulp

Browserify is a nifty little tool that was originally invented to let Node.js modules run in your browser. A nice side effect of this is that you can use browserify to split up your application’s JavaScript into a well organized modules and then...

Read more about External bundles with browserify and gulp

Visual storytelling using WebGL

Recently we were working on a redesign of the uformit website. Uformit, an online marketplace for personalized 3D design, was already presented at the 3D Printshow in London and New York, but never announced to the public. It features a WebGL powered...

Read more about Visual storytelling using WebGL

Stripe vs. Paymill

As you might know 9elements is specialized in building digital products. One of the tasks that comes with almost every product is payments - after all you want to earn some money. When it comes to payments there are plenty of options out there and...

Read more about Stripe vs. Paymill

Signing Configuration Profiles with OpenSSL In Pure Ruby

In one of our recent projects, we needed to implement the ability to sign automatically generated configuration profiles for iOS and OS X [1] in the backend. If a configuration profile is signed and iOS / OS X successfully verifies its signature, the...

Read more about Signing Configuration Profiles with OpenSSL In Pure Ruby

How we built the data visualization tool GED VIZ

Last week we released GED VIZ, a tool to create data visualizations for the web. It’s free to use and also open source! See the announcement for general information. GED VIZ is a large JavaScript (“HTML5”) application that runs in modern web...

Read more about How we built the data visualization tool GED VIZ

GED VIZ: An HTML5 data visualization tool

Good visualisations are more than just fancy graphics. They are a lot about storytelling, shedding light on important issues, and at the same time inspiring us to raise new questions. Building such visualisations can be a very time-consuming effort,...

Read more about GED VIZ: An HTML5 data visualization tool

Customizing Core Data Migrations

If you are using Core Data, need to change your database scheme but Core Data cannot infer the changes on its own. And you don’t want to dig into the Core Data Programming Guide, you have come to the right place. Custom migration is quite a powerful...

Read more about Customizing Core Data Migrations

CocoaPods Best Practices

CocoaPods is a relatively new way to manage Xcode library dependencies like the Facebook iOS SDK et al. If you are coming from the Ruby world you know this kind of workflow from bundler. CocoaPods can be easily installed as a gem via ‘gem install...

Read more about CocoaPods Best Practices

A Box of Javascript Chocolates (part 1)

There are a lot of awesome jQuery plugins and Javascript libraries out there, and with every new one it gets more difficult to keep track. Some might save you hours of work, others just add that teaspoon of UI love, that little big detail, that...

Read more about A Box of Javascript Chocolates (part 1)

Falk Mobile relaunch, the HTML5 way

No native code should be used for this application. The building blocks The app is realized as a single-page web application using the popular JavaScript library Backbone.js with Handlebars.js for the templates. The map component was built with the...

Read more about Falk Mobile relaunch, the HTML5 way

The digital carpenter.

Two years ago, Martin, author of the following post, was about to become a carpenter. Instead, he became our apprentice and a fellow webdeveloper. Needless to say how drastically this changed his perspectives. It was not an easy decision to take...

Read more about The digital carpenter.

Live is beautiful.

At Nodecamp 2011, we wanted to present a live tracker built with Node.js. After seeing the popular facebook map by Paul Butler, I was wondering why not create something like that with live data. The appeal of watching the temporal dynamics within...

Read more about Live is beautiful.

Next decade: The big bang technology.

Most of you might agree that the pace of web-evolution was impressively intense last year. (Yeah,  the web is dead, we just haven't found a new name for it yet.) From a business perspective, 2010 was also pretty good, with many services empowering...

Read more about Next decade: The big bang technology.

Facebook's watching you, brother.

There is a potential side-effect of the new facebook "like" button, which has currently not reached public awareness, but it probably should. It starts when you leave the facebook website. I usually don’t log out, my friends don’t log out, and in...

Read more about Facebook's watching you, brother.

The most epic tech-battles in 2010

So we've seen a couple of 2010 lists lately, but from a technical perspective, we think they were missing some important stuff. The following list is a snapshot of heated-up discussions in our company about things that could shake up the web...

Read more about The most epic tech-battles in 2010

Make OGG Video work with Rails

We are currently working on some interesting project where we have the chance to distribute some video footage with the new HTML5 

Read more about Make OGG Video work with Rails

HTML5 Canvas Experiment

Click here to launch the experiment! (beware: sophisticated browser needed) HTML5 is getting a lot of love lately. With the arrival of FireFox 3.5, Safari 4 and the new betas of Google Chrome and Opera, browsers support some great new features...

Read more about HTML5 Canvas Experiment

Integrating Captchas with Django

Why do I need CAPTCHAs? As soon as your web project becomes bigger you will notice that bots are trying to spam your blog and to fake user inputs. When I created a blog with Django for a website with about 60.000 unique users per day I had to delete...

Read more about Integrating Captchas with Django

Traits for ActiveRecords next TopModel

In this post, two possible implementations of the ActiveRecord design pattern will be discussed. With the raise of Ruby on Rails, ActiveRecord became very popular to the IT crowd. by Sebastian To put the concepts of this pattern in a nutshell:...

Read more about Traits for ActiveRecords next TopModel

Pimp my Firefox - The right way!

Firefox really makes you more productive when developing web applications or websites. Not because of its good browser engine - but because of the countless add-ons. I would like to present some of my favorite plugins which are a must have for...

Read more about Pimp my Firefox - The right way!