Brainstorming is a popular working method which is commonly used by UX design teams. It involves a group of designers meeting (whether offline or via video call) and generating as many ideas as possible to find the best solution to a specific problem or come up with creative design ideas. Brainstorming sessions are usually held at the start of a UX project so that designers could use the ideas they think are the best later in the process of product creation. These sessions can vary in duration and form depending on which problems need to be solved, how many people participate and how many ideas need to be generated.
Interviews with representatives of the IT industry
This article is a part of Algorithms in Go series where we discuss common algorithmic problems and their solution patterns.
In this edition, we take a closer look at bit manipulations. Bit operations can be extremely powerful and useful in an entire class of algorithmic problems, including problems that at first glance does not have to do anything with bits.
Let's consider the following problem: six friends meet in the bar and decide who pays for the next round. They would like to select a random person among them for that. How can they do a random selection using only a single coin?
The solution to this problem is not particularly obvious (for me:), so let's simplify a problem for a moment to develop our understanding. How would we do the selection if there were only three friends? In other words, how would we "mimic" a three-sided coin with a two-sided coin?
Most solutions to algorithmic problems can be grouped into a rather small number of patterns. When we start to solve some problem, we need to think about how we would classify them. For example, can we apply fast and slow аlgorithmic pattern or do we need to use cyclic sortpattern? Some of the problems have several solutions based on different patterns. In this series, we discuss the most popular algorithmic patterns that cover more than 90% of the usual problems.
It is different from High-School Algorithms 101 Course, as it is not intended to cover things like Karatsuba algorithm (fast multiplication algorithm) or prove different methods of sorting. Instead, Algorithmic Patterns focused on practical skills needed for the solution of common problems. For example, when we set up a Prometheus alert for high request latency we are dealing with Sliding Window Pattern. Or let say, we organize a team event and need to find an available time slot for every participant. At the first glance, it is not obvious that in this case, we are actually solving an algorithmic problem. Actually, during our day we usually solve a bunch of algorithmic problems without realizing that we dealing with algorithms.
The knowledge about Algorithmic Patterns helps one to classify a problem and then apply the appropriate method.
But probably most importantly learning algorithmic patterns boost general programming skills. It is especially helpful when you are debugging some production code, as it trains you to understand the execution flow.
Patterns covered so far:
Stay tuned :)
<Promo> If you interested to work as a backend engineer, there is an open position in my squad. Prior knowledge of Golang is not required. I am NOT an HR and DO NOT represent the company in any capacity. However, I can share my personal experience as a backend engineer working in the company. </Promo>
In this article, we discuss the postorder traversal of a binary tree. What does postorder traversal mean? It means that at first, we process the left subtree of the node, then the right subtree of the node, and only after that we process the node itself.
Why would we need to do it in this order? This approach solves an entire class of algorithmic problems related to the binary trees. For example, to find the longest path between two nodes we need to traverse the tree in a postorder manner. In general, postorder traversal is needed when we cannot process the node without processing its children first. In this manner, for example, we can calculate the height of the tree. To know the height of a node, we need to calculate the height of its children and increment it by one.
Let's start with a recursive approach. We need to process the left child, then the right child and finally we can process the node itself. For simplicity, let's just save the values into slice out.
Certainly this event is an example of some of the people in our longevity community coming in and just taking over a little bit of somebody else's conference to talk about longevity… but really exposing the rest of the community to it. I'm finding that at every event I go to, I'd really love to have conference presentations where I get to talk about some interesting thing about the longevity industry, because there are a lot of really interesting things going on.
But every presentation turns out to be «hey, we exist, please notice us — because this is really, really important.» Everything that you guys think that you are doing in medicine is about to be up-ended, because suddenly we're going to be actually able to stop people from getting sick and incapacitated and debilitated in old age. This is happening right now, the first rejuvenation therapies exist. But nobody notices.
→ Text and video in Russian
What is ageing? We can define ageing as a process of accumulation of the damage which is just a side-effect of normal metabolism. While researchers still poorly understand how metabolic processes cause damage accumulation, and how accumulated damage causes pathology, the damage itself – the structural difference between old tissue and young tissue – is categorized and understood pretty well. By repairing damage and restoring the previous undamaged – young – state of an organism, we can really rejuvenate it! It sounds very promising, and so it is. And for some types of damage (for example, for senescent cells) it is already proved to work!
Today in our virtual studio, somewhere between cold, rainy Saint-Petersburg and warm, sunny Mountain View, we meet Aubrey de Grey, again! For those of you who are not familiar with him, here is a brief introduction.
Some time ago, the creator of Lua programming language, Roberto Ierusalimschy, visited our Moscow office. We asked him some questions that we prepared with the participation of Habr.com users also. And finally, we’d like to share full-text version of this interview.
Dr. Martin Kleppmann is a researcher in distributed systems at the University of Cambridge, and the author of the highly acclaimed «Designing Data-Intensive Applications» (O'Reilly Media, 2017).
Kevin Scott, CTO at Microsoft once said: «This book should be required reading for software engineers. Designing Data-Intensive Applications is a rare resource that connects theory and practice to help developers make smart decisions as they design and implement data infrastructure and systems.»
Martin’s main research interests include collaboration software, CRDTs, and formal verification of distributed algorithms. Previously he was a software engineer and an entrepreneur at several Internet companies including LinkedIn and Rapportive, where he worked on large-scale data infrastructure.
Vadim Tsesko (@incubos) is a lead software engineer at Odnoklassniki who works in Core Platform team. Vadim’s scientific and engineering interests include distributed systems, data warehouses and verification of software systems.
- Moving from business to academic research;
- Discussion of «Designing Data-Intensive Applications»;
- Common sense against artificial hype and aggressive marketing;
- Pitfalls of CAP theorem and other industry mistakes;
- Benefits of decentralization;
- Blockchains, Dat, IPFS, Filecoin, WebRTC;
- New CRDTs. Formal verification with Isabelle;
- Event sourcing. Low level approach. XA transactions;
- Apache Kafka, PostgreSQL, Memcached, Redis, Elasticsearch;
- How to apply all that tools to real life;
- Expected target audience of Martin’s talks and the Hydra conference.
Today we welcome Randall Steward «Randy» Pitchford II, president, CEO and co-founder of Gearbox Software video game development company.
Randy started in 3D Realms where contributed to Duke Nukem 3D Atomic Edition and Shadow Warrior. Then he founded Gearbox Software and made Half-Life: Opposing Force, which won D.I.C.E in 2000. Other Gearbox titles include Half-Life: Blue Shift, Half-Life: Decay, Counter-Strike: Condition Zero, James Bond 007: Nightfire, Tony Hawk's Pro Skater 3, Halo: Combat Evolved and of course Borderlands.
The interview team also includes editor of Habr Nikolay Zemlyanskiy, Richard «Levelord» Gray, Randy’s wife Kristy Pitchford and Randy’s son Randy Jr.
Why is Elixir/Phoenix achieving such a high rate of adoption in the software development industry? What are the best use cases of this language? Are there any drawbacks when using it? We talked to Sergiy Kukunin, a full-stack developer at Spotlight and an Elixir expert, to find answers to these and other questions.
But sometimes you can find an easter egg in the most unlikely of places. There’s even an urban legend that one day, a programmer Googled “mutex lock”, but instead of search results landed on foo.bar, solved all tasks and landed a job at Google.
The same thing (except without the happy ending) happened to me. Hidden messages where there definitely couldn’t be any, reversing Java code and its native libraries, a secret VM, a Google interview — all of that is below.
Today we bring you an interview with Richard (Levelord) Gray — level designer of such legendary games as Duke Nukem, American McGee Alice, Heavy Metal F.A.K.K.2, SiN, and Serious Sam. And he is the one who coined the famous phrase «You are not supposed to be here». Richard was born and spent most of his life in USA, but several years ago he moved to Moscow to his russian wife and daughter.
These who speak to Richard are Nick Zemlyanskiy, editor of Habr.com, and Nikita Tsaplin, co-founder and managing partner of RUVDS company.
→ Text and video in Russian
Meet A Content Strategist: An Interview with Dmitry Kabanov, Techstars Startup Digest curator and SXSW Advisor
Here is his interview with the LAMA app platform.
I once had a discussion with a founder of an Israeli startup developing a GPU-based database with a focus on speed. The work stack included Haskell and C++, among others, and the founder was complaining about how hard it is to find competent programmers. Which was part of the reason he came to Moscow.
I carefully asked if they considered using something more popular and new. And even though the answer was rather polite and well-supported with arguments, it still sounded like “Come on, don’t even bring up these toys”.
Until then, all I heard about Haskell could be summarized as “be VERY careful in dealing with it”. To get to know Haskell programmers better, I came to a topical Telegram chat with some questions. I was quite afraid at first, and, as it turned out, I was right.
Haskell doesn’t lend itself to popular explanation, and people seemingly don’t even try. If the topic is ever brought up, it’s only talked about in full depth and as objectively as possible. Someone wrote to me: “One of the defining features of both Haskell itself and its community is that they didn’t try to achieve any kind of mainstream recognition. Instead, they focused on building a logical, principal way of solving real problems over trying to appease the widest audience possible”
Nevertheless, a couple of people did tell me about their experiences, which are shown below.
“I can tell you about the pain every iOS developer has in the ass” — 10 questions to a developer, episode 2
Seems like everyone enjoyed the pilot episode, and we’re still sure that people “behind the scenes” can be as exciting as IT celebrities we all know and love. And maybe even more, because they talk about real problems and real solutions. This week we asked 10 questions to a person behind the development of Yandex.Maps for iOS.
In mid-October the Sistema_VC venture capital fund hosted a conference called Machine Teaching, where creators of various educational startups assembled to talk about technical advancements.
The special guest was Mark Pavluykosvkiy, the creator of Piper. His company created an educational computer — a children’s toy that, using wires, circuit boards and Minecraft teaches programming and engineering to children. A couple of years ago Mark completed a successful Kickstarter campaign, got a couple of Silicon Valley investors on board and raised around $11 million dollars in investments. Now he’s a member of Forbes’ “30 under 30” list, while his project is used by Satia Nadella and Steve Wozniak, among others.
Mark himself is a former Princeton and Oxford student. He was born in Ukraine, but moved to the US with his mother when he was a child. In various interviews Mark claimed that he doesn’t consider himself a genius, but simply someone who got very lucky. A lot of other people aren’t so lucky, however, and he considers it unfair. Driven by this notion, during his junior year he flew to Africa, where he almost died.
Creator of while True: learn() on programming in game development, VR issues and machine learning simulation
A few years ago I had a feeling that Oleg Chumakov (then working at the game studio Nival) was the most famous programmer in the game development industry. He was giving speeches, hosted Gamesjams and frequently showed up on the podcast How games are made.
When VR hit the market, Oleg was chosen to lead the company’s new department — NivalVR. But, as you probably know, VR didn’t quite take off as much as people expected.
I kind of moved to other to other things in life and stopped keeping up with game development for a while, but after getting into it again I noticed that things were looking up for Oleg’s team. Now it’s called Luden.io, and their machine learning expert simulator, while True: learn() became a huge hit in its admittedly small niche. Lots of cool stories are happening around the game and the team.
We decided to do an interview with Oleg, but I couldn’t stick to one topic — his life up to this moment has been, for the lack of a better word, “interesting”. He’s seen it all. And, to ensure that a programmer could talk about programming without fear of looking too “nerdy”, the interview was conducted by my friend, colleague and an experienced developer of its own fillpackart.
I am a useless idiot, so I want to quit my job: 10 questions to a software developer, a pilot episode
Hi there, Habr!
Remember the story of Steve Jobs and Dennis Ritchie? Without any intention to rekindle the debates or moralize on the subject, let’s face the truth: thousands of stellar techies live in the shadow, while their own stories are hidden in a dusty cupboard.
We, the Habr editorial team, are keen to tackle this injustice. From now on, we will regularly interview people who keep a low profile in media and social networks. So if you have anything to tell about yourself, get ready.
To give you an idea of what this will look like, we will lead the way. Click below to see 10 general questions we will ask every guest. For our pilot episode, the first guest to answer the questions was fillpackart. (This month I’ve had several quite good interview sessions with him, see articles one, two, three). Please read them, and if you make up your mind on telling your own story in a similar way, just send me or baragol a message.