Welcome to my website. At some point, I decided to seize motivation by the horns and steer it directly into my life and this site is one of the many consequences. This website will serve as a focal point for my journey to continually improve my skills as a computer scientist. It will serve as repository, showcase, and blog for a range of topics including web design, programming, planning, and documentation.
Why am I doing this?
I hope that by doing this I will become better at what I do and have some fun at the same time. I'm currently bouncing around a lot of ideas that I would like to implement, though I'm sure that most of them won't see the light of day. Who knows where exactly life will take me, but hopefully, it will be interesting.
Finally, some projects
After a long time, with no updates or progress, I'm finally ready to go. I've been focusing very strongly on my academic life for the past year and a half or so, but now it's time to actually do something for myself. In a way, I might have lost sight of the rest of my life. I've started turning into a success oriented person who follows someone else's definition of success. Now that I've picked my life back up, it's time to figure out what I really want. Still, this site will probalby revolve around my academic life rather than my personal one. Anyway, I have a few projects that are interesting me at the moment!
Databases - Functional Dependencies and Normal Forms
Computing the closure of a set of functional dependency is a time consuming process. What's even more time consuming is dealing with BCNF and 3NF where you have to determine whether a given decomposition is dependency preserving or is a lossless join decomposition. Throw in minimal covers and all that other business, and it gets really tiring. In order to expedite this process, I'm writing a tool to help out with some of this work. At the very least, it will compute closures, but if it's fun, I'll have it compute some decompositions too. I'm using F# to do this and since I'm completely new to functional programming, this should be a challenging project.
I recently interviewed at Microsoft and was asked a question about implementing malloc. I had never really thought about it before, but it was an interesting question. On the spot, I managed to think of the large majority of the ways that it could be done reasonably in an hour (the length of the interview). Of course, I wasn't able to go into caching or prediction. I think I might try to really dig into this because I feel like taking the time to understand some of the more advanced concepts would help me to improve as a computer scientist. (Read more)
Interfaces/Design - Bridging the Gap
I think that there is a large gap between design and development. Some aspects of design are inconvenient to do on a computer through the traditional keyboard and mouse interface. I think that touchscreen technology such as Microsoft's surface would make the design process much more user friendly. On a somewhat unrelated note, I think that as developers, we often forget that even if we are developing code below the traditional user interface level, we are still developing a user interface. The only difference is that it is not being used by an end-user, but is being used by another developer. In order to by satisfied by my skills as a developer, I will need to become better at developing usable and intuitive interfaces. I think the first step in this process will be improving the navigation of this website as it actually gets some content!
One of the things that got me started with computer science was that I really liked math, especially discrete math (really all the ones other than calculus). As most of you who are actually computer scientists know, you often don't end up using math very much out in the real world. Well, I'm taking a class called Multimedia Technology, but it deals with discrete signal processing, audio processing, and image processing, which involves a lot of... you guessed it: math! It's one of the most fun classes I've taken, so I'll be playing around with Matlab to try to do some stuff that's a little outside the scope of the course. The first thing I'll be working on was suggested by the professor as a fun exercise to do during class, implementing a filter similar to Photoshop's "plastic wrap" filter. I'll be working on this with a fellow classmate, Sam Miller.
Design / Interfaces - Blog
As you can tell, this isn't the most intuitive looking website ever. There's no visual distinction between the static introductory information and the dynamic blog type of updates. In fact, you can't even tell that these updates are supposed to be in the form of a blog. There's not a coherent way of navigating through the different project related pages. I may just end up using something like Word Press, but I feel that building a very lightweight blogging system could be a good, short exercise for me. I don't really have a need for a large blog, so I might as well try it. I think I'll take this opportunity to compare PHP, Python, and Ruby just for kicks. I know I won't be able to really get into the mindset of each of those languages, but I'll probably learn some cool stuff in the process.