Visualizing algorithms

I’m a visual learner 1. I use mind-maps to break down complex ideas, I draw on the whiteboard to understand complex systems, I prefer bulleted lists to long emails and I love to use color coding to help with categorization.

That’s why I was blown away by Mike Bostock’s recent blog post about visualizing algorithms:

Algorithms are a fascinating use case for visualization. To visualize an algorithm, we don’t merely fit data to a chart; there is no primary dataset. Instead there are logical rules that describe behavior. This may be why algorithm visualizations are so unusual, as designers experiment with novel forms to better communicate. This is reason enough to study them.

But algorithms are also a reminder that visualization is more than a tool for finding patterns in data. Visualization leverages the human visual system to augment human intellect: we can use it to better understand these important abstract processes, and perhaps other things, too.

Visualizing Algorithms

As a side note, I really love D3.js – check it out if you’re looking for a versatile library to represent data (static and dynamic datasets, including transitions). It’s more advanced than your typical charting library, but the applications are endless, as you can judge from the examples page.

  1. Wikipedia page on Visual Learning 

One word: focus!

We live in the age of distractions and interruptions: the world is moving really fast, everyone is out of patience, we get bombarded with email, the deadlines are piling up, we want to stay updated with news, status updates from Facebook and twitter, your friends are texting you, your calendar is popping up with a meeting reminder and you just remembered that your wife asked you to pick up the laundry on your way from work. Whew! does it ever end? Can we get something done around here?

I’ve got one word for you: FOCUS! Learn to focus on what’s important and you can go back to being in control of your life. I think it’s that easy.

What does focus mean?

You may have heard this before: Focus! What does it mean, after all? Here’s what it means to me:

  • choosing to work on what’s important
  • minimizing distractions and interruptions
  • finishing what we start

In the rest of this blog post I’m going to list a number of tips and techniques that have really worked for me over the years.

However, before I do that, I’m going to let you in on a secret: You’re completely in control!
Let me say that again: You can decide what to work on and how to do the work! not your co-workers, not your email, not your task list and not the reminders on your phone.

Continue reading

Photo 15.06.2014, 21 46 15

Train your brain to become more adaptable

I am going to assume that all of us are trying to get better at something. Most of the times this involves going through some form of change: learning to do something new, doing something differently or stopping a bad habit altogether.

There is a lot of literature that covers how people deal with change, so I’m not going to focus on this aspect. Also, I’m not necessarily preoccupied with dealing with external change. That may be the topic of another post.
Suffice to say that most of us resist change (at least initially) and would rather continue to do things as we know and have always done it, instead of experimenting with new ways and getting out of our comfort zone.

That being said, I believe that in order to better deal with change (both imposed from the outside, as well as triggered by our own desire to change), we need to learn how to deal with our emotions and stress levels while managing the change process.

Continue reading

Side projects should be stupid

Tobias van Schneider, Spotify’s design lead, talks about the importance of side projects and how to make the most of them.
The core of the idea is to keep them simple and stupid for as long as possible, otherwise you tend to overcomplicate them and nothing gets done.

I use them as a vehicle for learning and starting new things at work and I currently have about 3 going on in parallel (2 based on the Arduino platform, one building on top of Spark).

success also comes in the form of learning new things, meeting the right people, feeling personally fulfilled, he says. You don’t know what will happen next. Perhaps your side project will lead you to your next job, your spouse, or a sustainable living that gives you the freedom to keep exploring.

Why Side Projects Should Be Stupid

Essential JavaScript design patterns

Here’s an excellent free book that will make you a better JavaScript programmer. With JS being such a dynamic language with a bad reputation for poorly written code, the book by Addy Osmani is an invaluable resource on how to solve real problems while keeping the structure and quality of your code high.

In his own words: In this book we will explore applying both classical and modern design patterns to the JavaScript programming language.
Learning JavaScript Design Patterns

Write down your thoughts

If you have a hyper-active brain and you just can’t stop thinking about something, get it out! You’ll find out that as soon as you write it down, the inner voice goes away. Doesn’t matter if it’s a post-it, evernote, trello checklist or your favorite Moleskine agenda. You’ll sleep better and be able to focus more on the task at hand.

How I got into functional programming

About a year and a half ago I decided that I wanted to change course and go back to being an engineer. I knew that I wanted to code, I just didn’t know where to start.

In this post I will go over:

  • how I picked functional programming (FP) as something I want to study
  • what FP is and why I like it
  • go over a handful of examples to give you an idea on how you could use it in your day to day job

In closing, I will try so summarize what I learned about personal development as I went through this process.

How I got started

Right after I decided that I want to give up on management and go back to engineering, I had no idea what I should do next… All I could think of where the things I didn’t like about my job instead of the things I liked :).

My team was (and still is) heavily involved with distributed systems (mainly batch and real-time analytics built on top of the Hadoop stack), but simply joining those projects seemed very intimidating at that moment.

I really wanted to have fun and score a few quick wins, in order to validate if I’m still on the right track…

I didn’t have any experience with enterprise Java and the system and tech stack are both incredibly complex; on top of that I am very motivated by concrete results and enjoy working on more high-level problems — none of which can be found in building and optimizing distributed infrastructure.

Continue reading

Hello ;)

Hello world!

Or should I say 1:

object HelloWorld {
  def main(args: Array[String]) {
    println("Hello, world!")

I have recently decided to start a new blog. This is my second attempt and some of you might remember the old version of this blog, written in Romanian, which pretty much died 5 years ago… This time it’s going to be in English, as I am going to approach more general subjects and I’d like to reach a larger audience.

In many ways, I’m still the same person I was 5 years ago: still a geek, still tinkering with gadgets, still in love with programming and the web; I still enjoy taking photos, listening to music, traveling and eating great food :).

That being said, I am also a different person — the last 5 years were an incredible roller coaster, professionally and personally. Last year I’ve made some changes in my career and I feel now more than ready to start writing again, to share from my experience as software engineer and manager, but also to keep a journal as I continue to learn about the things that interest me.

About this blog

Broadly, the topics I plan to cover in future posts are driven by my work related experience, my passions and my developing hobbies:

DIY Arduino on a breadboard
DIY Arduino on a breadboard
  • the web, functional programming, client side development, data processing and data visualization
  • Arduino, electronics, 3D printing, open source hardware and the Internet of Things
  • working with humans :) (managing, hiring, communication, etc)

These topics are a bit disparate but there is a central theme that drove me to start this blog: the world around us is changing so fast that you can’t stay the same person — without developing the skills needed to adapt and survive you might find yourself quickly pushed aside, out of your comfort zone, overworked, unhappy, stressed and (in an extreme case) without a job.

What did I learn today?

There is one thing that I know for sure: the only constant thing is change. We all need to embrace it, we need to become masters at learning new things, adapting to new situations, appreciating the learning opportunities that we have when we get out of our comfort zone or fail.

My hope is that through this blog I will inspire you to take control of your personal development, to understand that you can do anything as long as you’re willing to put in the effort to learn new things and practice them until they become second nature – until you go to sleep every day wondering “What did I learn today?”.

  1. the ubiquitous hello world program written in Scala