Nathan Smith

(306) 222-3961 | xautotx@gmail.com

Computer Systems Technician
Full Stack Software Developer
Eurobeat Enthusiast

About Me

I'm a guy who gets things done. I like to have my tools, options, and crew all laid out in the open so that I may determine an effective way to solve whatever problem is at hand.

... I solve problems. Not problems like "What is beauty?", because that would fall within the purview of your conundrums of philosophy. I solve practical problems.

I am a Computer Systems Technology graduate from Saskatchewan Polytechnic. I am now writing new systems in Python 3 in primarily Linux based environments full time. I am working on a small side project, Ochrewood Tribute, in which some friends and I are attempting to learn a new language and framework. The project is open source and anyone is welcome to join.

I have built numerous computers for varying purposes and people by speaking with them, determining their needs (including performace, reliability, and future upgradability) and budget constraints, writing up a Request for Proposal (RFP), and finally going ahead with the build. My personal computer is a custom build, as well as some of my friends' gaming rigs, family members' office rigs, and a few webservers. I personally administrate this webserver which is hosting a few different sites, but it is not a custom built. I was able to save on cost and power consumption by using a prebuilt machine.

Skills

I have used many languages over the years in an assortment of IDEs and some by plain text, some more than others. I have found that most languages at least operate in very similar ways, they simply use different syntax (If you understand the concept of recursion, it's just different syntax between Java or C# or whichever object oriented language). So far I have studied:

Web Based Languages

  1. HTML5/CSS3 (including BootStrap)
  2. Django (Python)
  3. JavaScript (including jQuery)
  4. PHP3 and CURL
  5. Some Google APIs (including Maps)
  6. RESTful Web Services (including Yahoo! Weather)

Application Based Languages

  1. Java (including Android, jUnit, and JavaFX)
  2. C#
  3. C
  4. C++ (Hobby level, with Ogre)
  5. PhoneGap
  6. Swift

Databases

  1. MySQL
  2. Oracle
  3. Microsoft Access
  4. SQLite
  5. PostgreSQL

Other Languages

  1. Git (Command Line)
  2. Bash
  3. Batch/Windows Command Prompt
  4. HamsterSpeak PlotScripting

Misc

  1. System Networking
  2. Hardware Troubleshooting and Maintenance
  3. Operating System Administration (Windows desktop and servers, and Linux)
  4. Project Management (Agile development, SCRUM)

Unrelated Skills

  1. Class C First Aid
  2. WHMIS certification
  3. Class 5 Driver's License, no restrictions

My Priorities, in order

I prefer to code web content, specifically because it is an environment that allows me to easily satisfy these priorities. Making a web application allows me to tell someone "Hey, check out this thing I made" and all they have to do is go to a page and it is there. My project is easily accessible and straightforward to use, I don't have to tell someone to download an external app (in the sense that they are free to just use their regular browser), agree to any new terms and conditions, load a framework, or install custom software for something they may or may not even care for. This allows them to get to the content they want much more quickly, with a lot less hassle on the end user.

  1. Out-Of-the-Box Functionality

    A tool is hardly good to anyone if it doesn't function. Having a tool that works is the key end goal, but it is even better if it functions right out of the box. This way, the users can quickly and easily get it up and running and go on with their job. If the tool is truly powerful enough, people may take the time to learn it, but it is more likely that they will find a different, much easier tool to use if there is too much pre-configuation work beforehand.

  2. All Inclusive/Cross Platform

    I strongly believe that dedicating your work to any one platform limits your audience. It is important to understand that even though one platform may hold a dominant market share, they may falter in the future which could reduce your application's reach. By being multi-platform, you are able to reach many more people, and be recognized in more communities.

  3. Lightweight

    I have places to be and so do you. The less time it takes for the user to access the application or site, like more likely they are to stay and use the product again. This also means coding efficiently, and not using complicated algorithms and languages where they are not needed. As an example, this site used to be bare HTML, specifically to be as small as possible and ensure you get the information you want in as few packets as possible. Following this mentality reduces load time and stress on transmission hardware. I later decided to use Bootstrap on this site on the idea that people would likely already have the CSS and scripts cached on their machines, making the load time negligible.

  4. Modularity

    I will do my best to make something for you that will suit your every need. Unfortunately, sometimes "you" refers to a large group of people and what suits one person may not suit everyone. This is why I love to leave a sort of "access panel" of some sorts to the user, so that in the event my program doesn't suit them, they have the ability to make the necessary changes themselves. One size doesn't always fit all, so let the end user customize it to their liking.

  5. Design

    While basic functionality is the most important part of a project - you do not have an application if it does not work - it is still important to put thought into design. Whether it is colours or drop-down menus, design plays a part in the overall navigation of the product. Design is a way of polishing your work to present to the client.

Who I Am

This page isn't meant to be a personal blog, but if I had to list some hobbies, they would be: