Recently I announced on my personal blog that I’ve started my own company called Taylor R Price, Software Consulting. Given that announcement,I thought it would be wise to give you more information on three things:
- What I can do for you today
- Why I can do that for you
- What I’m excited to learn to do for you
What I Can Do For You Today
Given my previous experience, these are what I can handle for you today:
- Windows or Linux application design, implementation, and testing
- Bug fixing or new feature work on applications written in C++, C#, or C
- Automated testing with both unit and integration tests and the requisite refactoring
Those are all very broad in scope. Obviously every application, company, and user has different domain knowledge that is necessary to solve their needs. I can work with you to make sure that we get the necessary requirements and knowledge nailed down.
If this sounds like something you need, you can contact me at [email protected]
Why I Can Do These Things For You
I have been a software engineer for fourteen years and have worked with a variety of technologies. My LinkedIn profile and StackOverflow developer story show the companies I’ve worked for and the highlights of my experience working for them. Given that, I’ll let you check those out for my list of positions and, instead, give a rundown of some technologies I’ve enjoyed working in and highlight projects where I used them as a way of showing you my experience. This is not a complete list by any means.
While working on EnCase Endpoint Security at Guidance Software (now part of OpenText), I had the chance to work with some great people. One of the projects I worked on that was fun is the indicator of compromise (IOC) search feature of the product. This project was interesting for several reasons:
Firstly, because it was a relatively new feature, there was some flexibility to use newer features of C++ to make the code simpler and more powerful than it had been. For anybody who has worked in a code base that has seen some use, the freedom to update and simplify is a great relief. While I’ve used C and C++ for a number of years, getting the chance to teach myself some of the newer C++11 and C++14 features and actually use them was fun.
Secondly, it was great to get a chance to work on unit and integration testing. While I had previously used googletest on my own, it was great to be able to do so in a production environment. We were able to see the code base start to improve as we refactored the code to be testable, weeded out problems with the tests we wrote, and prevented future problems from cropping up. Additionally, I had a chance to use MSTest to setup integration tests between a C# code base and a C++ code base.
Thirdly, I had the chance to get my feet wet in the security field by developing some Windows based IOCs to ensure that the IOC search feature worked as desired. In order to make sure that we were finding legitimate indicators of compromise, I researched the binaries that ship with Windows that are common targets of malware using the SANS Find Evil poster. Using this poster to help guide my research for Windows 7, 8, and 10, I developed a set of IOCs to validate that the search engine worked correctly, setup a testing frame work to do the validation, and setup the IOCs to be shipped with the product for our customers to use.
During my time working at Entertainment Partners, we had a code base that ran both on Windows (with a UI) and on Linux (as a service). Because of this, I was constantly switching back and forth between OSes editing code and debugging and, over time, developed a love for the Vi editor which I spoke about on my personal blog here. The TL;DR version of this love of Vi boiled down to getting a programming environment setup that is consistent across all platforms I’m working on where I can use my muscle memory for commands that I use all the time (search & replace, syntax checking, etc).
What I’m Excited To Learn To Do For You
You’ll notice in my resume/experience/profiles that there isn’t any time spent doing web programming. While there is a browser based front end for EnCase Endpoint Security and I did, on occasion, look at or touch the code for it I was primarily working on the C++ code base that drove the functionality requested through the front end. This lack of experience is something that I’d like to rectify. Don’t get me wrong; I still love C++ as a language, the possibility of doing high performance or low level programming, and still plan on taking C++ work.
To rectify my lack of web experience, I’m working my way through this Ruby on Rails set of courses on Coursera. I’ve got a couple ideas for updates to current sites and am planning to implement a small blog site connecting to Blogger as a stereotypical practice site. My hope is that, through the process of the class and implementing the blog site, I will show to myself and everybody that my experience as a software engineer and my ability to learn translates into being able to take on Ruby on Rails jobs for you.
I am not, however, going to bet the farm on Ruby on Rails. It is simply a place to get my feet wet in RESTful web services. Eventually, I would like to learn Swift to create iOS apps as a way to connect with some of the web services I’ve been considering working on. Learning Swift will also give me the flexibility to write MacOS applications since that is the language that they’re pushing across the board for applications that users interact with directly. This, however, will take some time and my hope is that I can serve all of you well enough with my current skills to pick up some new skills that will allow me to serve you all the better in the future.