Image for post
Image for post

Archiving a GitHub repository via GitHub REST API is possible. However you can unarchive a GitHub repository only with the GraphQL GitHub API. Graphql.org is a good starting point to read about graphql.
This write up is about how to archive and unarchive GitHub Repositories via the GraphQL GitHub API. You’ll learn about graphql differences between the GraphQL explorer and the GraphQL GitHub API with curl.

Why?

I had to test code that archives a repository using the GitHub REST API. The only way to revert the repository archiving is GitHub’s GraphQL unarchive functionality. …


Image for post
Image for post

Kotlin’s type system is aimed at eliminating the danger of null references from code […]
Kotlin’s type system is aimed to eliminate NullPointerException’s from our code.

https://kotlinlang.org/docs/reference/null-safety.html

The possible causes of Null Pointer Exceptions (NPEs) in Koltin include Java interoperation. Recently I worked with Kotlin and had to use a Java library that throw exceptions.

This write up is about approaches how to deal with nulls and exceptions in kotlin.

The following approaches and related topics looked promising to me:

  • Exception Handling
  • Three special Kotlin types
  • Nothing
  • Unit
  • Any
  • Nullables
  • LateInit
  • NotNull Delegate
  • Sealed Class
  • Annotations — Nullable
  • Λrrow
  • Option
  • Either…

Image for post
Image for post
Photo by https://unsplash.com/@curology

Exploration is and always was part of the Reach-Now tech DNA. While we have an established way to publish code artifacts to an artifacts store, we are keen to learn more.

We picked

because both AWS and GitHub are used at reach-now tech for years. While AWS Codeartifact was announced earlier this summer, GitHub Packages are generally available since November 2019.

Reach-Now’s main tech stacks are Typescript and Kotlin. Our exploration published Kotlin/Gradle Jar files as well as NPM packages files. The exploration code is open source.

Publication Table

+------------------------+--------------------+--------------------+
| | AWS Codeartifact | GitHub Packages |
+------------------------+--------------------+--------------------+
| How to publish | CI/AWS CodePipeline| GitHub Actions |
| How to authenticate | Temporary Token | GitHub Access Token|
| How to fetch artifacts | npm scope for the | via package manager|
| | organization; | (gradle, npm) |
| | repository entry | facilities after. …


Image for post
Image for post

no time? jump straight to conclusion

Lazy is one of the delegated properties kotlin offers. Depending on which version of kotlin you use the lazy function call is compiled differently.
This post is about how Kotlin 1.4M1 optimizes the lazy function compilation and how you can leverage the optimization also in Kotlin 1.3.

A lot of Kotlin 1.3 (tested with 1.3.60/61) code that contains lazy function calls get compiled into classes that contain KProperties arrays.

A one liner like this:

val myLazyString:String by 
lazy(LazyThreadSafetyMode.SYNCHRONIZED) { "hi" }

can be compiled and decompiled. The decompiled code (using procyon) would be:

static final /* synthetic */ KProperty[]  $$delegatedProperties; 
@NotNull
private final Lazy myLazyString$delegate…


Image for post
Image for post
Color Code Eisenhower Matrix

no time? jump straight to conclusion

The Eisenhower matrix is a tool that helps to identify what to do next. The concept is mainly based on a balance of urgent and important topics. This concept exists for decades.

This post is up about tool categories that help to implement an Eisenhower matrix. The categories include:

  • Calendar Notebooks
  • Tables
  • Project Management Tools
  • Note Tools

Calendar Notebooks


Image for post
Image for post

Do you run Kubernetes on AWS?
Do you use EKS?

You may run EKS on Fargate because running EKS pods on the serverless Fargate computer service for containers is generally available since December 3, 2019.

If so, you probably also use the AWS ALB Ingress Controller.

This post is about ALB Ingress Controller CrashLoopBackOff s.

How does a ALB Ingress Controller CrashLoopBackOff look like?

kubectl get po --all-namespaces
NAMESPACE NAME READY STATUS
kube-system alb-ingress-controller-53d5561b73-azh3p 0/1 CrashLoopBackOff
....

— — —

kubectl describe pod/alb-ingress-controller-53d5561b73-azh3p -n kube-system
Name: alb-ingress-controller-53d5561b73-azh3p
.....
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning BackOff 96s (x86488 over 1d) kubelet, fargate-ip-00-000-000-000.aws-zone.compute.internal …

Image for post
Image for post

Why Top 8?

Actually there are 8 online resources I consider inspiring and interesting in 2019. However twitter and linkedin limitations made me post only a top 3 list:

So this one is the full 2019 Online Reading Resources list.

2019 Top 8 Online Reading Resources

Software Architecture is Overrated, Clear and Simple Design is Underrated

Second, there were no architects on the teams that owned the design.

@GergelyOrosz // gergelyorosz

The Leader as Coach

The role of the manager, in short, is becoming that of a coach.

Herminia Ibarra // @HerminiaIbarra & @Anne_Scoular // Anne_Scoular

How to Build Good Software

The main value in software is not the code produced, but the knowledge accumulated by the people who produced it.


Image for post
Image for post

Remote working has always been a practice at moovel (becomes REACH NOW). After the government announced that there will be a country wide lockdown, we, as Engineering team will try to accommodate the safety of everyone at the company by working from home. There are a lot of remote working guides out there to make it as efficient as possible but, we, as a team, think the following measures can help everyone.

Which measures enable us to work remotely?

Meetings with clear agenda points

As our current setup allows for unlimited calls, almost every meeting has a video conference URL attached to it. You can join however you like, app, mobile, web. Therefore, all meetings must have an agenda, giving them focus. …


Image for post
Image for post

GitHub Actions orchestrate workflows including CI/CD on the GitHub platform. Jobs defined within GitHub actions are executed on runners. You can execute your jobs on self hosted runners as a beta feature since early November. GitHub Actions self hosted runners can run on these operating systems: Windows, macOS and Linux. On Linux, four architectures are supported: x86, x64, ARM and ARM64. This post describes how to setup and run GitHub Action self hosted runners on AWS with Linux operating system on X64 architecture.

Why self hosted runners?

Self hosted runners allow you to execute jobs within the environment that you shape. Job executions that require access to not publicly available resources like persistence stores or event systems can be realized with self hosted runners that would not be available otherwise. …


Image for post
Image for post

“Writing is nature’s way of letting you know how sloppy your thinking is.”

- Dick Guindon

Problem Statement

I have been guilty of sloppiness in my thinking several times. This sloppiness was (and sometimes is) often reflected in conversations and meetings. Things are easier said than done — sloppiness of thinking influences decisions in the same way based on verbal discussions only.

How to overcome this sloppiness of thinking?
How to backup decisions with clarity of thoughts?

Background

Jeff Bezos proposed Narratives according to inc.com with a focus to replace slide decks with write ups latter called Narratives.

What are Narratives

Narratives are text documents. …

About

Lothar Schulz

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store