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.

Categories
Uncategorized

READ THE FINE PRINT

This week was mostly uneventful project wise, it’s been a lot of discussion about direction, and doing research. Work however got crazy this week, which resulted in me neglecting some of my school work so this weekend was meant to be playing catch up on the things I haven’t been working on.

Friday comes around and I go to check the calendar to see what’s coming due. Two big stats assignments that I usually do one at a time on the same day by midnight… great. First I have to go back and watch the lectures I had to skip for work meetings. After a full day of grinding I make the deadline. Nice.

Saturday morning check the Operating Systems II calendar on it’s own site. Oh my god, lab3 is due by midnight? It’s been out for three weeks and they’re usually huge assignments that I knock out exercise by exercise. It’s going to be a close one. After sitting at my computer panic coding, not eating, not showering, not doing anything but slog through kernel code; from 11:00AM to 11:40PM, I’m close but haven’t finished. I don’t think I’m going to make it. In an act of desperate hope, I check the due date one last time hoping I misread. I did. It’s due Monday, 9 Nov, the course calendar for that class outlines the current day in blue which when I looked at it, said Lab 3 was due. What I didn’t notice until the wee hours of the night, was that the calendar doesn’t include the weekends and just highlights the next available entry. Rough day, but at least I made progress.

Categories
Uncategorized

Datasets, Python scripts, and Halloween

Our project has some peculiarities to it that are going to make implementing a neural net a little bit trickier than it might otherwise be. More or less, we are supposed to be using a LiDAR camera interpret someone signing in American sign language and transcribe it. Only problem is training a neural network takes massive amounts of data and there simply aren’t many people recording themselves signing in front of a LiDAR camera. I’m pretty sure that we can’t train the neural network on one type of data and then feed in an entirely different kind of datatype and expect it to accurately classify. Which leaves a couple of options. Create a dataset of signing with LiDAR camera data, or ditch the LiDAR and try to use regular video. I don’t know sign language, and no one else in our group does and this would require a massive amount of data, probably thousands of hours, so that makes the first option unattractive. Even if we did try to learn enough to record a lot of examples, we’d likely end up with a neural network trained to only recognize really bad amateurish sign language and not much else. The second option still requires finding a dataset…

Which I did! It’s called the WLASL, or Word-Level American Sign Language. They basically created a massive json with thousands of labelled of entries to videos of people speaking sign language, a download script, and a preprocessing script. It has a ton of examples, too many in fact. I talked my way into getting access to the pelican cluster for training but after pulling the repo, starting a screen session, running the download script, and going to bed, I woke up to a ton of warnings about overfilling my allotted hard drive space on LDAP, and having a basically unresponsive server account. My solution was to delete everything, fork the repo, modify the download script to download a smaller subset of the training data, and start from scratch. I figured if we could get a neural net working to a reasonable level training with a smaller dataset, we could figure a way to download the rest of the dataset and increase our accuracy later on, that way we can at least be somewhat confident in our proposed architecture before going all in. Well that was going well after tons of refactoring, but then I realized the preprocessing script was massively inefficient, copying videos that didn’t require preprocessing, and leaving the original raw videos in place either way, effectively doubling the amount of space required for the raw and preprocessed videos. In fact it actually converted everything to mp4 in a separate directory, then preprocessed only the frames of interest from those into a new directory, effectively tripling the required storage. Some people… Anyway I’m still in the process of trying to fix that too but opencv is giving me cryptic issues.

On top of all of that, it’s Halloween weekend. A wise professor once told me

“Sleep more than you study,
Study more than you party,
Party as much as possible”

– I can’t remember his name, but he was awesome