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.
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.
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.
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.
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.
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.
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.
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.
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.
Christmas holidays is soon here but before that it's time to see what I've read this week. I've been playing with legacy Java EE 5 development and came across System Integrity Protection in OS X which prevents you of installing JDK 5. And on top of that I just wish I could run OC4J with JDK 5 on Docker as you can do for WebLogic 12.2.1. In security point of view there was startling announcement as Juniper Networks had found backdoor in their firewalls code. We also learn the basics of web accessibility and if you're not using dotfiles and you're on Linux or OS X, now is a good time to start.
Opinionated choices for modern Java developer.
JSF 2.1 views, CDI backing beans, JASPIC authentication, EJB services, Bean Validation, JPA models, Java EE 6 and H2 database.
What is the "System Integrity Protection" feature in El Capitan?
I was developing legacy Java EE 5 application and came across problems with installing JDK5 for OS X El Capitan. Turns out that even with root you can't modify certain directories. It's for your own protection. Annoying.
Interesting article of using JProfile to solve problems caused by using JPA and Hibernate.
Interesting article with examples of how to run WebLogic 12.2.1 on Docker as I just played with Vagrant and Ansible for creating legacy Java EE 5 development environment with OC4J. Maybe in the future legacy environments are easier to manage as you can virtualize them more easily.
If you don't have time to read this… read it twice. The maker's day is most effective in half-day or full-day blocks. Commit to protecting Make Time on your calendar including the time and place where you'll be making, and ideally detail on what you'll be making. That way, you know, it'll actually happen.
There have been a few too many stories lately of AirBnB hosts caught spying on their guests with WiFi cameras, using DropCam cameras in particular. Here's a quick script that will detect two popular brands of WiFi cameras during your stay and disconnect them in turn.
Internal code review pays off for Juniper. This week Juniper Networks revealed in a startling announcement that it had found "unauthorized" code embedded in an operating system running on some of its firewalls, ScreenOS. As the terrific summary of the Juniper backdoor explains, it allowed attackers to take complete control of Juniper NetScreen firewalls. This is a very good showcase for why backdoors are really something governments should not have in these types of devices because at some point it will backfire when other hackers will piggyback on top of existing backdoor to build their own backdoor.
tl;dr; Security researcher finds remote code execution vulnerability in Instagram which pivots to getting all kinds of data from AWS S3 but Facebook CSO plays it down to trivial and a thing which violates the poorly worded whitehat program rules. The point of this story is that Facebook fails on their bug bounty program as their actions show that it would be better just to "sell million dollar bugs on the black market for a million dollars" and not get threaten with legal actions for just being a good guy.
Informatic cheatsheets for photographers covering various aspects of photography. Also a good resource for fresh and new ideas.
Interesting article about Spring Boot memory performance (and tools to measure it). But shouldn't we compare it to Java EE?
Logging database queries with Hibernate is relatively easy but it's good to recall the logging options. Like use different log categories and don't use show_sql to log SQL queries.
SurviveJS – Webpack and React shows you how to build a simple Kanban application based on these technologies. There's a free online version of the book and Leanpub version with extra content.
Good list of feature sets on the web. Includes code examples.
Collection of thoughts on securing a modern Apple Mac computer using OS X 10.11 "El Capitan", as well as steps to improving online privacy. Targeted to "power users".
Empire of Code is a space game with a mix of strategy, tactics and coding.
How to Build a Todo App Using React, Redux, and Immutable.js.
MacBook case you can decorate with Lego bricks.
Weekly notes are here again and I have to say that the week has passed swiftly. With all the pre-christmas parties and switching jobs, I also managed to read some articles. Here are my chosen articles for this week.
Good talk by an engineer on the Chrome team about the second major version of the HTTP network protocol which is already supported by most major browsers.
Salaries seems to be a thing you don't talk about but maybe we should. Couple of years ago Buffer shared their transparent salary formula and now they have update it and made a web app to test it. Haven't seen similar approaches here in Finland although if I remember right Vincit has internally transparent salaries.
For some time I've been reading several newsletters to keep note what happens in the field of software development and the intention was also to share the interesting parts here. And now it's time to move from intent to action.
In the new "Weekly notes" series I share what interesting articles I have read with short comments. The overall topic is technology but other than that they can cover all things related to software development, from web applications to mobile development and from devops to user experience. I'll publish my reading list every week or every two weeks.
Maintaining open source projects isn't easy and that's not about technology.
"Operations security (Opsec) is important even if you're not worried about the NSA." Snowden gives 4 quick tips: Encrypt, use password manager, use 2-factor authentication, use Tor.
Application architecture is the base for everything and Martin Fowler's reference intro to this powerful style of architecture is worth reading.
Couple of weeks ago at Tampere goes Agile the question was what's beyond agile and partial answer was DevOps. I've read about DevOps before and tried to introduce it to use in my daily job but new things move slowly. So, it was good time to hear more about DevOps and how others are using it at DevOps Finland meetup about ApiOPs and Test Automation. The meetup was held at GE Healthcare building in Vallila and organized by Eficode. Delicious coffee and sandwiches were from Warrior coffee. Here's my short notes about the topics discussed.
Jarkko Moilanen, talked about APIOps – Focus on Iterative and Collaborative Design-First driven API development. How to automate and streamline API-strategy and development process. But what's APIOps? In short, APItalist creates strategy and APIOps troops implement it.
The talk was more about mindset related to developing APIs than tools but Swagger was mentioned for representing your API and SoapUI for testing. For API management Moilanen talked about APInf which is an API management platform.
Eficode guys talked about Test automation with Robot Framework which is a generic test automation framework for acceptance testing and acceptance test-driven development (ATDD). It's originally developed in Nokia Networks 2005 and open sourced in 2006. Robot Framework uses keyword-driven testing approach and it's capabilities can be extended by test libraries implemented either with Python or Java. Robot Framework is quite big in Finland but to get the work forward and more known worldwide there's now Robot Framework Association put together by Eficode, Omenia, Reaktor, Eliga, Knowit, Qentinel and HiQ.
After some technical difficulties with projector we heard intro to Robot Framework with Selenium2Library and saw video about using it. Selenium is a suite of tools to automate web browsers and with Selenium2Library you can use it with Robot Framework to easily implement and maintain automatic browser testing of your web application. Another use case which I find interesting is for testing REST APIs.
You can use Robot Framework in many was as we saw with the demo of a machine for automating payment terminal testing which Eficode had built (slides, blog post in Finnish). It was a Shapeoko 2 CNC milling machine where Arduino parsed g-code sent over terminal bus, payment terminal was captured with Tesseract OCR and it was controlled by Robot Framework running in Raspberry Pi. They had extended Robot Framework with new libraries for communicating over serial bus and reading images from Raspberry Pi camera.
What you can do with Robot Framework is up to you as the framework doesn't limit you.
The last talk of the meetup was about the future of DevOps Finland. DevOps Finland was started in 2013 by Erno Aapa and now the load is distributed over new planning team to keep things active. Sharing is caring and so we were encouraged to share our experiences and war stories about DevOps by talking in some future meetup.
Some possible future themes for the meetup were also discussed.
e.g. Coreos, Mesos, Kubernetes, AWS tools, Rancher.
AWS lambda, heroku, dokku, aws beanstalk, Google app engine, IBM Bluemix. (DevOps as a service).
How to move ops work to developers?
Hubot, configuration management, continuous delivery.
Ops do Dev. Dev do ops.
How to handle corporate IT?
Jenkins, circleCI, Travis. Alternatives for Jenkins.
Handling existing data, migrating legacy operations to modern operations, using old hardware to create a cloud.
Couple of years ago I wrote about patching RichFaces 3.3.3 AJAX.js for IE9 and as the browser world has moved on, it's now time to patch RichFaces 3.3.3 AJAX.js for Internet Explorer 11. Of course you could update your web application to JSF 2 and RichFaces 4 or PrimeFaces but it's neither trivial nor free. The issue with RichFaces 3.3.3 still stands, development has moved to 4.x version and they've dropped support for the older versions although at least IE issues could be easily fixed. Fortunately patching RichFaces AJAX.js is relatively easy.
The problem with Internet Explorer 11 is that although you upgraded Sarissa Framework and patched RichFaces AJAX.js file for IE 9 it just isn't enough anymore as IE 11 uses different User-agent string and disguises itself as "like Gecko". The User-agent string in Win 8.1 for IE11 is "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko". The issue is also discussed on JBoss Forums and on Stack Overflow.
The different User-agent string breakes the "rerender" after Ajax Request. For example using a4j:function in combination with "rerender" is not working on IE 11 and the problem is that after Ajax request the result XML can't be correctly append to the body. Also the rerendering is abnormal for h:inputTextarea, rich:modalPanel, h:inputTextarea and rich:calendar.
Fortunately the fix is simple as RicFaces issue RF-13443 tells.
Step 1: Do the "Upgrading Sarissa Framework and patching RichFaces AJAX.js file" steps in my Patching RichFaces 3.3.3 AJAX.js for IE9 article.
If all fails you can try to tell IE 11 to emulate IE 10 with adding X-UA-Compatible meta tag to head.
The other thing I noticed with RichFaces 3.3.3 and modern browsers is that if you use ui:fragment which contains rich:suggestionbox and rerender it, the suggestionbox doesn't work correctly. It gives an error: SCRIPT5007: Unable to get property 'parentNode' of undefined or null reference. For now I didn't have time to figure out the issue and just changed my page structure and function.
What could be a better way to spend a beautiful Autumn Saturday than visiting Tampere goes Agile and being inspired beyong agile. Well, I can think couple of activities which beat waking up 5:30 to catch a train to Tampere but attending a conference and listening to thought provoking presentations is always refreshing. So, what did they tell about being "Inspired beyond agile" in Tampere goes Agile 2015?
Tampere goes Agile is a free to attend event about agile and this year the theme of the conference was "inspired beyond agile". The event was held at Sokos Hotel Ilves and there were roughly 140 attendees. Agile as a topic isn't interesting as it's practices are widely in use, so the event went past agile and concentrated on "being agile". How the organizational level and our mindsets has to change to make agile work. Waterfall mindset eats your agile culture for breakfast. And that's the problem many presentations addressed.
Juho Vepsäläinen wrote also a great blog post about afterthoughts of Tampere Goes Agile 2015. It was nice to read a recap of the sessions which were in the other room than I was.
Event started with a keynote by Bob Marshall who asked what's after agile. He has introduced the concept of right shifting where the core idea is that a large amount of organizations are underperforming. We're always more or less prisoners of our mindset and existing ways.
Marshall showed his right shifting organizational effectiveness chart where mean is around 1 (0 to 5 scale) and organizations using agile sit around 1.25 to 2. So, what's beyond that? Agile thinking isn't getting us there. What differs the organizations in the chart is their mindset: adhoc, analytic, synergistic and finally chaordic.
In order to improve the effectiveness and efficiency of our organizations, we'll need to be able to imagine better ones. The question is, what does an ideal organization look like? What kind of society we would build if it was wiped out? Starting from clean slate. We should look at the organization as a whole and what Marshall suggest is to use therapy to understand organization health and changing the mindset of the organization to one that's more conducive for high performance.
The ideal model for IT company is built around: people, relationships between people, collective mindset, cognitive function and motivation. And it's good to remember the difference between effectiveness and efficiency: Doing the right thing or doing the thing right.
Doctor, please fix my Agile!
Ville Törmälä talked about how we have seen changes on the method level, organizations are still mostly functioning the same ways as before. Many have tried to become more agile but without much success as there's a waterfall way of doing everything.
Törmälä presented his definition of agile: 1) Make the work better 2) Make the work work better 3) Make lives better. But waterfall mindset eats our agile culture for breakfast so it's about time to broaden our thinking about what really constitutes a long-term success in organizations doing any kind of knowledge work. Agile gives you tools and ideas but organizations can't change or improve by "doing agile" better. If you fail with one agile "method", you probably fail with the rest of them. It's a systemic problem. It's all built deep in to the thinking and structures of the organizations. That is the challenge.
"Every system is perfectly designed to achieve the results it gets". We should change from "project thinking" to "stable teams thinking". To change the power and influence structure from managing people to empowering people and further to liberating people.
One way of doing this is to use KBIs, Key Behaviour Indicators, where you write down examples of behaviour you want to see, think in what kind of environmental it's possible or could happen and then create the environment, write down concrete actions.
In summary, we need to look beyond methods and practices. Organizations change by changing how they think and become better by understanding better how work works, how to create value and how to learn better. We've to work with the system, aiming to understand and affect its thinking.
Pair programming is a core agile technical practice but many people still have reluctance to pair and Maaret Pyhäjärvi talked about the deliberate practice in building up the skill of pairing to allow pairing to take one's skills on other activities to a new level. Pyhäjärvi shared her different stages of pairing and lessons picked up as a testing specialist.
Again, pairing is also about mindset and effective pairing is far from trivial – but it is skill that can be practiced. Pyhäjärvi talked about growth patterns from pairing with peers to pairing and mobbing with developers, from traditional style and side-by-side work to strong-style pairing and to pairing on both testing and programming activities.
Listeners also got to test specific style of pairing, Strong-style pairing, where for an idea to go from your head to the computer it must go through someone else's hands. You really need to think the steps through for the other to manage the given task.
One presented point about pairing was that you must unlearn ownership of ideas and contributions. Co-creation vs. collaboration.
Pyhäjärvi also told that selling pairing to team (of introvert programmers) is hard but Mob Programming has been their gateway to pair programming. It feels safer. You can read more about it from Mob Programming guide book.
Before lunch there was also nice lightning talk about documentation pipeline by Antti Virtanen. He told about Lessons learnt from creating a Documentation Pipeline for Continuous Deployment with Jenkins and other open source tools. His slides are available from SlideShare.
The DevOps magic with Jenkins was more or less standard practice and it was configured to generate documentation from database schema, JavaDocs, test coverage reports, performance test results and API specification. Reminded me of all the work I should introduce to our continuous integration.
Jenkins is the Swiss knife.
Database documentation in database metadata and generating ER-diagrams with SchemaSpy.
Testing is also important part of successful projects so Jani Grönman talked about useful approaches to testing and software quality.
"What automation? They can quickly click trough the app can't they?".
And as you know this is all wrong. It's true that testing is expensive but so is development. Can you afford not to test? You should think it as an investment. The presentation went through the reasons and motivations behind the various attitudes and explored differences in views and how to best tackle them using the right technology and approach. He also talked about the schools of testing: Analytical, Standard, Quality, Context driven, Agile.
But overall you should know that testing is skilled activity and part of the development. Testing provides information to the project and you should use mix of techniques like exploratory and automatisation. And think about what testing would be most effective now. You need to choose the right set of QA tools for the job. One size fits no-one.
DevOps has been quite the buzzword for some time, so it was interesting to hear what Timo Stordell had to say how Devops is boosting the agile way of working. In short DevOps isn't anything revolutionary and should be seen an incremental way to improve our development practices. And talking about revolution, Stordell's slides had nice Soviet theme.
The presentation was more or less what you would expect from a topic covering DevOps and has nice touch to it. In short: Small bangs over a big bang, requirements management meet acceptance testing, standardize development environments, monitor to understand what to develop.
Stordell had nice demo of how they perform acceptance testing using physical devices and automation. They have built a rig of CNC mill run by Raspberry Pi to test payment system.
For those interested about DevOps movement and everything around it there's DevOps Finland meetup group. You can also download Eficode's DevOps Quick Guide to read more about it.
Event's final keynote was by Allan Kelly who spoke about #noprojects. Why projects are wrong and what to do instead. The main point of the keynote was that the project model doesn't match software development and outlined an alternative to the project model and what companies need to do to achieve it. The presentation slides are available from SlideShare. Kelly has also written a book about team centric agile software developmen,: Xanpan, which combines Kanban and XP.
Going beyond projects is an interesting idea as everything we do is somewhat tied to doing things in projects. So, what's wrong with projects? Projects are temporary whereas software is forever. Projects have end dates which in turn is against the defining feature of successful software: it doesn't end. Software which is useful is used and demands change, stop changing it and you kill it. At worst the project metaphor leads to dead software, higher costs and missed business opportunities.
We should think projects more like a continuous flow where it's success isn't determined by staying on schedule, on budget, and with quality. We should concentrate on the value delivered and put value in flexibility as requirements change. This goes against the fixed nature of projects. Also after project you often break a functioning team and start all over again. We should put emphasis on teams, treat team as an unit and push work through it.
The other thing is that software is not milk. It's cheapest in small packages, not in big cartons. Software development has not economics of scale. Big projects are risk. Think small and make regular delivery which increases ROI. Fail fast, fail cheap. Quite basic agile thinking.
Now we have #noestimates, #nomanagement and #noprojects. Profit?
It was my first time visiting Tampere goes Agile and it was nice conference. 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.
#Trega15: Agile is mindset. Culture eats #agile. #nomanagement, #noprojects. Think small. Focus on benefit. Test & automate. Pair. Liberate.
Going beyond agile isn't easy as it's more about thinking than tools. Old habits die hard and changing the waterfall way of thinking isn't trivial. We should start with understanding our organization's health and changing the mindset of the organization to one that's more conducive for high performance. Switch from "project thinking" to "stable teams thinking" and change the power and influence structure from managing people to empowering people and further to liberating people.
The after party was at Ruby & Fellas but after early morning and couple of nice beers it was time to take train back home. But before that I had to visit the Moro Sky Bar with nice scenery over Tampere.
Software development is one of the professions where you just have to keep your knowledge up to date and follow what happens in the field. But as normal information overload is easily achieved so it's beneficial to use for example curated newsletters for the subjects which intersects the stack you're using and topics you're interested at. Here are my selection of newsletters for software developers covering topics like web and mobile development, user experience and design and general topics. For more newsletters for developers you can check what for example Dzone wrote.
Weekly newsletter of the best articles in Hacker News.
Hand picked round up of the best iOS development links published every Friday.
List of the best Swift resources of the week.
Short iOS app development nugget every Friday/Saturday. Short and usually something you can read in a few minutes and improve your skills at iOS app development.
Once-weekly email roundup of Java Web curated news by Eugen Baeldung.
A monthly newsletter focusing on Java performance issues, including the latest tips, articles, and news about Java Performance. Curated by Jack Shirazi and Kirk Pepperdine.
Weekly HTML5 and Web Platform technology roundup. Curated by Peter Cooper.
Roundup of css articles, tutorials, experiments and tools. Curated by Zoran Jambor.
Weekly roundup of web development–related sources, selected by Anselm Hannemann.
SitePoint's daily newsletter, which features the latest web development news.
Newsletter for designers, front-end developers and product managers.
Includes interesting and useful stuff Scott has found over the last few weeks and other wonderful things.
Biweekly email newsletter about current issues and trends in front-end web development. It is much like a commentory on the important current news and articles related to front end development.
Links to the best news and articles to hit the interweb during the week.
Weekly email of curated links to articles, resources, freebies and inspiration for web designers and developers.
Front-End Technologies" page which lists newsletters, blogs and people to follow.
Once–weekly e-mail round-up of Node.js news and articles.
Five links each week with the best UX writing, process, analysis, and critique from around the web. Its content lies at the intersection of user experience design, game design, and tech industry critique.
Monthly newsletter where the author will share ideas on how to improve customer conversion and ease of use.
To satisfy your web aesthetics with list of the 5 best design links of the day. The content is manually curated by a couple great editors.
Updates you monthly about the happenings in the UX/usability arena.
Best user experience design links every week, published every Friday.
Weekly slice of devops news.
Weekly newsletter on Web operations, infrastructure, performance, and tooling, from the browser down to the metal.
Weekly newsletter of articles regarding microservices.