I found the job posting that was recently shared with the class interesting. In the email it said that despite the job posting seeming very senior, they would be open to candidates at the beginning of their careers. However, when I looked at the actual job posting, it seemed pretty typical for an entry level position. At least if I was looking for a job, that is not the type of posting that would make me second guess applying due to lack of experience. I don’t have a lot of experience on either side of the hiring process, but the job I have now I was familiar with at most 50% of the systems and technologies that were listed on the posting. Furthermore, they said that the 2-5 years of experience for the job were a requirement, but I had 3 months of distantly related experience from one summer internship. Whereas on the posting that went out to the class it was just recommended. So if I see even softer language on something like years of experience it makes me think they’re just saying this is something that would be nice to have, but isn’t really necessary at all. In fact the only thing that stood out to me as being senior about the position was the fact that it listed as Software Engineer II. And I have no idea what the differences are between those levels. My point is I didn’t see anything that would have deterred me from applying to that job. On a side note: what does “too much experience” mean? I assume it means they don’t want to pay for an experienced developer, but I’m not sure.
At work, most of the code I produce will take in a lot of data – usually in a csv file – and then format and filter it to the specifications of whoever needs the report. I have developed a template in python that will split the data and store each piece in an object. The class usually has to be tweaked per report. What I like about this is that once I have all the data in this format within the program I know that I can pretty much do anything I want with it and know where each piece of data is, how to access it, how to modify it, and how to get it to interact with other pieces of data.
As a fun exercise I re-wrote one of my scripts in Raku which I’ve been learning in another class. I did this because I have been having a lot of fun with Raku and wanted to keep learning it and regular expressions, and because I wanted to see how it would measure up performance wise with my Python solution. My Raku solution I know was not very optimized, because there was a point I couldn’t access a certain hash value and I couldn’t figure it out. So I split the outer hash value using regex and looped through the resulting array. I don’t know for sure but I don’t think that’s a pretty solution. Even with this non optimal Raku, it still ran almost 10x faster than my Python code. I’m not at the point where I need a perfectly optimized solution, but it did make me wonder about what that point is? If a python script took 8 hours to run and the same raku script took 1, then the extra time it would take me as a raku novice to write the script would easily be made up for in performance. When is the performance benefit of an unfamiliar but better tool worth it over something I’m familiar with and can complete quickly? In any case, I’m having a lot of fun with Raku and will try to continue improving with it at work.
I won’t go over the introductory post from last term, and not much has changed from where I left off. I’m hoping this term will be a little more relaxed, as I am only taking 3 classes instead of 4. Although one of those classes is Programming Language Fundamentals. I don’t have a very good history with functional programming languages, so I anticipate this class will take some extra work. I’m glad the first assignment is already done, and I was able to complete it with only minor pain. There were a couple of functions I was not able to implement, but I should get a passing grade. Which is all I can hope for.
The other class is Mobile Development which I’ve been looking forward to taking for a very long time so I’m very excited for it. And it’s taught by a professor I’ve had in the past who is one of the best I’ve had at Oregon State. In addition, Yang is in that class who is my partner for Capstone and I feel we work well together so being able to work with him on those group assignments will be productive and should also save a lot of time.
I’m also thankful that my “on campus” courses this term are allowing me to simply watch recordings of lecture instead of attending. I had a class last term that basically tried to simulate being in person for 100% of the virtual experience. That didn’t work for several reasons, and in general it was an unpleasant class experience.
So there are a lot of things to look forward to this term. I think it’ll be important to try to focus on these positives and the things I can learn in class as the middle of these online terms can seem to really drag and be a little depressing. Even PLF should force me to finally get an understanding of recursion, and who wouldn’t love that?
This week not much progress was made on developing our project. We’d like to get some more fleshed out prototypes together soon, but there just wasn’t a lot of work done this last week. It’s not catastrophic if there’s a week here and there where we don’t get much done I don’t think that’s a big deal. Overall I’m pretty confident we’re going to be able to get everything we need to done and hit our milestones.
Part of the reason why not much was done on the Capstone project this week was there were a lot of projects from other classes all due this weekend. In particular there is a class I am taking CS453 – Scientific Visualization. That involves using an OpenGL library that was custom built by the professor of that class and modifying it according to assignment descriptions. I don’t know if I’ve specifically blogged about that course, but I’ve probably thought about complaining about it before. In addition to the assignments being deeply rooted in some math concepts I’m not familiar with at all. So the class ends up making me feel like in addition to trying to figure out how to navigate and manipulate my professor’s obscure OpenGL library, I’m also trying to teach myself math. This week’s special was differential equations. So really the story of this week’s capstone was just the story of not making much progress in other things as well. I’ve never really spent so much time for so little progress on programs as I have in that course. Nothing went poorly with capstone per se, but it’s frustrating when I take time away from working on capstone to do another class, and I end up not making progress there as well.
Something I learned about this week was just from the discussion board for this class, and that’s the Singleton design pattern. I think I had learned about this in my software design course, but that was more theory and never something I had put in practice. I think at the time I didn’t even know what I would use that for or really why it needed a specific name. My previous view was that I would always just create a class as normal and have one instance and in that case it was more flexible anyway in case multiple instances were needed. But if I’m understanding everything correctly, the whole point is the inflexibility. The post from the discussion board discussed its uses while multithreading which is a concept I’m more familiar with, but not enough so that I could make particular use of the singleton design pattern while using it. What made more sense to me was using it to track persistent data in Unity and other permanent states. We could create that object right off the bat and then not really worry about having to track it for its entire life.
As an overall reflection of the term, I feel like it’s been going very fast. It’s already the beginning of week 7 which means only four more weeks left of actual lectures to attend. Next term I will be online 100% so I’m excited for that. The on campus courses that are being taught remote I feel suffer a lot when they simply try to recreate the environment of being in person. In my opinion it’s impossible to simulate that experience on Zoom so they should just lean into teaching it like a remote class with a little bit of in person flavor, such as break out rooms or presentations.
This week I learned a lot about containers and especially kubernetes. It’s odd that Chrome’s spellchecker doesn’t recognize the word, but anyway this was my first introduction to using containers at all. It was a project of deploying several raspberry pis for a contact tracing program and they are running on a Docker swarm. I understand I said I learned about kubernetes especially, but that’s because the guy who set up the swarm and taught me how to do that also said I should learn Kubernetes because it’s the future of everything. Which is kind of cryptic but it led me to a lot of really interesting research. It’s not something that would be used for my project, but there are a lot of projects at work that would be great to use containers on and especially to help with documentation and reproducibility. Based on a lot of things I’ve taken over that have zero documentation I’ve been making it a priority lately with all my work to document it in a way that someone could take it over from square one and be able to rebuild it exactly as I’ve set it up. There have been a couple “mystery servers” that I’m not really sure what they do but I also can’t touch them for fear of bringing a lot of systems down. It’s a nightmare.
As far as feedback for this course goes, overall I’ve been very happy with the course. I enjoy that the writing is geared towards a professional environment and I feel like when I’m writing I am doing so with a professional audience in mind. The feedback for each paper have reinforced this and overall I feel I am growing as a writer. It’s also nice getting feedback on discussion boards and blog posts. Even though this is an online course, the feedback makes it feel like there’s some more interaction than turning in work and just getting a grade for it. Being 100% remote for school has made things feel much less interactive than in the past, but these are some things that help.
I’m pretty happy to put this week behind me. It’s been pretty busy with a couple of different projects having similar due dates as well as a midterm this week. The good news is I feel like our Capstone team is making good progress with our project and it’s becoming very clear what the immediate next steps to take are. I’m pretty excited to get started learning Unity and hopefully using C# for the first time. It probably isn’t ideal to be learning a new programming language alongside a huge project like this, but I am really glad it’s something so different than what I’ve done in the past.
On the note of new technology and Unity, I’ve started a Udemy class for Unity. So in addition to Unity, it is also my first time using Udemy. For our purposes it seems like a good investment. Although in general I have been skeptical about paying for online resources in the past. I usually tend to believe that unless something is very specialized, there’s usually a good enough free tutorial that’s just as good as paid content. But there are a lot of reviews for this particular course and it seems like it will teach us exactly what we need to learn in order to get started and be able to create our own visions. In addition using this course will put us all on the same page. If Udemy goes well I could see myself using it for their other classes as well. After all $10 is pretty cheap for 30 something hours worth of content. Again, I’ll have to see its quality, but it could end up being a good resource for continuing education after I’ve graduated. This is something I’ve been thinking a lot about as I’ve worked this year. That there are a lot of things I want to learn that pertain directly to my job but that I don’t have time for.
This week I faced mostly time management challenges. The term is fully underway and bigger projects and assignments are underway or starting to be due. I am taking a course this term called Scientific Visualization which is using a lot of material I’m not familiar with. Mostly OpenGL. With what is taking most people a few hours to complete I’m taking around 8-10 hours on. Some of this is setting up the tools that I’m not used to and some of it is the type of programming is difficult for me. This week especially was hard because there were parts that didn’t even concern programming but were just math. And then after that I had to apply the mathematical concepts to programming. This has taken me a great deal of time and in addition to that I put a lot of time into my requirements writing assignment for Capstone. Between these two projects and things from other classes I found it a struggle to get everything done on time. Getting a balance between my personal life and school hasn’t been too much of a struggle and I don’t want it to become one in my final year.
Tailing off this challenge is the additional work I need to do for the actual Capstone project. There are tons of videos, tutorials, and documentation I need to look at and do in order to learn Unity and figure out some of the more basic functions that will allow me to implement the requirements of my project. I don’t feel too bad for not learning much about how to use Unity up until now, because the requirements were not really set. But now that I’ve submitted the individual requirements document and with the team document coming up, I will have no more excuses and I’ll need to get on it.
Several things went good this week in regards to the project. Our group all got in contact with each other and had our first meeting. Everyone seems nice and motivated to do a good job on the project. We also scheduled our meeting with the client which should be good and officially get us on our way.
In my opinion the worst part of group projects is out of the way for this project. I think there is always some awkwardness to deal with when you meet new people and have to get to know them before working together. I think having three people in the group helps with that though, as there is not as many strangers you need to get familiar with in a hurry.
I found a cool tool this week through an assignment in this class. It was called Toggl Plan. It was basically the calendar view of Asana, but what I liked about it was the tool was focused on just that one view. Adding team members is possible so that their calendars are overlaid mine which would be great for seeing what other people are doing. The big advantage it had in my opinion was the way the tasks stretched out across the other days. Unfortunately I don’t think that I will be able to use it. It’s simply just too many tools. Right now I’m using Discord heavily which is new to me, and through my work I’m forced to use Google Calendar, so Toggl Plan would just be another thing to check. Discord has actually been another great tool I’ve discovered this term. I’ve heard about Discord a lot, but never used it. Now that I have I’m really enjoying it, and trying to get people at work and in my personal life to use it as well. But just like me those people have too many tools to keep up with so they don’t want to add another.
I’m looking forward to another productive week and meeting with our client!
- Computers have always been an interest of mine and something I’ve always liked to work with, so deciding to study Computer Science was a natural choice.
- I’m currently working full time doing tech for a K-12 school district in Oregon.
- My favorite listed projects generally had something to do with UI or HCI, which is great that I might get a chance to work on a project that relates to my focus.
- Lately I’ve been interested in hardware and networking. With my job I’ve had to learn a lot about server management and networks which has always been a gap in my knowledge.
- My favorite technologies are generally technology that automates tasks. Whether it’s simple scheduled software tasks or hardware such as robotic vacuums.
Going forward I’m excited to get started on this project and begin working on the final year of my time at OSU.