61st Monthly Technical Session (MTS) Report

henry lie
henngeblog
Published in
5 min readOct 3, 2019

Every month, HENNGE holds a mini-conference called the Monthly Technical Session (MTS for short). Members of different teams take turns giving talks with the purpose of sharing knowledge.

The 61st MTS was held on August 23rd, 2019.

“DroidCon SG” by Michael & Hayashi

The first talk was given by Michael and Hayashi. They shared what they learned from attending DroidCon in Singapore at July 2019. Considering that Android development moves at a very fast pace, somebody suggested that they attend the conference to get to know the latest trends. It also allows them to get to know other developers and share their experiences in developing for Android.

DroidCon SG 2019 was held over two days, and it had 22 sessions in total. It covered many topics including libraries, testing practices, programming languages, team building, and so on. Hayashi explained in detail about some of them including:

  • New app publishing format that builds optimized APK for each device upon download. For example, it will only download resources relevant to the user’s preferred language, device screen size and processor architecture.
  • Firebase is a service for mobile or web apps that provides analytics, database, remote config, crash reporting, etc.
  • Kotlin is a multiplatform language that has become the preferred programming language to develop in for Android applications. It allows for less code, null safety, the use of the latest API and features, and interoperability with Java.

“In Plain English” by Dima

Dima takes us back to the roots of the English language. Apparently, the English language has contributions from numerous other cultures and geographical locations such as from Celts, Romans, Germans, Vikings, Normans, Renaissance, Latin, Greek, French, Italian, Spanish, Persian, Yiddish, Sanskrit, etc.

He then continues with some trivia; his favorite letter is “CH”, because the combination of letters can be pronounced in many different ways depending on the word. This includes /tʃ/, /k/, /ʃ/, /x/, etc. Finally, he talked about the term for “converting from another language into English”. Instead of using “Englishization” or “Anglification”, we can use “Englished”, because Shakespeare used it once ;)

“The Science behind Pixar” by Michelle

Michelle gave a talk about Pixar’s exhibition she went to in Tokyo. She started from a short history of Pixar, and then shared a bit about her fascination with CG animations. It all started when she took the Computer Graphics class at university. There, she found that creating computer-animated graphics out of nothing is a long and meticulous process.

In animation, there are 9 stages in total. It all starts from the story & art stage, where plot, pacing, and even camera angles are fine-tuned. After that, the modeling comes next. Modeling something starts from vertices and edges, gradually growing in complexity into a wireframe, and finally into a mesh. Models then go through the rigging stage. If the mesh is like the skin and flesh of a character, then the rig is like the bones and joints that move the character’s mesh. It will then move on to the surfaces stage, where artists define how each surface would behave under the effects of light.

The next stage is sets & camera, where we need to create every object in the background like trees, grass, and even their swaying movements! We then continue to the animation stage, where animators determine how each object should move. The next one is a simulation, where we use calculations to animate minor parts of the scene so that the animators can focus more on the creative parts of the animation. After all that is done, we enter the lighting stage where we simulate natural lights to add proper shading to each object. Finally, the last stage is rendering where we synthesize 2D images from these 3D models. This final step will actually determine what color should be shown by each pixel.

“Chaos Engineering Day held by AWS in Tokyo” by Toshi

Toshi gave a lightning talk about an event that occurred earlier that day, where one of the Availability Zones in AWS’ Tokyo region encountered a problem. This issue affected a lot of our services. One service instance went down, another service’s search DB got affected, and another service got totally cut off from its end users.

This time, we communicated the issue internally via the company’s Slack channels, and externally via our product’s status page. Coincidentally, the main engineer of our most affected product was taking that particular day off! We tried many things from monitoring the EC2 and ELB tabs, checking application logs, tweaking configurations, and trying to create another cluster. From that day’s incident, we learned a lot of things about our collaboration workflow and how we can improve it so that we will be better prepared should another incident happen in the future.

“Removing a Field in GCP Datastore” by Xudong

Xudong gave a lightning talk about GCP datastore. We encountered a problem when trying to remove a field. We are using a Go datastore with GCP which has a very permissive API for creating fields. However, when you try to remove a field, GCP will throw an error.

The way to resolve this issue is using the PropertyLoadSaver interface. Basically, when we have a struct with unnecessary data, we implement the interface by loading the struct and then saving it. When loading your struct, we should ignore the properties that we want to delete, and then save it. After deploying it, we should create another script to delete the field on the datastore, remove the property from the original struct, and redeploy it to resolve the issue.

As usual, we had a beer bash afterward :)

--

--