My writings about dev
Do you have a static site you need to put somewhere in Internet so others can access it? You're in for a treat: there are dozens of really good options. I wanted to try out Netlify for my website renewal because everyone had been saying good things about it and I had never used it.
I had an existing domain on Hover and used to run my website from a self-hosted Hetzner VPS. But during the past decade, the website and my server had become a mess. I wanted to start using a static site generator and to make deployment easier. So I installed Eleventy, piece by piece transformed my old site into an Eleventy site and ran
eleventy. Boom, few seconds later I had
_site folder that I dragged and dropped into Netlify and the site was up.
I have a love-hate relationship with PHP. I have written PHP in many forms from website templating and Wordpress to full MVC and SPA backend solutions in the past 15+ years.
I was reading through Bronson Dunbar's post "Using and learning ReactJS for 2 years, what have I learnt, and I stopped at this:
If there's one functionality of bash that most beginners don't know but get very excited about when they discover it, it's history. First you learn to go through the history by pressing up and down, then you find out that
CTRL+R is the spell that gives you access to write commands and find them from history.
I'm a huge fan of that. Probably 80-90% of my bash command history is repeating commands over and over again. Whether it's
npm run start,
git add . or something similar, I can find it from my history.
I was chatting with friend on a Slack community last Friday, and he had a feature he'd love to have. When people post new job ads into #jobs channel, he'd love to automatically post them to Twitter for larger reach. I liked the idea!
As a big fan of automation and Zapier, I told I could take a look over the weekend and so I did.
If you're interested in learning programming, the scene in Helsinki is blooming right now. There are long-term options as well as weekend workshops, evening workshops and support groups so everyone should be able to find their place in the community. And if you're an experienced developer who wants to share their knowledge, most of the community initiatives are always happy to have new people join as coaches.
This list is not exhaustive – these are just the ones I'm familiar with and new ones pop up all the time. If I'm missing something, please let me know in the comments!
In many companies, most of the days we developers end up doing design choices. Whether it’s graphic or service design, by the virtue of building things we make design decisions. But most developers are not taught design, not even the very basics.
Everyday design decisions
Not all of us have a privilege of working with amazing designers for every feature we build but nothing is done without a design. Maybe someone gave you a sketch about a feature with a single state and you end up making decisions on what the other states look like — you make a design decision. Or maybe you’re given a spec of what needs to be done but not how — you make a design decision.
I’ve been programming PHP for most of my life, almost 20 years now. While PHP has many downsides, horrible history, and terrible reputation, it has improved a lot with PHP 7 and modern frameworks like Laravel that make it really enjoyable to develop.
However, I still wish that there would be a “PHP2", a rework of the original one boldly breaking the backward compatibility and fixing some of the underlying weirdness.
Continuous improvement, life-long learning, staying on top of your game are all things very close to my heart. It's not always easy though: sometimes your life (personal and professional) takes a detour and you end up in a situation where your skills get rusty.
I was in that position almost 3 years ago. I switched my full-stack developer career to community management, moved to Turku and worked on a non-technical job for two years. I wasn't ready to let go of my technical competences however. So I did what every knowledge hungry youngster does: I started inviting people smarter than me to tell their stories and share their wisdom.
Open source software has had an immeasurable impact on the modern software business. If you’re building anything for the web, you are most likely heavily relying on infrastructure, software and frameworks built on the open source model — allowing you to get productive with small overhead and benefiting from the efforts of the community.
Most of the servers in the world run either on Linux or FreeBSD operating system, source control is run by Git or Subversion, databases are Postgres, MySQL or MongoDB and web apps are built with React, Angular, Django, Ruby on Rails and other similar frameworks. What’s common to all of them? It’s all open source.
Meetups are fun and we are happy to see the culture is spreading all around the world making them more accessible to people. We started Turku ❤ Frontend a couple of years ago with the aim to help people learn new skills, meet fellow developers and make it easier for professional developers and students to find jobs and thus, making it easier for companies to find local talent.
If you have never been to a meetup, it can be bit intimidating. We wanna demystify the experience to encourage more and more people to join. And we are not alone: in Turku, there are many other fantastic meetups — something for everyone.
I was introduced to code reviews few years back in my first startup job and as a junior developer I immediately felt their impact. Having my code reviewed by seniors and reviewing code myself taught me a ton. After that job, I switched to another startup and we had a great code review process in place as well. I thought world was a good place.
Today a friend of mine complained about a project she inherited. It was thousands of lines of unintended code with whole functions commented out. Another friend told his horror stories from work and I felt baffled: “How is it possible that code like this goes through to production?”.
Turku ❤ Frontend is a community of (mostly frontend) developers in Turku region that was started in December 2015. Between September and May, we organize meetups at local companies’ offices with talks and beers and during the summer break we just finished our first hackathon.
DSC_0030_2Bringing local developers together for a sunny summer day in August was the perfect start for my holiday. We decided to have this year’s theme as location as it’s the hot topic right now with the blooming success of Pokemon Go and IoT. We set the timer to 8 hours and started hacking – some with teams and others alone.
I’m a huge fan of hackathons. Last weekend, I had the privilege to organize one for the first time after attending a few. Even though being super tired on Sunday evening after a long weekend of very little sleep on a couch, I was so happy being able to organize a successful event.
Here are my top reasons for loving hackathons.
A few days back I was ranting to my friends about PHP arrays. I’m not as much of a PHP hater as many but there’s still some things that really bug me. Everything to do with arrays is one of them. Let’s have a look. I use the phrase normal array to mean a non-associative array (like Python’s list or Java’s array).
Associative ordered arrays
As the documentation states, “An array in PHP is actually an ordered map. A map is a type that associates values to keys. This type is optimized for several different uses; it can be treated as an array, list (vector), hash table (an implementation of a map), dictionary, collection, stack, queue, and probably more.”
The Unix Pipeline is a powerful and beautiful piece of software that is sometimes difficult to grasp for a command line beginner. We are used to use graphical interface apps that mostly only interact with each other by writing and reading files if at all. The concept of standard out (stdout) and standard in (stdin) are something that takes some time to learn and understand when one is learning programming and/or data tools in command line.
The examples expect some level of understanding on the basics of terminal, such as parameters and flags. Some of the commands can take file as a parameter and as such, don’t require cat but for the sake of education, I will not go through that route.
A coworker of mine shared a link to DataMonkey, a platform/website to learn basics of data manipulation: Excel spreadsheets and SQL, the language used for database queries in relational databases like MySQL, PostgreSQL and SQLite. During my studies and personal exploration for the best practices in educational systems, I have encountered many that have been quite horrible (like [TRAKLA2](http://www.cse.hut.fi/en/research/SVG/TRAKLA2/ which is used for teaching algorithms and data structures) and many that have a bit better approach (like Codecademy and and ViLLE system for teaching programming).
For me as both as a student and an educator, there are two key factors for making a platform good for educational purposes:
I had never had any real problems in starting a new summer job regardless of the field. I have been building elements for buildings, assembling phones, guiding kids in sport camps, selling home electronics and video recording sport events to name a few. But when it started to be a time to turn my education into a developer job in a real company, I had these weird feelings of fear and anxiety. It seemed that there were many processes and practices that everybody else just knew about and I had no idea.
So I took a freelancer route and kept hacking things for customers either all by myself or with some friends. And in January I joined Chartio as an engineering intern to start my adventure as a junior dev in a real company.
I work as an engineering intern at Chartio where we build a data visualization platform for business intelligence use. In addition to developing, I sometimes take interesting datasets and see what I can build with our platform. This blog post was first published in Chartio Blog.
Regardless of if you call it football or soccer, fans of the the Beautiful Game were in for a treat for the past month. After a 4-year long wait, FIFA World Cup filled the days of sports lovers all around the world. I love soccer and statistics so I collected some of the most interesting stories of this year’s cup.
About a week ago I got an email through San Francisco Ruby Meetup Group about a workshop on becoming a better programming teacher and given my background and passion for education, it was a no-brainer to jump in. A four hour workshop was organized by General Assembly, a company that provides bootcamp like programs, part time courses, classes and workshops for everyone who wants to become a better developer or change their career into development.
I was especially interested because of the pair programming aspect of the workshop. In our university in Turku, Finland we use pair programming in freshmen programming classes (with 100-150 students) as a key part of our course logistics and it has proven to be really powerful tool to enhance learning experience and to get students to meet new people. Every week for 2 hours, we have a session in a lecture hall where students pair program through a set of exercises in a platform that provides instant feedback and records students’ progress so both students get the points they earn while doing it together on one computer. We don’t really enforce any pair programming paradigms but students change the one who’s driving every 15 minutes or after each exercise so both students get to drive and navigate.
After coaching at Rails Girls Helsinki last November and getting a job in San Francisco, one of the first things I did was checking out if there would be a Rails Girls event here too. And how lucky was I. Last weekend, almost 100 enthusiastic girls and women took their laptops and came to Engine Yard for two-day workshop to learn about web development with Ruby on Rails. Since I already wrote about Rails Girls after the last event, I won’t dig too deep into what it is.
In Helsinki, most of the participants were people who had no previous experience on programming but here in San Francisco it was a bit different story. Many girls had done some coding or even worked as web developers but wanted to learn Ruby on Rails to go deeper to the rabbit hole. From a coach perspective, it makes a difference. When teaching basically same things to people with no experience at all and to people who work as developers, you really need to take a different approach. Coaching both different groups was equally fun but in different ways. In the event, I shared a group of three students with a fellow coach and the event having much smaller student per coach ratio gave us an opportunity to give even better personal coaching throughout the day.
So, in the beginning of January I started as an engineering intern in Chartio and since that my workflow has really improved a lot and I’ve learned and discovered some tricks.
First one I want to share, made a huge difference for me:
It’s no secret that learning programming is – at least for some of us – an obstacle course. Personally, it took me years to grasp the skills to be a some-what good programmer. For the last 3 or 4 years I’ve been involved in teaching programming basics for freshmen in my university. I started with helping fellow students, then started as a mentor for department and nowadays in addition to previous, I work as a part-time teacher on our courses.
I’ve come to conclusion that one of the reasons for it being so difficult is, that one needs to learn a huge amount of different things at the same time for being able to move forward.
There has been a lot of discussions during the last years about the IT education of young people. Today, the topic once again popped out in Finnish news when Finnish Broadcasting Company wrote a news piece (Google Translate to English, quite decent) about the level of IT education in Finnish elementary schools. One of the maybe most popular blog posts about the situation globally is Coding2Learn blog’s Kids Can’t Use Computers… And This Is Why It Should Worry You which is simply brilliant.
In Estonia, a long vision program Tiigrihüpe started already in 1990s with aim to provide better infrastructure and education regarding technology. Year ago they started a new program within Tiigrihüpe called ProgeTiger.
Chicago, Taipei, Groningen, Helsinki, Zilina, Oulu and Dresden. 7 Rails Girls events this weekend all around the world.
Today was my first ever Rails Girls event in Helsinki. I ain’t much of a Rails or even a Ruby, I tend to choose Python as my weapon of choice. However, I’ve been long interested in Rails, done some hobby projects with it and even more than that, I’ve been into teaching new people to programming for couple of years now at the university. So coaching a Rails Girls event was super exciting new experience.
Sometimes I wonder what programming really is and why we hackers find it so compelling. Most of the time we – or atleast I – bang our heads to wall for hours while trying to conquer the challenge. After all those hearth-breaking moments we finally succeed to get the code running and it solves the problem. All the dark clouds disappear, flowers start to bloom and happy squirrels are jumping everywhere. I had one of these moments today while trying to do some SQL magic.
I do SQL and database operations for almost every project I do. I was relatively good at database courses at the university and I always thought that SQL is so simple. Yeah, about that… I only evere had to do very basic queries which just involved some basic SELECTs with couple of tables usually just JOINin them on their keys. Today, however, I was wondering how I could make a sports statistics database – web page connection better and I started to think if things could be done differently than I usually do while dealing with this kind of data.
Today was surprising day at the university. I’m taking a class called Designing Object-Oriented Software which has before been somewhat boring 7 x 90 min lectures and an exam but this year our professor hired a guy called Aki Salmi to organise 4 workshops á 4 hours. Beforehand I knew Aki is a guru and an excellent guy but I was still surprised to see how much fun studying at best could be.
The idea in the first day was to start implementing Conway’s Game of Life in Test-Driven Development (TDD) style with pair programming. For me, the TDD was a new approach – I’ve done it very little in Learn to Program: Crafting Quality Code and also in Functional Programming Principles in Scala but it has been merely a sneak peek. Pair programming on the other hand was something I had never done before. This time, we were thrown to the wolves with just a few bits of information: