Academic Work #
I have a tendency to think of the work I did in college as work valuable in that setting alone. Although for the most part true, I did do a few things there that have proven interesting to others in my profession. I talk about one of these projects below.
During my senior year at Youngstown State University, I chose to do my capstone project on sentiment analysis. In particular, I examined the performance of three popular sentiment analysis algorithms when run against developer commit logs. I highlighted the factors that caused them to produce similar results, the ones that caused them to diverge, and the challenges of building an accurate algorithm for this field. I wrote a paper that outlined my conclusions and the process I used to reach them, and a presentation to go along with it. Since then I have done one other presentation on the subject. I link to each of these documents below.
- The paper: Evaluating Sentiment Analysis Tools Against Developer Commit Logs
- My capstone presentation: Evaluating Sentiment Analysis Tools Against Developer Commit Logs
- My second presentation on sentiment analysis: Sentiment Analysis
That last slide deck, the least technical of the three documents above, I presented during BOLC. I recommend those unfamiliar with sentiment start there, or with my paper. Check out my capstone presentation if those pique your interest, and you want to know more about the challenges of using sentiment analysis in the software engineering domain.
Writing Projects #
I have written here and elsewhere off and on since 2006. College almost destroyed my love for writing — as it did my love for reading, for a while — but I still managed to churn out a few things here and there. It took a while to get back into it once I graduated, but now I split my writing time between these projects.
The Tactical Employment of Cyber Protection Teams #
This book is for the junior officers forever filling company-grade positions as Mission Element Leaders, who must direct their analysts in the detection of the most sophisticated hackers in the world; and for the Host, Network, and Intelligence Analysts arrayed against those actors, who must consistently combine world-class domain expertise with sound methodologies in the conduct of rigorous analysis. This document explains the operational employment of cyber protection teams at their level, at the tactical edge. Members of USCYBERCOM and its subordinate units may request a copy by sending a message to my work email, available in the global address list.
This Site #
I started this website in 2012. After finding the day's popular blogging platforms wanting, I decided to create something of my own. I talk about First Crack, the content management system behind this website, below.
Each incarnation of this website has focused on something different. Web design at first, then robotics, technology for a time, and then everything except technology as my passion for blogging faded. Now I talk about whatever I want, adventuring, writing, weightlifting, and leadership primary amongst them. I enjoy the writer's craft as an intense creative outlet, and hope to someday focus all my energy there.
Survival of the Fittest #
Freshman year of college, I decided to write a book; thirty months later, I finished the last round of revisions on a 50,000 word text that I hope to someday publish. I have little interest in sharing more details about this project until then.
Coding Projects #
I started programming in 2004. Small websites, at the time, and then more complex projects as I got better at it. Today, I split the time I spend programming between coding projects and web development. The first means content management systems for the most part. Although at times I have focused on other things, like a news scraper that predicted the best time to submit a link to Y Combinator's popular social news site, Hacker News, I had little incentive to develop those applications past the preliminary stages.
My second main focus, web design, came about as a complement to my work on content management systems. I have yet to come across anyone wanting a back-end without the front-end, user-facing website to go along with it, so I like to roll the two into one package. Below I talk about some of my personal projects, with links to code repositories where applicable.
First Crack #
Having tried several of 2012's most popular content management systems, I realized nothing would work as well as something I built myself. A few months later, I began running my website on something I called First Crack. Inspired by Marco Arment's Second Crack, as described on episode eighteen of Build & Analyze, First Crack will turn a directory of over a thousand Markdown files into a full-featured, lightweight, static website in less than two seconds. I have written about this engine in the past, and again when I re-released it, so I will leave the project's GitHub page and those articles to do the rest of the explaining. If you're in the market for a lightweight, full-featured, beautiful blog with a custom landing page, and a fast, easy to use, platform-agnostic engine to build it, check First Crack out. I continue to run my site on this engine today.
Swig is a monolithic, multithreaded, micro web framework designed for an air-gapped intranet environment. Aside from Python 3, it has zero dependencies; just download and deploy. Out of the box, Swig supports IPv4 and IPv6, HTTP and HTTPS, block and chunked responses, and gzip compression. I encourage you to go through the README for more information, and to check out the code on GitHub.
HN Scraper #
My obsession with Hacker News began when I woke up to see that one of my articles had attracted over fourteen thousand pageviews in twenty-four hours. After some digging, I discovered that — unbeknown to me — one of my readers had submitted the post to Y Combinator's social news aggregator and it had made its way to the front page. After failing to replicate that success, I started looking for ways to optimize this phenomenon. If I could find a way to measure the site's activity without having access to its analytics, and if I could find a way to gauge the rate at which new submissions were gaining traction, I figured I could predict the best times to make submissions with the goal of attracting the most visitors possible. Other websites, like the now-defunct HN Pickup and the more recent HN Notify had already proved the concept, I just needed to replicate the results.
I planned to track stories by URL. I would then measure site activity by plotting rank and number of comments over time. Little change would indicate general inactivity, while rapid change would indicate that a lot of users were active on the site. Tracking metrics for individual stories could provide more granular insight into site activity and help identify hot posts before they went big.
Gathering the raw data proved much easier than I had anticipated, but I hit a stumbling block when it came to making sense of all that information. I took a few runs at it, but to no avail. Soon after that, I shifted my attention elsewhere. I have not put enough work into the code to warrant its own GitHub repository, so I have nothing to show for my work yet. I decided to write about this project here in spite of that, though, hoping that doing so would spark enough interest to get development back on track. Although I have had some success with this project, it, too, is inactive.
FMTV RV Builder #
I decided to buy a Toyota 4Runner in 2017, after Expedition Overland turned me on to the vehicle with their overland series to Alaska. I started eying an adventure van in 2018, but stumbled across FMTV-based RV's a few months later and decided to go that route. A mountain of time, effort, and technical expertise has gone into building my RV, and I have not even started yet: the planning process alone has already taken more time, effort, and technical expertise than I would have ever believed. I got lucky in that I have enough of all three to make this project successful, but not everyone will. My goal with this project is to create a simple, web-based tool that interested adventurers can use to make this long journey just a little bit easier.
With this tool, you can select the M1078 or M1083 LMTV chassis, add a living space of almost any length to the back, decide to have a pass-through to the main cab, add windows and doors, and even raise the roof in the rear for extra storage. It does not deal with the interior at all, only select aspects of the exterior: I wanted to give those interested in this type of rig the ability to visualize the exterior, and decide on a form factor, before working with a builder on the internals and all the other specifics that go into a build like this.
The builder has some quirks, and I want to add some more options and details later, but it works pretty well now.
I plan to write a long and detailed series on the events leading up to my decision to start my RV build, so look for that in the near future. I cannot wait to start writing those articles. Until then, feel free to play around with this project. Check out the live demo hosted here on this site.
I have used Brett Terpstra's Marked 2 for a long time now. It does a great job of pointing out lots of little ways to make your writing better, and then a whole lot of other things, too. I used it to highlight poor word choices, visualize word repetition, and gauge the complexity of my writing; all those other features did nothing for me, and so one Friday night I started thinking about ways to better serve my needs. By the next evening I had finished Proofer, a custom-built writing assistant that I now use for everything I post.
Given a plain text file formatted in Markdown, Proofer will generate a live preview of the article as it will appear on this site. Using a modified version of my blog's template, it includes statistics like word, sentence, and paragraph count; average words per paragraph; suggestions to replace overused, complex, or repetitious words; and statistics based on the Flesch–Kincaid readability tests and the Gunning fog index. Although I did my best to calculate accurate results for those algorithms, I have little expertise in natural language processing; I did enough to get close, and I plan to fine-tune my script later.
Pastebin Client #
This is less of a project, and more of a quick app I whipped up one afternoon to fix a minor annoyance: interacting with Pastebin.com. I like the service, and use it often, but I wanted a quicker way to access the information I stored there. After a look at their API page, and some experimentation with the Python Requests library, I put together a simple command-line interface that lists every note I have stored there, and allows me to view or download them. It doesn't do much, but it scratches this itch for me, and so I thought I'd share it with you, too. Check out the project here.
Let me get this out of the way right now: I understand that this is not the intended purpose of version control, GitHub, or BitBucket. I chose to co-opt this technology and these services for my own needs. I believe some will find some value in this little project.
I started using version control a few years ago, as part of a programming assignment in college. It did not take long for me to realize I could also use it for writing, for the exact same purpose: to track changes to my articles through time. This had the side beneift of giving me an off-site backup of everything I wrote for this site, in case something happened to my computer. I wrote this script to take advantage of that side benefit.
This script monitors a given directory for changes, then automatically pushes those changes to the source control repository with a generic commit message. I keep duplicate repositories at GitHub and Bitbucket, and push to both, so in practice this gives me real-time backup as I write, to two off-site locations. I can stop the script if I want to start making meaningful, progress-based commits again, but if I just want to ensure that everything stays backed up in real-time, I point this script at the directory.
This project enables Incident Responders to build a list of known Tor exit nodes. When conducting analysis days or weeks after an event occurred, the Tor Project's lists will not suffice: by then, any nodes involved in the compromise may have aged off. By collecting all Tor exit nodes and stamping them with the time they were active, though, analysts can easily identify all nodes active during a given time period and then quickly confirm or deny their use during the compromise.
CADD Projects #
In late 2015, I started getting very interested in 3D modeling. I had done some Computer Aided Drafting and Design, or CADD, as part of a FIRST Robotics Team a few years prior, but spent most of my time manufacturing the parts my much more capable friend created. I got back into it to design — of all things — houses. Industry programs like Solidworks and AutoCAD have a much steeper learning curve than I was willing to endure at the time, so I started with SketchUp. Since then I have built many houses, created several variations of the RV mentioned above, and even dabbled in tiny homes. I enjoy the process, and have become quite good at it. For the times when I don't feel like writing or coding, this has become a nice outlet. You can find all of my models on the SketchUp 3D Warehouse. Below I highlight some of my favorites.
The Homestead #
I wanted to create a house built for a homestead. Seven mediocre attempts later, I happened across a post from the Beyeler family on Pinterest. I loved everything about their design, and so I started building my own version of it. My dream home sits at two stories, several thousand square feet, and features a three car garage, main level master bedroom, walk-out basement, and four upstairs bedrooms. I hope to someday have the resources and the need for such a house.
I would build this on a large, open plot of land, surrounded by trees on all sides, with a pond in the front and plenty of space for a large garden and a greenhouse in the back.
Check out the full model, and peek inside, at 3D Warehouse.
4Runner Sleeping Platform #
Check out the full model at 3D Warehouse.
M1083 LMTV RV #
I look forward to building this rig in the next few months. For now, you can check out the full model at 3d Warehouse.
Tacoma Camper #
I have an interesting idea for a mid-size truck-based camper, but I have a lot of work to do before I can release it here. I can, however, outline a few of my goals with this rig:
- Minimize weight. This is huge for me. Most mid-size trucks do not get great gas mileage to begin with, and that drops even further once you stick a several hundred pound camper shell on the back. I am taking great pains to cut down weight wherever possible with this setup, so maximize the rig's off-road capability and improve range.
- Maximize living space. Anyone can cope with inconvenience for a while, but inconveniences like a small kitchen, little room to move around, a small bed really add up once you start living out of a rig. I am working hard to maximize internal living space to make long-term adventuring an even better experience.
- Long-term independence. Another goal I have for this rig is to promote long-term stints off-grid, to support lengthy backcountry adventures. Most adventure vehicles built on small platforms like these tend to do great in the short term, but lack the energy, water, and fuel capacity to stay off-grid for extended periods of time. I hope to change that with this design.
Check back soon, and check back often.
Tiny House #
I also have an interesting idea for a tiny house, but I have a lot of work to do here before I can release it, too. With this design, I also seek to maximize living space despite the small form factor of a tiny house, and hope to build in some off-grid independence as well. I like the idea of taking my house to a faraway location, and I like the idea even more the farther away I can get. Check back soon, and check back often.