Friday, August 28, 2015

10 Things I Learned As An IT Consultant

  1. Common Sense
 Kind of obvious, right? But really, basic troubleshooting requires common sense. You have to be able to logically go from one problem to another and systematically isolate the problem and test your theories. If there is anything I had to do repetitively in any of the jobs I worked there, this is it. Use common sense as you isolate and test using objective reasoning to come to an unbiased conclusion about the problem. This applies to just about any area of life, but I am also learning that it is exactly the same process for fixing bugs in code, too!

  1. Computers are tools
Maybe it's just me, but I thought that once you grew up, computers where little more than a necessary evil required to run your accounting software. Not so! Adults use them for all kinds of things! Seriously, though, I thought all geeks kind of grew out of it after a certain age, but I worked with people much older than myself who knew far more about computers than I did, and that was a humbling experience, after I had come to think of myself as such a technological wiz-kid!

In addition to being made for "grown-ups," I also learned that because computers are tools, people can use them to make a living. Much of the time, I associated them as being toys, or simply a device you use to play a video game. But, especially now as I learn how to program, I am seeing some of the real potential they have for making a real living and solving real-world problems.

  1. Breathing is required
I'm one of those guys who sometimes forgets to breath. When things get stressful, I sometimes find myself holding my breath for no good reason! At the IT Consultant job, Mike was the guy who kept emphasizing the importance of taking a break and staying relaxed. While it is important to plan ahead for the future, there really isn't any benefit to worrying! It is also important to step back from work (especially true in programming, I am learning) just take a break--regularly. Let the brain catch up and give your eyes a rest. It's easy to forget that.

  1. Confidence
This one was difficult for me. When a customer needs you to fix it right now and you don't know how to help them, do you want to know what keeps everybody from giving up? Confidence. I have been in the situation countless times: somebody feels like they should watch your every move as you troubleshoot their Internet connection, and you're stuck. If you let off that you're stuck, they start to get up tight. Then you start to get up tight. Instead, you look at the situation with an air of confidence. You aren't stuck, you're still working on the solution to a difficult problem. Give it some time, take a break for a bit, look at things a different way, or call a co-worker--just don't let yourself feel defeated. That hurts you and the person you're working for.

I also noticed the way Mike handled requests to do something we had never done before: unless it was something we knew for sure wasn't logically or logistically possible, Mike just said "yes, we can do that." There was never some excuse: "That's too difficult." "Too much time/work." He just said yes, and we would figure out how to make it happen, even if it meant creating our own tools from scratch! (Which we did, fairly often.)

  1. You can't fail
I had to have a double-take on this one. In a sense, yes, you can fail, like you can fail a test, or like I failed to help an angry customer find a solution and had to defer to a more experienced technician.

But I'm talking about the way that you treat those experiences. Often, it is easy to look down on difficulties of the past. But if we learn from those experiences so we can do better the next time we come to the same problem, is it really such a bad thing? I look at the day I couldn't help that angry customer, and remember how the other guys handled it and what they did that was different from my approach. As much as I wish I could have worked it out alone, I now have an experience I have learned from, and that's what I remember about the situation.

  1. Question the copyright
This concept took me out of my comfort zone, and I still feel I do not have the perfect understanding of it. Perhaps this is part of the reason I am such an open-source enthusiast anymore, but here goes: what can a person copyright? Work, ideas, information? I believe some things just can't be truly patented--take the square with rounded corners, for example. That's a shape. You can't own a shape. Sorry!

But how far does the concept go? Music, programs, books, they are all products made of smaller pieces (notes, logical concepts, words) that cannot be owned by any one person, so at what point can you claim something as yours?

Anyway, questions like these come up a lot in a business that utilizes both proprietary and open-source products. I have been able to watch how the proprietary mindset behind things as simple as an updating tool affect the way it works, and how when a product is produced with open values in mind, it can succeed in ways that cannot be competed with by the proprietary alternatives.

  1. Don't become a fanboy
When I first started working with the IT guys, I was really into a couple "systems." I had just recently purchased a Windows 8 License for my old laptop and was trying to figure out if I should keep my data on Google Drive, Evernote or SkyDrive (then OneDrive). The problem here is that I was so enamored with the corporations building the devices and applications that I no longer cared if they were the right tool for the job. I just wanted it to be a Google or Microsoft product. On the other hand, I was also very biased against Apple products, and while I still don't use them very often, I now understand where they can excel and where they fall short.

My reasons for using the tools I did were challenged in many ways, and I have since learned that the best application, software language, operating system or device is the one that solves your problem. It's really that simple! Nowadays, one of my biggest concerns is that what I use should be open source. While this is generally a good rule to live by (both for the wallet and the underlying philosophy), I notice that I still sometimes use the wrong tool for the job. However, anymore that's usually because I am advocating an open source product with less features instead of a proprietary product with years of support!

  1. Go the extra mile
This is what people notice! When you do the job that is required, then show them how you are going to prevent it from happening again, and fix a few problems on the side, you have their attention. I know I took some time out for specific people before, just because I wanted to know they were happy with a job I did. It was worth it. In addition, it gave me the opportunity to learn more about a problem, if it was new to me.

  1. Stay up late
I have learned that when I get excited about a worthwhile project, it usually pays to stay late at work or stay up late at home to pursue it. There were whole weeks when I would be excited about coming to work because I knew I would get to learn more about Linux or get to add features to one of my programs. My family thought I was crazy, but I would come home bubbling with information from the day. It was a lot of fun. If I feel momentum and excitement building for something I know is going to benefit my future, I try to take full advantage of it--even if that means getting to bed at 2 AM.

  1. It's about people.
For all the fun that computers and coding and solving problems can be, it would not be the same without other people. We get our inspiration from others. We get feedback and criticism from others. And when multiple people team up to solve a common problem, it's one of the coolest things in the world! I have come to understand this about the whole digital era. So many of the technologies we use today are made to make communication easier, and I think this is because we need to learn from others so that we can stand on the shoulders of giants and do something of our own with it, and then give it back so someone else can use it. That's a huge part of the whole draw toward computing.

And when we get tired of computers and code and the Internet, we can always get busy solving the really hard puzzles: people.

That's it! Hope you find some of these principles useful. Whether you do or not, I know I have, and it's good to have them somewhere I can find them in the future!

Tuesday, August 25, 2015

Moving On and Future Plans

This month I have been making some changes to my schedule to accommodate my studies for my second semester of college studies. I ended up needing to leave one of my jobs to make more time, but I thought I'd write down some of the things I learned there, and how it helped shape my future. Here goes!

I spent a couple years working this small business in Fowler, Colorado as an IT Consultant. My first few days were very interesting--I didn't know how much my new co-workers knew about a field that I had previously thought was reserved only for geeks and employees working at big corporations. What I found was a community of people who knew a very wide base of information, and used that knowledge (and the years of experience) to help everyday people with their problems. And it really could be just about any problem, from "My Internet is down!" to "The server isn't responding!" to "I have a virus!" to "My Internet is down!" (We got that one a lot.) Sometimes, I felt like we were solving problems that were just barely related to the computer side of things, but that was kind of the vibe I got from working there: that we could fix any of your problems if you are willing to throw it at us. Our job was to keep people up and running--happy. And that's exactly what we did.


This is also where I got my first experience with code (in the form of bash scripting, at first). We used a very wide variety of tools and operating systems--whatever the problem called for. But when the tools run out, and we need a custom solution, we were willing to create one. For instance, my first real project was a kind of web scraper that would go to a website and hit the right buttons to initiate the download of a program. It had to be more advanced than a wget command, as there were several steps involved. And if this sounds familiar, yes, I am still working on the program, and have it hosted on github.


That first project really opened my eyes to the opportunity code gives a person--to create something from scratch, out of seemingly nothing, that takes a given input and sends a specific output. I could finally control exactly what a computer does, and that got me hooked on programming. I am a creative person, and the creative outlets I knew of and utilized were things like writing, drawing, taking pictures, making short films. But this was a new one. It requires not only an ability to create something from nothing, to think outside the box to solve problems, but also an attention to detail and technical expertise on a level I had not seen before. This is what I feel I was made for!


Things got even better when I worked on a project in a group. We had a device (a BeagleBone Black, for you SoC enthusiasts) that we wanted to be able to plug in to a network, select a business profile using a couple buttons and a small, simple display, ping all the known IP addresses that needed to be up, and send the results of the test to said simple display. I got to talk with the other workers to figure out how to use the drivers that were written on the desk next to mine so that my part of the program would talk with the others correctly. It was a bunch of chaotic fun, and in the end, we had a version 1.0 that I was proud of. Definitely my very best memory of working there!


Here we are, a couple years later. I have shaped my college degree around what I feel I can best use to make a living and enjoy at the same time: computer programming. The years leading up to this one, I really wasn't sure what I wanted to do with my life. I wanted to go to college, but the more I read about it, the more I learned you don't need a college degree to run a photography business. As far as I can tell, going to film school isn't guaranteed to help much, either. These were the places I wanted to go, but I wasn't sure how to get there, or if I'd like being there for the rest of my life (the latter, of course, I will never truly know for about 50 years, I guess). But now that I had this passion for programming, the path became very clear: I needed to start working on a Bachelor of Arts in Computer Science so I can get a job and experience working with other people creating software tools to impact the world around me.


So here I am. I have just finished my A+ Certification, which gives me even more time to invest in my degree. I am studying from home, using a combination of CLEP tests, DSST and a program called CollegePlus. With these, I can basically sprint through most of the general education courses to get my Associate of Arts degree, then go through Thomas Edison to finish up with the really relevant materials. While I work on that, I am also learning new languages and coding every day as much as I can! I am also trying to follow this planner/document very carefully--as I can, on the side.


Because of all these new studies (and the steady bills that are coming with taking tests, buying materials, staying signed up with the programs), I have decided that it is time to move on from the small business. As a contractor, the work by nature is varied, as is the income. In addition, working there was a non-stop learning experience, and, though I enjoyed learning about the new tools and processes, I find myself needing to spend as much time as I can learning how to properly program in "x" language and get my general studies done. However, I will always remember the people I worked with as some of the coolest geeks I know, and will always count them as friends. I learned so much from my time there, and I feel I learned what I really want to do with my life there. I'm so glad for the time that I had there!



 PS: I did a lot of research before I decided on Computer Science. If you'd like to see a couple videos I watched that really helped me to understand the field, take a look at these:
https://www.youtube.com/watch?v=BjKmWk3oE4E
https://www.youtube.com/watch?v=_vCOnGmblWw

Friday, August 21, 2015

Passed!

It's been a long time coming, but today I finally passed a test that gives me the title of A+ Certified Technician!

A couple years ago, I got a job as an IT Consultant.  My boss, Mike, encouraged me to pursue this certification.  Although I learned most of what I know from doing it in practice, a certification of this kind allows me to show on paper that I am proficient in troubleshooting and maintaining computers, devices, networks and operating systems.  It's a decent thing to have on a resume, from what I can tell.

Now that I am certified, I can put a little more focus toward my college studies, too.  That will help me as I go into my second term of college studies.  It was difficult splitting up the time between my "official" courses, but I'm glad I did it.

Looking forward to moving ahead as I continue to learn about Computer Science and knock out my general studies.  I've had a bunch of fun at the Pueblo Maker Club here at the Rawlings Library (I'm sitting here after having a celebratory lunch).  They meet on Thursdays around 5:30 PM and talk about anything related to DIY projects, 3D printing, coding and anything else that tends to come up.  I learn a bunch of stuff every time I come, and I feel like I am finally making some more connections with others who share my interests (shout-out to Aaron, better known to me as qbit, for blowing my mind every time!).  It's a lot of fun--you can come any week or check out the meetup page here.

Wednesday, August 12, 2015

Social Task Management: Habitica

Found a nifty program today to help me stay focused.  I was looking for an open-source task manager (something a little more advanced than the plain-text file I have been using for a few months) on alternativeto.net/software. When I searched for alternatives to Wunderlist, a cool but proprietary application that came very close to meeting my needs a few months ago, I came across a fun twist on a once-familiar concept:  social task management.

I am typically pretty skeptical about new online services and apps (believe me, I created so many accounts when I got my first android tablet it's not even funny!).  But the entire codebase of this application in particular is hosted on Github--there are even instructions for setting up your own server!  With these two assurances in place, I signed up for Habitica.

It seems a little juvenile at first, I'll give you that.  But the more I looked at it, the more I saw it as a simple way to get support from others to motivate you to change your habits.  As a college student working full-time hours, I need to do as much as I can to make a habit of studying after I get back from work, instead of procrastinating.  I also am making a goal of coding, at least a little bit, every day.

I don't expect this program to change my life, but I do hope it will help me stay motivated on the long, hard days to come.  If you're interested in joining, you can sign up any time, and if you're feeling adventurous, come find me! I'm under spideyclick, as always. Perhaps we can help keep each other motivated--who knows...

Tuesday, August 4, 2015

Hello World!

As a tradition, when starting something new, an old-fashioned "hello world!" is in order. If you do not know of this tradition, you may not find many of the following posts very interesting. Just guessing here...


Welcome to spideyclick.net, a place for me to dump all of my ideas, progress updates, frustrations, discoveries and more, all in one place. If you have known me for a few years, you might ask, "why, Zach, why should this blog be any different? Don't you have, say, three others that dwindled in use and died?" And if you didn't know me for a few years, you now know that I have four registered blogs (and that's with Google's Blogger service alone--don't get me started on WordPress). So, what's so special about this blog?


First, I paid for the domain name. That's $12 a year. Hopefully, this will give me a little more motivation to write things down in the future! (Insert pessimistic response here)


Second, I have no real expectations for this blog. Normally I would like to post once or twice a week (or once a day, but that does not usually last for long!). But I want to write down only the things I find interesting here. When I find something that captures my imagination, or when I have a breakthrough, or when I don't have a breakthrough, or when I come out with something--all of those are things I'd like to write about. And if a month goes by without any of that kind of action, then it's going to be a boring month for both you the readers and me, the bored guy.


Third, everyone else is doing this now. When I started my first blog, I knew of no-one else that was crazy like me. I was just writing away, telling the internet--the world--how my day was, what I had for breakfast, the kind of thing people do on Facebook anymore. But nowadays, I am often on the internet, looking for ways to solve a problem to some code I cannot get working. And when I find the answer, it comes in only one of two places: some sub-domain of stackoverflow, or some coder's home-made website that looks and functions beautifully and that I could spend hours reading through. And I have. And it's a lot of fun!*


So now that you know what this place is about, here are a few of the goals I want to complete in the near future:

  • I currently have a program on my github account called "Lynx Program Downloader." It started as a small project at work, but I decided to try and package the script so it could be run on any computer, which meant turning a lot of absolute paths into relative ones. It's still very experimental, has a few bugs and a lot of missing features. But, if you're brave, I'm looking for people to take a look at the code, try it out and give me some feedback! Anything that helps me get it closer to a "1.0" release is definitely appreciated!
  • Big goal here: getting my Bachelor of Arts degree in Computer Science. This one is going to take a lot of time and dedication, but I am doing pretty much all of my studies through online courses and CLEP tests with the help of CollegePlus. I hope to graduate within 2-3 years.
  • Tools and languages I want to learn: Bash, Python (and Django), C++, QT, OpenGL. I think this may be more difficult than the college degree...thoughts? Do you think so?
  • Google Summer of Code: I'd like to join and work on some of the KDE projects I am interested in (Okular, Kdenlive, any of the others with a "k" in them).

Alright, I think that's a good start. It's getting late here, and I really should have spent tonight studying for my A+ Certification test (yes, another goal). That's coming up here in the next week or two, and don't want to take it until I feel certain I can pass. In the meantime, I am working on an Introductory Sociology course for my college degree (how does this help me with a BA in CS? Just kidding, I get it.). I have also been reading about and experimenting with python--I've got a couple projects I might post in the future if I can package them properly.


Comments are welcome! Don't be a stranger! Thanks for reading!



 *Fine, if you want to have fun too, visit these sites:
dimitros.be
teom.org
spideyclick.net
Wait a second... :)