Youtube Downloader

Just a word: if you ever wanted to download a video from Youtube, you can use http://vixy.net/. It's open source, and so it's probably going to stay free, and you can convert the video to several different formats.
The video I wanted to download is for one of my presentations... :D
No comments

Time for Dinner!

A question for you to ponder: if the dining halls are open for dinner from 5 to 7:30 pm, when is the best time to go to avoid the crowd?

The first answer might have something to do with when people get hungry, and you would go through when you actually have dinner, if your dinner time represents a majority of people's. Since not a lot of people eat dinner at 5, most eating 6:30 or later, before 6 is probably a good answer.

Which is true, and I congratulate you on your reasoning. But then I don't always feel like eating early either, and it's pretty annoying if you get hungry again later at night.

It turns out that when the dining hall gets crowded may not be entirely determined by when people get hungry, but also by when people think they'll go get food. If you accept the solution that people like to eat with their friends (which is mostly true), then there's also the problem of how people decide when to go and get food as a group. Think about it. If you're meeting someone, are you more likely to say "I'll meet you at six", "I'll meet you at six thirty", or "I'll meet you at six thirty seven"?

The point is that when people say they'll do something together, the time they choose then to be short, and some how more memorable. The o'clock on the dot is easiest (and shortest) to remember, then the half hours, the quarter hours, and maybe the five-minutes. So a good time to get food would be a short time before any of the easy to remember times, say 6:25 or 6:40.

If only I had the same sense of understanding of buying practices in the stock market.
No comments

Pimpin' Firefox

Er... yeah.

I use a fairly customized version of Firefox, and since I recently accidentally deleted my profile and had to reset everything, I figured I would document what I do to make Firefox really mine.

There are several layers of things I do. The first resides in the preferences section. I disable everything under advanced Javascript, set the default font to Arial 11px, and use 32 MB for my cache.

Next up are the about:config values. Since I'm almost always connected to a high speed network, wired or not, I turn up the maximum number of connections Firefox can establish. There are things which deal with the delay before submenus pop out as well. The values I change are listed below.
  • browser.tabs.tabMinWidth = 75
  • content.notify.backoffcount = 5
  • network.dns.disableIPv6 = true
  • network.http.pipelining = true
  • network.http.pipelining.maxrequests = 30
  • netowrk.http.proxy.pipelining = rue
  • nglayout.initialpaint.delay = 0
  • plugin.expose_full_path = true
  • ui.submenuDelay = 0
The most advance stuff I do are stored in userChrome.css. This modifies how Firefox looks; whereas Firefox has three different toolbars by default (menus, navigation, and bookmarks), I only have one. Right clicking on a toolbar allows you to customize them, so I have my back and forward buttons, my address bar, and my search bar all up in the menu toolbar, then uncheck the navigation and bookmarks bars for display. The following CSS maximizes the space of the address bar by getting rid of a few menus and minimizing the search.
/* set default namespace to XUL */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
#go-menu, #bookmarks-menu, #helpMenu, .toolbarbutton-menubutton-dropmarker,
#go-button-stack, .searchbar-engine-button, .search-go-button-stack, #throbber-box {
display:none !important;
}
#search-container, #searchbar {
max-width:1px !important;
min-width:1px !important;
width:1px !important;
}
This little snippet of styling gets ride of the History, Bookmarks, and Help menus, the drop down menu button for back and foward, the go button at the right of the address bar, the search engine selection button, the go button at the right of the search box, and finally the "throbber", the thing that "rotates" when the page is loading. That was the first line. The second line sets (what is remaining of) the search box to have a width of 1 - effectively invisible.

Here's the rationale behind all the changes:
  • I can get to history and bookmarks through keyboard shortcuts (ctrl+H and ctrl+B, respectively; ctrl+D bookmarks a page)
  • I don't use the help menu, except to know which version of Firefox I'm using, for which I go to "about:"
  • I press enter to go to an address and do searches
  • I only use Google to do search
  • There is a throbber for each tab already
The minimization of the search bar means I get to see more of the address bar. How do I search then? Well, I have a set of special bookmarks, with keywords assigned to them. They are listed below with the URL in angled brackets and the keyword in parenthesis:
  • Arch Linux (a)
  • Google (g)
  • Google Image Search (i)
  • Google Video Search (v)
  • Merriam-Webster Dictionary (d)
  • Merriam-Webster Thesaurus (t)
  • Wikipedia (w)
Those of us who have used Opera before will know how these work. All I have to do is type "g linux firefox" in the address bar, and Firefox will automatically insert "linux firefox" into the URL of the bookmark and go to the resulting address. Similarly, I can get the Wikipedia Firefox page by doing "w firefox". By doing this, I'm using the address bar as my search bar, together with the ability to change search engines as needed.

Finally, I use a small number of extensions for Firefox. The one I've used for the longest is the Mouse Gesture extension from Optimoz Team. Again something borrowed from Opera, this allows me to go back and forward, reload a page, open and close tabs, duplicate tabs, and go back to my home page with a mouse movement. The gestures I have set up are:
  • D New Blank Tab/Link in New Tab
  • DR Close Document
  • DU Duplicate Tab
  • L Back
  • LR Reload Page
  • R Forward
  • RL Reload Page
  • U Load Homepage
  • UL Previous Tab
  • UR Next Tab
I also disable rocker gestures and turn off diagonal movement, as that makes my gestures harder to perform.

The other two extensions I use are both recent discoveries. Better Gmail 2 from LifeHacker.com extends the Gmail interface. I particularly like the setting to display message details by default and the extra keyboard shortcuts for labeling messages and going to those labels, although the latter screws up the 'g + c' shortcut to go to Contacts. The last extension is Firebug from Joe Hewitt, which not only duplicates the Javascript Console function in Firefox, but also allows real time editing of HTML, CSS and Javascript, and shows a very useful picture of the position and size of an HTML node is, separating the margin, the padding, the border, and the actual content. In other words, the perfect webpage debugger.

The result of all this customization is I have a version of Firefox which I can call my own.
No comments

iGod: Repenting Made Easy!

I first came across this from a photo on Facebook. Obviously, God is not to be mocked, but still...

Me: Did you create the universe?
God: No I didn't create the universe. What's it like?

Me: God is Christian?
God: I have a lot of Faith in Him, but I never heard He was Christian.

:D

"Note: iGod is meant to be used for fun. A sense of humour [British!] is recommended."
No comments

Calendarmania

Since college I've had an obsession with calendars. I guess before that I was more obsessed with keeping records of things I do (chat logs, emails, whatever), and while I still keep those, I'm not as anal about them as I was before.

But calendars, I'm always trying to make mine better. I came across David Seah's compact calendar today, and I thought, wow, how elegant. My calendar has days going down the page, and hours going across, which is not intuitive at all (although of course there's nothing wrong with it; it's just uncommon). Seah's design though, preserves the Sunday-Saturday format and still shows time as one continuous line. It's on a different scale than mine too; mine is in terms of hours, whereas this is in terms of days. Consequently, while I can schedule my hourly activities very well, I sometimes lose track of days. The opposite is probably true for Seah's design.

Another interesting calendar I came across a while back is Yann le Coroller's personal information manager (PIM) design. The scope of a PIM is broader than a simple calendar, expanding to include an address book and all that. My "calendar" also serves as my to do list and birthday reminder, for example, and therefore is a limited PIM. According to Wikipedia, a PIM may also include emails (which I use Thunderbird for), journals (mix of HTML and Bash script), contact information (Gmail; I'm working on consolidating it but Gmail's stubbornly refusing to import my files correctly), news feeds (Google Reader), and even project management (I'm trying to integrate Gantt chart features into my calendar).

Anyway, le Coroller's site seem to be down right now, but I seem to remember there's a a panel which provides different information depending on what you click. Sounds really general, doesn't it. I think the appeal of his design was more in having everything in one place as opposed to the elegance shown in Seah's compact calendar.

I'm striving to do both. I smell another calendar redesign coming up...
No comments

Two Goals in AI

This is just my opinion, and I haven't read anything to support it, but I think most academic fields can be separated in this way two. The two goals are, roughly, theoretical and practical. For AI, the practical is to make computers smarter, while the theoretical is to use computers to better understand humans.

Example: natural language processing (since I'm in the class). Humans clearly do a lot to understand language. There is a lot of stuff that our brain does which no computer can do yet. That doesn't mean people haven't been trying though; things like the knowledge base Cyc, or the Structure Mapping Engine for analogies, or ACT-R the general cognitive architecture, try to really get at how humans do all this stuff we take for granted. But despite all this, it's very difficult to get computers to even understand a news article. The Learning Reader is an attempt in that direction.

On the other hand, there are purely statistical, stochastic methods of understanding language. For example, we might not know exactly what a student in fourth grade would understand, short of creating a model of their entire brain. We could, however, guess by looking at how long the sentences are, how many syllables each word has, and how long the article as a whole is. Notice that this has nothing to do with the meaning, or semantics, of the article, but only some surface properties. Clearly humans don't do this, but a machine which can tell what grade level a piece of text is would be considered "intelligent".

If this divide is seen as two different directions one can take when studying or doing research in computer science, I'm not sure it's clear which side I'm on. I think I lean slightly more towards using computers to understand humans, or more broadly, to understand humans in general. I enjoy simulations of nature more than I enjoy trying to find a proxy for whatever aspect of human reasoning we're trying to mimic.

That said, I won't complain if I got a job in either camp.
No comments

Snow!

It snowed a lot in Chicago today. I learned a few things
  • Cycling on snow is actually not that bad...
  • ...as long as the snow doesn't do anything to your bike...
  • ...such as it melting and making your seat wet...
  • ...or melting and freezing again to form a, shall we say, "icing" for your seat...
  • ...or freezing on your brakes so there's no friction at all.
I rode my bike to the computer lab, and was forced to walk it back because by the time I left, it had turned to hailing. The last two bullet points actually happened to me.

On the other hand, it snowed! So I can't complain.
No comments