Categories
Software Technology Uncategorized

Geecon 2016: Java 9, Spring and the Nyan Cat

Our goal for GeeCON 2016 was to broaden our knowledge about topics we encounter on a daily basis at work. We chose talks concerning Java 9 (and 8), microservices, reactive programming and Docker. Here are a few words on some of the most interesting and inspiring ones.

Tomek

I’ve heard that Sven Peters is a great speaker so without hesitation I chose his Rise of the Machines – Automate Your Development. What a talk it was! Passionate delivery and beautiful slides (do check them out) combined with inspiring content gave me lots of ideas to improve our daily development processes at Espeo. The general idea is to automate all mundane and repeatable processes that do not require human interaction and creativity. The key is to look further than the usual CI/CD tools. I thought that at Espeo we were pretty well automated already but now I know we still have room for improvement. Which is great and I can’t wait to implement a bot or two.

We’ve had Java 8 around for some time now and the direction is ever-changing towards functional programming. But do we really know how to do it and what price we may pay? That’s what Daniel Sawano and Daniel Deogun wanted to explain in their talk “Beyond lambdas – the Aftermath”. It was a code-only presentation and that’s what really matters to us, programmers. They gave us many examples of bad code and showed ways of how to refactor it to remove code smells and side effects. They outlined where the functional style might introduce hidden complexity to our code (coders love those one-liners), generate unnecessary function calls etc. Have you ever analyzed the bytecode of a lambda? Well, at the presentation we did. We learned how to avoid stateful lambdas and how it affects the runtime performance. All in all, a very rich-in-content and detailed talk.
Geecon 2016: Java 9, Spring and the Nyan Cat

Iga

This year’s Geecon was a little bit less interesting than the previous one but I found some interesting speeches. The best one was about Java 9 and its modularity. The runners-up were the charismatic speeches of Josh Long about Spring.

During only 50 minutes, Josh built a brand new application with RESTful services, a pretty GUI and well-designed architecture – all using Spring Boot, convention-over-configuration framework. In another amazing 50 minutes he talked about Spring Cloud – tools for developers to quickly build some of the most common patterns in distributed systems. Examples: configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state. All of this was mentioned in context of microservices – a concept highly recommended and praised, but one which can lead to architectural complexity. In his amazing talk, he talked about how organizations like Ticketmaster, Alibaba, and Netflix cope with this complexity with Spring Boot and Spring Cloud.

What was especially interesting was his incredible performance and fluency in writing good code in an extremely short time. Everyone was amazed of how quickly and easily he created working application using those tools. He is also a very talented speaker. The audience laughed many times during his hilarious jokes and funny tricks like changing the Spring logo to the Nyan cat during the build process. If all speakers could talk about software in such funny and interesting way, showing both great tools, great tips and great jokes – Geecon would be the best conference in entire world.
Geecon 2016: Java 9, Spring and the Nyan Cat

Michał

“Java 9 Modularity in Action”. The Java world has been trying to tackle modularity issues for a long time by initiatives such as OSGi. Yet, they were never highly adopted because of the effort needed to actually understand and use these tools. Project Jigsaw, the highlight of Java 9, promises to deal with the problem of modularity at its roots. Project Jigsaw proposes a revolution by getting rid of classpath and introducing a new concept of highly encapsulated modules (so now we will have a… modulepath). These modules will (or rather – should) only expose interfaces to talk with the outer world, and no implementations. Apart from good modular design, which should be a goal in itself, it also solves some annoying problems like the clash of different versions of the same class on the classpath. Of course, to provide backward compatibility, some tools will be provided to make the transition to the world of Jigsaw more painless. The modules for legacy code will be generated automatically. I was surprised to see a live coding session during this talk, and see this modularity concept working, even though it is still some time before Java 9 will be released.

Nobody expects the Spanish Inquisition, and nobody from the Geecon team expected such an interest in the “Java and Docker, a Good Idea” talk by Christopher Batey. The room was packed to the brim with Docker-hungry programmers. Despite the name of the talk, it was not about the question whether to use Docker with JVM or not. It was focused on the not-really-obvious traps to avoid during running JVM inside Docker containers. especially under high load. For instance, subjects like operating near memory limits and page swapping limits were covered.
Geecon 2016: Java 9, Spring and the Nyan Cat
There were many more interesting talks on e.g. event sourcing, reactive programming in general and in detail (RxJava), as well as a bird’s-eye view of microservices and gore implementation details. Plus some interesting concepts like self-healing systems and many performance-related talks. Want to know how storage works? How do traditional HDDs work and how they differ from SSDs? What’s coordinated omission in performance testing and why does it matter? Not to mention Big Data topics (we wrote about those too!). All that and much more on GeeCON. Now let’s put theory into practice and see you there next year!

Categories
Uncategorized

A Glance at the Apple Watch: Nanotasking to smartwatch gaming

In December, I attended Glance Conference in San Francisco, an event focused solely on the Apple Watch and its future – and the financial opportunities that surround it.

apple watch

The Apple Watch and fashion, games – and glanceable UI

There were several panels and presentations that stood out. One panel focused on the fashion aspect of the Apple Watch. Wearables should definitely be aware of this dimension, and Apple seems to handle the cool factor well. One of the journalists on the panel pointed out that the Apple Watch is such a luxurious accessory by itself that some fashionistas don’t even bother to set the time on it!

apple watch glance

I was especially impressed by the Finnish game developers Everywear Games present at the conference, who demonstrated how well games could work on the device. It seems a very bold statement that the smartwatch will ‘revolutionize gaming’, on the other hand, I’m very curious to see where it can go in the next few years. Josh Clark’s visually brilliant presentation on glanceable UI was often mentioned in the media afterwards. The characteristics of interactions with the smartwatch are very different than those with the smartphone (7 second ‘nanotasking’ versus 38 seconds – that calls for a completely different approach in app design as well).


apple watch glance

Investors

The investors were slightly more skeptical about the smartwatch’s business potential, citing the impossibility of unpairing the device from the iPhone as its biggest drawback. Clearly, the target group for the ‘iWatch’ seems to be iPhone users. While this doesn’t seem to be a major problem for Apple-sporting Americans, the Asian market is dominated by Android devices. What’s more, one of the commonly asked questions was whether people  truly need the Apple Watch when they have everything at their fingers on the smartphone. And what about those who just aren’t used to having anything on their wrists – will those who have worn regular watches before be more likely to strap a smartwatch on? I would say yes. Competition with activity trackers (like the Fitbit) was also discussed. Nevertheless, how Apple deals with those issues still remains to be seen. Philip Elmer-DeWitt summarized those concerns succinctly: seems like the investors are waiting for Apple Watch 2.


apple watch glance8

Hard numbers

It was great to be in what felt like a group of pioneers – many of those present were early adopters, eager to discover something new. Naturally, the conference didn’t start and end with just presentations, as there was plenty of time for more personal discussions. The excitement was definitely palpable, but – as I’m sure many did – I was waiting for the hard numbers. Just how well is the Apple Watch doing, and how satisfied are those who purchased it? Apparently, it’s doing tremendously well (Apple is taking the lion’s share of the smartwatch market, and is estimated to sell 8-12 million watches this year), and user satisfaction – measured by Wristly’s Bernard Desarnauts – is very high for a first-generation device. I wasn’t surprised by the latter, considering we’ve already mentioned Wristly’s research in our report, but it was interesting to see the most recent numbers on Apple Watch use, including the relationship between weight loss and using the Watch.

apple watch glance7

With such an early market, it’s natural that there are still doubts, and more questions often asked than answered. On the other hand, what I’ve heard at the conference convinced me that there is tremendous potential in the device, and I’m confident that Apple Watch apps can be strong products.

Categories
Uncategorized

How to hire a software developer? There’s really nothing easier!

Find some time – or someone who will take care of the hiring process. Pay. Find someone who will be able to verify the candidates’ technical knowledge. Pay. Map out the recruitment process. Work out how you’ll create the candidate database. Create the ads. Publish them. Pay.

Look for candidates in groups and on dedicated websites. Call. Ask questions. Put together a shortlist. Update it. Schedule meetings. Conduct first interviews. Find a common tongue. Read the CVs. Compare portfolios. Check out LinkedIn and GitHub accounts. Second round of interviews. Evaluate the candidates’ personalities, communication skills, technical abilities, problem-solving skills. Verify code fragments.

Third round of interviews. Present offers. Negotiate. Give them what they want. Get them interested in the project. Present opportunities for growth. Make the decision before the candidate is snatched up by the competition. Prepare the agreement. Onboarding time. Run a test project. Evaluate.

Congratulations, you’ve found the first member of your team. Repeat the process to find the next developer. And the next.

Succeeded?

Now you can start your project, but never forget about human resources, or: managing employee agreements, ensuring that they have plenty of opportunities for growth, motivating the employees, evaluating them on a regular basis, managing vacations and days off, looking for substitutes, verifying those substitutes, managing onboarding plans, all random occurrences and employee rotation.
Always keep in mind that your competition never sleeps, and their offers might end up being more lucrative than yours.

What about co-operating with an agency that will find people for me?

Go ahead, but here’s what you need to do…
Find someone who will find an agency. Pay. Verify agency. Establish co-operation. Wait a few weeks. Find some who will verify the candidates’ technical knowledge. Pay. Verify. Negotiate. Hire. Pay the employee and… the agency. Repeat. Start the project. And pray that you’ll be able to keep those developers for at least a few months.

What about a software house?

Find the company, verify their experience and references. Check out the team they’re proposing. Negotiate. Ensure that certain guarantees, a safe agreement and an advantageous accounting model are agreed on. No fixed costs. Control the budget. No worries about changes in the team. Focus only on your business. Start the project immediately. Develop project. Supervise the work. Pay. Get your ROI.

Is there a software developer you know that can help you out?

It should make things easier, but will they be able to cope? Live up to the expectations? Won’t they be bored? Or get a better offer? Will your friendship survive this co-operation? Give it a try!
Easy, isn’t it? Don’t forget to tell us what you think!
author: Błażej Jelonek

Categories
Uncategorized

5 things you need to know about remote software development

Many great albums have been made with the musicians involved never meeting in the studio. Instead, they would send in their recorded tracks, or just work individually. The mix and mastering finally would make it all come together. Those records were no less magical. 

This kind of remote co-operation can also work in the IT industry, where the client’s HQ and the development team is separated by hundreds (or even thousands) of kilometers.

Long distance relationships for beginners

The distance between partners – or the time difference – can only be a formality. Yet before you start working with a company supplying remote software development teams a few things must be considered:

  1. Communication

This seems obvious. However, remember that it’s not only the issue of communicating with your partner’s representatives, but also the entire hired team. It’s good to check in advance if the company allows for direct contact with the developers – and if they speak the client’s language.

  1. Working methods

Does the potential partner use software development methodology that’s familiar to the client, or at least popular in the client’s country? Also, it’s worth knowing whether the potential partner is ready to have their developers working in the client’s head office for a period of time.

  1. Technologies

Naturally, it’s hard to associate a country with a particular technology, but it is worth checking if certain solutions suggested by the partner aren’t just a little bit too unusual. A good partner should propose a technology that will maximize the effects of your solution.

  1. Experience and long-term partnership

A history of long-term co-operation with clients from various countries is evidence of:

  • The agility of the contractor,
  • Trust: if so many clients placed their confidence in the contractor, it has to mean something!
  • Experience: knowledge gained from many different markets.
  1. Transparency

This must be approached from a few angles:

  • Does the partner familiarize the client with the processes and method of work?
  • Does the partner supply the CVs of people assigned to the project?
  • Does the partner supply the tools for an ongoing progress assessment and project calculations?
  • Does the partner start the co-operation with delivering an MVP, and is it guaranteed that the collaboration can be tested before any major decisions are made?

The verification of all those issues can be an obvious (but necessary) first step: either to realizing that remote software development-based cooperation can be very successful… or that it can be as bad as working with the people next door.
Naturally, some issues I’ve touched upon require elaboration. We’ll discuss co-operation control methods and risk-minimizing in a later post.
Opinions? Questions? Drop us an e-mail!