Let’s talk about gender diversity, it’s not a taboo

When I was a little girl, I was more into things than people. I did not like barbies or dolls, but I was fascinated with barbie’s dog because it was battery-driven. I loved how it worked and moved around, and it had things you could stick to its tongue, like a bone or a newspaper. And it was cute.

Now, this led to me being excluded from most “hangouts” with girls as I grew up, as they mostly got interested in things like barbies, then later on boys and make-up. I wanted to pay more attention to crafts, lego and computers. My parents never told me I should spend my time on anything specifically, they simply supported me in developing naturally.

I don’t know what all of these girls chose as their careers as they grew up, as I did not need nor want to keep in touch with them. The few I know of are not in tech.

As a gadget nerd, I wear an Apple Watch. Among other things, it tracks my heartbeat. When I read the research that said that women are typically more interested in people than men, my heartbeat went up quite a lot. I became angry and upset and wanted to scream BULLSHIT. My thoughts went along these lines; “I am not more interested in people than things, so the research is false and obviously some stupid fu**”…

I stopped myself there. When I start swearing in my thoughts, I know that something is not right.

Continue reading about Let’s talk about gender diversity, it’s not a taboo

Headless B2B marketplace?

The eCommerce world is undergoing a major new evolution step, moving away from tightly coupled monoliths towards modular monoliths. I know the word monolith has a lot of bad connotations in the IT world but I think this image is a bit of a knee jerk reaction. In most cases a monoliths is the right starting point for a project. The key thing is choosing a monolith that allows for evolution as the project scope or needs expand or change. This is something that eCommerce solutions of the past tended to fail at, hence the bad image for monoliths. Magento v1 is an awesome eCommerce platform as long as the needs for customization fit within the bounds hardcoded into the code base. However simply replacing Magento v1 by a micro service architecture would maybe prevent any hardcoded walls but would bring productivity to a halt. Martin Fowler states “don’t even consider microservices unless you have a system that’s too complex to manage as a monolith”. Or the corollary to this: Microservices must help to simply your system.

With this precursor out of the way, lets look at some of the emerging players in the eCommerce space and since I am currently evaluating options for a concrete project lets look at them with the requirement working as a headless B2B marketplace. But let me briefly explain those requirements

Headless

The customer is aiming to provide multiple touch points. As such there will be a web interface for desktop class monitors which will get the initial focus. But there will be potentially additional desktop optimized UIs but more importantly various mobile apps (maybe one focusing on purchasing, another focused on logistics etc) down the line. As such the eCommerce platform needs to make it possible to easily get to the data and business logic via some sort of API.

B2B

Business to business generally changes requirements quite a bit from changing the focus from presentation to efficiency. On a B2B website keyboard short cuts will have higher relevance than on a B2C site for example. Searching by SKUs or ability to scan barcodes are also more relevant. So are topics like permissions management to define who can fill shopping carts and who can complete purchases. Multiple shopping carts, shopping lists, repeat orders etc are also classic B2B requirements. Topic like up-selling are also relevant but might need a different spin due to the separation of people choosing products and people completing purchases. Also pricing is very different from B2C. Starting from using non VAT prices to customer and quantity specific rules.

Marketplace

On a marketplace there are more than one merchant selling products. Usually any product can be sold by multiple merchants each with their own price and stock. Meta data however tends to be normalized across all merchants creating additional challenges in how to import that data and ensuring high consistent quality. Shipping costs and even more importantly handling of returns also become considerably more complex.

So lets look at some of the contenders ..

Magento v2

I should rather say v2.2, since previous versions were plagued by bugs and releases contained a lot of backward compatibility issues. The new release promises to finally stabilize the APIs and a good sign here is that finally Magento is more actively integrating the feedback of the community into the release and development process. My fellow Liiper Maxim is quite happy with how things are going there. I am not entirely sure why they build so much infrastructure code rather than just using ZF2+ or Symfony but over all they implemented similar patterns which enable easier refactoring and extensibility. Magento is also taking B2B more and more seriously but out of the box the feature set still needs a bit work. Overall Magento v2 is a big step forward from v1 however its also clear that the code was refactored not entirely reinvented. The big advantage of Magento is of course still its huge community. While the code is open source, for bigger projects we would recommend using their Enterprise offering. Unfortunately they do not seem to provide a good overview of the differences.

Spryker

Spryker is kind of a hype at the moment. I say hype not in the negative sense here, they simply managed to get a lot of attention very quickly. Quite impressive! One of the things that makes Spryker unique is that they denormalize relational data into Redis, which enables high performance without a reverse proxy. That being said, reverse proxies and invalidation are challenges but they are well understood. Also when working with international customers, a reverse proxy in different regions around the world might be necessary anyway. Keeping the data in Redis sufficiently in sync provides a challenge that is unique to Spryker. On the siroop.ch project, who are using an older version of Spryker, I saw this was a constant source for issues. They are rewriting this part right now so hopefully this will be less painful in the future. They also told me that they will improve the management of the data contract between the system writing to Redis (Zed) and reading from Redis (Yves) more explict. Another aspect which sets Spryker apart is that their backend is designed to enable separating f.e. user management and ordered management onto different servers if necessary. This architecture could lend itself to flowing more naturally into a micro service architecture. They are planning to add B2B features and even marketplace functionality to the core, but these features will only start appearing in the coming months. In the same way while Zed and Yves talk via HTTP, Yves itself isn’t made for headless setups out of the box. Here again they are planning to soon over a solution. They are hopeful that the first such features will start landing this year already. Their licensing is a bit unique in that one pays for developer seats.

My main criticism of Spryker is that due to being based on Silex, rather than on Symfony full stack, they are lacking a lot of developer productivity tools. For example to solve performance issues, they have multiple independent Pimple, ie. DI containers, for each module. This in turn means its impossible to get a global overview of available services. For the routing they could in theory provide something like this fairly easily but have not emphasized this.

Sylius

I followed this project from its very beginning when Pawel started appearing on the #symfony IRC channel. His attention to quality impressed me right away and really shows in Sylius starting with the use of BDD which is also a great way to document behavior via test code. While initially this perfectionism prevented him building a community, the project has long overcome this and is now quite an active community. On top of this there is now a company dedicated to Sylius support and training. The code is entirely open source, no enterprise versions or other licensing fees. They are now very close to that very first 1.0 release. However releases for a while have come with quite detailed upgrade instructions whenever backwards compatibility breaks had to be done. In terms of modularity I think they are on par with Spryker. Given that they are build on Symfony fullstack framework, its also easy to leverage and integrate with the countless Bundles out there. Their large set of re-useable components are also ready to be used even outside of Sylius itself. I am also quite excited about their attention to single page apps (SPA).

OroCommerce

The Oro team, given that they are essentially a lof of ex-Magento core developers, is certainly quite experienced in eCommerce. Their first product was OroPlatform and OroCRM, which are both interested topics for customers that want to highly customize their CRM or that simply want to build desktop-style custom applications. OroCommerce is a bit younger but they emphasized B2B very early on. I suspect because they sensed that Magento v2 didn’t initially put much of a focus on B2B. Similar to Sylius they are based on Symfony fullstack. In terms of licensing they offer a free open source basic version but the Enterprise version seems necessary for larger projects. I feel like they have not yet really managed to build a large community.

DrupalCommerce v2

While Drupal 8 certainly improved its core towards easier and cleaner extensibility by adopting interfaces, I would still argue that form the lists in this post, its still the one that is most like the monoliths of the old days. However DrupalCommerce still manages to be remarkably extensible. We build Freitag.ch on Drupal 7 and Commerce v1 which is very unique in that most products on the store are unique. Their next version, which builds on Drupal 8, looks to further improve here. They basically started by first building re-useable components which they then integrated into Drupal to build version 2 which just reached RC1 status. Where DrupalCommerce has always shined, which is the reason why we picked it for Freitag.ch, was the fact that that through Drupal it provides a full featured CMS where the commerce parts are first class citizens. This means that advanced story telling is possible, entirely driven by content authors, rather than requiring a development sprint for each bigger change. As such, story telling does not tend to be a key requirement for B2B for now but I think it will become more relevant. Those companies that have been holding out with adoption digital B2B mostly did so exactly because they felt that with the approach most companies are taking, the inspiration part of the commerce experience was lacking. The code is fully open source and consulting offerings are available

What it all means ..?

Quite honestly I am very impressed with this new generation of eCommerce solutions. All of them have different strengths and weaknesses.

Spryker has a unique architecture that sets it apart from the rest, which however also means in terms of minimal setup it has the most moving parts. Sylius, OroCommerce and DrupalCommerce all are based on a larger ecosystem which will allow integration of other features and even applications quite seamlessly.

Sylius and DrupalCommerce are fully open source, while Magento and OroCommerce provide Enterprise offerings which are really sort of required for serious work. Spryker again goes a different direction by requiring developer licenses. They all have companies behind them that offer commercial support when needed. In terms of community Magento seems to have the lead and OroCommerce seems to be struggling here a bit.

Sylius is the only option that from what I am aware have stated to have headless/SPA as a focus. All of them currently provide the key APIs necessary with Spryker lagging behind a bit since Yves out of the box does not provide any API yet.

What all of the projects on this list have in common: They are still in a fairly young state of development either only gone stable in the past year or two .. or even just approaching the first stable release. The good news is of course this means that there will still many years of support for those versions and the ecosystems will continue to grow. However in terms of getting things done quickly for more standard eCommerce requirements, Magento v1 probably still beats them all.

Overview of open source API gateways

HTTP based APIs have long established themselves as a successful pattern for organizations. Increasingly these APIs are made available to the public or at least are leveraged more and more by disconnected development teams within organizations. Where the first APIs just drove the live search on a website, APIs these days provide extensive functionality for internal and external development. As such there is a need to centralize access to documentation, authentication and permissions so that users can easily discover and leverage those APIs in a way that prevents negative effects for other users.

As often when new patterns emerge, a new type of software solution emerges, in this case API gateways. Given our affinity towards open source here at Liip, we have studied the market a bit and want to present a very high level overview. We would very much appreciate additional first hand experience feedback in the comments below!

3scale

3scale was bought by RedHat in 2016 and subsequently open sourced at github.com/3scale. We have not tried to set it up ourselves but from past experience, previously proprietary software can tend to be tricky to get running. The product covers all the key pieces: API management, rate limiting, access control, analytics. There is a hosted option starting at $750 per month with 500k API calls per day and some other limitations.

WSO2

Originally created at IBM, Wso2 has a close affinity to the Apache community. It can be self-hosted but the company behind this project also offers a hosted cloud solution. Setup for a quick proof of concept was simple and we had a proxy running within 10mins. We found the UI a bit complicated and limiting and ran into some errors when we tried to save our definitions.

Kong

Mashape build Kong on top of Nginx, which is the web server of choice for most of our projects these days. They originally required Cassandra for config management but since version 0.8 they also support PostgreSQL. The fact that they are not yet 1.0 makes me a bit nervous but we didn’t find much complaints about backwards compatibility issues from a web search. Anyone have some practical experience to share here? Mashape of course also offer a hosted enterprise version but no word on pricing on their website. They do not seem to offer an admin GUI as part of their open source offering but there are quite a number of open source options available. There are quite a lot of available plugins and writing your own in Lua isn’t too hard.

Tyk

Another option that makes it easy to run locally or in the cloud is Tyk. The dashboard requires a commercial license but for on-premise its free for a one node setup. The hybrid setup is an interesting option as it allows you to keep the API calls in your datacenter while leaving the dashboard and management to the cloud.  The current version assumes that the backend API is secured by IP whitelisting but they are looking to improve here. Setup was very easy and we were up and running within minutes. Tyk seems to focus on simplicity which is both good and bad.

We gained in depth first hand experience with Tyk by setting up the opentransportdata.swiss API gateway last year.

Update: We originally incorrectly claimed that the on-premise did not provide a dashboard. For on-premise a dashboard license can be bought, its free for 1 node setups. I remove pricing information since there are simply too many options to choose from given that they provide on-premise, cloud and hybrid. The good news is that for cloud there is a free tier to start with for upto 50k calls per day.

Take away thoughts

In general there seems to be quite a lot of solid choices for open source API gateways. They all check most of the boxes. They also all provide some sort of commercial/hosted option. So in the end it seems that the devil is in the details and as such from the point of view of an agency, it makes sense to standardize as much as possible. Given that we are running a large project already on Tyk, it makes sense for Liip and our customers to lean towards Tyk.

How to start an inno project and build commitment your team?

You have a vision, you gathered a team and you even have a budget. And now, how do you get your team started? List your team’s expectations, build a common understanding, and let your team take on responsibility. You also have to come to terms with the fact that the project involves uncertainties.

We have the ambition to create a tool that provides micro-learning to train cognitive biaises. Today we have a prototype. Last spring, we had only a vision to lead us. As told in a previous post, one of my colleague detected a need in an industry and an opportunity for us to create a new tool. He gathered a small team and invited us for a kickoff meeting. We were all motivated. How could we proceed?

During the kickoff, we jolted ideas around, and used sticky notes to draw the project. It was important that we all had a common understanding of the tool we wanted to create. This kickoff meeting was also the moment when we created a team spirit and built personal commitment.

Ownership, responsibility and role

As motivated as I was to play my part, I needed to understand how I could contribute to the project and how much time it would involve. We started by writing down the outputs we expected from the meeting. The expectations were various.

Our expectations for the kickoff meeting

Kevin expected us to take ownership. The initial idea came to him and he wrote a paper about it. He expected us to work as a team and take ownership. This is what he means by ‘Co-sign Whitepaper’.

To me ownership meant responsibility. The moment I commit to a project means that I stop saying ‘Kevin’s idea’ or ‘Kevin decided’ or ‘Kevin meant’. I start saying ‘we think’, ‘we decided’. It also means that I committed myself to play my part, make time to work on the project.

I needed to understand, the role that I would play, in other words how, with my competences I would contribute to the project. This is expressed as ‘Where do I position myself?’ From the beginning we are a multidisciplinary team. We have learnt to contribute with our respective skills. Understanding my role leads to better planning. If I understand my tasks and how I relate to the other team members, I can organise my agenda and be available when I am needed.

During this meeting we also decided how we would communicate about the project to our stakeholders’, which at this point, were internal. We finally defined the next steps and decided the content of the next workshop.

Map the idea – understanding with drawing

We were sitting down, listening to Kevin. Sitting around a table is so limiting! Ideas cannot express themselves, they keep eluding and the energy slowly runs low. We couldn’t see what Kevin was explaining. After a moment of deep concentration, I tend to relax a bit, which means that I am not being this concentrated. At some point, we were all running low on energy. Thus we started drawing.

White walls are a blessing. Someone starts drawing and you can add up your idea, then everyone can see and add his/hers.
It started with a sketch, and step by step it became like a map. A map of the idea, where we could navigate, see the stakeholders, start apprehending who we needed to talk to, what we needed to understand, what remains unclear, what is our role, our strengths and weaknesses.

Let your team take ownership by drawing together the idea.

It very much looks like this: drawing, talking and gesturing. When you stand, the flow of ideas wraps you up and before you realize it, you are ‘in it’, you take ownership and you belong. You stand and draw together. It has nothing to do with sitting and looking at someone talking, you are part of it.

Drawing of our project

Our drawing got more complex while our understanding of the situation got clearer.

Be kind to your blue side and deal with uncertainties

Have you ever heard of the DISC assessment? That test attributes colors to people after a test. I never took it myself, but I often heard some friends refer jokingly to it. When they refer to the ‘blue colleague’, they talk about his preciseness, attention to detail and his capacity to be systematic. As I started this project, I realised that part of me, that I will call my ‘blue side’ backed off, because it was unconvinced. My blue part tends to refrain the overly enthusiastic and risky part (I don’t know the color of this side yet ;-)

In other words, during this meeting, my blue side realized that there is a huge part of unknown in this project. When you start an innovation project, you have to be aware of the fact that some uncertainty and risk will always be present. During my studies and work life, I have been trained to try to avoid mistakes and evaluate risk. I usually try to have a fairly good idea of the success I expect  from my actions before I perform them. Starting an innovation process is the contrary of this. It is jumping in the unknown and imagining something that does not exist… yet. You need to be open-minded and accept the risk and unknown.

To conclude: we mapped the project and I accepted the probability to fail

It was time for me to accept that mistakes are part of the game and to come to terms with the probability of failing. An innovation process is made of ups and downs, test, success, mistakes and iteration. The risk is part of the game.

During this first meeting, we mapped the project and the stakeholders It gave us the necessary common grounds to start working together. To draw the project allowed us to clearly see the expertise we needed. We planned the next steps and organized the first workshop where we would invite other experts. The project had officially started.

Tags: , , , , ,

Gaining confidence through a clear vision

Following our vision – no matter the issues – is what brings us confidence to continue to move forward. In travel as in projects.

As you might have read in my first blogpost on the topic, preparing our departure in sabbatical was already quite a challenge with multiple highs and lows. Yet the adventure was just about to start.

A sweet start

Our first stop – backpacking Sri Lanka for about a month – felt quite similar to a good, well-earned holiday. Nice weather, very friendly Sri Lankans and absolutely tasty (and spicy) food combined with fabulous landscapes and beaches made it very comfortable to kickstart our trip. In fact, it felt very similar to the early phases of a new innovative project, as we enter into the 5S of the design process, brainstorm through new ideas and define the product strategy.

Continue reading about Gaining confidence through a clear vision

Tags: , ,

The exciting day I started an innovation process for a learning tool

We currently address the need for a modular framework for bite size learning, and we are now investing to create the next level micro-learning system. Innovation ‘for real’ is nothing like you might expect. It does not happen like an apple falling off a tree: good ideas do not fall from nowhere. You have to be open to challenges, to be motivated to work with the team and in a ‘safe’ place, an environnement where trying is allowed.

How to be open to innovation?

You have to be open to new challenges, which is difficult even close to impossible if you are stressed out or under tight deadlines for example. During my first year at Liip (2016), I undertook many projects that had started before I had arrived. As a result, I had little time for planning or strategies, I undertook what was already started. During this first year, everything was new, I was in the turmoil of an event, or in a middle of a project, my whole energy was focused on current tasks.
Before Christmas 2016, my knowledge of the enterprise and the field had exponentially expanded. It allowed me to grasp the necessary bigger picture of my enterprise’s needs and challenges. Simultaneously, many projects came to an end, as a result, I was not under tight deadlines. In other words, I was open to new challenges and ideas. I had cognitive capacity to take on new challenges. When Kevin, a colleague I barely knew, approached me, I welcomed his project with an open mind.

Continue reading about The exciting day I started an innovation process for a learning tool

Tags: , , , ,

Learnings from my sabbatical: the need to let go

A year in sabbatical taught me many things, about life, family and culture, and also about work. We went through different steps, just like during an innovation project. For me, remaining a beaming Liiper goes hand in hand with a beaming private and family life. This resulted in following our family dream, leaving everything else behind. For a while.

When I joined Liip in 2010, as one of the first “Romand”, I had the task to expand Liip’s activities to west (french speaking) Switzerland, with the great challenge of opening a new office and creating a new team there. New horizons, new persons, an avidity for advancing towards the unknown… the perfect challenge for the entrepreneur-type-of-me :)

After a challenge, follows another

Fast forward a few years later – mid 2015 – the Lausanne office counts 20 Liipers and runs well – mostly without my help anymore. This is surely due to our efforts to bring the company into self-management, added to the fantastic team of Lausanne Liipers that joined me in our everlasting commitment to build the best products for our clients.

Continue reading about Learnings from my sabbatical: the need to let go

Tags: , , ,

Why did I change my mind about open data?

Knowledge against fear and suspicion – open data is beneficial

Generally disagreeing about any kind of data sharing, I realized my behavior was mostly based on fear. Fear is a major impediment to anything innovative and to any kind of change. Why did I change my mind about open data? It is about differentiating between public and private data, and about the fact that data made public are first of all edited.

New work – new ideas

In November 2015, I started working at Liip and I had a lot of new projects and inputs. The core of my work is the same, I completely changed field though. I stand now in the middle of a flow of innovative ideas and energy, which is very motivating and helps me be constantly open-minded.
One of my projects, last spring, was the coordination of Liip’s involvement at the annual opendata.ch conference. No, I cannot communicate about anything if I don’t understand it! Otherwise I would write complete bulls**t, people would notice it and Liip would lose all credibility on the subject. In other words, I had to know what I was talking about in order to be able to talk about it.

Continue reading about Why did I change my mind about open data?

Tags: , , , , , ,

The DrupalDay 2017 in Rome

This year was the 6th edition of the DrupalDay Italy, the main event to attend for Italian-speaking drupalists.

Previous editions took place in other main Italian cities like Milan, Bologna and Naples.
This time Rome had the privilege to host such a challenging event, ideally located in the Sapienza University Campus.

The non-profit event, was free of charge.

Continue reading about The DrupalDay 2017 in Rome

No nginx basic auth with either network or cookie set

For an internal tool, we’d like to allow access if you either coming from one of our office networks or you have a certain cookie set. If both are not satisfied, just show the usual basic auth dialog. And set that cookie, once you were allowed to access the page.

We wanted to do that in nginx and not the tool itself, as it looked like easier to do, especially since the tool didn’t have any authentication at all yet. Unfortunately it wasn’t that straight forward, but we found a working solution and wanted to share that.

Hope it helps anyone and saves them some time.