Linuxifying my PC ‘scope, Part 1: Exposition

This summer, while interning at IBM, I thought it would be a really capital idea to take a class online from Virginia Tech. I was mostly wrong. First, the material that usually fills a semester of ECE 2004 and 2074 (Electric Circuit Analysis lecture and lab, respectively) was crammed into only a couple of months. Second, I was also working 40 hours per week, and otherwise living a pretty full life.

The lecture component sucked: Every week there would appear a new video lecture, with slides and audio, in a proprietary format that could not be sped up. It would be about an hour and a half long. There would then be a homework assignment based on this lecture. Exams, though, were the worst. I needed to have one of my superiors at work proctor my exam during work hours. Anyway, I ended up doing quite poorly in this section. At the time, the C+ I received was the worst grade I had ever received in any class. I simply didn’t have time to devote to it.

This post, however, is actually about the lab component. This bit was much more enjoyable than the lecture, but I didn’t perform any better. It was equally time consuming, despite being worth only a third of the credit. Our work was validated via skype, and there was a very strict format for each of the lab reports, which I wasn’t very good at following.

Worse, though, we were not allowed to choose our own tools. We were required to use PSPICE (ridiculously buggy and user-unfriendly circuit design and analysis software), which is windows-only, and the Velleman PCSGU250 PC oscilloscope. This oscilloscope, as with many such PC ‘scopes, has drivers and software for only Windows. I needed to use Linux for work, so I had to run PSPICE and the oscilloscope software in a virtual machine. Long story told in short, I swore vengeance on the ‘scope.

I never really got the time to exact this vengeance, though. Until today, that is…

[Continued in the next post]

xi. The End

So the semester is wrapping up and I am finished with all my assignments for the Unix class. I started off being extremely unfamiliar with Unix and Ubuntu. Now that the semester is through, I can say that I am pretty confident with a lot of the basics with Unix. I have learned so much whether it was from practice problems, homework questions, or written assignments. I am looking forward to practicing more Unix on my own from this point on.

Final Post

And now, this will be my 10th and final post. For someone who has never wrote a blog or even a journals, writing this was very interesting.

So, I have finished looking at some of the project. The one I have decided to try was the The Walk Dead Text Based Game. I tried to do some of the other ones such as HighLow and Galaga but for some reason, the makefile did not work for me. The game I did try however, was very interesting. It did not have any GUI to it, so there was a lot of reading if you wanted to play the game. When I have more time, I will try some of the other projects as well. I was a little disappointed that the other two that I tried did not work, but I’m hoping that the other projects will work with no problem.

Goodbye!

Hello everybody!

The semester’s come to an end and I’m making my final blog post for this class. It’s been a fantastic experience and I wanted to extend a sincere thanks to Professor Darren Maczka for making this class a great learning environment and a lot of fun.

Having completed this class, I can say with assurance that I’m much more comfortable with UNIX/LINUX based operating systems than I’ve ever been before. I have a better understanding of the basic design principles and their applications. In addition, I also think I’m better prepared for a sofware-based job/internship position having gained some experience with Python. Most importantly though, I feel a lot more confident going into what is arguably the most challenging software class of my undergraduate career – Applied Software Engineering. A huge thank you to everyone who has been a part of this journey of learning, I truly feel more confident coming out of this class.

It’s been real. Goodbye and I’m grateful to everyone who took out time to read through these posts. It truly has been a pleasure.

Good luck!

Future Suggestions

Hello everybody!

It’s hard to believe the semester is almost over. It’s gone by fast and I’ve definitely learnt a lot. I have a feeling that this class is going to turn out to be one of the most useful classes that I’ll end up taking at Virginia Tech, not because of the technical difficulty but because of the increasing popularity of UNIX/LINUX based systems in the workforce, especially in the software engineering industry. I do, however, have a few suggestions that I think will really make the class even better.

  1. The final project was a great way to bring together what we’ve learnt during the course of the semester to implement a working tool. It was difficult but also provided the freedom to challenge yourself as much as you want and push your skills. In my opinion, taking the midterm out of the curriculum and replacing it with a mid-semester Python project would be more useful as it would allow students to tie together the different concepts they’ve learnt throughout the semester.
  2. While the VTLUUG meetings were informative, I found myself lacking interest a lot of times just because the level of understanding of the current members of VTLUUG is much higher than anyone taking the Intro to Unix class. In my opinion, it would be beneficial if the students taking the class would set up a similar club which would evoke participation and leadership within the club would constantly keep changing every semester since a different group of students would take the class every semester.
  3. While most of the homework assignments were really helpful in solidifying my concepts of the material, the one I liked the most was creating an assignment because we had the freedom to interpret it the way we wanted and make it as challenging as we desired. A few additional assignments of this sort would really help push the class towards a greater level of innovation.

These are some of the suggestions that I honestly think would help better the class and make it even more successful than what it is right now.

Until next time!

Text Editors?

Hello everybody!

I wanted to make sure that at least one of my blog posts focuses on the ongoing discussion in the UNIX/LINUX world about the best text editor. Given the popularity of third-part editors, some of the prominent text editors in my opinion are VIM, EMACS and GEDIT. Personally, I’ve only worked with VIM and GEDIT and I’ve really enjoyed VIM.

In all honestly, I don’t know how much difference using one text editor over another has made since all of them primarily do the same thing and provide the same feature but some have a much easier and user-friendly UI than others. During my internship at Qualcomm, I primarily worked with VIM and it was a good experience – VIM primarily allows every action to be completed through keyboard shortcuts, rendering the mouse basically useless. While this may be frustrating at first, it definitely becomes second nature after a couple of weeks of thorough usage and editing actually takes place a lot faster as compared to constantly switching between keyboard shortcuts and mouse clicks. It also has multiple modes such as edit mode and insert mode which allows for a greater level of flexibilty.

The other text editor I’ve had some experience with is GEDIT which I used for this course over the semester. GEDIT has a very simple user interface which makes it a good text editor for beginners but does not seem to have some of the more advanced features that other text editors may provide. I used GEDIT for the entirety of the semester because I didn’t need to make any special modifications to text and GEDIT seemed like the simple and convenient choice. I’ve personally never had any experience with EMACS.

Until next time!

Creating An Assignment

Hello everybody!

We had our final homework assignment due today which was probably the most fun and involved assignment we had so far. I really enjoyed some of the technical homework assignments we’ve had this semester, especially the ones that involved Python scripting but the open to interpretation nature of this particular assignment made it challenging and fun at the same time. We were asked to design any sort of assignment that may be used for the class next semester. I decided to create an assignment that would give the user a good understanding of pipes and filters which forms the basis of more complex scripting skills.

One of the best aspects of this assignment was the level of freedom we had to implement the assignment. We could make the assignment as complex or simple as we liked, as technically challenging as we liked and providing the solution was optional. While my assignment is posted to GitHub, the essence was familiarizing the user with reading in lines of data, manipulating it in a certain way and then outputting the lines of data to the standard display after modification. In doing these manipulations and modifications, the user was in fact creating somewhat of a mini-language that could be used to write a short action file.

I really enjoyed doing this assignment and I would encourage the classes that follow to have a few more homework assignments that allow for this sort of freedom, especially since I believe students work hardest when they have the freedom to choose what they want to work on.  Overall, a great assignment and I would recommend putting in a couple of more similar assignments in the curriculum of the semesters to follow.

Until next time!

Second VTLUUG Meeting

Hey everybody!

I recently attended my second VTLUUG meeting. This meeting was actually very interesting and relevant to what we’ve been doing in class as we talked about the different LINUX distributions that have been released such as Fedora, Arch Linux  and Linux Mint and the advantages and disadvantages of some of these distributions over others. After using Ubuntu for one semester, I feel I’m fairly comfortable with the UI and might consider the possibility of migrating to a more developer/programmer friendly LINUX distribution such as Arch Linux which is targeted for more experienced LINUX users as I think it might possibly prove to be useful for the Applied Software Design class I’m scheduled to take next semester.

Going back to the topic of the VT LUUG meeting, this meeting was very participative with multiple people from the audience providing their input on the various distributions unlike the last meeting where the President and Vice-President seemed to be doing all the talking. After talking about the various LINUX distributions, we essentially talked about upcoming and noteworthy news in the UNIX/LINUX world. Another repeating observation that I made at this meeting was that a lot of the material that was discussed in the meeting was beyond the scope of our ECE 2524: Intro to Unix class and it might be better if VTLUUG was divided up into smaller groups based on the proficiency of the users and their past experience. In conclusion, the VTLUUG meetings were very informative and thorough with upcoming news and events in the LINUX/UNIX world but almost every member has a vast amount of experience and seems proficient with the environment so it is difficult to follow along sometimes.

Until next time!

First VTLUUG Meeting

Hello everybody!

I just attended my first VTLUUG meeting and it was nothing like what I expected. From their website, the Linux and Unix Users Group at Virginia Tech (VTLUUG or “the LUUG”) is dedicated to improving the computing skills of its members, supporting Linux and Unix use on campus, and serving the community through Free Software and open data. The first meeting was especially interesting because I felt a lot of the members were regulars and very experience with UNIX/LINUX based operating systems.

At this meeting, we talked about a simulation game that was developed in a UNIX environment similar to one of the primitive handheld console games. To be quite honest, I really felt that almost everyone in the audience who was participating in the discussion of the game was very experienced with UNIX and I couldn’t follow along in some of the subtopics of the discussion. The people who were speaking about the game did go into a fair amount of technical detail but there was an atmosphere of mutual respect and inquisitiveness all around.

One of the trends I seemed to notice at the meeting was that the same key people kept presenting new ideas and talking about developments in the world on UNIX/LINUX. A suggestion that I would encourage to be implemented is encouraged participation of some of the newer members of the organization, especially students who attend the meetings to get credit for the Intro to Unix class. This would encourage an increased level of learning and curiosity which I think would be very beneficial. It was a great experience from an overall perspective though.

Until next time!

Python Scripting

Hello everybody!

We were introduced to Python this week. If I had to recommend a programming language that all programmers should know in addition to a high level language such as C++/Java, it would be either Python or Perl because of the importance of scripting in the programming world today. I worked for Cadence Design Systems two summers ago and I actually gained some experience working with TCL which is a primitive scripting language so I think it’s comparatively easier for me to understand the advantages of a much more advanced and higher-level scripting language.

During my internship at Qualcomm this past summer, I encountered a problem that would have been easily resolved with a scripting language such as Python. Without getting into too much technical detail, I was working on a lot of low-level C and assembly files for the major portion of my internship. With regard to the assembly files, I was working on an ISA that specifically provided details on each assembly instruction of a particular processor and I was adding additional information to the assembly file instruction by instruction looking at specific bits of each instruction. Python would have been a great tool to use in retrospect because I could have automated the process to a large extent.

I’m definitely looking forward to learning more about Python and becoming somewhat proficient at the end of the class.

Until next time!