Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
128 lines (124 sloc) 6.12 KB
extends ../mainbase
block defines
const page = {
title: 'Programming Skills',
desc: 'JavaScript, Linux, C++, React, etc\u2026'
block text
// TODO: What am I learning now (related to coding) ?
-var currentYear = new Date().getFullYear()
| I have some experiences with a handful of languages and frameworks, but most of
| my work are in JavaScript.
| I will admit that I haven't experienced with any "high-end" technologies such
| as deep learning or data analysis, and I also have few foundational knowledge such
| as algorithm or data structure, or low level assembly stuff. All I can do by
| far is just code things. There isn't any application of neural network, higher
| maths or super elegant algorithm in any of my projects so far. I will try to
| learn these, but my progress is slow.
| You probably have guessed that I don't have the skills to solve code interview
| questions, and you're right. I'm not smart enough to figure out the efficient
| solution to those problems myself, and I haven't tried practising interview
| questions. (I mean, I still have my maths exam, and that is bad enough.)
| In addition, I'm not best at writing <i>human-readable</i> and comprehensible
| code. Sometimes my code don't even make sense to me quickly.
h2 Specific skills
mixin skills_h(name, exp)
h3= name
span.comment //&nbsp;
i= exp
+skills_h("Web (front-end)", "Near expert?")
| I have <i>around</i> #{currentYear - 2012} years of experience with JavaScript.
| In the front-end area, I'm skilled with React and the functional ideas that
| comes with it. I'm good with other aspects of the front-end stack as well, such
| as HTTP, HTML or pug and CSS or Sass. I'm also able to make some good SVGs.
| My personal opinion is that building for the web is the most efficient way to
| start the first version of most Apps, especially since the recent advancements
| in the web have allowed more native experiences.
| I have built a decent Progressive Web App -
a(href='') SchSrch
| . I used Webpack to handle assets and generate ServiceWorker. I have tried my
| best to optimise the performance and have approached a near 60fps UI.
+ref('relevant demonstration', mapStatic('/imgs/schsrch-60fps-citation.png'))
+skills_h("Web (back-end)", "I use it everywhere. Pretty skilled?")
| I have experienced with Node.js and had build some website with it (including
| this one), with the Express framework. I have also built a RESTful HTTP
| interface for SchSrch. I also understand the security aspect of HTTP, including
| things about SSL, the PKI-based SSL certificate, certificate transparency, HSTS
| and how to set up a secure SSL server.
+skills_h("Web (cross-platform desktop)", "Write decent desktop application with things used for the Web.")
| I like being able to use Web technology to build desktop applications (any
| platform actually - it should try to run on both desktop, tablets and phones),
| and I have written
a(href='') a useful desktop app
| with
a(href="") Electron
| . I know the downsides with building desktop Apps with HTML/CSS, such as for
| Electron the resulting app package will be pretty big ( over 40 MB after
| compressed for Shanbay-Desktop ). Unfortunately the supports for proper Web App
| are mostly chrome-only.
+ref('Can I use: Web App Manifest', '')
+skills_h("Linux", "Mastered for daily use / server maintenance, but not for hacking.")
| I have been using Linux as a desktop OS for:
mixin linuxprompt(hat, dir)
-let [user, host] = hat.split('@')
| ╭─
span(style="color: #899e19;") #{user}
span(style="color: #31a69f;") @
span(style="color: #899e19;") #{host}
| #{dir}
| ╰─➤
+linuxprompt("linux@MaoWtm", "~")
span(style='color: #899e19;') uptime
-var nowTimeString = new Date().toTimeString().match(/\d{1,2}:\d\d:\d\d/)[0]
| #{nowTimeString} up
| #{Math.ceil((new Date().getTime() - new Date("2014-02-01 00:00:00 GMT+0800").getTime()) / (24*60*60*1000))}
| days,
| #{nowTimeString.replace(/:\d\d$/g, "")},&nbsp;&nbsp;0 user,&nbsp;&nbsp;load average: 0.0, 0.0, 0.0
+linuxprompt("linux@MaoWtm", "~")
span(style='color: #0b3039; font-weight: bold;') # I mean&hellip; This is basically how my terminal looks like. Color scheme is solarized.
| I can use zsh in Linux reasonably well to do some non-trivial system
| <i>maintaining</i> ( including breaking the system ). Thanks to
a(href="") Arch Linux
| , I've managed to understand, not very deep, how Linux ( and those fundamental
| application that almost every distro include, from "systemd", "initramfs" to
| "ip" or "dig", or package management like "pacman" ) briefly work and how to
| make great use of them. I use Linux as my desktop OS. Linux and some command
| line tools helped me a lot, not only for coding.
+skills_h("C / C++", "Can write simple things.")
| I know how to write C++ programs, but it <b>often takes much longer</b> and the
| products are likely <b>buggy</b> and only run on Linux. I can write a C++
| version of most JavaScript/Python program I have wrote. It just takes more time
| and may have more bugs.
+skills_h('Android', "Basic App development skills")
| I understand some concepts in building Android Apps, but haven't built much projects yet.
h2 See also
a(href='/Projects') Projects
| : Check out some of my good projects
a(href='/Programmer_Thought') Thoughts as a Programmer
| : Some personal opinions.
block morefonts
link(href='', rel="stylesheet")