Zero Wind – Jamie Wong Inside the mind of a Waterloo Software Engineering student

5Nov/093

Projects

Part of the reason I made this website was to document my progress thinking of and working on various projects of mine. I claim these ideas as my own intellectual property. If you intend to implement one of them, you must contact me for permission first. If you're interested though, contact me.

Projects in Progress (Read: on Hiatus)

  • Budgyt When I came to University, I had to start considering how I was going to handle budgeting. There was a bunch of free software available all over the place which let you enter in all your expenses and get summaries of that data. The problem with many of these pieces of software was the extreme tedium associated with entering in all your transactions. It normally meant many many mouse clicks, which I would rather avoid. Budgyt was my solution to this. The idea behind it was to construct a web based application in which transaction entry could be done with only a few presses of keyboard keys. Instead of selecting menus and click "next", you would simply have to hit a hotkey associated with each category of menu. After seeing how some banks (TD) provide transactions as downloadable CSV files, it would be great to incorporate those somehow. This project is in the early development phase and I may restart it, since the code for it is a little messy at the moment.
  • Omegle Voyeur Omegle is a website where you are connected to a stranger for a chat. It is dominated mostly by trolls whose primary purpose is to coerce you into a cyber session and then switch genders or to make you lose the game. Talking to these people is a rather tiresome endeavour, but seeing exactly what happens in these conversations is interesting. Omegle Voyeur is a way of watching a conversation which you aren't part of. What Voyeur does is form two simultaneous connections and then pass the input of one to the output of the other. This sets you up as a conversation proxy, allowing you to watch. Currently, this is exclusively a "sit and watch" program. Later I intend to add functionality to add more than 2 people into a conversation, automatically name the participants so it will be obvious that there are more than 2 people in the conversation, and allow the ability to interfere (mute participants/say things yourself) with a conversation. This concept was spawned during discussion (read: boredom) at CCC Stage 2, 2009. You can see the current project here: Omegle Voyeur
  • wwwpaper This idea came about when I was looking at desktop customization options like Rainmeter and Samurize (website down at the time of the post.) The really really cool thing about these applications was not only the basic abilities provided by them such as analog clocks and calendars, but the ability to modify them and add cool things like frequently updating website information retrieved via regular expressions. I wanted something that would be even more customizable and more web integrated. The idea was to make a website full of widgets which could be used as an active desktop. In Windows, this means using a website as your wallpaper - hence the name wwwpaper. I began working on this to do various things, but this was heavily damaged when the gumblar.cn virus came around. The idea was to provide users with accounts which they could log into which would load up all of their widgets on their desktop. This way, they could switch between computers with NO change to the setup of their widgets, so long as they had the same URL set up as their active desktop.

Past Projects (Finished/Need Restarting)

  • Kwizr Something I started back in grade 10 because I was tiring of studying for French vocabulary tests by staring at a huge list of words. Kwizr (originally Quizulator) was my way of making this process less excruciating. It would take input as a CSV file containing columns with common elements. In the case of French vocab, column 1 would contain French words and column 2 would contain English words. These would be plugged in to user defined expressions, causing the quizzing program to ask "How to you say _____ in French?" or "Comment dit-on ______ en Anglais?". This data would be stored in a MySQL database. The program would quiz the user via an AJAX prompt, in which they would type in answers and the program would give immediate feedback of "correct" or "wrong answer". If the answer was wrong, it would spit out the correct answer. I had this whole system working fairly well, but unfortunately it was on a friend's server when their hosting service went under. Should have backed it up. I need to restart this project anyway, because the way I read the CVS data didn't follow the real CVS standard - which I didn't know existed when I started working on it.
  • ASCII Converter Picture to image converters are by no means a new idea on the internet. The thing I didn't like about many of them was the inability to modify settings on the fly. If you made a mistake in settings at the beginning, you couldn't modify them without restarting. Also, some of them cheated and simply coloured individual characters. I wanted to make a much more comprehensive system which would scale the image, use an ASCII gradient, and allow the user to grab the source code without actually having to go to "view source". The result can be seen here: ASCII Convert

Future Projects/Concepts

  • WXML One of the reasons I'm so fond of web applications is the code structure used to make them. The complete separation of backend processing and user interface, and the construction of the user interface using markup greatly appeals to me. The real power comes from the interaction of these two things, such as running some javascript script when a certain triggering event happens - like a key press. I want to build something that provides this power and structure to the desktop. I want to have some custom defined XML files that will create a GUI and have an instruction set for handling events. So I want to implement functionality similar to the HTML/Javascript code of
    <input type='button' value='click me' onclick='solve()' />
    in desktop computing. This is in the future projects/concepts section because I haven't yet planned on how exactly I would want to go about implementing this, but I'm leaning towards a python implementation using TkInter or wxPython.
  • Learning Alarm Clock This concept came about in a discussion with David Hu on the way to the 2009 ACM Regionals at McMaster University. I, personally, am a horrible abuser of the snooze button. I've heard of various solutions to this, like the Puzzle Alarm Clock, but I wanted to take a slightly different route. The discussion started with the idea that you could have a Rubik's Cube alarm clock which would not turn off until it was solved. The idea was that you would have to wake up to be able to do it. But what if you eventually got SO good at it that you could do it in your sleep, thereby reverting to the cycle of snooze abuse. Well, that would mean that you were learn how to solve it really really fast. Now apply this concept to learning to do something else. Problem: I can't wake up in the morning and linear algebra is roundhouse kicking me in the face. Solution: Make your alarm stay on until you can diagonalize a matrix successfully. Problems would be randomly generated following a certain template, so you would have new input every morning. Continue solving the same variety of problems every morning until you can solve the problem instinctively, as a matter of urgency. Granted, this might make you panic even more on midterms - but atleast you'll be correctly solving problems while panicking.

So these are my ghosts of projects past, present and future.

Have you heard of any of these projects being implemented by anyone else? Are any of these problems already solved somehow? Which of these projects are you most interested in seeing completed/updated?

Comments (3) Trackbacks (0)
  1. Learning alarm clock is cool, but there is one flaw, what if I just don’t know the answer? How do I turn off the alarm then?

  2. @Yuxuan The general idea is that you put in questions that you have a vague idea of how to do, but are not very fast at or frequently make mistakes. So this would work for complex derivatives, or pretty much anything with a numerical answer. It could also be set up to turn off after an amount of time during which you would not be tired any more. If you’ve managed to get out of bed and do some calculus for 5-10 minutes, you probably won’t be going back to bed. As a better alternative to an annoying siren, you could set the alarm to some music.

  3. You can’t copyright ideas, only their implementations. This is the so-called idea-expression dichotomy. Whereas an expression (implementation of an idea) is automatically protected upon creation, in order to gain exclusive ownership of an idea, one needs to register a patent, which is expensive, stringent, and time-consuming. While I am sure most people will respect your request that they do not implement your ideas without your permission, they have no legal obligation to do so.


Leave a comment


No trackbacks yet.