CS-499: Independent Study Introduction

This semester, I’m building an Android app for an independent study.

The Proposal

After building a breadboard computer and beginning to understand electronics, I started to learn about audio electronics. This sparked (or reignited) a latent interest in audio processing. Working in a call center selling audio equipment is actually the reason I was motivated to return to school to study computer science, so I feel there is good reason to pursue it in my final semester.

I also began with Python, and moved to Android apps in my early programming learning process, so I’d like to refresh these skills and dig deeper. This project will serve as a constant reminder to how far I’ve come from those early struggling days.

So the app will use Python machine learning libraries to analyze user audio data and provide the user feedback based on this data. I am purposely being vague; not because I think I have the next big idea on my hands, but because I expect many changes as I struggle with the machine learning model.

Regardless of where the model winds up, this is a software development independent study. I will have a working, professional app within the next 4 months, using the technologies I have proposed.

The Motivation

Why, though? As an independent study, with an already-busy schedule, I’m going to have to set aside time each week when I work on this project, no matter what. Originally, I wanted to take Robotics this semester and I was signed up for it originally, but unfortunately there is not enough time in my schedule. On Tuesdays I’m sure I will find my mind wandering, dreaming of playing with robots instead of struggling through machine learning and Android Studio.

But that is part of my reasoning. I want to find the motivation to do things with a self-imposed deadline. These are tools I want to learn, to create and potentially sell a product. At the end of this degree, I want to be able to show a project to future employers that say, “this is what I did. Not because I had to, but because I enjoy it”. I want to be able to have users who give me unfiltered feedback. I want to fail, figure out why I failed, and eventually succeed.

Of course, I have done all of these to some extent already. But this is my following my current interests and goals.

The Progress

I have made a couple small spike projects to begin relearning Android and get started with Tensorflow. I have already built the back-end and gotten an app to communicate with it. I’ve also done basic user authentication.

When I first proposed this project, I set a schedule of features and tasks to complete. Due to other projects which used the same technologies and flashes of motivation I’ve already worked ahead a bit, but I still plan to complete each portion according to the schedule, as best as I can. The machine learning model will be concurrent work as I adjust it.

Next week, I will go into more detail on the tasks I’ve completed so far.

From the blog CS@Worcester – Inquiries and Queries by James Young and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns

In the introduction section of this book, I found it interesting on how the author focused on using the medieval definition of apprenticeship. The author rejected the idea of simply imitating those ways, but rather he adapted from them. While still marinating the core values and goals of apprenticeship, he was also able to help define it in terms of software development. Another interesting part was when the story of “emptying your cup” was told. I can sometimes find myself falling into this trap instead of allowing for me to fully take on whatever help is coming my way in order to broaden my knowledge. One of the chapters that seems to coincide with me is chapter 3, Walking the Long Road. In the introduction, the author talked about how it can be daunting to see people that are miles ahead of you in the software community. However, once you put aside your pride and see how these other people are mastering their craft, you will see they are constantly learning on the same “road”. I personally enjoyed reading this section because often times when I see code or software that I genuinely feel lost in, it can feel hopeless. But everyone that seems to be far more knowledgeable, was once right where you are and eventually you can reach that level. Another chapter that resonated with me was chapter 6, which discussed creating your own curriculum. I am often overwhelmed by the constant thought of grades that I worry solely on completion of the project rather than acquiring the knowledge that will last. When I am able to freely search and learn about whatever I am working on, I thoroughly enjoy learning all the finite details in order to be able to use and grow my abilities. Another part of the introduction that I thoroughly enjoyed was when the authors discussed apprenticeship patterns. Too often in software books the author tells you their experience and how they succeeded, but there will be no correlation to you. The apprenticeship patterns were studying and tested in order to provide a far broader platform to build from. This will allow anyone to develop far better skill sets for many different expertise. I really enjoy when a book is able to have the foresight of not simply trying to show you the way to do something, but rather provide you with a toolbox that you can use to be applied to any scenario. The last part of the book that I found helpful was when they discussed “putting on the white belt”. This simply means you are going into something with no knowledge but an open mind. Too often there are people, myself included, that are skilled in one area that then leaks ignorance into the next rather than allowing for them to fully embrace new knowledge.

From the blog CS@Worcester – Journey Through Technology by krothermich and used with permission of the author. All other rights reserved by the author.

Libre Food Pantry

I enjoyed reading about the FOSSisms because it is all about starting to work on your first open-source piece with others. Since this is my first time working collaboratively to this extent on open-source software I found that it was quite useful to read in order to better adapt to the upcoming challenges. I really enjoyed the particular FOSSism about being productively lost. This means that you will not always know the entire scope of the open-source project you are working on. This means you should take it upon yourself to research deeper Into the project while helping strengthen your skills in the areas you already know well. I wrote about this one because too many times I have been lost in a project and felt hopeless but by taking a deeper dive into each individual component, it allowed for me to grasp the concept.

From the blog CS@Worcester – Journey Through Technology by krothermich and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Introductions

After reading the Apprenticeship Patterns book introductions and a few of the patterns, I have to say they are very straightforward, which the book itself admits. The utility in reading them is that is is very easy to forget these ideas, or never apply them to your work.

I was ready to condemn the book from the beginning, as it introduced the idea of apprenticeships in medieval through industrial revolution times. I thought to myself how naive it is to write a book about such bad situations, and that the authors must be romanticizing this time. This thought was immediately shut down as I read the line, “we believe it is possible to reject the romantic fantasy”, in favor of something better. This served to drive further points home, as I had just fallen victim to some of the behaviors it warns against.

This book describes patterns that “are tools that solve one set of problems and create new ones.” And it says that “the trick is to use your judgment to choose the problems you prefer.” I love this idea because it illustrates the fact that one doesn’t need to be able to solve every problem if you can figure out how to solve it with the tools already at your disposal.

At the same time, it provides a framework for learning more tools. The idea of “exposing your ignorance” stands out most, because most of us want so badly to be intelligent and competent. Having spent some time in the workforce without a degree, I have become sensitive to this: trying hard to prove that I’m not “dumb”. Maybe it was actually that, that had slowed me down.

On “Emptying the Cup”

It’s always a good reminder that you might not know as much as you think. Or if you do, that you might be biased and closed to new ideas. I am very proud of some of my work, having had moments where I feel like a programming God, and in the face of a new technology, I am always humbled. But I feel that I run the risk of using my past professional and education experiences get in the way of new methods.

On “Accurate Self-Assessment”

I had to read some of these patterns, because I tend to self-assess in the negative direction. I already usually assume I’m “the worst”, or that my work isn’t good enough, and seek improvements. Still, the patterns themselves are useful, describing how to solve this problem. I tend to spend too much time assessing. I need to consciously tell myself to move on to new things, rather than dwelling on what has been done and how it can be done better.

…And Onward

My capstone team has been discussing learning some new technologies, and these introductions have lessened the fear of diving in and trying them. At the end of my college career, I have been reflecting on what I could have done differently, or how I could have done it faster, so this book comes at the perfect time.

Haven’t we all sometimes wanted a chance to start over again? How exciting to have a chance to be at the beginning of something.

From the blog CS@Worcester – Inquiries and Queries by James Young and used with permission of the author. All other rights reserved by the author.

Libre Food Pantry

The title of this blog post is also the name of the project I will be working on this semester in SC-448 together with my group The BZ PJ’s. It is a rather interesting project that will have us design and create an interface to a food pantry that will allow other to take food with them.

What is really interesting to me is the learning aspect. The learning about agile development and FOSSism, both of which will be a great practice for my future career in the Computer Science field. Especially the Agile Development practice will be something I’m looking forward to as it has become the standard of the industry and the more I and other know about it and are comfortable doing the better.

From the blog #CS@Worcester – Pawel’s CS Experience by Pawel Stypulkowski and used with permission of the author. All other rights reserved by the author.

FOSSisms

Hello All, today I decided to talk about FOSSisms 16 principles of open source software in teaching. On that that found interesting was number seven which was ask for forgiveness not permission. It basically said that should just start working on something and you don’t need to ask first. This is because changes you make have are unlikely to derail a project. This is because of the use of version control which means it is very easy for the community to undo what you did or even fix the mistake you made. I picked this a subject and this particular rule because it very different to how you typically work on group project where you should communicate and talk to other before you do anything

From the blog CS@Worcester – Tim's WebSite by therbsty and used with permission of the author. All other rights reserved by the author.

Beginning of THE END

Like the title says this will be the blog for my final semester of my Computer Science Major at Worcester State University. Let’s hope it will be as fun as the rest of them. This time we will be working in groups on LibreFoodPantry.

From the blog #CS@Worcester – Pawel’s CS Experience by Pawel Stypulkowski and used with permission of the author. All other rights reserved by the author.

Introductory Blog Post

This is my blog for CS-448-01 Spring 2020

From the blog CS@Worcester – Tim's WebSite by therbsty and used with permission of the author. All other rights reserved by the author.

LibreFoodPantry

LibreFoodPantry is the project that my team and I will work on the whole semester for the CS-448 capstone class. This project is an open source base project we can contribute to this project and develop parts init and share it with two other Universities. we going to reflect our work on the WSU food … Continue reading LibreFoodPantry

From the blog CS@Worcester – Shams's Bits and Bytes by Shams Al Farees and used with permission of the author. All other rights reserved by the author.

New Semester With New Adventure

The spring 2020 semester started a week early this year, although the winter break was very short I managed to find some time to study java through codecademy, I was practicing programming almost every night so I can catch-up with my team mattes. I’m taking four courses this semester and one of them is my … Continue reading New Semester With New Adventure

From the blog CS@Worcester – Shams's Bits and Bytes by Shams Al Farees and used with permission of the author. All other rights reserved by the author.