286 lines
13 KiB
HTML
286 lines
13 KiB
HTML
---
|
|
title: "Skills"
|
|
date: 2023-09-13T15:08:12-07:00
|
|
draft: false
|
|
---
|
|
<section class="content">
|
|
<h1>Skills</h1>
|
|
|
|
<p>
|
|
For pretty much all of my career (apart from some retail jobs early on while I went to college)
|
|
I've worked as a software engineer (professionally since 2008). I taught myself to program since
|
|
I was a young teenager (having learned HTML and created my first website at 12 years old), and
|
|
then my first 'real' language was Perl which I first learned because I wanted to build my own
|
|
chatbots for AOL Instant Messenger.
|
|
</p>
|
|
|
|
<p>
|
|
I soon found out Perl could be used for server-side website scripting (and would greatly empower
|
|
my personal websites, which were limited to HTML and JavaScript so far) and was already building
|
|
my own whole web apps (such as blogs, custom forums and MySpace-style social networking sites!)
|
|
all before I even graduated high school. After not even a year into college, I got my first software
|
|
development job (at a Perl shop) and the rest is history (and a story for my
|
|
<a href="https://www.linkedin.com/in/kirsle" target="_blank">LinkedIn</a>).
|
|
</p>
|
|
|
|
<p>
|
|
For the most part I have worked for small startup companies (as I <em>love</em> to write new code
|
|
and have a big impact on the product). I'm not currently looking for work, but in the future will
|
|
plan to give freelance work a try.
|
|
</p>
|
|
|
|
<ul>
|
|
<li><a href="#web-development">Web Development</a></li>
|
|
<li><a href="#technical">Technical Skills</a></li>
|
|
<li><a href="#examples">Example Projects</a></li>
|
|
</ul>
|
|
|
|
<h2 id="web-development" class="anchor">Web Development</h2>
|
|
|
|
<p>
|
|
I call myself a "full stack" web developer and have a varied skillset to tackle both front-end
|
|
and back-end concerns of web applications. I am most at home on the back-end side (everything
|
|
from developing the app itself to getting it deployed on a server or cloud provider) but have
|
|
also been known to create a nice front-end web design or Single Page App (SPA) from time to time.
|
|
</p>
|
|
</section>
|
|
|
|
<div class="columns">
|
|
<div class="column">
|
|
<div class="card">
|
|
<div class="card-header has-background-info">
|
|
<p class="card-header-title has-text-light">
|
|
<i class="fa fa-server mr-2"></i> Back-end (server side)
|
|
</p>
|
|
</div>
|
|
<div class="card-content content">
|
|
<h6>Languages</h6>
|
|
|
|
<p>
|
|
<i class="fab fa-golang"></i> Go,
|
|
<i class="fab fa-python"></i> Python,
|
|
<i class="fab fa-node-js"></i> JavaScript,
|
|
<img src="/images/perl.png" width="16" height="16"> Perl
|
|
</p>
|
|
|
|
<h6>Frameworks</h6>
|
|
|
|
<p>
|
|
<i class="fab fa-golang"></i> <a href="https://gorm.io" target="_blank">GORM</a>,
|
|
<a href="https://github.com/urfave/negroni" target="_blank">Negroni</a>,
|
|
<a href="https://github.com/gin-gonic/gin" target="_blank">Gin</a><br>
|
|
<i class="fab fa-python"></i> <a href="https://flask.palletsprojects.com/en/2.3.x/" target="_blank">Flask</a>,
|
|
<a href="https://www.tornadoweb.org/en/stable/" target="_blank">Tornado</a>,
|
|
<a href="https://www.sqlalchemy.org/" target="_blank">SQLAlchemy</a><br>
|
|
<i class="fab fa-node-js"></i> <a href="https://expressjs.com/" target="_blank">Express.js</a>
|
|
</p>
|
|
|
|
<h6>Technologies</h6>
|
|
|
|
<p>
|
|
<i class="fab fa-docker"></i> Docker, <i class="fab fa-github"></i> GitHub, <i class="fab fa-linux"></i> Linux,
|
|
RESTful API, server-side templates,
|
|
DevOps/systems administration, Amazon AWS <small>(EC2, S3, SQS, SES, EKS, Elastic Beanstalk)</small>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="column">
|
|
<div class="card">
|
|
<div class="card-header has-background-info">
|
|
<p class="card-header-title has-text-light">
|
|
<i class="fa fa-brush mr-2"></i> Front-end (web design)
|
|
</p>
|
|
</div>
|
|
<div class="card-content content">
|
|
<h6>Languages</h6>
|
|
|
|
<p>
|
|
<i class="fab fa-html5"></i> HTML,
|
|
<i class="fab fa-css3"></i> CSS,
|
|
<i class="fab fa-node-js"></i> JavaScript
|
|
</p>
|
|
|
|
<h6>Frameworks</h6>
|
|
|
|
<p>
|
|
<i class="fab fa-node-js"></i> Vue.js, Angular, React, Knockout, vanilla<br>
|
|
<i class="fab fa-css3"></i> Bootstrap, Bulma, Tailwind
|
|
</p>
|
|
|
|
<h6>Technologies</h6>
|
|
|
|
<p>
|
|
Ajax, WebSockets, WebRTC, responsive design (mobile friendly), Progressive
|
|
Web Apps (PWAs), Single Page Apps (SPAs), localStorage, Cross Origin Resource Sharing (CORS)
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<section class="content">
|
|
<h2 id="technical" class="anchor">Technical Skills</h2>
|
|
|
|
<ul>
|
|
<li>
|
|
<strong>Programming languages:</strong>
|
|
<ul>
|
|
<li>
|
|
I can program proficiently in <i class="fab fa-golang"></i> <strong>Go</strong>,
|
|
<i class="fab fa-python"></i> <strong>Python 3</strong> and <i class="fab fa-node-js"></i> <strong>JavaScript</strong>
|
|
(npm and web) and use these languages regularly for work and side projects.
|
|
</li>
|
|
<li>
|
|
I also once knew <img src="/images/perl.png" width="16" height="16"> <strong>Perl 5</strong> well (13 years straight!)
|
|
but may be a bit rusty now!
|
|
</li>
|
|
<li>
|
|
Also can be dangerous in bash, SQL, Windows batch files, AutoIt, PHP
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Project domains I have dabbled in:</strong>
|
|
<ul>
|
|
<li>
|
|
Web development (back-end, RESTful API, server-side rendered templates) and front-end (HTML/JavaScript, web design, single page apps)
|
|
</li>
|
|
<li>
|
|
<strong>Writing!</strong> I always say if I wasn't a developer I would be a writer, and I love to
|
|
document <em>the shit</em> out of the code I write. See my
|
|
<a href="https://www.rivescript.com/">RiveScript</a> and <a href="https://www.sketchymaze.com/guidebook/">Sketchy Maze</a>
|
|
docs for example.
|
|
</li>
|
|
<li>
|
|
Operations (managing Linux servers, deploying apps, Docker, nginx, Amazon AWS)
|
|
</li>
|
|
<li>
|
|
Chatbots (I built my own scripting language, can also author chatbot personalities)
|
|
</li>
|
|
<li>
|
|
Desktop applications (native UIs or web app wrappers)
|
|
</li>
|
|
<li>
|
|
Game development (I have one I wrote from scratch! Go/SDL2)
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Web Frameworks I know well:</strong>
|
|
<ul>
|
|
<li>
|
|
<i class="fab fa-python"></i>
|
|
<strong>Python:</strong>
|
|
Flask, Jinja, SQLAlchemy
|
|
</li>
|
|
<li>
|
|
<i class="fab fa-golang"></i>
|
|
<strong>Go:</strong>
|
|
Standard net/http, <a href="https://gorm.io">gorm</a>, <a href="https://github.com/urfave/negroni">urfave/negroni</a>
|
|
</li>
|
|
<li>
|
|
<i class="fab fa-node-js"></i>
|
|
<strong>JavaScript:</strong>
|
|
Node.js, Vue, jQuery, vanilla JS
|
|
</li>
|
|
<li>
|
|
<i class="fab fa-html5"></i>
|
|
<i class="fab fa-css3"></i>
|
|
<strong>HTML/CSS:</strong>
|
|
Twitter Bootstrap, Bulma (or all from scratch)
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<h2 id="examples" class="anchor">Example Projects</h2>
|
|
|
|
<p>
|
|
See my <a href="/portfolio">Portfolio</a> page for some of my biggest and actively
|
|
maintained projects. I also have a variety of stuff on my
|
|
<a href="https://github.com/kirsle" target="_blank">GitHub</a> page but here
|
|
are some interesting projects in particular:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<strong>RiveScript:</strong> a chatbot scripting language, <a href="https://www.rivescript.com" target="_blank">rivescript.com</a>.
|
|
<ul>
|
|
<li>
|
|
A good example of my documentation writing skills! Just check out that website,
|
|
or the <a href="https://github.com/aichaos/rivescript-wd" target="_blank">RiveScript Working Draft</a>,
|
|
the specification for RiveScript written from an agnostic point of view to any particular
|
|
implementation of it (<a href="https://github.com/aichaos/rivescript-python">Python</a>,
|
|
<a href="https://github.com/aichaos/rivescript-js">JavaScript</a>,
|
|
<a href="https://github.com/aichaos/rivescript-go">Go</a>,
|
|
etc.) -- and check out those implementation repos for lots of docs and examples!
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>Sketchy Maze:</strong> my open source drawing-based maze game, <a href="https://www.sketchymaze.com/" target="_blank">sketchymaze.com</a>.
|
|
<ul>
|
|
<li>
|
|
The game engine is open source with a mirror <a href="https://github.com/SketchyMaze/doodle" target="_blank">on GitHub</a>.
|
|
</li>
|
|
<li>
|
|
It also spawned off an open source Go <a href="https://github.com/SketchyMaze/ui" target="_blank">User Interface toolkit</a> that
|
|
implements all the windows, scrollbars, checkboxes and other UI widgets for the game. My UI toolkit can support building desktop
|
|
apps (anywhere SDL2 is supported) as well as compile to WebAssembly and work on a web page.
|
|
</li>
|
|
<li>
|
|
A ton of documentation I wrote in the <a href="https://www.sketchymaze.com/guidebook/">Guidebook</a>
|
|
that ships with the game.
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
<strong>BareRTC:</strong> a webcam enabled chat room, <a href="https://github.com/kirsle/BareRTC">github.com/kirsle/BareRTC</a>
|
|
<ul>
|
|
<li>
|
|
A back-end written in Go that uses WebSockets for the chat room protocol and supports WebRTC for peer-to-peer
|
|
webcam and microphone sharing between chatters.
|
|
</li>
|
|
<li>
|
|
The front-end uses Vue.js and vanilla WebSocket and WebRTC calls (no framework like socket.io needed in 2023)
|
|
</li>
|
|
<li>
|
|
It can plug in to any existing website's userbase via JWT tokens (optional) or it can run in open mode
|
|
where users pick any username they want (less recommended or tested -- I built it to plug in to one of
|
|
my sites with an established userbase).
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>
|
|
Miscellaneous cool things on my GitHub:
|
|
<ul>
|
|
<li>
|
|
<a href="https://github.com/kirsle/go-website-template">go-website-template</a>: a good base for a
|
|
Go web app that uses only the standard library and has a start to a database, users table, session
|
|
cookies with log in/out and other useful basic features without a framework. It's pared down from
|
|
one of my personal projects where I gutted it to the basics to show as maybe a good example how to
|
|
start a Go web app.
|
|
</li>
|
|
<li>
|
|
<a href="https://github.com/kirsle/flask-multi-upload">flask-multi-upload</a>: a Python/Flask application
|
|
where I was exploring HTML 5 multi-file uploaders with progress bar using fairly easy to understand
|
|
JavaScript (with some jQuery).
|
|
</li>
|
|
<li>
|
|
<a href="https://github.com/kirsle/PCCC">Perl CyanChat Client</a>: unfortunately CyanChat no longer exists
|
|
but this was one of my bigger Perl/Tk graphical desktop applications. Using my Perl module,
|
|
<a href="https://github.com/kirsle/Net-CyanChat">Net::CyanChat</a> you can run a CyanChat compatible
|
|
server that PCCC can be configured to log into.
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</section>
|