Category Archives: java

Books Q2.2018

I read or listen at least one book per two weeks. I want to share the list with you. First of all it is always worth to recommend good book. Second I hope you could help me. Please write your suggestion into comments. Books from Q1

This quarter list:

Time Management Made Simple

This is a book, I read from time to time to remind myself about time management, what is important and what we should care about all the time. Rank your tasks (ABCDEF). Make a plan. Start from hardest task first. Do one task at the time. Etc. Some of the advice don’t work form me as Tracy is different personality type as I am. Anyway it worth to reconsider all the advice and apply that which will work. One problem with this book is that it might be compressed (many advice are repeated).

Key Takeaways:

    1. There are ton books on management, read it, but take parts which work for you.
    2. There is no silver bullet, adjust advices to suit your personality.
    3. Some books should be read again, because some advice are build on top of others, and this book is one of them.

Attempting Normal

This book is different then others on my shelf. It is very hard to me to write something about this book. For sure I recommend you to read or listen Marc Maron so you can juge this by yourself.

The Entrepreneur’s Toolkit

This course shows tools for an entrepreneur. What skills do you need to:  starting a business then expand it. As with all The Great Course books every chapter is packed with a lot of information. If Entrepreneurships sounds familar to you – you need to go through this course.

Chapters (key takeaways):

  1. How to Come Up with a Great Business Idea – who is your brilliant idea for?
  2. Understanding Your Market – who you compete with and how you can win?
  3. Prototypes-Making Your Idea a Reality – refine your business idea and prototype it.
  4. Defining Your Business Model – how you will make money?
  5. Picking Your Business Structure – decide about legal structure.
  6. Starting Your Business Plan – build the plan for your business.
  7. Market Analysis and Marketing Strategy – business plan: marketing portion
  8. Business Logistics and Operations – business plan: logistics and operation portion
  9. Organizational Structure and Management Teams – business plan: organization portion
  10. Income Statements and Balance Sheets – business plan: finance portion
  11. Cash Flow Statements and Performance Measures – business plan – what finance measurements are important.
  12. Conducting Risk Analysis – business plan: risk analysis portion
  13. Finishing Your Business Plan – polishing business plan
  14. How to Finance Your Business – financing stages
  15. From Your Home Office to Social Media – choose your office
  16. Starting a Family Business – cons and pros
  17. Buying a Franchise or Other Business – cons and pros
  18. Understanding Intellectual Property – patents …
  19. Managing Human Resources – HR strategy
  20. The Customer’s Experience and Your Brand – Brand Strategy
  21. Entrepreneurial Perspectives – four types of entrepreneurship
  22. Entrepreneurial Exhaustion – as I wrote long time ago – it’s more like marathon 🙂
  23. Entrepreneurial Leadership – widen horizonts.
  24. The Successful Entrepreneur – reinvent yourself to be happy and healthful

Small Data: The Tiny Clues that Uncover Huge Things

Lindstrom has possibility to barge into people’s house and analyse the contents of their fridge or the colour of their interior decor to inform the next big product launch or rebranding exercise. During his “study” he discovered a lot of “unusual coincidence” as example the story “How a toy stuffed bear in a girl’s bedroom helped revolutionize a fashion retailer’s 1,000 stores in 20 different countries”.

 

 

Key Takeaways:

  • People have multiple identities – mostly linked to desires:
    • what we had once but lost,
    • what we had dreamed about but never possessed.
  • We must not underestimate “fleeting human behavior” and immediately focus on the analysis of a growing collection of “cold information”. If we want to collect real insights, “large data” and “small data” should be “partners in dance”.
  • Companies are still prepared to devote a huge amount of time, effort and money to working out how to attract their customers.

Principles: Life and Work

Entrepreneurs and managers find many of the principles helpful in building an organization  focused on excellence. The book is divided into three parts. The first part discusses Ray Dalio’s personal background. The second part goes over Dalio’s life principles and finally work principles.

 

 

 

Key Takeaways:

  • Embrace the reality and deal with it.
  • Identify the root cause of these problems.
  • Discover people’s natural strengths and abilities.
  • Develop radical transparency in your organization.
  • You need others to provide you with clear, honest feedback.

Critical Business Skills for Success by The Great Courses (audiobook)

60-lecture course with comprehensive five-part:

  1. Strategy,
  2. Operations,
  3. Finance and Accounting,
  4. Organizational Behaviour,
  5. Marketing

It’s fundamentals of business, the same kind as MBA business schools.

Key Takeaways: it is impossible to summarize this in few key takeaways. Must read for everyone.

The four: The hidden dna of amazon, apple, facebook, and google

Amazon, Apple, Facebook, and Google are the four most dominative companies in the world. Every company owns something which made them special: luxury, capital, heart etc. Galloway claims that there is T-algorythm which make companies very successful.

Key Takeaways:

  • T-algorythm (Product differentation, Visionary Capital, Global Reach, Likability, Vertical Integration, AI, Accelerant, Geography,

 

Sternik Jachtowy i ISSA

Last but not least, I have an exam for Sailor so you know I had to read this.

 

 

 

 

Key Takeaways:

  • Safety is grand rule for everything!

 

Next Quarter

Next in Queue 🙂

  • The Complete Voice & Speech Workout
  • Naczelny Algorytm
  • Service Design Patterns
  • In The Plex – how google thinks works and shapes our lives
  • Scientific Secrets for Raising Kids
  • Power Positions: Championship Prescriptions ….
  • The psychology of Performance

Black Swan  (Andrzej suggestion) – have to wait for a while.

Grail Quest to find where went our productivity to (part two) ?

In Part one we talked about problems with productivity instead of great support from community, adding more resources, introducing scurm or other lean processes.

We end up with resource efficiency (engineers), today we follow the next problem with throughput.  In every company there are more project, more important things to do than people.

The number of projects we are working on (WIP) is growing. Worst of all is when the project with V.I.P. priority shows up guided by C-Level (board, owner). I saw the company that had assigned more than one project to developer.  I saw the company, which switch from the “only one important” project to another “only one important” project.

As you can guess the work of developers is not easy in such environment.

It reminds me my sister current problem with “developers”. She decided to build a house and so she hired a “crew”. Quite soon, she noticed that the work was not going as fast as she had expected (as scheduled). It turned out that “Team” has learned that from time to time they have to wait for materials (eg. cement, bricks, etc.), or her (the client’s) decision. So the team worked on more than one construction site (sells time to different client) to be fully utilized and to fulfill needs from different clients. Theoretically, a brilliant idea, in practice susceptible to all kinds of “deadline missing” or unforeseen events both positive ( bricks came earlier) and negative (delay in owner decision).

This causes a lot of tension between clients and  the “team”.  It ends up in losing trust. You probably smile now: how many times IT (“team”) is taking orders (“additional work”) from different departments: marketing, sales, CTO, CIO (“clients”).

IT tries to juggle from project to project, so they appear to move forward. Usually not fulfilling its promises, and many of the solutions are makeshift. This situation negatively affects mutual relationships. On the other hand developers themselves are also unhappy because many of their solutions are not implemented,  has poor quality, with technical debt growing exponentially (this is story for another post).

The conclusion is one: it is necessary to control the amount of work performed at the same time. Switching the work kills your productivity. It makes many things “not production ready yet”, and the code not on production is WASTE.

With greater focus we can deliver things much faster and in efficient way, and after delivery move to the next task. We may say that the more things you do at the same time, the less things are done.

Here we have “Little’s Law“, the law is completely unrelated to IT, but it is useful to determine the relationship between work is progress (WIP) and the speed of execution (Lead Time). We can define it as follows:

WIP = λ * LT

Where:

  • WIP = how much task is to do (work in progress)
  • λ = how fast new task comes
  • LT = how much time the task is in queue (on average)

Assuming we have constant processing speed.  As λ can be assumed as proportional to our throughput, which gives us the relation LT = WIP / Throughput. We can conclude that the more tasks we have, the longer it takes to finish them.

Please watch this movie now. After that even my grandmother understand WIP.

This movie reminds me how often we try to accelerate the development of software. We announce deadline and watch if developers can do it (even they are saying it is impossible). The quality of this software is very similar to that what you have just watched. In the end Project Manager comes and say: “hmmm you did it, let’s go faster” 🙂

“Deciding what not to do is as important as deciding what to do.”

Steve Jobs

Let’s remember this: it is worth paying attention to the amount of simultaneous work and the pace of adding a new one.

In this part we focus on work in progress. It shows up from both direction. From the team, which try to utilize their time, and from clients, who tries to push as much work as their can. Stay tuned for final third part.

By the way, as Tech Rebels we help companies go through technical hurdles. Just hire us, and we will bring your organization to next technical level.

 

JIRA Tuning – part one

There was a time when I did some JVM tuning. It’s time to reactivate the part of the brain responsible for this activity.

The key principle is to prepare a baseline. What is it?

The baseline refers to:

  • the first measuring mechanisms (np. gc.log) – we should measure on different levels (cpu, I/O, database etc) if in doubt follow thus rule: “more is better”
  • a load test script that makes JIRA work (e.g. Apache JMeter script),
  • a test environment – should be identical as production (different environment create different baseline), and,
  • a desired goal (we tend to tune solutions not having any goal). Never tune just for tuning.

The next required value is time… a lot of time. The reason is simple. We make only one change at a time and when it is completed, we launch load scripts and use metrics to see if we’re going in the right direction. The whole operation is based on making several steps forward followed by a few steps back.

Our recent goal was to make JIRA stable, despite working slow (no restart during the day).

We launched the analysis of gc.loc. Due to short pauses, we used the Concurrent Mark Sweep collector. Unfortunately, there are two sides of a coin. As CMS does not compact the memory, you may not be able to place any object in free spaces despite having free memory.

This usually results in the death of JVM – when looking for some free space, you do some cleaning, which takes pretty long time. This causes a “slashdot effect”. As a result you need more and more time, because of which the main GC works and the remaining part is stuck -> reset!

OK, we update two parameters causing CMS to start working earlier – usually, it is launched when the old generation is filled up to 68% (exact value vary depending on JVM version):

  • -XX:CMSInitiatingOccupancyFraction=40
  • -XX:+UseCMSInitiatingOccupancyOnly

Because of that, the whole commotion happens on the bottom of the stack. On the top, there is a place for larger objects. Obviously, you may (and will) experience a problem with stack fragmentation.

We launch load tests. The situation was better, but….

Unfortunately, we killed JIRA. The next decision is to limit the work of GC by reducing the pipe. We lower the maxThreads parameter on tomcat. We launch tests on one of the machines. Nothing happen. We add the second machine and start acting more aggressively. Result: although slow, Jira responds in a stable manner. This is what we were hoping for!

I may still try two other options:

  • -XX:+UseCompressedStrings
  • -XX:+OptimizeStringConcat

They were added in java 6u21 and 6u20. It is an interesting option, because it optimizes String-type objects, so that – whenever possible – it used 1 byte tables instead of 2 byte char tables. Most of the texts can be squeezed in a single byte. We check the memory usage histogram (previously 98% – char[]). This time a byte[] takes precedence over a char[].

In the meantime, the jConsole operator screams with surprise: “Pedro, what have you done?!”. This draws our attention (we think we’ve f… up something). Fortunately, all this hassle was about a 50% drop in memory usage. Uff, this is yet another confirmation that our switch is working.

Time to finish. We note down our ideas for later. Migration is in just two days. Quick help of our colleague gave us a new machine. We’ve finally got a place to use the G1 collector.