Stuff I did this semester

So, thank God that I’ve officially finished all my ECE courses as of Monday 12pm. Finished my final project lab report and demoed it for the professor, which he liked and described as “slick” :p. To be brief, it’s a conceptual prototype/proof-of-concept of a digital receipts system, inspired by start ups like Third Solutions (http://myreceipts.com and http://digitalreceipts.com) and AllEtronic (http://alletronic.com). It uses a magnetic card reader, an ethernet module, keypad, LCD, and a microcontroller at the POS end, and a remote webserver with PHP and MySQL to store transaction and user information. The general idea behind this kind of system is to offer the service for free to consumers and retailers, aggregate information about what people buy, and sell it to retailers. The retailers could use that information to shape their marketing strategies, business model, whatever. Anyways, for this project I just did it because it seemed interesting and just wanted to have a microcontroller make persistent changes on the internet. Lab report webpage can be found here.

Second major project I have this semester is also almost done. It’s an iPhone/iPod Touch application called iCampus, directed towards anyone in the Cornell community. It has a campus map that can be manipulated much like a Google map and you can locate yourself on the map using CoreLocation if there’s a strong enough signal. In addition there is directory/facility information which can be plotted on the map with fairly good accuracy. Right now it only has dining information, but future data sets could be added to make the app more comprehensive. Other cool features relating to the dining dataset is being able to plot the 5 closets locations relative to where you are, and being able to see what is currently open now, based on the hours information for each place in the database. If you have an iPod Touch or iPhone, try out the app from http://iphoneapps.cit.cornell.edu! User feedback greatly appreciated.

Thank God my projects have been going very well this semester, and that I found them engaging and gratifying to work on. I’m excited to graduate but it’s bittersweet because of the potentially interesting things that can be built upon stuff I’ve done, mainly with the iPhone app. Anyhow, I imagine continuing playing around with microcontrollers and iPhone development down the road.

All I have left is to finish documentation for the iPhone app, my filesystem project (really stupid because of the instructor’s incompetence), and an Operating Systems final exam. Then it’s 1.5 weeks of freedom and enjoying Cornell without worrying about homework and deadlines. Looking forward to just soaking in the nature of the gorges and lakes, running around outside, reflecting to myself, and pursuing hobbies (like cello, drawing, media, etc).

Life is great right now. Thank you God. Help me to never take it for granted. Never.

The Home Stretch

After one more month, I will have completed my last final exam and last semester as an undergrad. I CAN’T WAIT to be done with ECE.

This semester I actually like my classes a lot more. I’m taking 4 courses, 13 credits. 3 of those courses are purely project courses so that means I only have one final exam. That’s really great, but it also means this month pretty much sucks.

My ECE project is an “internet-enabled” magnetic swipe reader system that can read a credit card, take in numerical keypad input (i.e. a price or transaction amount), and send the transaction information over the internet to say, a PHP script that parses the information and stores it in a database. Maybe that doesn’t sound that cool or fantastic for a senior design project, especially since I’m buying a magnetic card reader and an ethernet module that implements a set of network protocols. But it’s also not trivial to implement either, mainly the interface between the micocontroller and the ethernet module. The major source of headache is knowing how to use the darn ethernet module (Wiznet WIZ812MJ module). Wiznet has some firmware source code that supposedly provides an API, but I still have to go through it and understand to know how to use it. I skimmed through it and it’s not going to be fun. Not to mention that in order to understand it, I have to pretty much memorize the datasheet (pinout, memory mapping, register descriptions, etc). But once I get that out of the way, the rest of the project SHOULDN’T be too bad. The interface to the card reader is just an RS-232 interface, and there’s no API with the card reader that’s needed (I don’t think). Then there’s the keypad and LCD display to interface, but we’ve done that already in labs so should be straightforward. The web side of it shouldn’t be bad either. Ugh….Arduino is so much more convenient. I look forward to having more fun with that after graduation.

In another class, software engineering, my group is developing an iPhone application! It’s a Cornell map/directory application that will be able to find your location on campus, and show you surrounding locations that can be searched for, such as dining halls and eateries (what we are focusing on). It’s all fine and interesting except for the fact that 1) it doesn’t work on a real device yet (works in the simulator), and 2) the map doesn’t really correlate well to the GPS data given to us, which means it places marker in the completely wrong place. We’re still working on that….in 4 weeks it will be perfect (ideally). The fact that development can only be done on a mac doesn’t help either.

In my last project class, operating systems practicum, I’m writing a sparse petabyte filesystem using fuse. What the heck is fuse? Chances are you probably don’t care and I’ll probably never use it again after this class. The project is written in C. I hate C (or to put it more softly, I’d rather not use it). Maybe it’s because in ECE we didn’t really program in C much and the CS program really likes Java. In any case, the project is kind of cool in the sense that I’m learning more about how filesystems work. I needed to implement a B+ tree which was kind of gratifying after I finally made it bug-free (I think…). What sucks is for the second part of the project, I probably won’t even be using my code because the data structure I used is not really optimized for synchronization/multi-threaded access. Poop.

Well, maybe my projects sound kind of interesting to my small reader audience. And they are! So why am I complaining about it? I guess you could say….SENIORITIS. I’m lazy and tired of school. Honestly, this microcontroller stuff, I’d LOVE to do as a hobby after I graduate, and make geeky things. iPhone development is also something I’d love to pick up and continue pursuing if I ever get a mac (but both my sisters do so I could use their computers too…and their iPhones). Filesystems? Well, I probably wouldn’t do that in my spare time….but the point is I just don’t want to deal with it NOW and ALL at the same time. Like, I’ll have my moments of excitement from the idea of creating a cool system or application, but then I see how much work it turns out to be and I’m like blahhhhhh. For you Naruto fans, I feel like Shikamaru (minus the strategical genius); I’d rather just lay down and stare at the clouds passing over. So much trouble.

One thing I must say though – we take technology for granted SO MUCH. We don’t get how much rigor and detail is needed just to make something as simple and commonplace as a touch tone dialer. Or when we’re using a computer and open a file – do you really know what the heck is going on when you double click on a set of pixels on a screen? How does “the internet” really allow computers to communicate with each other? I certainly don’t know, although thanks to the engineering education, I have a slightly better idea. Just slightly.

Sometimes I wonder if engineering was really for me. My parents always said a doctor was a good fit for my personality, and I don’t disagree. Besides the fact that theres like countless years of schooling required, I think the pressure of making an incorrect diagnosis or screwing up something during surgery would get to me. Plus, I like having this technical knowledge. I don’t know. I guess that means I’m still waving my arms around, reaching for what truly interests me. I have a feeling that it won’t ever lead me to getting a PhD though….the parents won’t like that.

Anyways, I find myself struggling to transcend all this stress from “fulfilling your potential and ambitions” and to just keep things simple. I’m a Christian; the most important thing is pleasing God. That’s all that really matters, when it comes down to it. If I can’t grasp that, life is moot. Seriously.

Well, time to go read that datasheet and firmware code….