Scala, Java, Typescript
Events involved in
2019: I was the technical lead for our team "Access Our Community" for the Global Legal Hackathon passing two judging rounds, firstly we won the Hong Kong Hackathon weekend round then a second global online only round to narrow nearly 1000 initial teams down to becoming a Finalist as part of 12 others in the Global Legal Hackathon held in New York 2019, flew to New York to compete and attend the finals Gala. Although we did not win the finals, I enjoyed learning about how to win a hackathon! (you can see me at 1 minute 40 seconds into the video).
Also at 12 seconds into the youtube video on the finals page.
2019: Gave a talk on "Smart Legal Contracts" at Hong Kong University for my startup ContractPen, Smart Legal Contract Challenge, Here is my presentation deck of the speech I gave at HKU. After investigations, decided not to pursue ContractPen as a startup due to lack of business viability (existing competitors, difficulty to engage paying customers).
Questions and Answers
If we assume there is only one right answer for every I.T. question then these are my answers to those questions.
In the real world there is rarely ever just one right answer, if the developers know React then there are good reasons to choose React, or for different reasons such as business reasons, legacy code, developer familiarity, etc, but I have preferences over what technology or solution I would use for any problem. This is here those personal preferences expressed as questions and answers.
Hardware for development?
Two machines, one AMD CPU machine with high RAM, 64GB RAM for virtualization, the other machine with reasonable RAM and Intel CPU and a good Cuda capable graphics card. The reason for two machines is that one machine with a high end GPU and high RAM gets into the expensive range. A mix of Intel and AMD allows for more options.
High RAM machine is for running Kubernetes is "like a server in the cloud" but locally.
High GPU machine is for Cuda development, machine learning etc.
Operating System for development?
PopOS within a VirtualBox virtual machine to allow it to be moved to a new machine, PopOS is basically Ubuntu with better support for creative work. Virtualbox can run inside virtualbox now, this is known as nested virtualization. Although there is a performance degradation to virtualization, the ability to not have the host operating system entering a bad state from which recovery is difficult is worthwhile.
Computer language to use?
Scala build tool to use?
IntelliJ Idea Scala/Java IDE.
Server side environment
Kubernetes as it allows for deployment in any cloud environment.
Although different clouds such as AWS, Azure, Aliyun have different advantages but the disadvantage of being dependant on a cloud restricts where the product can be deployed and different customers will want to use different clouds. When a customer asks to have deployment for Azure but you are dependent on AWS then this is a problem. Also Kubernetes solves most of the problems which are likely to be faced for server side such as scalability up and down, encryption of data in motion etc.
The complexity of setting up and administrating AWS with Cloudformation is a large technical cost in time and effort, best avoided unless necessary to do so.
Kubernetes development environment
MiniKube for developing Kubernetes locally.
ETL - Extract Transform and Load
Asynchronous programming in Scala
HTML web application for mobile and desktop
Which CSS framework to use?
Bulma CSS, there are many CSS frameworks but Bulma comes with Flexbox and has good default components. Bootstrap was popular for a while, but new technology always comes along.