43rd Monthly Technical Session (MTS) was held on February 16th, 2018. MTS is a knowledge sharing event, in which HDE members present some topics and have QA sessions, both in English.
First session was brought by Arakawa. The topic was CMC Webhook #2, continuation of his previous CMC Webhook talk which can be found here. He briefly explained about webhook notification and compared it to polling method. He then demonstrated how it works.
Next speaker was Stephen. His presentation title was Can Cities Be Hacked? Stephen began his presentation with his personal experience of losing a phone number that was used as a 2FA device. He then wondered whether a city can be hacked, in this age that is very connected to the internet. He then found some example of cities getting hacked, such as the Ukraine Power Grid Attack. He then explained things that developers should do when developing IoT, such as:
Penetration testing
Consult with CSIRT/CERT
Have manual override of the system in case things go bad
Availability of basic service must be guaranteed
He then concluded his presentation as follows:
IoT/Software should always be designed with security in mind
Ethics in software engineering is very important
Government regulations needs to play a key role in ensuring safety of citizens
Next in the list was Ogawa. His presentation was about Haskell programming language.
He explained several things about Haskell:
Purely functional programming language
Static typing with type inference
Pattern matching
Lazy evaluation by default
Type classes
Green threads
He emphasized his presentation on Pattern Matching and Lazy Evaluation features of Haskell language as well as the cool development tool Stack that Haskell offers.
Iskandar was our 4th speaker. He presented his journey to Indonesia to attend first PyCon ever held in Indonesia, PyCon Indonesia 2017, as a speaker. He began his presentation by showing where the conference was held, some local language, and other interesting stories of how PyCon Indonesia was prepared. He then proceed with the project he presented at PyCon Indonesia. His project can be found here. The slides he presented at PyCon Indonesia can be found here.
After Iskandar we had Alisha, our Global Intern from India, gave a talk on functional programming in Python. She started the presentation with functional programming paradigm. She explained some features of true functional programming, such as no side effects, immutability, recursion instead of loops, lazy evaluation, etc. She then followed up the explanation by showing functional programming can be done in python with certain ways. She ended her presentation with some points that python lacks in functional programming, such as:
No tail recursion optimization
Mutable Variables
Impossible to separate pure & non-pure functions
No pattern matching (can use libraries though)
No automatic partial application
The next speaker was our second Global Intern from New Zealand, Edwin, who gave a talk about his project as a university student. He explained, in a non-electrical engineer friendly way, how he built a simple wireless charging toy car. He started his explanation on power electronics, which is the foundation of his project, along with the symbols on related electrical circuit he's using. He then showed us the video of his toy car moving along the track and stops at the wireless charging station and then go again endlessly. After showing the video and explaining how it works, he shared some things that he needed to overcome to realize the project such as power loss during switching, dead beat, and reverse recovery current.
Last but not least, our last speaker was Wei-Ting from Taiwan, our third Global Intern. He explained the science behind self-driving car based on his project at his university. The topics covered several aspects of machine learning, which in his case he did the clustering part. In his case, he modeled the terrain, objects, etc. using LiDAR. After obtaining the model, they preprocess the LiDAR data by denoising, downsampling, and ground filtering the data. Then, they feed it to clustering algorithm to separate the objects from each other. Finally they feed the clustered data to a Convolutional Neural Network (CNN) classifier to identify the objects. He explained the clustering algorithms he used to cluster the objects, those are building the minimum spanning tree, breaking the edges, running depth first search algorithm, and finally running minimum bounding box algorithm. In a nutshell, he explains how to separate object like items from the preprocessed LiDAR data.
Windows の Cドライブは、/mnt/c にマウントされます。
C:\dev フォルダを作成すれば、Linux からは、/mnt/c/dev でこのフォルダにアクセスできます。
Windows と Linux でシームレスにファイル参照・編集できるので、Windows 上のエディタでコードを書いて、
Linux 上で build & run できます。これは便利です。
$ vue init webpack-simple your-project
? Project name your-project
? Project description A Vue.js project
? Author masahiro.okubo
? License MIT
? Use sass? No
vue-cli · Generated "your-project".
To get started:
cd your-project
npm install
npm run dev
$
"Promise based HTTP client for the browser and node.js" とありますが、JavaScript で非同期処理をやるには Promise 便利ですね。
インストールも npm install --save axios で OK. 使い方も簡単です。mock-adapter があるので単体試験もできます。使わない理由がありません。
42nd Monthly Technical Session (MTS) was held on January 19th, 2018. MTS is a knowledge sharing event, in which HDE members present some topics and have QA sessions, both in English.
The moderator of the 42nd MTS was Hayashi.
First topic was Okubo's introduction on JavaScript framework Vue.js.
He began his explanation on reasons we should use vue.js by showing us a video from https://vuejs.org/index.html. Then he continued with the history of technology stack evolution throughout his career. He concluded his presentation with tips and tricks on how to develop vue.js applications.
Second topic was about WebAssembly and Go by Shinohara.
He began with the explanation of WebAssembly and why WebAssembly is needed. Then he proceeded with the use cases of WebAssembly. He also explained why WebAssembly is fast.
After explaining WebAssembly, he went on explaining WebAssembly support in Golang. Golang support will be released with version 1.11 around this summer. He tried the Golang support for his project and it failed for several reasons. One of the reasons is there are too many TODO to support WebAssembly in Golang.
Third topic was brought by Xudong. His talk was about how to optimize memory usage within embedded system's SoC.
SoC (System on a chip) has built in RAM and ROM memory for programming, but the their sizes are limited. Their sizes are so limited that he has to do some careful planning on things that really matter to be put inside the ROM and runtime execution of the program not to go beyond limited size of the RAM. He shared some of his experiences, tips, and tricks to do programming on such system.
Fourth topic was about AWS Batch brought by Doi. In the beginning of his presentation he recommended us to watch the video from AWS Re:Invent 2017 titled CMP323 - AWS Batch: Easy and Efficient Batch Computing on AWS for deeper understanding on AWS Batch. He began his presentation by explaining in simple terms about AWS Batch and showed an example of system architecture built in AWS Batch. He explained some components that are important in running AWS Batch, which are AWS Batch Definitions, Job Submission, and VPC Configuration. He stressed the important points in VPC configuration that should be enabled are MapPublicIpOnLaunch, EnableDnsSupport, EnableDnsHostnames which might not be enabled by default when building new VPC. He then showed us some demo on AWS Batch.
Here are some links that Doi recommends to start using AWS Batch:
Fifth topic was brought by Bumi, it's the continuation of his previous Elasticsearch MTS Presentation. He explained various use cases of Elasticsearch and recommendation on where to host it. Bumi began his presentation by explaining the application search feature of Elasticsearch and why we would want that. Then he moved to a real use case: operational log analytics. He explained that analyzing logs is arguably the most popular use-case of Elasticsearch because search is not only about matching text but matching everything including timestamps, app code, IP addresses, etc. Combined with its partner, Kibana, the logs can be transformed into interesting visualizations which are easy to digest for both programmers and decision makers.
He mentioned three ways to host Elasticsearch:
Bumi didn't recommend building your own cluster because it might be too much of a burden for your organization. He also presented some pros and cons of using hosted Elasticsearch service between Elastic Cloud and AWS Elasticsearch Service.
Last but not least, our intern Jazman presented The Art of Storytelling. The presentation content was about his internship experience in Japan. He began his presentation with his story of new year holiday to Kyoto. He went to Kyoto using the local train with Seishun-18 Ticket and got on the wrong train on the way to Kyoto, but he managed to correct his course and reach Kyoto safe and sound. He also shared another story of his train trip when he went back from Asakusa to Shibuya but he ended up in Saitama. Then he explained the point of telling his story, everyone's story is unique and different.
41st Monthly Technical Session (MTS) was held on December 15th, 2017. MTS is a knowledge sharing event, in which HDE members present some topics and have QA sessions, both in English.
The moderator of the 41st MTS was Tanabe-san.
The first topic was "GIP Brand: Redefined" by Jazman-san. He is one of our Global Internship Program (GIP) participants. According to Business Dictionary, brand is a unique design, sign, symbol words, or a combination of these, employed in creating an image that identifies a product and differentiates it from its competitors. His task during his internship is to refresh the brands of GIP and HDE as an employer.
In order to achieve those tasks, Jazman-san is going on a 2 months long campaign on social media. Based on his analysis, there is a loss of potential applicants due to the lack of showcasing internship activities. Naturally then, his goal with the campaign is to gain more GIP applicants by showcasing internship activities at HDE, Inc. in a fun, exciting, and comprehensive way.
He went on to explain various aspects of the campaign, such as its objectives, identity (logo, title, mood and tone, color palette) target audience, framework, and timeline. He ended his session by reporting the progress of the campaign. In a relatively short time, the campaign has significantly improved the reach, post engagements, and net likes of GIP's Facebook page.
The second topic was "Basic Knowledge about Authentication" by Okumura-san. He explained several standards related to authentication and authorization. To put it simply, authentication is the process of ascertaining that someone really is who one claims to be. On the other hand, authorization refers to rules that define who is allowed to do what.
Okumura-san explained standards such as SAML, OpenID, OAuth, and OpenID Connect. In very general terms, in SAML, service providers redirect users to a predefined identity provider, which does the authentication. One of the ways OpenID differs from SAML is in the way that relying parties provide users options of OpenID providers.
OAuth is an authorization standard. Similar to SAML, service providers redirect users to a predefined identity provider. However, instead of an assertion of identity, the response from an identity provider is an access token that may grant service providers access to the identity provider's APIs on the user's behalf. OpenID Connect is a simple identity layer on top of OAuth 2.0. It allows clients to verify a user's identity based on the authentication performed by an authorization server.
The third topic was "Rust and the Web Platform" by Hugo-san. He was also one of our GIP participants. He began by explaining the concepts related to Rust itself, such as asm.js, WebAssembly, and emscripten. asm.js is a low-level strict Javascript subset. It is still JavaScript, with some performance benefits. WebAssembly is a low-level bytecode format. Recently, Rust supports compilation to WebAssembly. Emscripten is a source-to-source compiler. It allows code written in statically-typed languages with memory management to be translated to JavaScript.
According to Hugo-san, some of the main properties of Rust are safety and control. He likes that Rust has types, sets variables as immutable by default, uses modern syntax but can also be low-level, and provides validations during compilations. One downside of Rust that he pointed out was the absence of a garbage collector. Instead, it utilizes lifetimes to keep track of usage scope and object destruction. He also explained how to compile a Rust code to WebAssembly.
The fourth topic was "Our AI Overlords" by Kirby-san. He was also one of our GIP participants. AI has been advancing rapidly in recent years. In his talk, Kirby-san explained the many feats AI has achieved. He first explained AlphaGo, the first computer program to defeat a professional human Go player (in 2015). Fast forward two years later, AlphaGo managed to defeat a Go world champion. Its most recent incarnation, AlphaGo Zero, is an AI neural network with 0 human data.
DeepMind, the team behind AlphaGo, is now aiming to conquer another game, StarCraft II. The game's rich and multi-layered gameplay makes it an ideal environment for AI research. Another team, OpenAI created a bot which beat the world's top professionals at 1v1 matches of Dota 2 under standard tournament rules. Interestingly, players eventually managed to beat the bot (for now?) by way of unconventional strategies.
Obviously, AI can do so much more than win games. It can drive cars, recognize faces, reduce data center cooling bill, and even recreate Nobel-winning physics experiment. The potential of AI had a lot of people talking. Some believe AI will eventually supersede humans, which raised concerns of regulation. Still, some others believe it is still too early to regulate or worry to much about AI.
The fifth topic was "Hands on AWS Fargate" by Michael-san. AWS Fargate, introduced at AWS re:Invent 2017, is a technology for Amazon ECS and EKS that allows you to run containers without having to manage servers or clusters. In other words, it is the ECS and EKS you know, only without the need to manage EC2 instances. There's no need to manage EC2 count, ECS agent, auto scaling groups, task placement, networking, etc.
According to Michael-san, what's so good about AWS Fargate is that it makes scaling easier, integrates with load balancers seamlessly, and equips each task with its own network interface. On the other hand, Fargate is not cheap and provides limited log processor choice, at least for now. He ended his talk by demonstrating how AWS Fargate works.
The sixth topic was "QQ English in Cebu" by Tsukuda-san. He went to Cebu last month to learn English for 4 weeks. QQ English is located in Cebu IT Park. There are about 1,000 teachers in QQ English, all of which have international licenses for teaching English.
On the first day, students had a placement test. Classes started at 9 AM and ended at 6 PM. There were 8 classes in a weekday, each of which lasted for an hour. Tsukuda-san's curriculum consisted of listening, grammar, pronunciation, reading, group discussion, and more. On the last day, students had another test to check their progress.
Tsukuda-san also shared how he spent his weekends at Cebu. He went to a shooting club in Mactan and spent some time in Pandanon Island. He also introduced some Filipino foods, such as Lechon and Balut.
The seventh topic was "ServerlessConf Tokyo 2017" by Jeffrey-san. ServerlessConf Tokyo 2017 was held on November 2nd and 3rd. The first day was for workshops. In the AWS track of the workshops, participants were separated into teams and asked to create either a dashboard, chat, or dating application using only AWS serverless technology. After 8 hours of coding, his team became one of the few ones that managed to finish their application.
The second day was for the conference itself. Jeffrey-san learned quite a lot of interesting things, the first of which is Serverless Event Gateway. It allows serverless functions to communicate across different cloud providers using a set of standardized event format, using a publisher/subscriber model. Microsoft came full force to the conference with Microsoft Azure Functions, which supports JavaScript, C#, and F#. Durable Functions is its extension which allows user to write stateful function in a serverless environment. There was also a talk about serverless patterns.
Jeffrey-san was not only an audience of the conference, but he was also a speaker. The title of his talk was "AWS Lambda Pain(less): Adventures in Stream Processing". He taught the audience the high-level architecture of one of his projects and the lessons he learned from its development.
The eighth topic was "Office Tour in San Francisco" by Doi-san. The intent of this office tour is to learn how the companies in San Francisco are organized, how they run their business, and how they build successful company cultures. He went to several offices in San Francisco, like Oracle and Box. He also visited Googleplex and Apple Park Visitor Center.
Doi-san learned the most from his visit to Box' office. The office itself has many interesting features, such as cafetaria, bar, pool tables, table tennis tables, presentation halls, and more. Apparently, Box' employees regard the office as one of their communication tools. They display customers' use cases at the entrance and use customer names as room names. Box define their core values and applies them everywhere, on their products, working style, hiring process, etc. He also learned about Box' release flow and how they automate parts of their customer success efforts.
The ninth topic was "re:Invent 2017" by David-san and Ito-san. As you may have already known, re:Invent is Amazon Web services' global customer and partner conference, which is held annually. This year, the event was held November 27 - December 1. They began by explaining what Las Vegas was like, such as the weather, the hotels, and the gambling.
They also participated in some non-technical activities such as Pub Crawl and re:Play Party. There were even activities such as Tatonka Challenge, 4K Run and Harley Ride. They ended this session by giving various advice for next year's participants.
The day of the 41st MTS was also the last day of Hugo-san and Kirby-san's internships. We had a small event for them and gave them some souvenirs. In turn, they shared their impressions of their time working for us. Thank you very much for your contributions, Hugo-san and Kirby-san!