2016 Retrospective

A year has again come to its end and it’s time to look back what I’ve managed to write about and do some planning for the new year of 2017. In 2016 my writing schedule was as leisurely as usual and I managed to put together of 20 articles which nine of them are about weekly notes. On average I managed to keep my pace of at least one post per month. Yay but it should be better. Things have gone quite well, I’ve learned new things and got things done :)

Keeping up with Weekly/Monthly notes

Last year I started writing Weekly notes series about interesting articles I come across from several software development related newsletters and while reading Twitter, Reddit and Hacker News. I planned to write them weekly but as practice showed it turned out to be monthly.

Learning from others at meetups

One way of learning new things is to hear how others do things and get do ideas how to make things better. I’ve found that attending meetups and conferences are nice way to both freshen your thinking and get to know people working in the same field.

Some of the meetups I went was about container orchestration with CoreOS which provided introduction, nice lessons learned and Kontena, CoreOS war stories.

More interesting meetup in DevOps field was DevOps Finland Meetup goes Mobile where we heard how continuous delivery works for mobile applications at Zalando, learned mobile testing with Appium and what’s Qvik’s efficient mobile development cycle.

Software development as usual

At work I’m developing web applications mainly with React and Java but looking for better tools is always good. Modern Java is nice but using Kotlin is better although I didn’t get the opportunity to push it into production. Kotlin felt nice and somewhat similar to Swift.

Doing microservices has last year gained more momentum and one good way to keep your docker containers small is to build them with Alpine Linux. Using minimal base image for you container is efficient both on size and having smaller footprint thus making the attack surface smaller. Alpine doesn’t use glibc but musl libc which may limit it use cases but e.g. Java and Node.js applications are running fine on top of it.

In software field I deployed Piwik web analytics as we couldn’t use Google Analytics. Piwik seems to be nice and open source alternative for analytics and has this far worked nicely.

HTTPS has become more affordable and even free with Let’s Encrypt SSL certificates. Setting up Lets Encrypt is relatively easy but using them needs also some automation with simple scripts.

One thing I didn’t have time to write was about JavaScript development with React and TypeScript which certainly would be worth writing. Can’t say I like using TypeScript where plain ES6 would work better. Although TypeScript has become better with version 2.

Other things

As much as I love software development I like mountain biking and last year some interesting technology was presented to protect your tires and rims: Huck Norris and Procore. Whereas Huck Norris is lightweight solution to puncture prevention Procore provides better protection and they both have their use cases.

Schwalbe Procore parts

Huck Norris

I’ve used Irssi for communicating with friends in IRC but I also tried to switch to using Weechat. Didn’t quite make the cut and nowadays IRC has almost lost to Telegram and Slack.

New year, interesting things ahead

What the year 2017 brings can’t be predicted but at least my personal goals will be learning React Native and doing some development also for Android. Mountain biking will have a big part in the Summer when the Enduro racing season starts and there’s couple of trips already planned.

So, stay tuned by subscribing to the RSS feed or follow me on Twitter. Check also my other blog in Finnish.

2015 retrospective

A year has again come to its end and it’s time to look back what I’ve managed to write about and do some planning for the new year of 2016. This year my writing schedule was as leisurely as usual and I managed to put together of 19 articles. Which five of them are about my new post series, weekly notes. On average I managed to kept my pace of at least one post per month. Yay. Things have gone quite well overall. I’ve learned new things and got things done :)

Mobile development on the rise

I started mobile development couple of years back with Jolla and Sailfish OS and this year I continued with iOS. Starting iOS development with Swift and Xcode for Apple iPhone and iPad devices has been quite a different experience than using Qt, QML and JavaScript for Sailfish OS. Learning new concepts with Swift and how the App Store works has been great but not always as fun as they say. Especially using the Xcode’s Interface Builder for creating user interface is a task I’m not comfortable with compared to using plain code as with QML. But I got my first iOS application published for iPhone and iPad: Highkara news reader for High.fi news portal. It’s available on App Store.

Highkara news reader
Highkara news reader

Things on Sailfish OS and Jolla front has been quiet but I did a new game: Falldown. Or actually ported it from Ubuntu Touch. It was a fun experience as I needed to build Bacon2D library for Sailfish OS and package it correctly so it can be accepted on Jolla Store.

It will be interesting to see how my iOS applications attract users and will they beat my Sailfish OS user base :) At least it will be easier to get statistics from your apps from iTunes Connnect than Jolla Harbour. Over a year I have collected data manually and plotted how my five apps have users on Jolla.

Jolla Store statistics
Jolla Store statistics
Active install graph
Active install graph

Keeping up with Weekly notes

For some time I have read or in practice collected several software development related newsletters on my inbox. I like to follow what happens on the field and reading Twitter, Reddit and Hacker News is nicely complemented with some newsletters. But that’s not all there is to it. I’ve found it’s useful to make summaries what I’ve read and thus started my Weekly notes blog post series. Although next year I probably will post weekly notes bi-weekly. That’s fortnightly, once in two weeks.

Learning from others at meetups

One way of learning new things is to hear how others do things and get do ideas how to make things better. I’ve found that attending meetups and conferences are nice way to both freshen your thinking and get to know people working on the same field. This year I went to OWASP Helsinki Chapter meeting 27 and got to hear Troy Hunt’s talks of “50 Shades of AppSec” and “Hack yourself first”. It was great event, met old friends from school and the views from the sauna were magnificent.

Or is it?
Or is it?

Agile methodologies are know widely used and accepted but what’s beyond agile? That was the theme what Tampere goes Agile asked this year. It was my first time visiting the event and it was nice experience. The topics provided something to think about and not just the same agile thinking. You could clearly see the theme “Inspired beyond agile” working through different presentations and the emphasis was about changing our mindsets. In short: Agile is mindset. Culture eats agile. no management, no projects. Think small. Focus on benefit. Test & automate. Pair. Liberate.

Continuous flow of waterfall
Continuous flow of waterfall

The meetup scene in Helsinki seems to be warming up and there’s lots of events to go. I didn’t write posts from all meetups I attended like Finland AWS Meetup with Sovelto but wrote about DevOps Finlands’ meetup about ApiOps and test automation. Nice events and good talks later on.

I will certainly keep notes on interesting meetups also next year.

Books on the shelf

I like reading books but usually not the kinds which are technical and you could learn something from. But still I got my hands on “Iron-Clad Java: Building secure Web applications” book which was highly informative and you can’t read it without learning important things about security. In good and bad the book gives somewhat opinionated answers what technics and tools you can use to address security issues but overall the advice is solid and un-biased and more or less framework agnostic.

The other software related book I found myself reading was “Real World Java EE Night Hacks”. It walks through best practices and patterns used to create a Java EE 6 application and covers several important topics from architecture to performance and monitoring to testing. The book has 167 pages with source code so the topics are more about getting the idea than explaining them thoroughly.

In 2016 I will make myself study for the Java Programmer Certificate and read the OCA/OCP Java SE 7 Programmer I & II Study Guide. That’s about 1000 pages to go through with lights on.

Software development as usual

I work as a software developer and it entails all kinds of interesting aspects of doing things. Virtualization isn’t a new thing but with tools like Vagrant you can easily automate the creation of your development environment. And for that you need a base box which you can get from 3rd party or what’s better, you can create your own Vagrant base box with veewee. This way you know what’s in the box and get to customize it for your needs. I used Vagrant for WordPress theme development and later for creating legacy Java EE 5 development environment for OC4J, Oracle 11g XE and Java 1.5 on OS X.

Installing CentOS to Vagrant Box with Veewee
Installing CentOS to Vagrant Box with Veewee

Getting to play with Vagrant and provisioning it with Ansible was maybe the most useful thing this year what comes to development environments. Also switching from Eclipse to highly praised IntelliJ IDEA was great move. Although it took some time to get familiar with IDEA’s keyboard shortcuts. IDEA is nice upgrade form Eclipse especially for JavaScript development but Eclipse has it’s perks with Java and Maven.

Developing legacy applications and using enterprise Java EE environments were still on my daily list and I got to deal with annoyances like disabling Derby in Oracle WebLogic 12c and patching Richfaces 3.3.3. for IE 11. Fortunately it looks that next year I get to leave those behind and concentrate on modern environments.

One thing I didn’t have time to write this year was about starting JavaScript development. As a full-stack developer I’ve found myself writing more JavaScript this year than Java. Mostly Backbone.js and later got my hands dirty with Angular.js. To manage our build process and JavaScript libraries I wrote about setting up bower and gulp in Windows although you could ditch Bower and go just with npm. So many new tools to use that I think next year there won’t be shortage on topics to write :)

New year, interesting things ahead

Past year was good and I got to do fun projects like my first iOS application and in overall all things went as usual. Work, training, personal projects and stuff like that. Nothing spectacular.

New year of 2016 will be interesting as I just started in new job at awesome company, Gofore. I’m looking forward to new projects and getting things done with great coworkers. I’m certain that there will be interesting articles to be written next year so stay tuned by subscribing to the RSS feed or follow me on Twitter. Check also my other blog in Finnish.

Happy new year!

“This is a new year. A new beginning. And things will change.”

Year in review

The year 2015 is almost here so it’s time to take a short review what I wrote this year and plan for the next. In 2014 I managed to wrote almost monthly and got together total of 14 articles covering topics of software development, WebLogic issues, Sailfish OS, user experience and gadgets. Last year I planned to write one post per month and in average I got there. Have to be satisfied with it although I could write more.

Looking back

During the past couple of years I have taken part of Fujitsu’s campaigns and testing their laptops and tablets and last year I took part of Master your Business project and tested Lifebook U904 Ultrabook. It’s slim and quite robust laptop with brilliant touch screen although it could benefit from better design regarding cooling. In Autumn I was invited to visit Fujitsu Forum in Munich to hear more about Fujitsu’s services and get insights about what’s new in information technology. The article from the event is still on my draft list. It was nice trip and great to see other bloggers and the project team. In other gadget related topics I also solved my problem with connecting Jabra HALO2 headset with Windows 7. I just had to update Bluetooth drivers in my Dell.

As a software developer I decided to challenge myself last year with developing applications for mobile phones and started with Sailfish OS which runs in Jolla. With Qt, QML and JavaScript it was fun and relatively easy to make useful apps like Sailimgur for browsing imgur and Haikala for reading high.fi news. I also made Colordots game which I ported from Ubuntu Touch. I planned to write more about how to develop apps for Sailfish OS but got around just to cover Sailfish OS user interface design practices and in more technical detail how to debug power consumption issues.

At work I do different kinds of software development related tasks and it’s good to write about the issues I find and how to solve those, like how to use X11 forwarding in Windows when I needed to install Oracle Database to Linux server. I also wrote about Oracle WebLogic related issues like how to recover managed server in incompatible state and what’s wrong with LDAP provider getting stuck.

Developing Java EE applications includes many tools and one of them is Maven which work quite fine for us. E.g. you can use WebLogic Maven plug-in to deploy your application and make your own plugins to generate HTML documentation from Markdown. And if you want to distribute your project’ artifacts to the world you can put it to the Maven Central with OSSRH.

I have been following Atlassian’s Sven Peter in Twitter about how to better do software development so it was great to finally get to hear the talk live when Atlassian’s Get Git Right landed to Helsinki. It was nice event although it had also the marketing aspect about Atlassian’s tools. Nice tools but sometimes the cost is too much. Now I just hope we move from Subversion to Git someday.

I also wrote short article about using Java Mission Control to monitor and profile your Java application. Too bad it’s really useful only with newer JDKs so legacy apps have to use other means like JavaMelody or NewRelic. I also took a short look at stagemonitor but didn’t yet write about it. Looked quite nice for monitoring but not as easy to setup as JavaMelody. Also Spring Boot had nice statistics out of the box but more about that next year.

Planning for 2015

As you may have noticed I’m not a very active writer and technical topics take time to get out from draft to a full article. In the past three years I have managed to write on average one article per month and it seems to be a good target to pursue. Why change something that works quite fine?

For the coming year, looking at blog’s draft folder there’s posts about Sailfish OS and Windows Phone development, software monitoring, setting up continuous integration, utilizing PaaS and starting with Spring Boot. I should just stop starting and start finishing my personal projects so I could add the finishing touches to drafts.

So, stay tuned and subscribe to the RSS feed or follow me on Twitter. Check also my other blog in Finnish.

Looking back at 2013, planning ahead for 2014

The year 2014 is almost here so it’s time to take a look back and make some plans for the coming year. In 2013 the blog was a bit more active than previous years and I managed to put together 13 articles as I last year promised. Not one article per month but on average :) So let’s have a quick look what I wrote.

Looking back

The year 2013 in Rule of Tech was about programming and sysadmin stuff with a short visit to Fujitsu Forum 2013.

This year it was my third visit to Munich and Fujitsu Forum. With keynotes and breakout sessions the forum provided a view to human centric intelligent society and how the future might look like with technology trends like Internet of things. It was again nice to see other bloggers and the Fujitsu team, get some insights to ICT and not to forget the hands-ons with new LIFEBOOKS like U904 and T904 and new STYLISTIC tablets.

On software development I wrote on three main topics: testing, monitoring and documentation. In software development the code is one part but also it’s quality and testing it are also essential aspects to make it great. I learned some new tricks with testing Java EE applications and wrote how to start on web application test automation with Robot Framework. I planned to write about how to actually write some test cases but didn’t have the time.

It’s also good to remember that “If you can not measure it, you can not improve it.” (Lord Kelvin) so I covered it with article about monitoring Java EE application with JavaMelody. JavaMelody proved to be very handy tool to do monitoring in different levels and was quite easy to set up. It can show information about e.g. CPU and memory, HTTP requests, SQL queries, Spring beans and REST calls. And it is said that the overhead is so low that it can be enabled continuously even in production environments.

To get things easily documented I made my first Maven plugin which generates HTML pages from Markdown syntax. It isn’t yet on the central repository but I’m thinking on it. The source code is on GitHub.

As I have always wrote my blogs like they were my notebooks, I made short guides how to do stuff like transferring Linux install media to USB thumb drive and do a clean install of Windows 8 with an upgrade key. Simple things but things you often can’t remember how to do. And although I hope I don’t need to use JSF 1.2 anywhere anymore I wrote about patching RichFaces 3.3.3 AJAX.js for IE9.

On the sysadmin side I finally wrote about using PHP-FPM with Apache 2 on CentOS and howto set up LAMP stack on OS X. And as everything doesn’t run on PHP I also played with WebLogic Server and wrote how to auto restart Weblogic Server with Node Manager as Linux service and how to use WebLogic Maven Plug-In for deployment.

I’m quite satisfied about the articles I managed to make and especially about Robot Framework and JavaMelody which have been helpful on many occasions. During 2013 I also moved the blog to new VPS provider and although there was also an idea to make a new custom theme, it didn’t materialize. Maybe next year.

Planning ahead

For the coming year 2014 the plan, as usual, is to write approximately one article per month. Blog’s draft folder has some items about JavaScript and charts, Munin plugins and general software development and some sysadmin posts but it will be seen if they mature enough for full posts. I will maybe also write something about Sailfish OS development and Sailimgur.

So subscribe to the RSS feed and stay tuned. And if you can read Finnish check also my other blog. Will the new year be better than the previous? Who knows, but at least you can try your best to make that so.

Happy New Year!

Auto-expand WP-Syntax code blocks

Hilighting code blocks in Worpdress blog posts can be achieved with different plugins and one of them is the WP-Syntax plugin which uses GeSHi source code highlighting and supports a wide range of popular languages, highlighting with or without line numbers and maintains formatting while copying snippets of code from the browser. The plugin highlights code using HTML’s <pre> tag, e.g. <pre lang=”java” line=”1″> for Java and line numbers starting at 1.

Source code highlighting makes it easier to read examples but sometimes if your layout isn’t 900+ pixels wide, you may end up with horizontal scrollbars for wider code blocks as you can’t always make it 80 characters. But fortunately you can make the plugin auto-expand the code block when hovered over. You just have to edit the plugins code a bit as Derek MacDonald explains.

For some reason the code to auto-expand the block when hovered over has been commented out in the plugin and to enable it you’ll have to edit three files:

In method enqueueScripts(), uncomment the line that invokes wp_enqueue_script() so wp-syntax.js will be loaded.

Ensure the overflow, overflow-x, and overflow-y properties of class .wp_syntax are set to hidden.

It might be better to remove the box-shadow CSS property added during the mouseover event because it doesn’t look good in most designs.

The mouseover/mouseout expand/collapse events will be immediate with no delay.

Looking back, planning ahead

Again a year has passed and it’s time to take a short look back and plan for the next year. A year ago I wrote that in the year 2012 the blog would be more active and I partly managed to keep up that promise with 9 articles. Not quite at least an article per month as I planned.

The articles in 2012 started with technical issues like running Crucible as a service, JSF 1.2 and value from dropdown menu and using CAcert.org signed certificates for TLS. In the Autumn as a Fujitsu LIFEBOOK4Life Insider I reviewed Stylistic M532 Android tablet and wrote about my visit to Fujitsu Forum 2012. There were more technical issues to write about software development but again the time ran out. It’s so much easier to say couple of words in Twitter or Google+ than write a coherent and insightful post about it :)

The year 2013 is almost here so it’s time to plan ahead. There are already some articles about Apache Wicket and running different development tools on Linux in the backlog waiting to be finished and some technical tasks like upgrading the theme and maybe changing the VPS provider are to be done. Will see if I manage to achieve one article per month so subscribe to the RSS feed and stay tuned.

Happy New Year!

For year 2012

The year 2011 has been pretty quiet in this blog as I managed to write just one post. In the backlog I have had for some time a couple of articles almost done and several topics to write about but as it sometimes happens, the time runs out.

For the coming year 2012 I have made a promise to myself to research technology related issues and also write about them to this blog and to my Finnish blog. Now I have just done the former and kept the new information to myself :) Including the articles in the backlog I also have some new topics to write. So subscribe to the RSS feed and stay tuned.

Happy New Year!