52nd Monthly Technical Session (MTS)
On November 16, 2018 (Friday), we at HDE, Inc. held our 52nd mini-conference known as Monthly Technical Session (MTS). As in the previous sessions, developers from different teams in the company shared their thoughts and ideas on various topics. The following is the summary of the talks presented in the session.
“PyCon Indonesia 2018” by Bumi
The first talk was a report about PyCon Indonesia given by Bumi. Bumi attended PyCon Indonesia as a speaker at the beginning of November to talk about “Modern Tech meets Traditional Music: Enhancing Angklung Performances with Python.” In this report, he shared about his experiences, thoughts, and talks that he finds interesting in the relatively young conference.
“Snakify — how a side project turned into basic income” by Vitaly
Snakify is a service that provides interactive exercises for beginners to learn programming in Python. Vitaly built this service about six years ago to help him to teach introductory programming classes in high school. In this talk, he talked about how this service evolved from a site that is hosted in one of the servers in school into a service that helps thousands of students to learn Python. The best way to learn is by doing. If you are just getting started to learn how to code, have a look at Snakify and support Vitaly!
“Customizing Google Forms” by Jennifer
Google Forms can be a very useful tool when we want to collect information from a group of people. It can be set up in a very fast way and the data can be collected in Google Sheets which can be then manipulated easily by non technical personnel. In Jennifer’s talk, she showed us some techniques on how to customize Google Form with basic HTML and also how to “respond” to the input from Google Form using Google Apps Script. With these techniques, it seems anyone can increase their work efficiency using these simple and yet very powerful tools to automate their workflow.
“Wasting Weekends by Capturing Flags” by Jason
Capture the Flag (CTF) is an information security competition that one can use to learn and sharpen their skills in the field of cyber security. Jason has been participating in these competitions since his time in university. In his talk, he gave us a brief introduction of the different types of CTF challenges: web, crypto, forensics, exploitation, etc. Aside from the skillsets related to cyber security, Jason also learnt a lot about various web frameworks and services through solving the challenges in the CTF competitions. He also prepared a demo service to let the audiences in MTS to actually try to CTF.
“Documentation and how Go tackles it” by James
As software developer, very often we build our products on top of the abstraction provided by others, or others will build on top of the abstraction that we provide. If you want others to use and build on top of your creation, it is always good to have good documentation. Coming from a workplace that people from different physical locations are working on the same project, James also emphasized how good documentation will help developers that are not in the same room to work well together. In James’s talk, he showed us how Go codes and documentations are coupled in language to:
- generate documentations from comments
- include examples code in the generated documentations
- use the examples code as tests
He also recommended a talk about the importance documentations by Daniele Procida.
“What/Why/When Protocol Buffers & gRPC” by Toshi
After reading this article about protocol buffers, Toshi decided to learn more about the technology and share what he learnt in this MTS. He gave us a brief history and background about why Google created this technology. Then, he explained the benefits that one can get by embracing protocol buffers in serializing structured data, i.e. easier schema evolution, smaller size, polyglot support, making use of existing tooling such as code generators, etc. Toshi also prepared demos of protocol buffers and gRPC (a remote procedure call system that uses protocol buffers as interface description language) which can be found here.
“Keyboard 101: Improving Keyboard Ergonomics” by Henry
Henry shifted our focus to hardware side of software engineering: keyboard. In this talk, he brought up two problems related to ergonomics that can be found in regular keyboard:
- QWERTY layout: that is inherited from typewriter was originally created to avoid jammed keys. Henry showed us how Dvorak and Colemak layouts have better character distribution of texts, i.e. more efficient and ergonomic to use.
- 104-keys format: is the size of the standard keyboard that comes with a desktop PC. According to Henry, the problem with this format is that it is asymmetrical, puts the mouse far away from typing position, and require too many hand movements to access keys that are faraway. He showed how keyboard can archive a more ergonomic format by reducing the redundant keys and usage of layering technique.
“Azure Functions with Spring” by Fukutomi
Fukutomi’s team is one of the users of Azure Functions in our company. In this talk, he showed us how to develop on Azure Functions using the Spring Cloud Function created by the Spring team at Pivotal. Fukutomi showed us how easy it is to use this framework to create an Azure Functions that can be triggered via HTTP requests. He then shared his findings and workarounds on how to use the same framework to build Azure Functions that can be triggered by Azure Queue storage and timer.
“Flowing into TypeScript” by Kevin
Kevin (our former frontend developer) joined this MTS as a guest speaker. He shared his experiences on how to migrate from Flow to TypeScript. Motivations for migration include: faster build time, larger community size, better tooling, and the better transparency in decision making in the TypeScript core team. He talked about the challenges faced and how tools like Babel helped with the migration by two type checking systems to co-exist during the transition period. The main migration process took a few weeks starting from turning off the TypeScript compiler, then migrating the helpers, components, containers, and finally turn the TypeScript compiler back on.
That’s all the talks we had for the 52nd MTS. As always, we had beer bash after that 🍻!