Heard Something, Read Something #2

This edition contains links I found from David Perell Newsletters. He is a great author and teaches people to write in his writing school named Writing Passage.

Heard Something

One of the best books about Productivity is Atomic Habit, written by James Clear. He wrote that we can reach optimal productivity by building upon small yet consistent habits. This approach lets you start small in building your productivity regime, using compound effects from your habit stacking. James Clear has a writing method that reflects his approach. You can see that in the video below.

Read Something

The first article was also found in David Perell’s newsletter. In this essay by Michael Nielsen, we will learn about how to perform good research. Doing research is a foundation for producing good writing. One interesting quote in this article relates to how we need to do basic/fundamental things in high standard consistently. It is told by one of McDonald’s employees.

I heard a story years ago in which a representative from McDonald’s was asked what gave McDonald’s the edge in the fast food industry. They replied that McDonald’s took care of the little things, like making sure that their restaurants and surrounds were always extremely clean. Representatives of other fast food companies replied incredulously that surely that was not the reason McDonald’s did so well, for “anyone could do that”. “But only McDonald’s does” was the response. The heart of personal effectiveness is not necessarily any special knowledge or secret: it is doing the basics consistently well.

The next article is long, explaining methods we can exercise to remember everything we’ve read. The writer is kind enough to provide us with the TLDR version on top of the article.

But if you only remember six things after reading this article, it should be the following truths about reading:

  1. Quality matters more than quantity. If you read one book a month but fully appreciate and absorb it, you’ll be better off than someone who skims half the library without paying attention.
  2. Speed-reading is bullshit. Getting the rough gist and absorbing the lessons are two different things. Confuse them at your peril.
  3. Book summary services miss the point. A lot of companies charge ridiculous prices for access to vague summaries bearing only the faintest resemblance to anything in the book. Summaries can be a useful jumping-off point to explore your curiosity, but you cannot learn from them the way you can from the original text.*
  4. Fancy apps and tools are not needed. A notebook, index cards, and a pen will do just fine.
  5. We shouldn’t read stuff we find boring. Life is far too short.
  6. Finishing the book is optional. You should start a lot of books and only finish a few of them.

This is sure a lot to learn in one sitting. So here’s the article for further reference.

That’s all for the second edition.

Heard Something, Read Something #1

I am trying a new approach for posting content in my blog, where I will share something I heard or read these past weeks that interest me. I found this approach from Jason Fried of Basecamp, where he posts series of contents in this format. This kind of post can also act as bookmarks, so this is the right approach for saving good content from around the Internet.

Heard Something

I found this podcast episode from Gene Kim thread on Twitter. I immediately subscribed to this podcast and listened to several great episodes. For this post, I would recommend the gateway episode. This episode talks with Richard Hipp, the creator of SQLite. This episode opened a whole new perspective of doing software testing, learning from others, and creating an entire business from doing open-source software.

The Untold Story of SQLite

Read Something

I am trying to read more books this year, especially fiction books. So, I am looking for a good fiction book to start. I found from several sources that The Alchemist from Paul Coelho is a great book. So that’s what I did, I read The Alchemist, and it is a great book. This book is suitable for self-reflection. It made you think about your dreams and journey to this day. Several people call this book sucks because of being too dreamy and optimistic in your life. Still, I think this book is excellent to read in this pandemic time.

That’s all for now.

Easy application deployment with OpenShift Container Platform

OpenShift Container Platform (OCP) is an enterprise-ready Kubernetes distribution from Red Hat. OCP enables companies to run production-grade applications with ease. OCP can run on top of any infrastructure, from bare metal servers to public cloud providers.

OCP provides many options for the developer to deploy their applications on top of OCP. All available deployment options in OCP are in this picture below:

Application Topology View
Application Topology View

This post will talk about one deployment method in OCP, which eases the process of application modernization. This feature is From Git deployment option. We can import/deploy our legacy application to run on top OCP without any required knowledge about containers or Kubernetes before. We can lift and shift our application into a modern platform quickly.

Using From Git feature is very simple. All we need to supply is our Git repo URL to OCP and also configure our application name. OCP supports public and private Git repositories. You need to provide an access token for a private Git repository using the Secret feature from OCP.

OCP will read your Git repository content, then recommend the most suitable Builder Image for your application. There are builder images for Perl, PHP, Nginx, Httpd, Golang, Ruby, Python, Java, Node.js, and dotnet Core. We can see the form in the picture below:

From Git deployment details
From Git deployment details

For this particular example, I will try to deploy a simple Python application built on top Flask framework into OCP. You can access the Python application from this Github repository. This application provides API returning books object.

You can see that OCP will access our supplied repository and inform us when no errors occurred on accessing Git repo in the picture below. By default, it will try to access the main or master branch first, but we can specify a branch, tag, or event commit Id.

OCP validates Git repository
OCP validates Git repository

The next step is OCP will recommend a Builder Image for this application, based on the repo content. In this case, OCP recommends using Python builder image, with several versions available as options. We can choose a Python version suitable for running our application; we will use Python 3.8 for this example.

Python Builder Image
Python Builder Image

You will need to input Application Name to group several applications in your topology. Also, you need to supply Name for this deployed application. We will keep the default option for Resources. OCP also will create a route so we can access our application from the Internet.

Options for Deployment
Options for Deployment

We can configure other advanced options, but let’s deploy it now. We can monitor the progress for deployment in the Topology view.

Application in Topology View
Application in Topology View

We can see more information about the progress by clicking the app. We will see all details related to the deployment, starting from Pods, Builds pipeline, Services, and Routes configuration. All of this information is presented in easy to learn and navigate user interface. This single web console is the most significant added value in OCP.

Detailed information for application
Detailed information for application

After waiting for several minutes, we will see that our application is running. We can test it by accessing it via the URL provided in the Routes section. And voila, our application is now available and deployed on top Kubernetes platform, without creating any configuration for Kubernetes resources.

We can scale our application quickly too. In this example, we will scale our app to run three pods. All requests to these pods are managed automatically and balanced between these pods.

Scaling Up Application
Scaling Up Application
All 3 pods are running
All 3 pods are running

We can explore many other OCP features, but it can be hard to set up your OCP cluster. OCP requires quite significant resources to run, and it can lead to expensive billing. In this post, we also want to introduce Developer Sandbox for Red Hat OpenShift, the newest attempt from Red Hat to ease your container journey to OpenShift Container Platform.

Developer Sandbox for Red Hat OpenShift provides a dedicated OCP cluster for you developers to learn about OCP and other Red Hat technology. You can also develop your application directly using CodeReady Workspaces, a cloud-native IDE. All you need to do to have these is register to the Red Hat Developer site. You can also find other tutorials, i.e., creating microservices in Java or creating apps using Node.js. All of these tutorials will run on top of OCP as well.

That’s all about deployment using From Git in OCP. It is an excellent method for migrating legacy applications into modern platform.

Pandemic and Content Consumption

As you all know, 2020 is full of surprises. I had read in December 2019; there were several cases of an unknown deadly virus in Wu Han, China. I remember treating it lightly, probably just some fake news or wrong translation from a Chinese news site. We started seeing similar symptoms in other provinces in China, and that’s when I knew that this was not a joke. This virus is serious problems, and in just a blink of an eye, our lives change upside down.

Fast forward to November 2020, and I am writing this from my home office desk. I’ve been working from home since March 2020. There was a surge in infection cases in Jakarta, and our province decided to go lockdown. We have two lockdowns and three controlled transitions. It is hard for us, but we need to stay at home because vaccines are not yet approved.

So for the last eight months, we are trying to find a way to kick our boredom. We try to enjoy ourselves at home, but it is getting harder every week. I tried to keep my family at home because we are in a high-risk category. We are trying to minimize the occasion to go outside. Even I haven’t seen my parents face to face during this WFH time.

We tried several methods to stay active and happy at home. We used to do some stretching and jogging in the morning, but we stopped because we got Dengue Fever. To stay healthy, I purchased the Nintendo Ring Fit game so that we can play while exercising. I must say it is quite enjoyable. However, I am distracted by the new expansion of Pokemon Sword/Shield.

We have this tradition to have weekly dinner and watch movies at Cinema, but our favorite place was flooded at New Year’s, and they have been closed ever since. I felt sad for them because it was close to our house. To replace that tradition, we routinely order food using Go-Food. It is quite lovely; actually, we can experiment, trying new food.

I followed several food bloggers on Instagram, and we ordered several dishes they recommend. This online food service saves us in this quarantine time. To keep it safe, we heated every food in the microwave before eating them.

For enjoying new movies, it is more expensive than enjoying new kinds of food. Movies have complicated distribution related to copyright, so if you want to enjoy movies legally, you will need to have several subscriptions. We already have Netflix and Amazon Prime Video long before the pandemic. But since this pandemic, a lot of companies are trying to get some portion for this business. Since cinemas are closing, they need to find new ways to distribute the movies, and streaming is the most plausible idea. So by that premise, Disney is also joining the bandwagon. So we now add Disney+ to the list of subscriptions because the newest movies are in Disney’s possessions.

Another content we enjoy is music. We have an Apple Music subscription and Spotify subscription, but I found it is easier to find new music on YouTube. My wife also loves to watch M/V on YouTube, so we are both avid users. After having some discussion, I decided to purchase a YouTube premium.

So to the summary, in this pandemic, we have:

  1. Apple Music
  2. Spotify Family
  3. YouTube Premium
  4. Amazon Prime Video
  5. Netflix
  6. Disney+ Hotstar

Amazon Prime Video probably is not a very popular choice. I got this subscription as part of my Amazon Prime membership. But they have interesting original series, i.e., Grand Tour, The Man in the High Castle and The Boys.

Disney+ is not available in our country, but they have collaboration with Hotstar. We are getting the same movies and series.

We sure have many subscriptions, but we are doing anything to keep happy at this time.

Some Life Updates

So this blog has not been updated for a couple of months. It is really not according to my plan, which is regularly updating this blog. But it is tough to be disciplined.

So a work-related update, I now have a new job. After spending 5 years in a startup, I am moving again to the corporate world. I joined Red Hat Indonesia as a Specialist Solution Architect. I was assigned to focus on Application Development-related products in Red Hat.

Red Hat is a very unique company. It is very well known for its Red Hat Enterprise Linux, a variant of GNU/Linux tailored for the enterprise environment. Red Hat is very devoted to Open Source; they apply the open-source model to everything. All products are based on upstream versions of open source, where Red Hat performs improvements and tests to produce enterprise-grade software solutions.

I am on my third month here, and I am thrilled with Red Hat. Red Hat adopts open culture, where every crucial business decisions are discussed openly, so everybody can contribute. It is a fascinating culture for an organization with a large number of associates.

I am still learning so much about its products. I need to work harder because I don’t have any sales-related background. But right now, I have a great manager and teammates helping me. I really hope to learn many things here and pave my way to contribute to open-source software.

Post WWDC 2020

It has been a month since Apple held WWDC 2020. I wrote some wish list before in this post. Let’s talk about impressions from this first online WWDC ever.

First, I love the new format! It is easier for me to follow all the sessions compare to previous year. Apple has done great job, providing with great streaming videos. Apple also updated their Apple Developer App with great features to support online format.

There are big updates for all platform. But this year WWDC finally give necessary update for the macOS. I am happy and thrilled to see macOS Big Sur. But l am sad that my Mac Mini are out of list supported hardware. New macOS also increase the version to 11 after 20 years. They introduced new design language, bringing some from iOS. I love new look, but as usual not everybody is onboard new changes.

Biggest news this year is transitioning from Intel to Apple Silicon. I am not really surprised with this move, since Apple already pave this way for last decade. I saw several benchmark where iPad Pro kicked Intel-powered MacBook Pro to dust. I also sense that there is problem in Intel, they are being overtook by AMD in desktop CPU, and Apple in mobile CPU.

As long as I followed Apple stuff, I can’t remember when they stop transitioning. I knew Apple in 2007, time when they started Intel transition. They continued transition in software, start from moving from 32-bit to 64-bit, adaptive size classes, Objective-C to Swift, Storyboard to SwiftUI, and many more. They just don’t stop, keep moving the platform forward.

I have installed iOS 14 and iPad OS 14 in my daily drivers, right from public beta started. It has been smooth ride and I am waiting for WatchOS 7 public beta. I love the new widget features, especially Smart Stack and Siri Suggestions. On iPad OS 14, Scribbles capability really blows my mind. I am using my Apple Pencil more and more, and having fun to write into any input.

As from my wish list, I am still (patiently) waiting for better external display support. Also probably capability for iOS/iPad OS to be able manage multiple audio input / output source. I love using my iPad for attending Zoom, and I experienced myself it is hard to record audio session in webinars or meetings.

I am happy that several things are finally arrived, but still limited. I love how you can change default app. Altough only for Email and Browser app. But, my wish related to improvement for Spotlight, and Web Extension framework for Safari are coming this year.

From developer perspective, I am happy to start learning about SwiftUI. The framework is growing and bringing many features related to UI development. I can build good interface using several lines of code. Apple really doing good job with SwiftUI. As backend developer myself, I also love to see that Apple also develop AWS Lambda library for Swift. I must say, Swift is coming a potential cross-platform. I prefer to code in Swift (or Kotlin) than JavaScript. I really like static typing language.

There are lots of improvement across all platform. I am really excited to learn and see what new apps will come in the near future. Now, back to learn Swift!.

Posting from Ulysses

I am trying to make writing a habit, yet I am not updating this blog for a month. Now, I am looking for ways to post without having to open WordPress.com editor. I used to blog using desktop app before, I used desktop client in Linux (I forgot the name). I found it is easier and faster to write than loading web interface and write on the editor.

I am experimenting using Ulysses as my editor for blogging now. Ulysses is great for writing long-form. I purchased Ulysses through SetApp subscription. SetApp is a nice subscription system for macOS apps from MacPaw. You might know them from CleanMyMac app, also included in the subscription for obvious reason.

Ulysses has integration features with popular blogging platforms, including WordPress. All you need to log in using your WordPress account and you can start writing. If you are using your WordPress using 2FA (Two-Factor Authentication), you will need to generate application specific password so Ulysses can interact with WordPress API.

WordPress itself also provides a desktop application, but I prefer to use tools I am familiar with first before trying new methods. We’ll see how this experiment goes in the next few weeks. I have so many ideas I want to write, but always hit the great wall of laziness.

WWDC 2020 Wishlist

WWDC 2020 will be a streaming event due to COVID-19. It will be aired on live tonight (00:00 GMT+7). This is exciting to have live streaming for event this big. I am excited to see how iOS, iPadOS, tvOS, WatchOS and macOS are moving forward.

My Wishlist for this year release are:

  1. Better external display support for iPadOS. It is painful to see when you project your display into a 4K monitor, and all you can see is a 1280-800 picture. Please give us options for external display resolutions.
  2. Support for extended display mode. I hope this can be done this year. Having extended mode will be awesome, and I think really can push the iPad as a desktop replacement.
  3. The ability has to replace default apps in iOS. No further explanation.
  4. Ability to have other browser engines in iOS.
  5. This is a particular wish, but I would like to iOS to have the ability to manage audio source and output. I wish I can still listen to short clips on twitter while I listen to my podcast. Or I can mute some apps while others are not. It is like SoundSource from Rogue Amoeba.
  6. I like to have Alfred-like capabilities in the iOS spotlight. It will be awesome to have the ability to invoke system commands to control devices. Want more awesomeness? Open the possibilities for people to write plugins for iOS Spotlight.
  7. This is Shortcut related wish. I am using Shortcuts in Safari to restore video control when I am watching a video. But I need to trigger that every time, and it is tiring. I wish Shortcut will have the ability to run automatically when I opened some website. This kind of ability would be excellent.
  8. Apple Pay related wish. Please oh please come to Indonesia ASAP.
  9. Also for ECG capability in WatchOS. I want to give my parents Apple Watch for them when this feature is available in Indonesia.
  10. Xcode Lite? Probably like CodeRunner.
  11. Better Safari for iOS. IPadOS provides a desktop-class Safari browser in iOS 13; I tend to use the web version of an app more and more (I am looking at you, Google Docs). I love how you can also use Apple Pencil as a pointer, but it would be awesome if I can use it for things like sign a document, highlight text in the browser, etc.
  12. Please give us better text selection. It is hard to do, even in large iPad with latest software.

Woot, lots of wishes. I know this year is chaotic, but if I really want to have my top 3 this year. Let see if Apple delivers them tonight.

Designing Microservices

It started from this question in StackOverflow about dependent microservices. I followed several references and found interesting things related to system architecture. I put those here for future references.

There is a model we can use for scalability, named Scale Cube. It has 3 (three) dimensions:

  • X-axis – Horizontal Duplication – Scale by Cloning
  • Y-axis – Functional Decomposition – Scale by Splitting Different Things
  • Z-axis – Data Partitioning – Scale by Splitting Similar Things

Defining Service Boundaries are necessary for creating good microservices. There are several references for this:

Building good microservices is hard, but it is not impossible. We need to do proper design and great discipline on defining boundaries, so we can scale our system easily.

Stand on the shoulder of Giants

I ❤️ this quote. I found this quote long time ago, where I am very passionate doing research work.

“If I have seen further it is by standing on the shoulders of Giants.”

Isaac Newton

Being a researcher is not an easy work. You need to read a lot of references and doing lots of experimentations. All of those are based on previous researchers’ work. Their contributions are your stepping stones to push science forward. They are giants that you’re standing on.

I think this quote is not only available to research field only. All of our lives, are built upon previous generation’s contributions. Our founding fathers and heroes gave their lives to make sure our generation is in better state than theirs. To think that my generation will (or already) take up the torch to set foundation for next generation.