Week 14 – Strings, Lists and Dictionaries

Weekly Learning

This was a very interesting week. I think we ran a bit ahead of ourselves when we built our game and it meant we didn’t have much of an opportunity to add more lists and dictionaries. I don’t think that was necessarily bad, but it gave me the opportunity to also cleanup some of the code and make smarter choices. I got to also see some of the solutions from my classmates. Some of them introduced already classes, and other very nice structures into their games. I don’t think that is a bad idea, but i do think it’s not necessarily as useful in a context as small as this game. It could certainly make things easier for some of the manipulations we’re doing like keeping track of user inventory. But to me, more important than classes, is make sure the code is highly maintainable and scalable. On that, I’ve been doing a lot of a reflexion. Without a loader or storage, class data structures are limited on what they can do in the scope of this game. So you end up essentially replicating the same functionality that a dictionary would have with the added overhead and complexity of a class.

Dictionaries and lists are less than ideal as well, but in this case, they are just good enough to make the code highly maintainable and scalable. The small changes we made to add better inventory management, and cleanup event handling proved it right to some extent as the refactor was swift and effective.

I think one of the most important lessons I got from this game exercise is that abstraction for the sake of abstraction is not a good pattern. Abstraction must aim to solve specific problems, and those problems must be derived from the data that is being used. In this case, things like Rooms, and Inventories, and Hero states are the data, so our abstractions were to make that data manipulation easy, effective and expandable. Mike Acton puts it far more succinctly in his presentation on Data Oriented Design presentation.

The second exercise of text parsing and word counting was equally interesting. I have always had a special place in my heart for parsers and I wrote an xml and html parser many years ago. This was a bit different, we just wanted to get the headlines, and since structures didn’t need to be kept or maintained, a lot of those learning didn’t really need to apply. But it’s always fun trying to solve those sort of puzzles. Trying to find the start and end of a tag, and run searches over strings is an interesting task as you unravel what is useful and how it’s useful.

I love the topics of this class. I wish it was a bit longer of we spent more time or used better tools for each specific issue. JES is so limited on what it can do, and python is less than efficient for things like image manipulation. But I believe that overall the point of the class is to get us to understand why and how this files and systems work and on that, it’s done a great job at peaking my interest.

Posted in CST-300, CSUMB | Comments Off on Week 14 – Strings, Lists and Dictionaries

Week 13 – Making Games

Weekly Learning

This has been a very interesting week. Despite the longer time since it’s Thanksgiving, we still ran short of on time for creating our projects. The week assignment was essentially to create a game similar to Zork where the user navigates from room to room and can do actions, take objects, etc. Since i have a bit more experience on both programing and design, I took a bit more point on this one. I think the solution we came up with was very good, although I wish we had had more time to collaborate and come up with more functionality. The biggest success was to take a data driven approach. That means most of our functions are incredibly generic and can be used for any object or room accordingly.

From there, expanding the layout and the general functionality of the program was nearly trivial since we only had to add more data points and all the loops would just automatically take care of what needed to happen. I think this was a brilliant solution to an otherwise very hard to solve problem with the limited amount of time we had to work on it.

The end product was very solid. Our game was not only playable but even with the limited infrastructure we put in place, we could add a number of events, triggers, items, rooms, etc and the game would require very little additional work. If we continue expanding on this, we could easily have a full fledge adventure with proper win and lose conditions.

Right now, the biggest challenge on our approach is to clean up our flows and tighent up the data handling. Introducing things like classes would make a big different since it would allow us to clean up a lot of the flows where we rely heavily on string matching rather than a more polymophic approach.

Overall, this has been a very pleasant (though time crunched) lab. The collaboration with the rest of the guys was a very valuable experience on organizing the team and working all in the same file at the same time.

Posted in CST-300, CSUMB | Comments Off on Week 13 – Making Games

Week 12 – Sound and Games

Weekly Learning

This week we had a lot of work between the midterm, and the different labs. The Midterm was an interesting and creative experience. I really enjoyed coming up with the different ideas of what the filters should be and how to achieve different effects on them. I’m very proud of Cristian’s work on the Atomize filter! He executed the idea exactly how I saw it in my mind, and then we just kept building on it. I’m a little sad we didn’t achieve the exact effect that I wanted on the image: A more spread out dot pattern better simulating the pop colors of a comic book. However, the final result was very good!

The sound lab was very interesting. I had never worked with sound files, so understanding how sampling works, how to manipulate volume, or normalize the sound was a very educational experience. However, the one I enjoyed the most was the hangman. It was an interesting problem and lab to work on. It flexes the logic muscles and helps form a better idea of what computer science and programing in general are. It allows you to be creative with a solution, but gives you a clear goal and rule set to follow. Watching the videos of how other people solved the same problem, and both the similarities and differences between their approaches, was very interesting.

It also helps me grow as a developer to see how different people tackle a common problem. In general, the video presentations have been very good. Looking at other solutions, and the thought process behind them is very valuable experience you don’t get working by yourself. The fact that I can take those ideas and improve on them, or even just see how my own ideas are successful in someone else’s code gives me a level of insight I rarely get at my job, where my solution is the only solution because I’m the only person working on the problem. Code reviews can go a long way to provide you feedback, but nothing replaces comparing your code to someone else’s and picking the best parts of both.

Posted in CST-205, CSUMB | Comments Off on Week 12 – Sound and Games

Week 11 – Thanksgiving Card and Portfolio

Objective Key Results

OKRs are a pretty interesting and useful concept. I think the most important part to take away from Google’s approach to OKRs is that it helps breakdown objectives into actionable and achievable items. The concept is really centered around being able to accomplish specific goals. Those are useful tools in general not only for our professional lives but even personal. Every big step we want to reach, be it a promotion, a house, or a personal goal can be broken down in to small tasks to be prioritized or and evaluated. Progress towards the goals can be easily measured and evaluated to see how successful or close to that goal we are.

Weekly Learning

This week we worked on updating our IPL with just about every image we have been working on and what we have learned about the IPL. For the lab itself, we had to assignments:

  1. Create an outline of an image by turning the image into a black and white version, and then comparing the luminosity between pixels. If the difference is large enough, we turn the pixel black otherwise, we turn the pixel white. At the end, the resulting image outlines the edges where there is enough contrast.
  2. Create a thanksgiving card out of three different images and have text on it as well. We decided to go a bit more overboard on this assignment and create a dynamic frame that would resize depending on the image that was being processed, and a banner that is auto-centered. The task involved not only chroma key techniques, but also rotating the pattern for the frame and some color adjustments to the main image.

Overall, we were very happy with the results. It certainly worked as a warmup for the upcoming midterm and it helped develop some interesting patterns that can be used later on with other image assignments. I’ll be starting to work on some of the ideas i have for the midterm and that will use some of this very learning, specifically the duplication and copy chroma key techniques.

Additionally, I had to produce my video this week, and it was a longer task that I expected. I have been learning more and more about how to properly make videos. Everything from creating better sound through use of Adobe Audition, to transitions, credits, timing cutting, looping, etc. I think those are very valuable skills and even the little experience I had before let me improve the quality of my video. I was very satisfied with the result!

Posted in CST-205, CSUMB | Comments Off on Week 11 – Thanksgiving Card and Portfolio

Week 10 – Manipulate Pixels

Creative Learning and Failure

All this talks were incredibly interesting. I think one of the most pointed learnings here is that you should not be afraid to try, and even less of failure. In Twilight of Lecture, I found myself wondering about my own learning experience. I am not good with groups, and I’ve always had difficulty having in-class discussions. In this case, online learning has served me well since it allows me to interact with my fellow students, and classmates without the social anxiety. However, on CST300 we had the opportunity to share a lot of our thoughts together on Ethics and other topics, and it was an incredibly positive interaction for me. I do feel that throwing classmates into discussion every session can be counter productive for people like me who do not interact well in person.

Weekly Learning

This week’s lab was a lot of fun! Manipulating pictures into something more creative and having basic concepts like “tolerance” and “distance” explained to key colors was very interesting. I think experimenting with media is a great way to learn new how and why it works the way it does. The videos from demos also provided a lot of insight into what my classmates do and how they approach the problems. I can see how my own solutions are strong or weak and allow me to grow both as engineer and student. I’m both scared to follow some of the great videos they’ve put out and excited to get a shot at creating something as memorable.

Posted in CST-205, CSUMB | Comments Off on Week 10 – Manipulate Pixels

Week 9 – Intro to Multimedia

Weekly Learning

This has been a very busy week. The assignment and the introduction to python were actually pretty useful and easy. The labs were concise and short, with interesting learnings for both setting up the environment and the challenges of pair coding. This is really where the struggle of this lab is. We had to figure out over the week what it means to work as a team on a single file project, how to setup git and learn some basic flows to make sure we don’t step over each other’s toes.

I think it would be so much better if the school had at least a short tutorial on git, if the first assignment was a not a group one, giving everyone the opportunity to setup git, understand some of the flows and get everyone on track for a group activity. Instead, it felt we were thrown into being in a collaborative environment that should have been setup at least weeks in advance and learning all the new flows that git offers.

At the end, it all worked out and we got some interesting learnings out of it, but it certainly was a painful week to coordinate work. Moving forward, it should be far smoother and shorter to setup our work, and hopefully we will not need to worry too much about conflicts or rebasing for a little while.

For the image manipulation, I thought it was incredibly interesting. It explains a lot about how tools like photoshop work, and what it means to manipulate the image. I wish we were using a more raw version of python rather than JES since it seems to hide a lot of the libraries needed to manipulate the images, so we can use it on our private projects.

Posted in CST-205, CSUMB | Comments Off on Week 9 – Intro to Multimedia

Week 8.5 – Module 0 – Orientation

This is the beginning of CST205. It’s not a python class, but it should be incredibly interesting to work with multimedia, media and sound processing. Those have always been interesting topics for me, but I’ve never had the chance to work or learn on it.

The group work will be interesting as well. It’s the first time we’re going to get to code with each other rather than work on papers. I think Python is new to all of us, to we’re going to be learning on each other’s codes and techniques.

Having to produce video will be interesting too. I know this was a challenge for us, so now going back to this every week is a bit scary but also interesting. It will make our presentation skill stronger, but also it’s a lot of work to put on top of normal class work.

Posted in CST-205, CSUMB | Comments Off on Week 8.5 – Module 0 – Orientation

Week 8 – Presentations

Review Other Teams’ final video projects

The Cap Theorem (Technical)

This was a very good video. The topic is incredibly interesting and relevant to the program as we’ll keep facing issues with CAP and ACID in the future. Knowing, understanding the limitations, and choosing the right solution are key our future. The video is clearly well research and provides an insane amount of information in a very short amount of time. The team did a great job on the music and voice over. Unfortunately, the images flash so fast that it makes it very hard to follow sometimes. They should have instead let the images linger and overlap them whenever possible to let the person catch what is being shown and said.

1. is the topic well covered?
Yes, It was very well research.

2. is the presentation clear?
Very clear! Great amount of information, and the examples make complex topics and ideas very easy to understand.

3. how is the quality of the research?
Excellent. The language is clear and there is a a lot of information but does not feel like a data dump.

4. how is the quality of the video production?
The video is well produced. There are some problems with having too many moving parts. The graphics do a great job explaining the information, but because the images sometimes are only in screen for a short time, it makes it sometimes uncomfortable to watch.

5. is the video engaging and interesting?
Yes. The voice over is very clean, and the images make it fun to watch. It’s not hard to stay engaged and to follow the topics.

6. is the team work evident?
Unfortunately, there is only one voice over. There is a lot of research done which it certainly seems to come from a group collaboration, but there is no evidence otherwise of group effort.

7. is the video appropriate to the audience (either general public or technology professionals)
Yes. The language and information are appropriate for technology professionals.

The Cap Theorem (Basic)

This short version is much more easy to follow visually. The flow of the video, the animations, the tone and and the style are engaging and fun to watch. The research is in depth, and covers some basics, but does not go into unnecessary technical details so a general audience should have enough information to understand but not get either confused or feel talked down to.

1. is the topic well covered?
Yes, It was very well research.

2. is the presentation clear?
Yes, this is super well explained with examples that anyone would understand. There is plenty of good information here that any non-technical person would understand.

3. how is the quality of the research?
Excellent. The language is clear and there is a a lot of information but does not feel like a data dump.

4. how is the quality of the video production?
The video is well produced. The speed of the images exchange is much better and gives the audience time to catch up with what the concepts are. There are a few moments when the images change fast, but otherwise this is very pleasant to look at.

5. is the video engaging and interesting?
Yes. The voice over is very clean, and the images make it fun to watch. It’s not hard to stay engaged and to follow the topics.

6. is the team work evident?
Unfortunately, there is only one voice over. There is a lot of research done which it certainly seems to come from a group collaboration, but there is no evidence otherwise of group effort

7. is the video appropriate to the audience (either general public or technology professionals)
Yes. The language and information are very much simplified for a general audience. The graphics make it playful and engaging and do topic is covered thoroughly but not in depth allowing people to understand without diving into details.

The Internet of Things (Basic)

This is a great topic in general. I think IoT has changed much of how our everyday life works. We’re intrinsically connected to the internet now, and everyday new devices seem to have functionality that depends in one way or another on the internet. However, the video was a bit too plain. The topic is interesting and could have been covered in a more engaging fun way. The voice over and language are very appropriate, but because there is so much static content, it means someone with no technical knowledge, but interest may find it not engaging enough.

1. is the topic well covered?
Yes, the topic was both interesting and well covered. I think the team could have covered more about how and why it works, or dive more into a single sample to provide a better idea of why IoT is important, but otherwise, it was a very interesting topic.

2. is the presentation clear?
Very clear.

3. how is the quality of the research?
The research does not go very much in depth. It covers the topic through samples, and talks about the convinces, but does not cover how it works, or how it’s changed every day task, or impact to the internet or the world.

4. how is the quality of the video production?
Basic, but good. The slides are easy to look at and match the voice over nicely. There is a lot of static text which makes kind of hard to keep attention.

5. is the video engaging and interesting?
The video and topic are interesting, but not very engaging. The team did a good job at providing examples, but because the video is just static slides, it makes it more monotonous than the topic should be.

6. is the team work evident?
Yes. There are clearly multiple voice overs, and the topics well coordinated between the multiple members.

7. is the video appropriate to the audience (either general public or technology professionals)
Yes. The language is simple and the topic has been centered around how IoT is applied to every day life without diving into much detail.

Weekly Learning

End of class. This has been a long journey, which I realize is only the beginning. There is a lot of work still to be done before we’re done with the program but completing this first step is very meaning full.

This class, and specially this week has been very challenging. It’s a test of communication, and coordination and it means a lot to be able to complete the presentation project in such short amount of time. We delivered, and I’m proud of my team for having been able to pull it off even though we faced some pretty big problems a long the way with essentially 2 team members out.

Posted in CST-300, CSUMB | Comments Off on Week 8 – Presentations

Week 7 – Ethics Final

Final Research Video Project Planning

This project is a pretty challenging. The main constrain is time. Even though we’re good at coordinating, and work well as a team, the fact that we have to produce 2 videos seems pretty daunting. 

We already started the research and we’re going to start working on power point presentations and scripts soon. The topic so far is: Why should we teach kids to code at an early age.

Review Ted.com Presentations

3 Principles for Creating Safer AI

AI is an interesting problem that as software developers we will continue both developing and encountering. Machine Learning and AI are the key components of how the internet and technology will continue to develop. It’s important to us as developers to understand how it works, and how it can be safely and responsibly developed. The 3 new principles which don’t follow the original Asimov rules, are an interesting take on what the future bring. I think the last one is really the key to truly compatible human-AI. Learning from human behavior, and values. It’s like teaching a baby to become a responsible being. But it poses the interesting question, if a machine then is entirely driven by human behavior and values, can it achieve some sense of humanity?

Stuart Russell is a fantastic presenter. His pace and language makes following his talk easy. The slides are small minimal and don’t interfere with the presentation. He injects both facts and humor to drive important points. He keeps the language and examples simple and easy to understand so anyone can understand why his ideas are important.

What’s Next in 3D Printing

Avi is a great speaker. He is engaging uses colorful language an examples which makes the presentation fun an engaging. He tries to emotionally connect to the audience with personal and heartwarming stories.

For me, 3D printing is both a hobby and a passion and I hope I can some day turn into more of a career. This presentation for me is pretty special because it validates some of the feelings about 3D printing that I’ve already had. 3D printing has been in the last few years undergoing a silent but impressive revolution. Quality of printing has been increasing while costs have been dropping making it accessible to more people but also bringing more talent into the 3D creation space.

Presentation Skills Reading/Video (60-75 Minutes)

A. What not to do in powerpoint:

There are some important take aways from this. Powerpoints can be a great tool to deliver information to an audience. But as speakers we have to be mindful of how powerpoint affects our presentation. Too much data can be overwhelming or distracting and can pull away audiences from the message. So, keeping slides simple, and on point is far more effective than delivering all the information.

B. Toastmaster 12 tips for 12 public

There are some interesting tips here. The one that I’m most interested in is mannerism. I tend to have a few nervous ticks and over-exaggerate my hand gestures. Making sure they’re controlled, and rehearsed but natural is an skill I need to practice.

C.  Examples of Great Presentation Design

This is a great presentation! The visual style is fun, makes for engaging slides with useful information. I think this i ideal for a long presentation because every slide becomes a surprise to the audience. Data is then embedded with big letters so consumption is easy. Clearly, it’s not something you want to use for every presentation (although this specific presentation contains fantastic advice on how to build good ones). But for our short video for general audience, this is certainly something I’d like to try.

These are more in line with a long professional presentation. I think it will be a better delivery mechanism when talking to our peers since they are engaging but can also be packed with lots of good information.

One thing these all have in common is that they have engaging visuals with big fonts and as little text as it’s possible to get away with. We should aim for that.

D. Where Great Ideas Come From

This style of presentation is very popular. It does require a lot of skill and editing. It makes the presentation engaging, and fun. The pacing of both drawing and speaking are key. Too slow, and the drawing process is boring, but too fast will make each drawing have less impact as ideas will overwhelm the audience. It would be interesting to try to push for this sort of skill, but with limited time, skill and knowledge of editing, it can be a real challenge.


Posted in CST-300, CSUMB | Comments Off on Week 7 – Ethics Final

Week 6 – Career Development

CSUMB Career Services

I have to say this turned out to be a create little trip down the CSUMB website! Fortunately, I already have a job and my career choice has so far been successful. However, I have to admit putting together a resume, and cover letter are things that I find very challenging. I have often run those through several friends to get their opinion and verify that what what i’m doing is attractive to employers. I was pleasantly surprised by the depth of the website, and how much CSUMB works to help students achieve their goals.

I know I have struggled in the past, and I had to do a lot of this myself. I honestly wish I had this support network back then.

I actually really liked this site: https://whatcanidowiththismajor.com/major/majors/. I will be passing around to several friends that seem to struggle placing themselves in a field they actually enjoy!

Job and Internship Search

I know from personal experience on feedback provided by my employers as well as an interviewer that communication skills are incredibly for a career in software engineering. As a developer, people often think that interactions with others are very limited. However, a good engineer needs to master all the skills listed. Gathering requirements, conveying ideas, and persuading others (including management) are crucial to be successful and move upwards. Working hard is very important, but the reality is that working hard can only get you so far in any industry. A good communicator and team player bring far more value to a company as those are essential skills to grow. Those people tend to be already flexible and good learners as they are more likely to seek out support when needed.

I strongly encourage others to also take some public speaking class or events. The thought process and methodology behind public speaking are very similar to the skills required to present a good argument to management, and help develop confidence to network effectively.

Teammates to Develop Capstone Ideas

I think we as a team we’re leaning more into the original idea that we created for our intro to the class. VASC9 as an escrow application. The idea is pretty good, but we need to figure out how feasible and how much work there is actually to do for an idea to be presented to the class.

For my personal idea, i still think the family circle is probably the safest choice, but the team seemed pretty good about the IDE to create bots. I’m not even sure how I’d go about creating one, so I’ll need to take some time to think it over, and break down the components.

Weekly Learning

This has been an incredibly busy week. The paper really took most of the time, and then peer review was also very intense. My teammates papers are actually very interesting. But to me that means i need to step up my paper as well to make sure it’s up to their standards.

To me the most interesting part was the TED talk on privacy. Greenwald makes some very good points. I’m very much in the fence about privacy on the internet. I understand why individuals need to be able to be free to express themselves, but to some extent, anonymity has brought up the worst in us. Having a measure of consequence is healthy. It forces people to be responsible with what they say and do.

Study Time

Posted in CST-300, CSUMB | Comments Off on Week 6 – Career Development