portfolio logoAndrew Roe - Skills

Here I describe professional skills I have and computing tools I've been exposed to. The level of skill and exposure to tools is of course varied. I also rate myself on those skills and tool familiarity.

Pardon my sober look here. Some of these skills have been hard earned.

I'm dividing my computer skills into 4 catagories; Languages, Protocols, Platforms, and Tools. I used CanvasJS to create bar charts in this document to help show the rating of each of my skills. In all cases, my rating is based on a scale of 0 to 100. But each chart uses levels of twenties, e.g. 0-20, 20-40, etc. Thus if the highest rating for a given skill is 65 in some catagory, the chart will only go up to 80. I'm pretty much going to never rate myself at 100 in skill level for anything. There is surely some area of improvement in everything we do in life. In fact it is hard for me to really define well what the skill level is sometimes. I'm mostly trying to convey a relative weighting for each skill. Lower skill ranked things are certainly going to be candidates for me to improve upon with additional training and self-learning.



Sober Me after obtaining skills

Languages

I've listed a number of languages I've used in my resume. Some have been extensively used and some I've only lightly been exposured to and everything in between. So I think it is helpful if I rate my familiarity along with a notion of my skill level with each Language skill.
Back to Top

C/C++

I'm very experienced with C code and to a lessor degree C++. But it makes sense to lump them into one language skill. Over many projects and with several employers, I've written, tested and released ten's of thousands of lines of C code.

BAL

Basic asembly language (BAL is a 32-bit assembly language) is where I started out. I loved working with assembly code. But that was another era. I've rated my skill level with BAL lower than C/C++ only because it has been many years since when I did a ton of BAL coding.

bash shell

If you've been a Unix/Linux/MacOS user for very long, it would be hard to not be somewhat familiar with the bourne shell and other shells. My preference is to use the bash shell rather than the bourne shell. That is what I set up in my user profile to be used on start up. I've seen some pretty large and complex bash shell programs. I've never had to create a big one from scratch, just a number of small handy ones. I rate myself to be about average skill, relative to many others, with this shell.

Perl

I had a lot of fun a while back creating a fairly large Perl based test framework that ran as a CGI script. That constitutes the bulk of my Perl experience. With a Perl debugger it makes it pretty easy to slog threw most any problem. Python really seems to have displaced Perl. But I still think Perl knowledge is a good thing to have in one's repertoire.

bourne shell

The bourne shell is the default shell for Unix/Linux. It is hard not to be somewhat familiar with it if not more than that and really be a Linux user. I prefer the bash shell and so am a little more familiar with that shell compared to the bourne shell.

HTML/CSS

I'm currently taking a class in HTML/CSS and Web programming. It is a great class and I keep getting more familiar with HTML and CSS because of that class. I look forward to continuing to get better.

Python

I'm mostly self-taught with Python. I've created a Flask App in Python and would like to do a lot more with Python after I complete some other HTML/CSS and Java training.

PHP

I setup an AWS "elastic" host and propagated it with an App that uses PHP. I did this as a self-learning task. I need to spend more time with PHP in order to advance to a more proficient level. But I think it was a good start.

JavaScript

I'm being exposed to JavaScript as well as HTML and CSS in my Web Applications class. JavaScript is a high priority for additional learning. I'm also getting a chance to learn some BootStrap framework in this class.

Ruby

I have done a little bit of Ruby and Ruby on Rails, so not completely a novice. But I need to rate my skill/familiarity of Ruby low at this time. I would not be afraid to dive in to Ruby if the need arose.


Protocols

Like language skills, my skill with different protocals varies too. I've mainly rated myself on a relative scale. In a way this rating reflects the amount of exposure to each of these protocals. I'm sure there are some I've missed, but this is a good representation.
Back to Top

SCSI

Some years back I invented a SCSI to ESCON driver. It should have resulted in a patent, but the company didn't want to spend the money to fully pursue it. It was unclear if this invention was possibly "known to the trade" and thus not patentable. But no one else had ever done it before. We generated a lot of excitement for a time because of this driver.

It had some bells and whistles that allowed it to mimic the device buffering of data like what a tape or disk controller device is capable of. Thus even though it was designed to be able transmit device commands and data over a network connection between the SCSI target mode device of a user host (Unix) to our remote ESCON device which then connected to the end ESCON tape or disk device controller, it performed at native speed!

That was some years ago and it was one my most memorable projects. I guess that is why I include it here in this portfolio document.

TCP/IP

One company I worked for needed to add the TCP/IP layers into their network front-end controller host in order to be eligible for a government contract. I ended up writing the IP datagram handling layer. It was a great way to learn what TCP/IP is all about "under the hood".

ESCON/Block Mux

This is an area I worked on in several projects over the years. It is pretty much an obsolete hardware architecure. But I mention it mainly as a way to express that I've worked on device drivers at near the lowest level on several systems. Although those systems are no longer used, It was a great teacher of real-time event handling. I appreciate those experiences to this day.


Platforms

I've worked on a number of host platforms. This list is the main ones. I've worked on a number of vendor propietary ones too, but that really isn't of much value in today's market place.
Back to Top

Linux

I've worked a lot with Red Hat, Suse, and Ubuntu. I set up an Ubuntu host on AWS and have install numerous Red Hat and Suse systems and then used them, mainly for testing. I'v also done the same on Virtual Machine (VM) hosts. Linux is a great OS.

MacOS

This is what I use at home and at school. It is by far my most used platform in the last several years. It is Linux based and also has a great user interface and many other tools and gadgets included. MacOS is a great OS.

Windows

I used Windows at work for many years. It is a great OS too, but it seems that the Unix/Linux platforms are continually becoming more pervasive. I've done a lot testing on Windows hosts but not much system code writing for that platform. Like many, I've used Windows for producing numerous Word documents.

Solaris

I used to use Solaris a lot for development and testing, but haven't worked on this platform nor AIX, etc. for a number of years.


Tools

I've worked with a number of tools over the years. Like platforms and protocals I've tried to list only those most relavent to today.
Back to Top

vi/vim

This is probably my favorite editor. Mainly because I've used it so much.

Subversion/SVN

This is probably my most familiar code respository. But now and in the forseeable future it is time to focus on git and Github.

CVS

Another coder repository I've used.

Word

Who hasn't done a lot of Word documents over the years.

gdb

A very valuable debugger for system code. In fact, I believe it is an essentail tool for system program development and maintenance.

Excel

I've used this more for personal reasons than work related. But like Word, this is an often used tool in the work-place.

Wiki

I've used and edited and created Wiki pages at several different work places.

Jenkins

I've used Jenkins a lot. I've updated and maintained some scripts used by Jenkins. I've also set up Jenkins on my home Mac. I would like to learn more about Jenkins and also refresh my memory about its' configuration and setup for script handling. It is a great tool!

git/Github

I have a Github account and have used git. I would like to learn more about the integration of Github and test frameworks such as Selenium and plan to do that after completing more of the current program I'm enrolled with currently.

Vscode

Used this some and have installed it on my Mac. I'm currently using Sublime a lot for editing but definitly plan to learn and use Vscode a lot more.

Puppet

Install puppet on my Mac and completed a portion of a great tutorial for demonstrating how to use it. I needed to set this asside for a while in order to work on other tasks.