Stephen Smith

Hello! Welcome to my portfolio.

Résumé

You're busy, I know this. If you'd like my résumé, I am happy to provide it in PDF format here.

About Steve

My background comes from both business and technology. I started out as a Bachelor of Commerce grad from Saint Mary's University, but my first job out of university was doing market research for a web design company. After that, I freelanced for a year and a half, gaining experience in client service, and figuring out what I liked most about technology.

Eventually, I realized I wanted to get some tech credentials, so I attended the Information Technology program at Nova Scotia Community College. It was a great experience, and I was happy to be named Valedictorian of my graduating class.

When I'm not in front of a computer, I like to cook (food science is fascinating to me) and watch sports (Let's go... favourite team of person reading this!)

Below, I've laid out some of my proudest accomplishments. I hope you enjoy them.

Current Work

Answer 365 (Internal Development)

I think call centres get a bad rap. Answer 365 is technically an "answering service", given it was founded back in 1946 and has the antique switchboard in the lobby to prove it. I help them provide vital services 24 hours a day, 365 days a year, through hurricanes, fires, floods, and a pandemic.

Our main software stack is provided by a company called Amtelco, and I've learned how to faithfully translate client setup documents prepared for me by our client services team into actual working computer code. The largest script I ever built took 70 hours start to finish (not all in one go, thankfully) and came from a document that stretched to 54 pages long.

When I'm not building or maintaining Amtelco scripts, I do things like improving the security of the call statistics reporting system, and automating the process of transferring and uploading client call recordings every day.

Answer 365 (in association with S.O. Asher)

But the work I'm proudest of doing at Answer 365 is the lead role I have with the company's largest client, S.O. Asher. They run hospital home lotteries across the country, with excellent prizes for entrants and great fundraising for the hospitals themselves.

This means security is paramount, because not only am I responsible for hundreds of thousands of PII records about lottery entrants, but I also have to process millions of dollars in credit card payments without letting anything slip. It's a challenge I relish with each new cycle.

In fact, it's been going so well that we've expanded it! Most recently, I was tasked with building a replacement for our legacy Amtelco inbound/outbound contact centre system, which worked fine for our continuous lines of business but was very expensive to flex up and down when we needed extra capacity during peak lottery order times.

So I built a custom system that embedded AWS Connect's softphone technology in a user interface I built from scratch. Operators would either make or receive calls, and if they needed to place an order, they could link directly into the existing order platform I'd previously built.

The system is running as we speak, processing thousands of contacts and hundreds of thousands of dollars an hour for hospital foundations across the country. It's truly one of the best things I've ever done.

Hobby Projects

Every once in a while I'll think "You know, I could write a script to solve that." And then a few hours later I have a piece of code that solves a problem maybe only I have.

Movie Time Calculator

We'll start with the simplest thing I've ever built - it fetches when today's civil twilight ends, which is usually when it's dark enough for optimal viewing conditions in my home theatre, and displays it in big text on a black background so I can check it on my phone on the couch.

Trello Searcher

We use Trello at work, and each card has a Custom Field for the client ID. I wanted to be able to search that field, and pull back, say, all the cards with client ID 24601. But Trello wouldn't let me.

I acceded to this for a couple months, but eventually I gave in and wrote a script that accesses the Trello API, iterates through all the cards in our account, checks the value of each one's custom field against my search term, and returns the ones that match. By now, it's saved me probably twenty times the time it took to write it.

YouTube Playlist Manipulator 1

I watch a lot of YouTube, and there are certain things the site won't tell you or let you do, simple things you'd think would be obvious like "How long is this playlist?" So I wrote a script that accepts a playlist ID, iterates through the videos in it, and returns the length.

YouTube Playlist Manipulator 2

Once I knew what was possible, I was hooked. Next, I built a script that would take my playlist of videos I want to watch and tell me certain statistics about it, like which channel had the most videos in it (Tested, if you're wondering) and if there were any particularly long or short videos that I might want to move to their own playlists (I did this, and it really improved things).

YouTube Search Manipulator

This one definitely counts as "solving a problem only I have". Sometimes I want to search for videos about a person, but that person is a famous YouTuber, so all the results are videos from their channel, which I've already seen.

So what I did was build a script that performs my search, iterates through the first few hundred results, and excludes everything from a channel ID I provide. Which is how I found this amazing 2010 video of pre-YouTube Tom Scott. Worth every second I spent coding.

Vaccine Info 1

This one is definitely not just a me problem. One morning I was watching professional cycling (it's the best, and no one can tell me different), and thinking about when vaccines would open to my age group, and thought "I bet I could automate that."

As it turns out, I could. The Nova Scotia immunization portal returns all of its data as a JSON file, and if you look through it you'll notice that one of the properties on each vaccination location is minAge.

Knowing this, I programmed a script to check every once in a while what that value was set to, and to send me an SMS via AWS SNS if it was less than my age. A couple days after I built it, I got my first ping, and was able to get a 30 minute jump before it was public knowledge.

Vaccine Info 2

Now that I had my first shot, the question became "Where will I get my second?" The existing search didn't filter out fully booked locations, which was a bit of a pain to scroll through (I will reiterate, these are very small problems I'm solving with these scripts).

If you look at the JSON data again, you'll notice that every location has a boolean determining whether it's fully booked up or not, and some GIS coordinates denoting where it is. So I modified my existing code to filter out all unavailable spots, calculate the distance to each one, and rank them. It came in just as handy when the time came for shot #2.

Past Work

REDspace (under contract with Viacom)

Fresh out of school, I came to REDspace for a specific project - Viacom (the parent company of MTV, VH1, Comedy Central, and several other media properties) was looking to consolidate several legacy WordPress blogs into the new unified WordPress platform they were currently using.

So that meant 16 blogs, 115k posts, and 2.2m pieces of metadata, all dispersed across multiple years, editorial patterns, and people. In the end, I created a custom ETL tool from scratch that extracted data from wherever it may have been, scrubbed it of any anachronisms preventing its smooth transition to the new system, and inserted it into a live site environment.

During the middle of the project we had some time to spare, and I implemented some code optimizations related to image transcoding that made the code run 18 times faster during the second half of migrations. The bottleneck became that their server simply couldn't write the new files fast enough.

In the end, they were so happy, our main Viacom contact in New York called a local vendor in Bedford, and had an enormous lunch for our entire team delivered to the office. That was a good day.

REDspace (Internal)

After the Viacom work was done, REDspace decided to keep me on for their own internal use. During the remainder of my time there, I was the founding member of their information security team, and the author of their secure development process guidelines. Hopefully they're still using them!

I also helped the QA team get off the ground with process automation, and wrote several glue scripts to do things like synchronize different internal HR systems that had no common interface.

My final bit of client work for them was creating an entire REST API from scratch, for a client who needed an inventory management system. This was a real learning experience for me, as it was the first time I'd really been embedded with front-end developers, learning about modern JavaScript and CSS. And they certainly appreciated the versatile, well-documented, secure API I created for their use.

Proposify

At Proposify, I mostly worked behind the scenes. My first task was to de-duplicate a few million records in the production database, which I was able to accomplish rather efficiently. After that, I spent my time polishing the code that connected our product to third party services, as well as implementing and maintaining endpoints and documentation for our API.

Speaking Samples

Painting With Numbers
An overview of data analysis, starting simple and gradually introducing more complex concepts.

Privacy Isn't Dead
An explanation of personal privacy tech for the layperson.

Potential Speaking Topics
I'm available to speak to your audience on a wide variety of technical topics. Please feel free to pick something from this PDF and email me about it.

Writing Samples

"We worked with Stephen to publish technical, test-focused articles for the company blog. He's communicative and thorough, he writes well, and he demonstrates expertise in our subject area. We look forward to collaborating on future projects!"
- Paul Reinheimer, Founder, WonderProxy

Professional Writers Association of Canada
I am proud to be a Professional Member of the Professional Writers Association of Canada, the country's largest association for professional non-fiction freelance writers.

Razorwire Consulting
I've worked with some really, really interesting clients during my time as a freelancer, and created a lot of content I'm really proud of.

Ingest SDK
My largest contribution to open-source to date, a full PHP SDK for the Ingest video platform. I also wrote the full documentation.

How To Speed Up Testing With Localized Servers
Nobody likes waiting for their tests to finish. I wrote this article to show people an easy way of speeding things up.

3 Great Patios on Canada's East Coast
Some of my fondest memories involve sun, friends, and a massive platter of nachos, so I wrote about a couple great local places.

The Secrets To University
My first published book, ISBN 9780981160641. I had a rough first year in university, and I wrote about it so hopefully others don't repeat my mistakes.

Approaching Web Security
While at REDspace, I wrote a blog post for the corporate blog about the basics of web security - SQL Injection, XSS, CSRF, and the like.

The Adventures of Santamarian Steve
While in university, I was asked to write a blog about what it was like to attend Saint Mary's University from the student perspective. I think it turned out pretty well.

Recipe Database
Runs on Django 2.1 and Python 3.6, with a bit of Bootstrap for looks.

The data-driven scheduling overhaul I spearheaded for Podcamp Halifax
Don't you hate it when two talks you really want to see are at the same time? Or when a room is clearly too big or too small for the crowd the speaker draws? I did my best to solve that.

Résumé

One more time, with feeling: My résumé is available right here, and I would love to speak with you.

Have a great day!