arrowBACK
28/0/2019javascript

2018: A Year in Technology at Mirumee Software

Patryk ZawadzkiPatryk Zawadzki
7 min read
2018: A Year in Technology at Mirumee Software
technologypythonecommercegraphql
facebooktwitterlinkedin
2018: A Year in Technology at Mirumee Software
Last week, we took a look forward to some of the wider trends we think will be influencing e-commerce in 2019. It’s exciting guessing what comes next but, as Head of Technology at Mirumee, I want to take a glance back at the technologies and events that grabbed our attention in 2018.

Up-and-Coming Technologies

GraphQL

While we started to adopt GraphQL in January 2017, it wasn’t until March 2018 that we decided that the technology was mature enough to finally lay REST to rest.

Since then, our team has attended GraphQL Europe 2018 in Berlin and theGraphQL Summit 2018 in San Francisco.

Any remaining doubt about picking the right tools was eradicated when we saw how both small, dedicated teams and some of the largest companies in the world, across a number of industries, are now getting on board.

GraphQL has proven itself to be an outstanding technology. The querying protocol allows clients to share a single endpoint and precisely control the subset of data they receive. The client-side caching layer provided by Apollo means that all views are rendered instantly, even if only a partial response is initially available.

The most important thing about GraphQL for me, however, is the RPC interface provided by mutations. REST is decent at mapping CRUD operations to HTTP request methods. Unfortunately, it turns out that not every operation is a CRUD operation, unless you’re willing to bend the definition and invent arbitrary resources. Mutations name the actual state transitions (think “start the espresso machine” or “cancel order”) and their arguments, while REST has the server figure out why a client is trying to change a shipment’s state to “cancelled” while simultaneously providing a package tracking code.

Saleor’s API is now powered exclusively by GraphQL and the proof-of-concept progressive web app we’ve built to demonstrate its power is silky smooth.

TypeScript

We started to use TypeScript back in 2016 but, back then, it was still competing with Flow, and the type definitions and errors reported for React code left much to be desired. After TypeScript 2.0 shipped in late 2016, things got much better and the functionality quickly surpassed that of Flow.

In 2017 we switched two relatively large client-side applications to TypeScript and, after seeing positive results, we decided to fully embrace it in 2018. When we started designing Dashboard 2.0 for Saleor , we knew that no other tool could give us the confidence to have the entire administration panel depend on such a fragile foundation as JavaScript.

TypeScript 3 came in July and improved matters even further, most notably improving the cryptic error messages related to using complex types in React JSX. This made TypeScript a natural fit for the PWA storefront we built to demonstrate the possibilities of a modern e-commerce platform.

The language can be a pain when dealing with poorly typed dependencies, and upgrading to a stricter version of the TypeScript compiler can reveal typing errors even in popular libraries. However, any lost time is gained back, with interest, thanks to the excellent auto-complete function and fewer hours spent debugging and making sure the refactoring you’re working on doesn’t change the application’s behavior.

Apollo GraphQL

Since GraphQL originated from Facebook, it felt natural to pair it with Facebook’s own Relay on the client side. However, our initial excitement at building a next generation API started to die down when we saw how much Relay relied on magic to deliver its functionality.

At the end of 2017, we finally made the switch to Apollo GraphQL and working with GraphQL has been a blast ever since. Apollo not only provides a great client implementation with modern React bindings, they’ve also managed to attract a very active community that has provided an abundance of libraries and extensions.

It would also be unfair of me to talk about Apollo without mentioning the great tools aimed at developers. Their TypeScript interfaces are usually a pleasure to work with, including automatic type generation based on the schema and whatever queries are used in code.

The cherry on top is the Visual Studio Code plugin that provides syntax highlighting, query validation, and auto-complete suggestions as you type.

We wanted to give something back as a thank-you for all it has given to us over the last year, so we taught it to speak Python.

Ariadne

We’re still not done with GraphQL. The second half of 2018 saw the first release of Ariadne, our own alternative to Python’s de-facto standard GraphQL server — Graphene.

Ariadne version 0.2.0 is fully asynchronous and we’re actively working on making it a first-class citizen in asynchronous web frameworks like Django Channels and Starlette.

Storybook

We were initially skeptical about adopting Storybook but I can now say that it’s one of my favorite technical improvements of the last few years.

Complex views, such as order management screens, have so many possible UI states that it pains me to think about manually recreating each and every one to properly style the components.

Storybook makes it a breeze to describe all those UI states without running the entire application. Want to see how the page looks while loading data? You got it… no network throttling needed.

While the convenience of having instant access to all of your application’s UI is the major benefit of adopting an “artbook” system like Storybook, we also discovered that designing components with Storybook in mind often leads to a beautiful decoupling of function (containers) from looks (visual components). It gives us code that is easier to read and test.

AI and Machine Learning

Creating a full-time AI team was one huge benefit of nearly doubling our staff in 2018. While we’re still far from bringing our kitchen appliances to life (which will, no doubt, ultimately lead to the dreaded toaster uprising of 2021), we already have some customers A/B-testing the performance of recommendation engines powered by both classic collective intelligence and neural network models trained on observed customer behavior.

While the hardware necessary to train and evaluate machine learning models is still prohibitively expensive for many applications, we feel that this is a key area that commerce needs to explore in order to provide better online experiences.

Community and Events

Saleor Became the Fastest Growing E-Commerce Platform

Thanks to Saleor’s awesome community, it became the fastest growing project, as well as the #1 Python platform, on the open source e-commerce tracker eCommWar.

Django Girls

Year after year our engineers volunteer to teach programming at the Django Girls workshops in our hometown, Wrocław.

We love the Django Girls initiative. We try to help as a company by contributing illustration work, providing attendees with themed backpacks, and documenting the event on video.

Diversity and Women in Technology

We really care about diversity and we believe having variety within our team is a huge benefit to both company culture and the quality of the products we offer.

That’s why our team could not skip the European Women in Technology Conference in Amsterdam.

GraphQL Wrocław

Last but not least, since 2018 proved to be a year of GraphQL, we wanted to pass some of our experience back to the community. When we couldn’t find an existing GraphQL event, we decided to start out own. The first ever GraphQL Wrocław group was set up on Meetup and our inaugural event attracted over 300 members within days of being announced. What a great start to 2019!

Mirumee guides clients through their digital transformation by providing a wide range of services from design and architecture, through business process automation, to machine learning. We tailor services to the needs of organizations as diverse as governments and disruptive innovators on the ‘Forbes 30 Under 30’ list. Find out more by visiting our services page

Let’s engineer great products and systems together

Have a particular project in mind? Contact us to help you transform your ideas into a unique end-to-end product.
Let's talk