rust-phf: the perfect hash function
This is the story of how we made the conduit-mime-types Rust crate almost infinitely faster, using perfect hash functions and compile-time code generation.
This is the story of how we made the conduit-mime-types Rust crate almost infinitely faster, using perfect hash functions and compile-time code generation.
Publishing JavaScript projects on npm can become quite an overwhelming task when projects grow to a certain size. At simplabs we're maintaining over a dozen actively used JavaScript projects that we've published on npm. We don't always have plenty of time for that, but we made sure that at least the release process is as automated as possible, so that we can spend our time on the things that really matter.
This blog post will show you three of our most important tricks to improve how you publish your packages to npm.
Last week we spent some time researching the current state of XML parsing and
writing in the Rust ecosystem. For a small side project we needed to read an
XML file and turn its content into regular Rust structs
. This blog post is a
summary of what approaches we looked into, their tradeoffs and what we finally
decided to use.
Mirage.js is a universal library to mock out HTTP-based APIs. It has proven quite useful to us in several client projects, where it helped us write a lot of acceptance tests in a concise, but flexible manner.
The issue with tools like this is that you are not testing "the real API" though. This is where end-to-end tests are useful, but since those kinds of tests are quite slow and complex it would be quite costly to use them for all the kinds of tests in a modern web application.
One solution to some of the challenges of using a mock API is to test it and make sure it matches what you would expect from your real API. In this blog post we will show you how we started writing tests for our Mirage.js setup and why it might be useful for you too.
Are you confident that your apps have no bugs? Do you not need a support team because no user ever complains about something not working? Then this post is not for you!
We use a lot of tools at simplabs to ensure reasonably high quality code, but occasionally something slips through. The important thing then is to notice and fix it quickly. This post will focus on the "notice" part by using Sentry error reporting in Ember.js apps.
Are your dependencies hopelessly outdated? Would you need to hire another developer just to keep up with the maintenance work of keeping them up-to-date? If those questions match your project then this blog post is for you. Keep reading and we will show you how to solve a lot of these issues with some easy to use tools.
People often ask us how we can handle maintaining a large number of open-source projects. In this blog post we will introduce you to some of out internal best practices we have developed or discovered to simplify and speed up working on open-source and other projects.
In our last post about actix we introduced you to the Rust programming language and the actix actor framework. This week we will build a basic TCP client with actix.
At simplabs we ❤️ ember-intl and use it for all our projects where translations or other localizations are needed. ember-intl is based on the native Intl APIs that were introduced in all newer browsers a while ago. Unfortunately some users are still using browsers that don't support them and this blog post will show you our preferred way to load the necessary polyfill and the associated data.
While we mostly focus our work around [Ember.js][ember], Rails and Elixir, we sometimes experiment with other technologies for internal projects. This time we tried out Rust, and more specifically the actix actor framework. This blog post is a short intro into what we've discovered so far.
In our previous post about ember-freestyle
we have setup
a component playground for our Ember.js application. In this post we will
discuss how to implement "convention over configuration" for it by automatically
discovering new components and showing them in the playground.
A component playground is an application that you can use to test out and play
around with your custom components in isolation from the rest of your project.
In the React and Vue ecosystem Storybook is a quite popular project
that implements such a component playground as part of your app. In the Ember
ecosystem we have the ember-freestyle
addon that can be
used for this purpose. This blog post will show you how to install
ember-freestyle
in your app and how to use it to build and test components in
isolation.
Back in January we wrote about the
latest changes in
ember-test-selectors
and
how we implemented them. Since then we adjusted a few things and this blog post
should give you an idea what has happened so far and what else will happen
before we feel comfortable promoting the addon to v1.0.0.
At EmberFest this year we presented and released
qunit-dom
. A plugin for
QUnit providing High Level DOM Assertions with the goal
to reduce test complexity for all QUnit users. This blog post will show you how
to write simpler tests using async/await
and qunit-dom
.
tl;dr Use npm instead of Bower whenever you can!
With Ember 2.11 we are now using the ember-source
module and
no longer the ember
Bower package. In the upcoming Ember CLI 2.12
release, Bower will also no longer be installed by default and only install
lazily when an addon requests it. All this indicates that from now on we should
try to use npm packages instead of Bower whenever possible. This blog post will
explain how we can do that and what options are available to us.
In March 2016 we have released the first version of
ember-test-selectors and
today we are proud to present you our next milestone: 0.1.0
.
While 0.1.0
does not sound like much has changed, the addon has actually
gained a lot of new functionality and should be considered our release candidate
for 1.0.0
.
This blog post will highlight the major changes in this release, and will give you a short introduction into how we have implemented these new features.