First, I would like to express my gratitude. Thank you to @anomadsoul and @guyfawkes4-20 for hosting the Sndbox quest for developers, @legendchew for helping me to proofread this post.
You can read the rules about the sndboxquest here.
Introduction
I am a student at University of Western Australia (UWA) majoring in Electronic and Electrical Engineering. Although I am still a student, I am a self-taught software developer where my field of interest revolved around Web Development, Task Automation (web testing, chatbot, web automation), Internet of things, and recently I start to work on Blockchain development projects.
Currently, I am working on a few projects on building decentralized database and also the bots creator for a few community, namely #teammalaysia, #cn-malaysia, #teamaustralia, #qurator, and #cebu.
My dream as a software developer started as I want to learn how to automate my daily task in real life. Imagine people had to do things repetitively, but if we can do it with just a few lines of codes. That will be awesome. This is also my motive to keep myself moving forward while learning how to code.
Journey
My software development journey starts in the year 2015. I started as a freshman student where I took a class known as "Introduction to C++". At that point in time, I really wanted to learn to create a program that can automate my task. However, just as I thought that my journey as a programmer or coder was about to begin, I discovered that there is not much of practical use of what I learn in school. Most of my tasks in school were as simple as creating a virtual ticket machine and mostly non-practical.
Beginning
I am a hardworking person and an avid reader, I spend most of my time at the university in the library. I started picking up books around web development, and spend my leisure time reading and creating websites.
I always wanted to help my parents and that was the point where I use a lot of practical code in programming languages. I help them to develop and create websites for their business.
Categories
I will describe my field of software development into a few categories:
- Electronic Project / Internet Of Things
- Web Development
- Task Automation
- Blockchain Development
Electronic Project / Internet Of Things
As an electronic and electrical student, I had been working on a few projects of Electronic projects. From working on projects, I learn also a few programming languages along the journey.
Braille Translator
- Programming Language: C++, C
- Tools/Library: Arduino UNO
This is my first electronic project. Our project is to create a microcontroller that translates English into Braille (A language for the blind) via Bluetooth.
Me and my group mate working on the braille translator
Smart Aquarium
- Programming Language: C++, C, Python, HTML, Linux
- Tools/Library: Arduino UNO, Raspberry Pi
Smart Aquarium is an internet of things project, where it will share data collected in the aquarium onto the internet.
Solar Boat
- Programming Language: C++
- Tools/Library: Arduino MEGA, WiFi shield
This is the largest project I ever had made, I had been working closely with a Mechanical Engineer to ensure the boat work. It is powered by solar, and the data collected by it will publish into the Internet through WiFi.
IOT_Lights
- Programming Language: C++, C, Swift
- Tools/Library: NodeMCU, XCode
This is one of my hobby project where I created an iOS app with Swift, and it controls a light bulb that is connected with NodeMCU.
Web Development
I had been working on web development for more than 3 years, but this field is really too wide for me to explore, every day there are new technologies popping up, and I had to keep up with it.
Personal Website
- Programming Language: Ruby On Rails, Sass, HTML, CoffeeScript
- Tools/Library: Heroku
The journey began of venturing into the realm of Ruby On Rails, a full-stack web development framework. I really learn a lot of best practices as a software developer from learning and making a web app with Ruby On Rails.
As a self-taught web developer, I always had an issue which is their portfolio, so I decided to spend time and effort to create my own personal website with what I learn. I used Ruby on Rails and try it out. After a few attempts, I had finally launched my personal website back in July 2017. You can check it out at https://www.wenghan.me. Please take note that I did not update it since January 2018.
Open Source Project: Open Dota
- Programming Language: JavaScript
- Tools/Library: React.js
On October 2017, I found a chance for me to work the front end web on Open Dota, a statistical site for Dota 2. I managed to enhance the mobile web user experience by introducing Progressive Web App concept into the project.
The merged pull request:
Web Development Talks
- Programming Language: JavaScript, Ruby
- Tools/Library: Chrome
On December 2017, I decided to step up my software development journey by starting to share about what I know in a meetup.
I would say that December 2017 is the turning point of my life. I gave my first talk on "Progressive Web App, add to home screen and push notification" at the Kuala Lumpur JavaScript (KLJS) meetup at Mind Valley. Then, "Push Notification with Ruby On Rails" for Ruby Tuesday. Lastly, "Progressive Web App" on BarCamp KL.
Fixing a bug on steemit.com official website
On January, I made a pull request onto steemit/condenser where I fix the bug on the add to home screen feature on Google Chrome, where the steemit icon does not show out. I made a pull request to steemit/condenser and got the feature into production.
Task Automation
This is the field that are close to my heart. The field are the reason I started coding and keep doing it. It started to solve my own problems, and also others.
Dota 2 auto accept
- Programming Language: Python
- Tools/Library: PyAutoGui
This was a project requested by my friend. This script will help you to accept matches on Dota 2.
With the help of this script, Dota player does not have to waste their time in front of their computers, and can instead spend their time on other matters while waiting for a game, because this script help to accept the game.
Automated Web Testing
- Programming Language: Python
- Tools/Library: Selenium
During my half-year break, I start to work at a company for a few months mainly working on Web Testing and Front End Web Development.
I have written a web testing script (with Python Selenium) to test out the website when it is on bidding.
Steemit Bots
I build multiple bots with Steem Blockchain, integrated with Telegram and also Discord.
Bot created for #cn-malaysia
- Programming Language: JavaScript, TypeScript
- Tools/Library: SteemJS, dSteem
I am a member and developer of #cn-malaysia community. As our team suspects, there is a lot of non-mandarin content being posted using #cn-malaysia without any consent. Therefore, I have created a bot to remind them not to use #cn-malaysia tag. It is meant for Chinese languages and Malaysian Steemit user only. This bot will comment on the post that uses the tag #cn-malaysia without fulfilling the requirement. (At the moment, the requirement of the content must have at least 20% of Chinese words)
statBot
- Programming Language: JavaScript, TypeScript, MSSQL
- Tools/Library: Discord.js, SteemJS
statBot is a utility bot on Discord which helps Steemit user with a few tools.
Current function:
- Conversion between Crypto to Crypto, Crypto To Fiat, Fiat to Crypto.
- Check Crypto Price.
- Check performance of a certain tag on steem (in terms of week or year)
- Check delegators, delegatee
- Create delegation link
StepHard Bot
- Programming Language: JavaScript, TypeScript, MongoDB
- Tools/Library: Discord.js, SteemJS, Jest
Stephard is a discord bot being used by the #teammalaysia community. This bot will carry out post a quality check and reward the author with an upvote and comment on their post. A certain post related to sensitive tag will be redirected to another channel and pending for a moderator to verify it before the rewards and comment to be carried out manually.
Currently, this bot still being developed to improve code quality and fight against abuse.
Contest Bot
- Programming Language: JavaScript, TypeScript
- Tools: Telegram, SteemJS
contestBot is a bot that checks for the latest post on steem blockchain when someone posted with #teammalaysia alongside with #contest, #raffle, and #upfundme, in order for the users to join the contest ASAP.
Blockchain Development
Currently, I am working on a few enterprise projects for creating a decentralized database with blockchain technology.
Create blockchain from scratch
- Programming Language: JavaScript, TypeScript
- Tools: Jest
I am working on a video tutorial series on how to create a proof of work blockchain from scratch.
The playlist is on Youtube.
The end project (one of the end product of my project) look something like this:
Ethereum Blockchain
- Programming Language: JavaScript, Solidity
- Tools: MetaMask, Ethereum Test Net, EtherScan
Currently, I am working on private blockchain project to create a decentralized database by setting up private Ethereum network using Proof of Authority.
I also did Ethereum Smart Contract analysis, so far I had a post written analyzed Mithril token.
Smart Contract Analysis #1: Mithril (ERC20 tokens)
Conclusion
In a nutshell, I started coding with my interest in task automation, along the journey I learnt a lot from web development and electronic projects, which lead me into the field of blockchain development.
I am indeed very lucky to have came across Steemit in my journey as a programmer/coder. With Steem, I finally had a place where I can put my practical skills into good use! I am really glad that my skill are able to help not just myself, but also many people in the community.
