I’m developing my course scheduling web application in the open. Yikes. This is largely a good thing because it’s forcing me to treat this project like I would treat a graded class project i.e. commenting appropriately, designing smartly, etc. I’m hoping that developing in the ‘open’ will help my growth as a developer by others providing constructive criticisms or recommendations. I’m all ears.
This guide is geared towards subscription lists at UGA hosted on the listserv.uga.edu subdomain. I’m tired of hapless souls replying to a listserv with “unsubscribe” or “remove”. So, here’s a step-by-step guide for reference:
- Write down the “handle” of the listserv i.e. XXX@listserv.uga.edu means XXX is the handle.
- Visit http://listserv.uga.edu/archives/
- Enter the listserv’s handle in the box as shown in the image below
- After clicking “Go”, you’ll be taken to the screen below:
- After selecting the highlighted link, you’ll be taken to another page where you’ll be asked for some info before you can be removed from that list or if you’ve had enough, you can unsubscribe from *all* lists.
- A confirmation email should be in your inbox shortly (rough guess: 24 hours) after leaving the list. If not, repeat the process but obviously give it some time.
*Image gallery here: http://min.us/mugalistserv
Coming together quite nicely, if I say so myself.
I initially wanted to make the requests happen via AJAX but time constraints make it so I’m going to do everything via ‘regular’ HTTP requests a.k.a. not AJAX. That’ll be revisited for the second iteration of the application.
For now, the schedule display works and I’m able to query my database on the backend for the required courses & populate the drop down menus.
TODO: work on the addition of new sections to the user’s list of sections.
Note: I came up with this first iteration but the final product looks much different from this version mainly UI changes from another student.
Well, I started work on my first extension for the Chrome browser called TweetPuller. Very imaginative, I know. All it does is ask you for a username and then it displays the last 10 tweets. For a 0.1 version, I’m okay with it. I plan on fleshing it out once I’m done with finals but yeah, it was a learning experience and empowering to ‘complete’ this mini-project and have something ‘published’. If you’re curious, check it out in the Chrome Webstore. Here are some screenshots of what it looks like in case you can’t find it in the store yet.
You can check out the github repo I’m maintaining for this project which you are welcome to fork (also on bitbucket.org which is *fantastic* I host all my class projects there because private repositores are free on Bitbucket)
My projects for Data Structures have been pretty fun. Our last project of the semester is to implement an AVL tree and as a bonus, a Hash table. Due on Thursday, I’m done-ish although I’ll keep testing periodically. Side note, I’m making extensive use of Trello to keep tabs on things I’m working on.
My other project which has benefitted from me using Trello is DawgTransit. DawgTransit is a simple website for viewing/browsing/searching the UGA Campus Bus Routes. On that site, I’ve embedded ‘interactive’ Google Maps images so you can see the exact bus routes. I used the Google MyTracks Android app for capturing the bus routes. The cool things I learned while working on this DawgTransit project:
- Using the PHP Simple HTML DOM parser for scraping the transit.uga.edu website to pull in text from the “Service Alerts” section which is displayed on the homepage. My todo is to set up a cron job to visit the transit website at some predetermined frequency so that I don’t have to manually run my php script.
- Using the tmhOauth twitter library to tweet out any changes detected to the @dawgtransit twitter page.
- Using a remote JSON feed to implement typeahead functionality in the UGA Bus Route Connector tool section which I should add is somewhat buggy. It works reliably in Firefox and Chrome. IE is hit or miss and I’m still trying to track down some bugs. Please test the tool out and I’d appreciate any feedback suggestions.
The website is powered by Bootstrap which I can’t get enough of now. Heck, I even used the bootstrap .css and .js files in my TweetPuller Chrome extension! Anyway, I highly recommend you check it out if you have the slightest interest in developing on the web. Bootstrap enables me to write once and view (almost?) anywhere i.e. you can use the DawgTransit website on mobile and non-mobiles devices without having to add any special code or generate a separate website to handle mobile devices. Bootstraps takes care of all of that.
That’s enough blather from me. Cheers and a belated happy thanksgiving to all!
Howdy, y’all! After a summer in Oregon, I’m back in warm (oh, blessedly warm) Georgia. Yes, the rumors of constant drizzling in OR are true. However, once the sun decided to grace us with its presence (right around the 4th of July), it was glorious. There’s a running joke that Intel hires interns during summer to lull them into thinking Hillsboro is always that gorgeous in order to entice them to stay.
Anyway, my course load this semester isn’t too bad; I’m taking Computer Architecture, Data Structures, Calculus II and another Statistics class. Data Structures is a key class for Computer Science students to take and really grok because (a) a lot of technical interviews will test you on knowledge learned from this class (b) it teaches you to think & dives into fundamentals like designing data structures, algorithms, knowing when to pick certain abstract data types subject to contraints (like limited space, large input, etc), etc.
It’s been over a month into the Data Structures course and it feels like drinking from a firehose of abstract data types! Our first project was to implement the Huffman coding using C++ and it was a lot of fun. Huffman coding is a lossless algorithm for encoding variable length strings. Read more on Wikipedia if you’re so inclined. For this project, we were given a .txt file containing a large block of text from which we were required to generate a Huffman tree and store this to a file on disk.Then, to encode a string entered from std::cin, we were to:
a) recreate the Huffman tree from this file that was stored to disk (I chose a lookup table that contained the character and its bitstring)
b) encode or decode strings using the Huffman tree..
For the encoding and decoding portions, we were barred from using lookup tables which made me sad because I had just learned about maps in C++. Maps are ‘associative containers’ and they geared towards scenarios when you need to search by key to find the key’s value. My initial strategy for encoding was to store my Huffman lookup table in a map<char,string> container. Then, using the string iterator, I could translate the user’s string to bits by finding map['userChar'] which yielded ’010101′ or some sequence of bits which would be appended to by reading more characters.
To complete this project, I got reacquainted with vectors, string iterators and pointers. For constructing my Huffman tree, I went for a binary tree made up of Nodes and stored this in a vector of Node pointers. I used a Node class because I wanted to be a little more familiar with classes in C++ and I fleshed out my Node class (private vars with getters/setters, private method, overloaded some operators, etc). I know some classmates used structs.
Overall, I’m pretty happy with the structure of my program especially because without too much work, I was able to reuse my code for another written assignment. We were required to ‘write’ out a Huffman tree and rather than do this by hand, I fed the .txt file of characters & frequencies into my method which did the dirty work of listing the nodes to merge and presenting the final lookup table for me. It could be more efficient and as time permits, I’ll revise my code.
First, I liiiiiivvvvvvveeeee! If you don’t get the reference, watch Mulan. The hectic semester is over and the grades are slowly trickling in. One of my classes, Introduction to Theory of Computation, was one of the harder classes I’ve ever taken and if I’m being honest, I would have to say I’m glad it is over. My conservative prognosis is 2 A’s (barring complete idiocy on my part), an A- and a wildcard grade belonging to the aforementioned course.
So, my spring semester is done and my summer is about to begin. Alas, I will still be doing actual work. However, I am truly excited about this internship I am about to embark on. I am so excited but thinking about what I’ll be working makes me nervous & makes me feel like an impostor. Thankfully, all my attention this summer will be focused on the work at hand and I hope to take full advantage of the free training sessions & picking the brains of those smarter than I. I suspect I’ll be wading knee-deep in C/C++ code and I’m weirdly excited. After taking Systems Programming this Spring, I can read C/C++ code but writing it is probably one of my weak spots. If C/C++ is my project’s requirement, then I welcome the chance to be able to hone my C/C++ skills.
Also, I decided to reach out to a classmate of mine to voice one of my secret goals/dreams i.e. write an Android app and/or publish it. He responded enthusiastically and so the plan is for us to check in on each other over the summer and shame (if needed) him/me into action. I’d appreciate any extra shaming from the 1 or 2 people who read this blog as well.
Lastly, I’m super proud of UGA’s students. Here are some of the places my Computer Science peers are going: Apple, Motorola, ThyssenKrupp, McKesson, etc. I was accepted into Intel’s IRISE internship program so that’s where I’ll be. I’m in debt to Intel’s US Intern Program manager, Burke Walls, for taking a chance on me and I’m ready to rock ‘n roll. I’d love to know what everyone else is up to so drop a comment about what your summer plans are!