Categories
Uncategorized

Struggles Struggled and Lessons Learned

In all my work with infrastructure tools, particularly configuration management software, I have things I’ve liked about each but there are consistent shortcomings. Chef has the advantages of utilizing a full programming language (ruby), but has a complex infrastructure and a high upfront time cost to build out a viable system. If you dig into the source code of any of these platforms you’ll likely find all the custom resources, objects, and functions, are predominantly, at their core, wrappers around bash scripts with fancy regex to capture output, and it’s often incomplete. This is all buried in a series of case statements to determine the OS family (Linux, mac, windows) and distro or version, since there are variations to how those system tools function or where certain values are stored. Ansible is significantly more lightweight and straightforward but functionality, programmatic logic is provided through ridiculous yaml values and ill defined jinja2 templating substitutions, and variables are established through 10+ layers of inheritance that are unintuitive and don’t hash well (object notation is overwritten, so to change one value, one is required to redefine the default object in it’s entirety). As someone who is pretty comfortable with a Linux shell, it’s very frustrating to be digging through source code to figure out which arguments to pass or values to set to extrapolate into the simple bash command I need.

These tools are valuable but I don’t see them to be as an end point. The bright side of these struggles as a user, is that I envision how I would design a similar tool. My ideal tool would be lightweight, only complicating infrastructure as necessary for required features like concurrent runs. It would be forceful, if system files are modified manually, they would be reset. Any configuration or packages required needs to be in the configuration management. It would be customizable, all resources should be easily inherited and overwritten, I should have to rewrite an entire tool just to change one value or the way one function works. It would include a local development tool via containers or virtual machines. It’s infuriating to have to push changes into a production or dev environment to make sure they behave as expected. Speaking of, why are there never tools for testing pipeline tools locally? Maybe that’s a rant for another blog post.

Categories
Uncategorized

“Read the Docs”… ok

I don’t have a whole lot to say about this week. My entire work life has been consumed by slowly and painfully picking apart apart a simple task made unnecessarily complex by corporate political nonsense dictating approach, rather than operational requirements. My team has been asked to build a system that allows other entities within the company to stand up internal websites using Kubernetes. Easy enough except they want us to use the company specific fork of the project, which adds layers of complexity while simultaneously removing key features required to do the thing. Ok so we decide that’s not going to work, time to pivot and use AWS, except oh wait they have a fork of that too with similar additional complexity. Still not impossible except instead of using industry standard tools they want us to use a new barely out of beta configuration management tool. Alright fine, it’s actually not so bad once you get the hang of it, but wait! They have a janky fork of that project as well with it’s own weird complexities. Now build an automation pipeline to integrate all of that within the repo, no not with the usual pipeline tools, they’ve got their own home-brewed tool for that too. At this point to get anything to do anything you have to simultaneously authenticate with at least 3 different services using system accounts managed by someone else, restricted by oppressive vpn and hardware and platform identifications.

I’m slightly unique in that I actually enjoy reading documentation and learning new systems, but did I mention none of these are comprehensively documented? Documentation for all of the above is largely missing, incorrect, out of date, or incomplete. My worst nightmare.

Categories
Uncategorized

Time Management is the Hardest Part

It seems like personally, and in talks with my group mates, that the most difficult thing to do isn’t technical details, it’s time management. We’ve all got lives, jobs, and other classes asking for our time. This class in particular is tricky. The assignments don’t have anything to do with completing the project. We’re all capable of figuring out just about anything given the time, the trick is is finding that time.

Categories
Uncategorized

How Does One Balance Security and Usability?

This week has been jumping through a lot of organizational hoops at work. Disclaimer: The following might be a bit vague because of NDAs. My team was given a task to design and build a particular tool and piece of infrastructure for one of our clients. Working with this particular client comes with a lot of constraints. Constraints consisting of doing things the company’s way, rather than the best way. Most of these constraints come under the guise of being more secure than industry standard. Security is obviously a valid concern but what is the responsibility of the developer and the security engineer? Excessively complex security requirements prevent developers from accomplishing things in a timely manner but the lack of those requirements creates vulnerabilities.

It’s very difficult being required to use a particular piece of software that claims to do a thing, but doesn’t actually do that thing correctly because it’s still in development, when there’s a perfectly good piece of software that does reliably do that thing.

Categories
Uncategorized

How Do I Record a Video?

Currently attempting to accomplish the code review assignment and am a little stumped on how to actually complete the task. I can do a code review but recording a video or screen cast is little bit more tricky of a task. I saw the suggestion of using OSU MediaSpace to record and host the screen cast but when adding a new recording, it tries to open ‘Kaltura Capture Desktop Recorder’ which as far as I can tell is only supported on Mac or Windows. I know how to take screenshots on Linux using scrot but have not had to do screen and audio recording. My laptop is dual booted, so perhaps I’ll just restart and use my Windows partition because I don’t feel like searching for and learning a different software at the moment. I also have a Mac that I have to use for work, so maybe I’ll use that. Overall I love Linux but it is frustrating when organizations require use of specific software and then that software fails to support Linux. Oh well, better than having to use Windows or Mac.

Categories
Uncategorized

An Uneventful Week

Not a whole lot has happened this week. Progress is continuing along on the project just fine and I’ve been recovering consistently. One hiccup we’ve been facing is one member of our team has been AWOL this term. We’re not sure whether or not he’s still enrolled or if he’s just not communicating. Our team is made up of three people from this section and two people from another section. The student missing is from the other section so I mostly feel bad for their teammate who is likely picking up the slack for classwork on their own.

Besides that the greatest challenge is balancing time between work school and a personal life. Just have to keep moving along.

Categories
Uncategorized

Here We Go Again

Hey y’all back again for another term. In case you missed it, I’m a seniorish computer science major (I’m a transfer so it’s a little bit weird.). I currently work as an infrastructure engineer independent contractor at a company called Tag1.

Break was alright but it’s hard to adjust. Between coming back from vacation and trying to carry on business as usual while an ill though out white supremacist coup is underway, it’s proving a bit of a struggle to get back in the game. Additionally, I had surgery this which took a lot out of me, and they’ve got me on some gross painkiller drugs that are continuing to take it out of me. Fun. I don’t mean to complain, I’m actually in good spirits but my head is elsewhere.

Categories
Uncategorized

A Heads Up Would’ve Been Nice

This week’s assignment was to come up with a ‘Team Technology Prototype’. We were given a development schedule starting at week 6, that had never been discussed, but it’s week 9, so our team felt a bit blindsided. Additionally since we weren’t aware of the prototype requirement, our focus has not been on development, but rather planning, design, and research, which has been the primary focus of all the material up to this point.

All in all, it doesn’t matter much for our project. We have a very very simple prototype working. Our project is very complex and requires technology that very few of us have experience with. There are some big pieces that need to be in place before it all works. Any of the larger functionality and capabilities described in our design document is going to take significantly more development time than we’ve had. Our project is that kind of problem where you work on it and you work on it and have nothing to show for it, until the last piece of the puzzle is in place, and then it will all fall together. We’ve accounted for this in our planning and design, any remaining time on the project will consist of optimization and expansion of the domain.

Categories
Uncategorized

Just Keep Learning

Something I’ve noticed about the computer science field, particularly in industry: we’re often handed a piece of technology, we’ve never seen or used before, such as a new programming language or framework; asked to learn it, use it, and produce a production quality implementation.

This is particularly exaggerated in my field as a contractor. I have to be able to be able to move into a contract and accomplish a task given the resources and infrastructure already in place for that client. At the OSL I had to learn Chef, ChefSpec, Inspec, Openstack, Terraform, and general Linux sysadmin type tasks. At my current company Tag1 Consulting I’ve had to learn Ansible, Molecule, Solr/Zookeeper clustering, AWS, Docker, some Drupal, Kubernetes, Helm, and others. Specs are often sparse and consist of, “Hey I need you to accomplish ‘x’ using ‘y'”. Internally I’m thinking, “Cool I don’t know how to do ‘x’ and I’ve never even heard or ‘y'”, but externally I have to go, “I don’t know what you’re talking about but I’m sure I can figure it out. I’m on it”.

I consider myself very fortunate to be working at a place with a very healthy culture. I’m not expected to know everything right away, It’s ok to say, “I don’t know that”, I’m given a lead time to familiarize myself, and while I’m largely expected to be independent and self-sufficient, I’m surrounded by some of the best in the world at their specific area and are always willing to unblock you and teach, given you’ve done your research.

While this can sound stressful and intimidating, and it can be, it’s an amazing opportunity to get paid to learn and gain more skills. It also allows me to work on what I think is the number one most important skill to have in computer science, and that’s the ability to learn. My early CS professor was amazing and very much stressed the importance of being able to read documentation and figure things out through trial and error.

Categories
Uncategorized

Better Late Than Never?

Been making good progress creating a balance between work, school, and regular “just being a human things”. Going into this project, the challenge has been implementing a complex neural network starting from a point of never having even attempted building a neural network. I’ve been doing research on the theoretical implementations to understand the capabilities and limitations by speed running Standford’s ‘Intro to Neural Networks’ course, which left me with a decent theoretical knowledge about the inner workings of neural networks, but little to no practical knowledge.Just realized I forgot to do this assignment yesterday. Better late than never I guess is a bit dependent on the classes late policy, which I can’t recall at the moment, and don’t feel like looking up so I’m just going to do it either way for points or not.

This week I finished fixing my fork of the WLASL dataset scraper, so I have a dataset to work with. Now I just have to take this theoretical knowledge and figure out how to actually implement it. Keras and tensorflow are the libraries we decided to work with, and Keras makes building basic models very simple. The issue is, we’ve considered implementing more complex models and the way those are built, isn’t as apparent as the simpler models. Plan for now, is to implement one of the simpler models, see if I can get any reasonable amount of performance out of it to confirm I’m on the right track, and then optimize from there.