David Siaw
Software Engineer
- DevOps
- Native
- FullStack
Tokyo
David Siaw
Software Engineer
- DevOps
- Native
- FullStack
Tokyo
Company | Position | Start Date | End Date | Location | Detail | Roles | Languages | Frameworks | Services | OSes |
---|---|---|---|---|---|---|---|---|---|---|
MommyCare K.K | CTO | 2016/07 | 2018/01 | Tokyo, Japan | HouseCare, the product created by this new company provides property management services for Airbnb/Minpaku owners in Japan. I joined this company to help them improve operations through the use of software and computing. |
| Ruby JavaScript | Rails RSpec Sinatra NodeJS Docker | AWS Dockerhub SendGrid MakeLeaps Circle CI Cloudflare New Relic Mixpanel | Linux Mac OS X |
Mobingi Inc. | CTO | 2014/10 | 2016/05 | Tokyo, Japan | Joined this startup to lead the creation of automated infrastructure deployment for various web frameworks and languages |
| Ruby C++ PHP | Chef Docker | AWS Dockerhub Circle CI | Linux |
6waves Japan | Lead Software Engineer | 2014/03 | 2014/10 | Tokyo, Japan | Joined 6waves to push forward the conversion and release of overseas games for the Japanese market |
| Java PHP JavaScript | Swing Spring Chef Jekyll Vagrant | AWS Travis CI Cloudflare | Linux |
Telogis Inc. | Software Engineer | 2007/11 | 2013/06 | Christchurch, New Zealand | Joined Telogis as a Junior Software Developer to work on GeoBase, a GIS toolkit for Windows Applications. |
| C# C++ JavaScript Objective-J | ASP.NET SQLite IIS Cappuccino | Windows Windows CE Windows Mobile | |
Tait Electronics Ltd. | Junior Software Engineer | 2006/11 | 2007/02 | Christchurch, New Zealand | This was a 3-month internship to complete a short software project, primarily to investigate the use of C++ on embedded devices. |
| C C++ | Windows Linux eCos |
Position
CTO
Start Date
2016/07
End Date
2018/01
Location
Tokyo, Japan
Detail
HouseCare, the product created by this new company provides property management services for Airbnb/Minpaku owners in Japan. I joined this company to help them improve operations through the use of software and computing.
Roles
- Moved devops to a highly reliable, resilient and secure in-house system
- Established a highly efficient system of continuous integration and deployment using AWS ECS, Docker and Circle CI
- Automated and streamlined logging, update and error reporting directly to various teams using a combination of Slack and newly available web services
- Coordinated solving highly clerical issues caused by large growth with internal team requirement gathering and software development
- Organized and managed in-office and online services that the company uses to allow smooth continuous operations
- Created an automated booking system that fully automates the product's subscription service, removing hours of clerical work
- Update and improve the company's backoffice system to greatly smooth out operations and greatly reduce manual communication
- Improve system statistics to assist with data analysis and investor reporting
- Created a system to automate accounting and invoicing, saving hours of time spent doing clerical work
Languages
Ruby JavaScript
Frameworks
Rails RSpec Sinatra NodeJS Docker
Services
AWS Dockerhub SendGrid MakeLeaps Circle CI Cloudflare New Relic Mixpanel
OSes
Linux Mac OS X
Position
CTO
Start Date
2014/10
End Date
2016/05
Location
Tokyo, Japan
Detail
Joined this startup to lead the creation of automated infrastructure deployment for various web frameworks and languages
Roles
- Designed a domain-specific language to generate AWS Cloudformation templates for different network topologies
- Established system using Docker containers for blue-green deployment, logging, provisoning and monitoring
- Constructed systems to perform testing locally
- Established procedures and standards for reliability testing and deployment
- Support integration of Mobingi’s cloud services with the workflow of various other companies
- Provide advice and consulting services to existing customers with varied requirements
Languages
Ruby C++ PHP
Frameworks
Chef Docker
Services
AWS Dockerhub Circle CI
OSes
Linux
Position
Lead Software Engineer
Start Date
2014/03
End Date
2014/10
Location
Tokyo, Japan
Detail
Joined 6waves to push forward the conversion and release of overseas games for the Japanese market
Roles
- Established streamlined processes for testing, continuous integration and continuous deployment as well as efficient and automated deployment to staging and production environments
- Maintained and added event features to Bubbleworld on Yahoo Mobage.
- Led an Engineering Team to feature-completion of a 6waves game
- Added social features to 6waves games including login bonuses, gift boxes, friends list, greeting and communication systems, login tracking
- Applied new game content and persistent-world mechanics to games
- Built server environments and tools to maintain social games using Amazon Web Services and Chef
- Built versatile testing system for server infrastructure usable on developers’ machines using Vagrant
- Built an Announcement Content Management System using Jekyll + Ruby
- Created abstraction layers for Japanese social game platforms
Languages
Java PHP JavaScript
Frameworks
Swing Spring Chef Jekyll Vagrant
Services
AWS Travis CI Cloudflare
OSes
Linux
Position
Software Engineer
Start Date
2007/11
End Date
2013/06
Location
Christchurch, New Zealand
Detail
Joined Telogis as a Junior Software Developer to work on GeoBase, a GIS toolkit for Windows Applications.
Roles
- Developed GeoStream which is an ASP.NET mapping application with a JavaScript frontend
- Developed GeoBase which is a C#-based GIS toolkit that contains many features useful for mapping, routing and navigation
- Maintained Natural Language Geocoder using Hidden Markov Models, and developed processes and tools for preparing data files
- Designed, developed and maintained Drilldown Geocoder for Windows Mobile and Windows CE devices powered by SQLite
- Designed and developed live preview and performance testing feature for map-styling tools for mobile devices
- Developed testing and demonstration tools for GeoStream using Cappuccino and Objective-J
- Developed time tracking tools, import tools and diagnostics tools for proprietary data file formats
- Managed deployment of new data file formats and coordinated data team processes
- Maintained GeoBase and Workforce products written in C, C++ and C#
Languages
C# C++ JavaScript Objective-J
Frameworks
ASP.NET SQLite IIS Cappuccino
Services
OSes
Windows Windows CE Windows Mobile
Position
Junior Software Engineer
Start Date
2006/11
End Date
2007/02
Location
Christchurch, New Zealand
Detail
This was a 3-month internship to complete a short software project, primarily to investigate the use of C++ on embedded devices.
Roles
- Designed and created UI abstraction for various radio devices
- Designed and built automated font importer for embedded devices
- Updated various radio firmware projects to use C++ and migrated them from GCC 2.9 to GCC 4.0
Languages
C C++
Frameworks
Services
OSes
Windows Linux eCos
A small selection of side projects that I work on in my free time to improve my skills outside of work
Project Name | Description | About | URL | Languages |
---|---|---|---|---|
Sumomo | A sophisticated tool for deploying cloud content and services | Sumomo is a powerful Ruby-based DSL that extends AWS CloudFormation and creates a nice framework from which you can easily describe complex cloud topologies with code. A simple deployable example
| https://github.com/davidsiaw/sumomo | Ruby JavaScript |
Weaver | A static website generator (used to generate this resume) | Weaver is a static website generation tool with a Ruby-based DSL that allows the very rapid development of static websites. Weaver is used to generate my resume website. A simple web page in weaver looks like this:
This illustrates that you can use Ruby in your website code unlike in HTML. It also comes with a preview server that allows you to refresh your page after changing it, just like you would do with a website served from the filesystem. Additional documentation is here: http://davidsiaw.github.io/weaver-docs/ | https://github.com/davidsiaw/weaver | Ruby |
Chino | A tool to build Cappuccino applications and preview them easily |
| https://github.com/davidsiaw/chino | Ruby Objective-J |
Kichi | A secrets management tool using AWS IAM and AWS S3 |
| https://github.com/davidsiaw/kichi | Ruby |
Hexlife | A fun implementation of the Game of Life on a hexagonal grid | comments"]'});">
| https://github.com/davidsiaw/hexlife | JavaScript |
Ruco | A Ruby DSL for constructing LL(1) parsers |
| https://github.com/davidsiaw/ruco | Ruby |
AionDB | A fun data website for information on the MMORPG Aion Online | The AionDB website"]'});">
| https://github.com/davidsiaw/aiondb | C# HTML JavaScript CSS |
AikaDB | A fun data website for the MMORPG AIKA Online | The AikaDB website"]'});">
| https://github.com/davidsiaw/jitopener | C# HTML JavaScript CSS |
LuaCppInterface | A highly opinionated Lua abstraction library for C++ | LuaCppInterface was created to provide a Lua interface for a Bomberman clone https://github.com/ten-forward/bomberman It was basically created so Lua could easily be pulled in to C++ with a minimal amount of fuss:
It was also made to not be able to do everything that Lua can do to improve usability and maintainability. | https://github.com/davidsiaw/luacppinterface | C++ |
Description
A sophisticated tool for deploying cloud content and services
About
Sumomo is a powerful Ruby-based DSL that extends AWS CloudFormation and creates a nice framework from which you can easily describe complex cloud topologies with code.
A simple deployable example
network = make_network(layers: [:web, :db])
eip = make "AWS::EC2::EIP"
make_autoscaling_group(
network: network,
layers: :web,
eip: eip,
type: "c3.xlarge",
vol_size: 15, # GB,
script: <<-SCRIPT
yum install git gcc g++
echo "hello world" >> ~/hello
# or maybe start apache or any service that the server will use
SCRIPT
)
output "IPAddress", eip
- Can also be used to easily test and deploy APIs on AWS Lambda and AWS API Gateway
- Used personally to greatly streamline DevOps
URL
https://github.com/davidsiaw/sumomo
Languages
Ruby JavaScript
Description
A static website generator (used to generate this resume)
About
Weaver is a static website generation tool with a Ruby-based DSL that allows the very rapid development of static websites.
Weaver is used to generate my resume website.
A simple web page in weaver looks like this:
center_page "Hello world" do
ibox do
h2 "Hello world!"
for i in 1..5
p "#{i}"
end
end
end
This illustrates that you can use Ruby in your website code unlike in HTML. It also comes with a preview server that allows you to refresh your page after changing it, just like you would do with a website served from the filesystem.
Additional documentation is here: http://davidsiaw.github.io/weaver-docs/
URL
https://github.com/davidsiaw/weaver
Languages
Ruby
Description
A tool to build Cappuccino applications and preview them easily
About
- This tool was created by myself to streamline the creation of Cappuccino/Objective-J applications
- It comes with a small webserver to allow working in a web-like environment and provides build tools to take out all the boilerplate work
URL
https://github.com/davidsiaw/chino
Languages
Ruby Objective-J
Description
A secrets management tool using AWS IAM and AWS S3
About
- This tool allows one to manage secrets such as passwords and API keys to services by using AWS IAM.
- All keys are stored on S3 and only people with access to that bucket can read them.
URL
https://github.com/davidsiaw/kichi
Languages
Ruby
Description
A fun implementation of the Game of Life on a hexagonal grid
About
- A recreational experiment on cellular automata
- I made some blog posts about it, where people have discovered more lifes in the comments
URL
https://github.com/davidsiaw/hexlife
Languages
JavaScript
Description
A Ruby DSL for constructing LL(1) parsers
About
- A toy but useful Ruby DSL that uses Coco/R to generate C++ code to generate the AST for a given grammar
URL
https://github.com/davidsiaw/ruco
Languages
Ruby
Description
A fun data website for information on the MMORPG Aion Online
About
- Uses a the sophisticated file format description language from BlueBlocks to read the game client files and transform it into a nice website
- Uses WebGL to show furniture (see Decoration section)
- Uses the Google Maps API to provide maps of gathering spots
- The AionDB website
URL
https://github.com/davidsiaw/aiondb
Languages
C# HTML JavaScript CSS
Description
A fun data website for the MMORPG AIKA Online
About
- Uses a the sophisticated file format description language from BlueBlocks to read the game client files and transform it into a nice website
- Provides highly detailed cross referencing and Quest information
- Uses little GIFs to provide locations of NPCs
- The AikaDB website
URL
https://github.com/davidsiaw/jitopener
Languages
C# HTML JavaScript CSS
Description
A highly opinionated Lua abstraction library for C++
About
LuaCppInterface was created to provide a Lua interface for a Bomberman clone https://github.com/ten-forward/bomberman
It was basically created so Lua could easily be pulled in to C++ with a minimal amount of fuss:
// Create a function from an existing C function called "abs" (available in cmath)
auto absolute = lua.CreateFunction<int(int)>(abs);
// Create a function using a C++ lambda
auto lambdaFunc = lua.CreateFunction<void()>([&]()
{
std::cout << "called lambdaFunc" << std::endl;
});
It was also made to not be able to do everything that Lua can do to improve usability and maintainability.
URL
https://github.com/davidsiaw/luacppinterface
Languages
C++
Education | Location | Start Year | End Year | Major |
---|---|---|---|---|
Bachelor of Engineering with Honours, University of Canterbury | Christchurch, New Zealand | 2005 | 2007 | Power Engineering |
Diploma in Electrical and Electronic Engineering | Kuching, Malaysia | 2003 | 2004 | No electives |
Location
Christchurch, New Zealand
Start Year
2005
End Year
2007
Major
Power Engineering
Location
Kuching, Malaysia
Start Year
2003
End Year
2004
Major
No electives