197 lines
9.5 KiB
HTML
197 lines
9.5 KiB
HTML
|
{% extends "layout/base.html" %}
|
||
|
{% block title %}Software Development{% endblock %}
|
||
|
{% block content %}
|
||
|
<section class="first content">
|
||
|
<h1>Software Development</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, and 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="#skills">Technical Skills</a></li>
|
||
|
<li><a href="#examples">Example Projects</a></li>
|
||
|
</ul>
|
||
|
|
||
|
<h2 id="skills" 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>
|
||
|
{% endblock %}
|