The Beautiful Simplicity of Hollow Knight (and How to Improve It Even Further)

TL;DR: Hollow Knight is mainly characterized by dual-purpose design and general minimalism. A particular feature is the use of fluid builds based on charms that can be (un)equipped rather than a skill tree. However, changing builds can be too much blind trial and error while geo (the game’s currency) becomes too abundant too early in the game. One solution to this could be having the player pay geo for (un)equipping charms.

Hollow Knight is the story of a nameless bug who explores the depths of a fallen kingdom, thereby slaying countless foes with his nail and uncovering the history of the mysterious place as well as his own fate. It is a Metroidvania type of game released in 2017 and—as far as I’m concerned—one of the best (if not the best) installations of this genre so far.

One factor that makes this game so great is that it builds a lot on the concept of dual-purpose design. Dual purpose design, as the name suggests, means that one game mechanic serves two different purposes, e.g., Super Mario’s jump, which is used for platforming as well as defeating enemies. If you want to learn more about this concept, Mark Brown made a video about it for his awesome channel Game Maker’s Toolkit, from which I draw a lot of my design inspiration.

Apart from that, Hollow Knight also generally employs a rather minimalistic approach. There are only two weapons in the game and the primary weapon—the nail—can be upgraded a total of only four times. When you hit enemies with the nail, you take HP from them and at the same time gain soul (dual purpose!). Soul is used for both, healing and using one of the three spells you can collect during the game. This simple set-up has two particular effects that make Hollow Knight exciting: First, during fights, you have to decide between healing and attacking with the powerful spells. Second, when low on health (which is very limited) and out of soul, you are forced to risk approaching enemies and hitting them.

The second resource in Hollow Knight besides soul is geo, which is the kingdom’s currency. Since there are no health and magic potions to be bought (because soul), geo is exclusively used for purchasing items that let you advance in the game or make you more powerful (such as mask shards, which upgrade your health Zelda-style). Therefore, geo is essentially experience.

Finally, one of the most distinguishing features of Hollow Knight is the lack of a skill tree. Instead, you buy charms. These give you certain powers and upgrades—such as an increased nail range or a shield—and can be equipped and unequipped every time you rest on a bench. The number of charms you can equip at the same time, however, is limited. Charms make your build fluid, so unlike in similar games (e.g., Salt and Sanctuary), you don’t have to decide for or against a certain build early in the game. This is one of the strengths of Hollow Knight because you can (and have to) use wildly different strategies for each boss. Yet, in my opinion, it is also one of the games few weaknesses since equipping and unequipping charms before boss fights is too much trial and error and too little “living with the consequences”. The last boss fight didn’t work out? Just throw in some other charms and try a face tank. Didn’t work either? Don’t worry, I got some more charms for you!

Hollow Knight
Charms … so many charms!

Now, how would it be possible to prevent this? Let’s have a look at two potential solutions. As for the first one, I think a relatively simple design change could do the trick. What if (un)equipping charms would cost geo (starting with the second time a charm has been equipped to still facilitate some playing around)? This would solve two problems at once. First, it would prevent the blind trial and error with different builds. Second, geo becomes too abundant too early in the game. At the very beginning, you still have to pay some attention to your balance, but later, you just buy all the upgrades you can find and still have plenty in your bank account. The second solution could be simply reducing the amount of charms, but make each charm more impactful, and making geo less abundant—that would be more like the Cuphead approach. Less charms, less trial and error. Pretty straightforward, isn’t it?

However, there is a another issue. The excessive trial and error is not only caused by the sheer number of charms and the fact that it comes at no cost but also the often not really informative descriptions of what a charm can do for you. That is, a charm’s capabilities are not visible until trying it out, also in different combinations. Therefore, the above solutions would only work if the game had a way to better visualize the certain powers and advantages of charms. This could be achieved by, e.g., showing a little loop animation of your character performing all the actions possible with your current build plus the charm that you would add to the selection.

In conclusion, despite some little flaws, Hollow Knight is awesome. However, it is not just an awesome video game. It is also a lesson in good design and how “less is more”. I believe that every designer—no matter their focus—can learn some valuable lessons from this game—and from good game design in general.


Special thanks to Martin and Snuck for their valuable feedback.


The Design Philosophy Behind My New Website

TL;DR: After analyzing my old website, I decided to put more emphasis on (1) identifying and highlighting the pieces of information that are actually useful and (2) a two-dimensional approach to displaying my CV along traditional categories and skills/topics. Moreover, I set myself design constraints that forced me to keep my new website as clean and simple as possible, following the design philosophies of brutalism and Mies van der Rohe.

My new website has been up and running for a few weeks now and I suppose it might seem unusual to some of you. Therefore, in this post, I want to explain how I ended up with what I did. What motivated me to create a new website was the fact that OpenShift v2 was shut down by Red Hat and the new version of their hosting service was so unsatisfying that I decided to move to Github pages instead. This, however, also meant that I could not build on a Node server anymore, so I took the opportunity to start over with a blank slate and create something completely different.

Core Questions

As a first step, I analyzed my old website, and I noticed two things. First, it was more or less structured exactly like my CV, which is, to be honest, not the most creative way to lay out an online presence. Second, my publications were listed in a format that I would also use in the reference section of an actual research paper. However, that format was only really understandable and readable for scientists, which—as I could safely assume—excluded a certain amount of my visitors. After all, the only necessary pieces of information are the title (plus a link for those who want to have a closer look), the list of authors, and which topics the paper is actually about. From a title like “Ensuring Web Interface Quality through Usability-based Split Testing” one may conclude that I’ve done work on usability, but how would you know that this publication also addresses analytics and machine learning without reading it? The acronym of the conference where it was published or the CORE rating of that conference certainly don’t help the average user. v1

Therefore, the two central questions that informed the design of my new website were:

  • How can I present my work and skills in a better, more useful, and more memorable way than the standard paper CV structure—projects, work, education, etc.?
  • How can I more effectively communicate to people the topics I actually worked on and which skills I acquired rather than just telling them that I was an “Intern R&D at Unister”?

Design Constraints

Additionally, I set myself the following design constraints to ensure I had to come up with something completely different and create a novel, unusual, and more memorable experience. The main drivers for these constraints were my love for minimalism and a desire to prevent unnecessary overhead as much as possible.

  • Make it brutalist. Originally, brutalism was an architectural movement known for “its ruggedness and lack of concern to look comfortable or easy”. Accordingly, brutalist websites have a rough, simple, and unfinished look. They are almost nihilistic towards user experience.
  • Make it as simple as possible. I chose this constraint in accordance with Mies van der Rohe’s architectural philosophy of “extreme clarity and simplicity”. He made his buildings purely functional and refrained from using anything ornamental.
  • Don’t use icons or images. Standalone icons are a bad idea in most of the cases anyway (as this nice summary explains). This led me to using smaller text with a solid, edgy border in places where I used icons for social media sites and the different sections on my old website.
  • Use only one primary color. The rest must be kept in black, white, and gray.
  • Work with typography as much as possible. Apart from the one primary color and white space, I tried to use only different font sizes and weights for structuring and highlighting information.

Finally, I came up with and realized a concept that is largely based on hashtags to communicate my skills and the topics I’ve worked on. Every CV entry on my website—be it a university degree, a job, or a publication—is annotated with a set of such tags. The entry about “Ensuring Web Interface Quality through Usability-based Split Testing” now tells the visitor that the paper is about #analytics and #machine learning, among other things. At the top of the page, I feature a list of skills that enables users to filter the page and hide everything that’s not related to a specific skill or topic they’re interested in. Moreover, I chose a two-dimensional approach to presenting my CV. That is, the visitor has the chance to display it either according to the traditional structure of a CV, or grouped by skill/topic. In the latter case, all CV entries that feature a certain tag are displayed in the corresponding section to be able to view them at a glance.

Technology-wise, my new website is based on standard web technologies, Less, and gulp. v2

Why I Don’t User Test My New Website

I asked some friends to have a look at what I created and they immediately came up with the idea of having a sticky menu—as they are used to from other websites—so that they wouldn’t have to go back to the top of the page (using the #top button in the bottom right corner) when they wanted to change the current filter or the way the CV is displayed. I started implementing this supposed improvement yesterday, but became more and more dissatisfied the more I progressed. While it would have made the website slightly more usable (sparing users a click from time to time), a sticky menu would violate the constraints that define my design and would make my website less unique in my opinion. After all, the average user prefers being confronted with and using things they already know. Therefore, I abandoned the idea and did not deploy the changes.

In this sense, the design of my new website is clearly not 100% user-centered, but rather an experimental piece of art.

Did I manage to intrigue you? Feel free to have a look at

What is Design Thinking?

TL;DR: Design Thinking is often considered a buzzword or bullshit and many people—even if familiar with the concept—struggle to define it in a brief, but concise way. In this article, I develop such a definition: “Design Thinking is the understanding that the process is the design and therefore all people involved, no matter their role, are responsible for creating a product that is useful, functional, aesthetically appealing, and affordable.”


Recently, I conducted a little ad-hoc survey with five friends who are all in some way involved in design or start-up environments. I asked them to answer the question What is Design Thinking? as briefly as possible without doing research beforehand. I did this because I noted that I myself wouldn’t have been able to spontaneously give a precise, one-sentence definition of Design Thinking. Therefore, I was very curious which answers my questionees would provide. This is what they said:

  1. A buzzword.
  2. Bullshit.
  3. To think and work interdisciplinary and user-centered in order to solve problems.
  4. To work solution-focused rather than problem-focused in order to find a really good solution rather than just fixing a problem, and ideally doing it interdisciplinary.
  5. Methods to develop a design that has a good user experience.

Although not representative, these answers highlight several things that I’ve also consistently observed. First, there is the perception that Design Thinking is used in a buzzwordy manner, i.e., it “ha[s] much of the original technical meaning removed, being simply used to impress others” (Wikipedia). Second, some believe it’s a concept that doesn’t provide added value, which is related to the fact that many talk about or even apply what they believe is Design Thinking without knowing or understanding what it actually stands for (i.e., they are bullshitting). This again is partly related to the third observation: It is difficult to get consistent definitions or explanations of Design Thinking from different people, even if they have been in touch with the concept before. This was exactly what I expected.

Given the above observations—before we dive deeper into how to answer the question What is Design Thinking?—let’s first debunk three common misconceptions here:

  1. Although Design Thinking might be perceived as a buzzword nowadays due to its heavy overuse, it’s not a novel term. Already in 1987, architecture and urban design professor Peter G. Rowe published a book titled Design Thinking.
  2. Design Thinking is not bullshit, although it might be often perceived as such. After all, the term simply means “thinking like a designer”. This doesn’t exactly seem like bullshit to me since designers have created some pretty awesome things that have influenced and are still heavily influencing people’s everyday lives. Please refer to Susie Hodge’s book When Design Really Works for 80 very compelling examples.
  3. Design Thinking is a mindset, not a process (otherwise it would be called the Design Process), just like entrepreneurial thinking is not a process (cf. Silicon Valley mindset). However, Design Thinking can very well be embedded in or lead to a process—a highly unstructured one—in which the three spaces of Design Thinking (Inspiration, Ideation, & Implementation) are visited and revisited in no particular order until a desirable solution is found. Such a process also highly depends on the environment and the artifact that is being designed. For more on this, please refer to my previous article On Design Thinking.

Besides the above, it’s also important to note that I’m not talking about graphic or visual design here, which are not the same as design, although many people believe so. Rather, they are more specific subdisciplines. Or, as Steve Jobs once said: “Some people think design is how it looks. But of course, if you dig deeper, it’s really how it works.”

With this as a basis, I now want to work towards a precise, one-sentence definition of Design Thinking. As already mentioned, essentially, Design Thinking means nothing more than “thinking like a designer”, which implies an understanding of what design means. So, in order to work towards the intended definition, let’s have a look at what (good) design actually is.

According to Avle & Lindtner (2016), a design is “the materialization of an idea either as artifact or product”. Moreover, Hodge (2017) explains that for such an artifact or product to be considered a good design, it has to have a range of practical applications, function optimally, and be attractive and affordable. On top, it should be timeless with respect to its construction, function, and aesthetic appeal (Hodge, 2017).

However, it is important to note that a good design is inevitably entangled with the process from which it emerged, which is why in their paper, Avle & Lindtner (2016) always speak of “design(ing)” rather than design. This is related to the following statement by Granfield (2017) from her excellent article about the current state of UX design: “The premise of design thinking is exactly this: All team members, regardless of their role, are responsible for the design because the process is the design; the screens and the experience are the end result.”

In my opinion, this is a very striking sentence about Design Thinking and therefore one of my favorite ones concerning the topic (in fact, it inspired me to write this article in the first place). With this, we now have all the ingredients to construct a concise, one-sentence definition of Design Thinking:

The understanding that the process is the design and therefore all people involved, no matter their role, are responsible for creating a product that is useful, functional, aesthetically appealing, and affordable.

This definition particularly implies that the process has to be interdisciplinary (as was mentioned in two of the answers above) and human-centered (also mentioned twice) since it is impossible to design a product that is useful, functional, aesthetic, and affordable without considering the user’s needs and desires. When having another look at my friends’ answers at this point, it becomes clear that answer № 3 came closest to a correct definition of Design Thinking.

To conclude, I want to note that we must keep in mind that design & Design Thinking always happen in a broader context than the above definition can capture. Or, as Avle & Lindtner (2016) put it: “design is as much about making artifacts as it is about producing national identity, reputation, and economic gain.” This, however, is beyond the scope of this article.

(This article has also been published in Muzli on Medium.)


Avle, Seyram and Silvia Lindtner (2016). “Design(ing) ‘Here’ and ‘There’: Tech Entrepreneurs, Global Markets, and Reflexivity in Design Processes”. In: Proceedings of ACM CHI.

Granfield, Monica (2017). “A Design by Any Other Name Would Be So Delightful”. In: ACM Interactions XXIV.2.

Hodge, Susie (2017). Design: 80 berühmte Entwürfe. Librero.


Thanks to Martin and Rob for their feedback on drafts of this article.

Talking Design Thinking with Abhijit De

abhijit-de“Sorry, we are out of stock!” is an unpleasantly common sentence customers of Indian retailers hear every day. This is because due to a lack of appropriate systems, retailers are having problems with maintaining their stock and accurately anticipating the necessary quantities of each product. With their business network Ganges, SAP intend to tackle this and other problems in the supply chain that prevent Indian retailers from making the most of their businesses. To be able to optimally achieve this, during the creation process Design Thinking was applied to understand retailers’ and the other involved parties’ needs and pain points. I have had the opportunity to talk to Abhijit De (pictured)—who was one of the driving forces behind Ganges—about their solution, the unique value Design Thinking has contributed, and its pros and cons.

Max: First of all, could you please give a quick intro of yourself?

Abhijit De: My name is Abhijit De. I grew up in Uganda, Africa, worked and lived in the USA for 15 years and spent the last 5 years in India. I have always oscillated, alternating between corporate jobs—Intel, Microsoft, Infosys, and SAP—and entrepreneurial start-ups. For the past five years, I was VP of new business incubation at SAP with a particular focus on business networks and IoT. I recently transitioned out of SAP to plan my next start-up. Additionally, I also hold a Master’s degree in Management of Technology as well as an MBA.

Personally, I like to help initiate and execute projects that have high impact on improving life on this planet. I like to travel and interact with different cultures. My motto is: “Work hard and play hard, but leave a better planet behind.”

Max: Together with your team, you have created SAP Ganges, which is a business network in the retail sector. What exactly is a business network?

Abhijit De: I had the opportunity to set up an innovation business at SAP and chose a business network in the retail sector. A business network is an IT infrastructure that allows different personas from different types of companies in one trade ecosystem to transact business together. One example for this is SITA, which is a travel network that allows airlines, hotels, travel agents, financial institutions, customers, airports, etc. to do business in a coercive framework and information infrastructure. At SAP, the executive strategy was in the direction of business networks with the acquisition of Ariba, which is a business network in procurement, Fieldglass, etc.

In the case of Ganges we were building a business network for the retail ecosystem. This means that retailers, wholesalers, FMCG manufacturers [fast-moving consumer goods], banks, fellow travelers, etc. can conduct business seamlessly.

Max: To create SAP Ganges, your team has applied Design Thinking; you have talked to numerous retailers and distributors to learn about their pain points. What is the unique value Design Thinking has added to the system compared to traditional engineering approaches?

Abhijit De: I believe there are two types of innovation: First, push innovation and second, pull innovation. Furthermore, all innovation manifests as one or more of the following frameworks: incremental innovation, disruptive innovation, fundamental innovation, and alternative application innovation.

A push innovation use case example would be Intel processors. Intel designs processors based on fundamental research innovation and it sometimes takes ten years to get from ideation to offering as there are long cycles of designing and building the technology fabrication plant. Hence, at ideation Intel cannot always accurately predict the types of applications that will use the said processor. This is a “build it and they will come” strategy. As such, Intel “pushes out” products and offerings without intensive end-user input.

A pull innovation use case example would be Apple’s iPhone 7 or Facebook. These are based on a deeper understanding of users’ pain points and their root cause analysis. Value created is accessed at the ideation phase of the product or service.

The Design Thinking and value engineering methodologies together work as a perfect process to mitigate most calculated risks. Hence help create a “viral” product or service as it results in “capabilities” of highest value to the “user”. It is grounded in time-to-market boundaries based on an additional feasibility and viability framework.

Max: What is the main disadvantage of Design Thinking?

Abhijit De: First, Design Thinking is a pull innovation methodology and not very effective on push innovation scenarios. Second, Design Thinking curtails radical creative or artistic opportunities. And third, Design Thinking does not dig deep into addressing ecosystem change nor does it address fellow traveler requirements. Examples for this are offerings based on new material innovation or fundamental research that cannot be improved using Design Thinking methodology effectively.

Max: In the official video about SAP Ganges, you say that your team did “constraint innovation”; that most of the project was done with zero budget and most of the work with crowdsourcing. Can you please dive a little deeper into that?

Abhijit De: Today there is a lot of waste of resources in corporate environments due to power plays, fiefdom politics, unaligned divisional strategies, siloed organization structures, etc. Constrained innovation starts with building effective networks within the organization to enable the empowerment and creation of vested stake holders, starting with internal fellow travelers. Nurturing win-win objectives between resource owners and your team/project creates a strong ecosystem of support that opens various types of resources as needed by your project [cf. Juggaar innovation]. Moreover, enabling systematic structured internal crowdsourcing also facilitates HR objectives in increasing employee satisfaction and growth.

Max: The main motivation behind the system is to maximize retailers’ businesses. What are the non-economic implications?

Abhijit De: There are several:

  1. Increasing financial inclusion;
  2. elevating the poverty level from $1/day to $2/day in India;
  3. banking the unbanked;
  4. optimizing the FMCG supply chains;
  5. moving to a cashless society;
  6. creating new channels and markets for cross-pollination, i.e., alternative uses;
  7. eliminating parallel economy; and finally
  8. increasing education and awareness reach.

Max: How do you guarantee your Design Thinking–based technology is available to those who need it?

Abhijit De: For this, we build on an awareness generation program due to success stories.

Max: Can you please explain in one or two sentences how this works?

Abhijit De: Based on use-case success stories we let the merit of the methodology speak for itself. For example, through articles in the Harvard Business Review etc.

Max: Where is SAP Ganges today?

Abhijit De: As all products and services need to have exit strategies, the corporate strategic focus changed and SAP Ganges was morphed into the SAP IoT world; meanwhile the Indian government has finally moved towards a cashless society enabling several similar business networks to germinate ecosystems with the same objectives.

Max: If a company came to you and said “We want to do Design Thinking because it’s hip and everyone else does it”, what would you tell them?

Abhijit De: Follow the “MAN” rule!

  1. Do you have the money?—It’s an expensive investment.
  2. Do you have the top down buy-in commitment?—authority
  3. Do you have the need?

Any two of these are sufficient to create the third, but all three are necessary to successfully enter into a Design Thinking–based project.

Max: To conclude the interview: What is Design Thinking?

Abhijit De: It’s a tool like many others with pros and cons and not always the right tool for every scenario. It is however a great tool/methodology that can design “viral” products and services when executed well.

Max: Thank you for taking the time to provide your insights on this topic! It’s very much appreciated!

(This article has also been published in on Medium.)

How to Design Think


  • Use a notebook
  • Sketch every idea you have
  • Communicate visually
  • Observe your target audience
  • Build prototypes
  • Talk to people without domain knowledge
  • Discuss with people you don’t know
  • Never neglect crazy ideas
  • Think about technology later
  • Don’t stick to a particular order
  • Test every hypothesis
  • Never just assume things
  • Practice empathy
  • Be satisfied with ‘good enough’
  • Strive to improve people’s lives
  • Always collect feedback
  • Consider cultural differences
  • Listen
  • Never let sunk costs bias you
  • Start over if necessary

(This article has also been published in on Medium.)

On Design Thinking

According to Patnaik (2009), Design Thinking is “any process that applies the methods of industrial designers to problems beyond how a product should look.” The term was already used as early as 1987 by Rowe in his eponymous book in an architectural context and has lately become popular through research done at Stanford University and the Hasso Plattner Institute in Potsdam, Germany (Schmalzried, 2013). In his introductory article about Design Thinking, Brown (2008), the CEO and president of IDEO, uses the example of Thomas Edison to illustrate the underlying methodology. While Edison invented the lightbulb—which undoubtedly was a significant innovation in itself from a pure engineering perspective—he did not stop at that point. Rather, he understood that the lightbulb alone would be of no use to people, so he also created “a system of electric power generation and transmission to make it truly useful” (Brown, 2008). This means that “Edison’s genius lay in his ability to conceive a fully developed marketplace, not simply a discrete device” (Brown, 2008), which underpins that one of the prime principles of Design Thinking is to consider a broader context with the user at its center.

Three Requirements of Design Thinking

Brown (2008) characterizes Design Thinking as “a discipline that uses the designer’s sensibility and methods to match people’s need with what is technologically feasible and what a viable business strategy can convert into customer value and market opportunity”. Therefore, Design Thinking does not solely concentrate on users, but also takes into account the company perspective. This is necessary since without profitable companies, no human-centered products could be realized, which clearly do not come at no cost. Hence, Design Thinking focuses on people and industry to ultimately yield a methodology that serves both sides—if applied correctly; i.e., companies should not see designers as pure means to make existing products more beautiful, but to “create [new] ideas that better meet consumers’ needs and interests” (Brown, 2008). From all this, we can derive three requirements that have to be met if one wants to successfully apply Design Thinking for the creation of a new product. A product that is based on Design Thinking

  1. matches people’s needs (Brown, 2008),
  2. is based on feasible technological requirements (Brown, 2008), and
  3. creates customer value and market opportunity based on a viable business strategy (Brown, 2008).

According to Schmalzried (2013), these are similar to the “R-W-W” method by Day (2007), which can be summarized as: “Is it real? Can we win? Is it worth?”

To give an example, consider the Search Interaction Optimization methodology and toolkit that are at the heart of my PhD thesis. As for requirement (1) above, in the context of my thesis I had to consider two target groups. First, I developed means for human-centered design and development that are both, effective and efficient from a company’s point of view. Therefore, my primary target group were the stakeholders, designers and developers applying the new Search Interaction Optimization methodology and toolkit. Then, the secondary target group were the users who are ultimately provided with more usable products by the companies applying the approach. Hence, matching people’s needs corresponded to matching companies’ and users’ needs in that specific case.

What is a Design Thinker?

When it comes to the characterization of a person who applies Design Thinking, Brown (2008) specifies that Design Thinkers are empathic, which supports the successful application of a “people first” approach. Furthermore, they exert integrative thinking (Martin, 2009), i.e., thinking beyond the scope of purely analytical approaches in order to create “solutions that […] dramatically improve on existing alternatives” (Brown, 2008). Third, a Design Thinker is optimistic, which means they believe that there exists at least one solution that is better than the status quo Brown (2008). In addition, a certain amount of experimentalism is required, i.e., a Design Thinker must be happy to try out new (and potentially radical) things instead of just doing “incremental tweaks” (Brown, 2008). Finally, and probably most importantly, Design Thinkers collaborate, particularly in an interdisciplinary manner and also have experience in multiple fields (Brown, 2008).

Three Spaces of Design Thinking

Contrary to existing processes and methodologies that are established and predominantly used in today’s IT industry—i.e., “linear, milestone-based processes” (Brown, 2008)—, Design Thinking does not happen sequentially. Rather, Brown (2008) states that it “is best described metaphorically as a system of spaces rather than a pre-defined series of orderly steps.” These spaces are given as follows:

Inspiration relates to actions such as investigating the status quo, defining potential target audiences, exploring the context the new product will be embedded in, going beyond that context to obtain a broader view, observing people, observing the current market situation etc. All of these are actions that “motivate the search for solutions” (Brown, 2008).

Ideation In the ideation space, scenarios and user stories are created, prototypes are built and tested (both informally and formally), outcomes are communicated etc., all in multiple iterations. That is, the “generati[on], develop[ment], and testing [of] ideas that may lead to solutions” (Brown, 2008).

Implementation The implementation space does not correspond to the technical implementation alone, i.e., programming tasks carried out by developers. Rather, it again involves a huge amount of interdisciplinary communication to pave the path to a usable product that is put into a broader context. This particularly includes business solutions and marketing, i.e., the implementation space “chart[s] […] a path to market” (Brown, 2008).

While a Design Thinking process usually starts in the inspiration space, transition between any two of the spaces is possible at any time (Brown, 2008), which clearly distinguishes it from established business processes. One example could be that while working in the implementation space, a Design Thinker notices that the new product can not be well communicated to customers, which might make it necessary to enter the inspiration space (again) and perform a new analysis of the current market situation and customers needs. If it turns out that a different marketing strategy would be sufficient, they can then return to the implementation space. A second example would be a series of several paper prototypes that all indicate the previously developed user stories to be irrelevant. This could result in a return to the inspiration space for defining new target audiences or paying closer attention to specific groups of users.

Design Thinking as a Process

A more concrete implementation of the Design Thinking methodology has been realized in the Human-Centered Design Toolkit by (2011). That is, although the underlying principles remain the same, they build on a more defined process. The toolkit guides designers (which, according to the Design Thinking methodology, can be project managers, developers etc.) through a three-step process, i.e., “Hear”, “Create” and “Deliver”. This happens in order to provide solutions that are “desirable, feasible and viable” (, 2011) from a human-centered point of view.

Complementary to this, David Kelley, the founder of IDEO and, defines five elements for the Design Thinking process: Empathize, Define, Ideate, Prototype and Test (Kliever, 2015). By empathizing, you understand “the beliefs, values, and needs that make your audience tick” (Kliever, 2015). In the next step, the collected information are analyzed and translated into insights about the audience and the challenge to be faced (Kliever, 2015). Once the challenge has been defined, in the Ideation phase (which is also one of Brown’s Design Thinking spaces), everything is about finding possible solutions, i.e., it “is a brain dump of ideas, and nothing is off limits” (Kliever, 2015). Finally, in the last two stages, multiple ideas are translated into prototypes and tested with the audience (Kliever, 2015). Depending on whether or not a prototyped and tested solution proves suitable, it might be necessary to iterate one or more of the previous steps (Kliever, 2015).

It might seem counterintuitive to talk about Design Thinking processes after having introduced Design Thinking spaces earlier (“Design Thinking does not happen sequentially”). However, Kelley’s process is perfectly in line with the concept of Design Thinking spaces, where you do not follow a predefined path. The spaces and processes of Design Thinking go hand in hand. While you follow the above process, you necessarily move through the three spaces of Inspiration, Ideation and Implementation in no particular order, iterating previous steps if required.

The Design Thinking Process
The Design Thinking Process visualized by the K12 Lab.


To conclude, I would like to quote Steve Jobs, who said:

Design is a funny word. Some people think design is how it looks. But of course, if you dig deeper, it’s really how it works.

Moreover, I would like to refer to Google’s principle

Focus on the user and else will follow.

To give just one example for this, if you write a blog post, it will not become popular because you are using some fancy SEO tools. It will become popular if and only if you have created a piece of great content that fulfills the needs of your audience. As a Design Thinker, be bold, be unpredictable, be creative! You do not (necessarily) have to be a Photoshop artist for this. Hypothesize, but make your hypotheses testable—and test them. But still, do not rely on data alone as a starting point, which might prevent radical and potentially better solutions. Finally—and most importantly—do not let legacy processes restrict yourself. Yet, at the same time make sure that Design Thinking remains too unpredictable to become a legacy process itself.

(This article has also been published in on Medium.)


Brown, Tim (2008). “Design Thinking”. In: Harvard Business Review 86(6), pp. 84–92.

Day, George S. (2007). “Is It Real? Can We Win? Is It Worth Doing?” In: Harvard Business Review 85(12), pp. 110–120. (2011). Human-Centered Design Toolkit. isbn: 978-0-9914063-0-2.

Kliever, Janie (2015). “Design Thinking: Learn How to Solve Problems Like a Designer”. (July 9, 2015).

Martin, R.L. (2009). The Opposable Mind: Winning Through Integrative Thinking. Cambridge, ma: Harvard Business School Press.

Patnaik, Dev (2009). “Forget Design Thinking and try Hybrid Thinking”. (July 9, 2016).

Rowe, Peter G. (1987). Design Thinking. Cambridge, ma: MIT Press.

Schmalzried, Dirk (2013). In-Memory-basierte Real-Time Supply Chain Planung [In-Memory-based Real-Time Supply Chain Planning]. PhD thesis. University of Leipzig.

How to Not Have a Bad Day

Some time ago, when I was still more active on Google+, I used to share a funny little animated GIF from time to time. Not just any semi-funny GIF I came across, but only those that made me laugh really hard and at which I could look a thousand times without becoming bored of them.

Then, when I sat over a boring research paper and started to become demotivated, I would usually scroll through my Google+ timeline, check out one of the GIFs and laugh for five minutes. After that, I was in a good enough mood to finally finish that paper (or whatever other shitty task I had to do). Yet, it’s obviously not convenient to regularly scroll back through one’s Google+ timeline for finding one’s favorite GIFs or to organize them as bookmarks in the browser (point I).

Not so long ago, I stumbled upon Material Design Lite, which I really wanted to play around with since then; but I was lacking a nice use case (point II). Points I & II then finally led to the creation of ‘Good Mood’ as a part of my personal website ‘Good Mood’ shall serve as a curated collection of my favorite GIFs, which I also intend to extend in the future. Whenever you’re having a bad day, you can go there, laugh a bit and then go on with a (hopefully) better mood than before 🙂

Now comes the geeky part: As a part of my website, the back end of ‘Good Mood’ is based on Node.js in combination with Express. The front end HTML is generated from Jade templates and—obviously—uses the Material Design Lite framework. However, during the creation of the site, there were some little obstacles to overcome.

I started with the front page of ‘Good Mood’, on which I show a random GIF from my collection. That one was pretty easy. But I thought one might also want to check out a specific GIF from time to time. So I decided to provide a second page on which the whole collection is featured.

How to Load Images Asynchronously as Soon as They Enter the Viewport

Problem 1: Animated GIFs are usually pretty heavyweight, so it’s not optimal to load the whole page with all GIFs, particularly if it’s accessed on the go via smart phone or alike.

The solution to this one was pretty straightforward: a GIF should be loaded only if the user has scrolled to the respective position, i.e., the image enters the viewport. For this, I register a waypoint for each material card displaying a GIF:

$.registerWaypoint = function($element, func) {
    t: $element.offset().top, // top
    b: $element.offset().top + $element.outerHeight(), // bottom
    func: func

In the above code, func is the callback function for asynchronously loading the GIF once the viewport reaches the corresponding waypoint:

$.loadCardImgAsync = function(cardCssClass, imgSrc) {
  var asyncImg = new Image();
  asyncImg.onload = function() {
    $('.' + cardCssClass + ' > .mdl-card__title').addClass('bg-img');
  asyncImg.src = imgSrc;

In this case, I simply add a predefined CSS class bg-img to the respective card, which displays the GIF in terms of a background-image after it has been loaded as a new Image object.

Finally, we need a function for checking the waypoints against the current scrolling offset and viewport height. That function is bound to the window’s scroll event. Once a waypoint is reached by the viewport—entering from either the top or the bottom—, its callback function is executed and the waypoint is removed from the array of waypoints. In order to not mess up the array indexes after having removed an element, I iterate backwards using a while loop.

checkWaypoints = function() {
  var i = waypoints.length;
  while (i--) {
    waypoint = waypoints[i];
    if (waypoint.t < currentOffset + windowHeight && waypoint.t > currentOffset
        || waypoint.b > currentOffset && waypoint.b < currentOffset + windowHeight) {

How to Dynamically Adjust Background Images to Mobile Viewports with CSS

Problem 2: The GIF with the cat was too wide for the mobile view of the page, which made horizontal scrolling necessary. But: Horizontal scrolling is pretty uncool!

Found here.
Found here.

This problem was a bit trickier than the previous one, mostly because it involved CSS*. When working with <img> tags, we can simply give them a max-width of 100% and omit the height property, so that the correct aspect ratio is automatically retained. However, since I use material design cards, I had to deal with <div> elements and the CSS background-image property. Unfortunately, those don’t know which height they must have unless we tell them. Say, for instance, the animated GIF we’re dealing with is 400 pixels wide and 225 pixels high. Then, we need the following structure according to material design cards:

  div.mdl-card__supporting-text Found at
    a.mdl-button.mdl-button--colored.mdl-js-button.mdl-js-ripple-effect(href='#{}', target='_blank')
      | /#{card.caption}

First, we have to give the container <div> element a width of 400 pixels and a max-width of 90% (to give it some space to the left and right on small screens), but we make no statement about its height:

.cat-card.mdl-card {
  display: inline-block;
  width: 400px;
  max-width: 90%;

The height of the container then must be determined by the inner <div> element that actually has the background-image property. In order to do so dynamically, it needs a padding-top value that reflects the aspect ratio of the background image. In our case, that would be 225 / 400 = 0.5625 = 56.25%.

.cat-card > {
  background: url('/images/gif/cat.gif') center / cover;
  color: #fff;
  padding-top: 56.25%;

Now, since the padding of the inner <div> is relative to the actual width of the container <div>, the height of the container automatically adjusts to retain the correct aspect ratio of the background image. Go check out CodePen, where I had first sketched the solution to this. Yet, we need one more piece of the puzzle, which goes into the header of the HTML page:

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

Aaand done! Enjoy—both the website and the source code, which is also available on GitHub!