Monday, December 19, 2005

DirectXmas

Just because they said "DirectXmas" on their frontpage, I must link to remind myself of:
http://msdn.microsoft.com/coding4fun/

C# Static Classes

Static classes are meant to replace the design pattern of creating a sealed class with a private constructor that contains only static methods. A static class is denoted by placing the static modifier on the class declaration. For example: public sealed class Environment
{
// Keep class from being created
private Environment() { }
}
can now be written as: public static sealed class Environment
{
}
The benefit of using a static class instead of the design pattern above is that the compiler can now report an error if any instance methods are accidentally declared.

(from link)

Saturday, December 17, 2005

C# Using Statement

C#, though the .NET Framework common language runtime (CLR) automatically releases the memory used to store objects that are no longer required. The release of memory is non-deterministic; memory is released whenever the CLR decides to perform garbage collection. However, it is usually best to release limited resources such as file handles and network connections as quickly as possible.

The using statement allows the programmer to specify when objects that use resources should release them. The object provided to the using statement must implement the IDisposable interface. This interface provides the Dispose method, which should release the object's resources.

(from MSDN VS20005 documentation)

Windows ISO Mounting Tool

http://msdn.microsoft.com/subscriptions/faq/default.asp#iso: http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe

Wednesday, December 14, 2005

Erasures in Java 1.5

..., the generics implementation uses a technique known as erasure. The easiest way to understand erasure is to think of the compiler as performing two distinct tasks. First, it does type checking at compile time using all the type information it has (including the type parameters). Then it transforms the code, using a set of rules that remove all of the type parameters (e.g. all of the parameterized types are mapped to raw types), and inserts a set of casting operations. The complete list of transformations is beyond the scope of this article. However, to give you an idea of what erasure does, here are some of the rules:

  • If a class doesn't use type parameters in its definition, erasure doesn't change the class definition.
  • Parameterized types "drop" their type parameters.
  • Every type parameter is mapped to the appropriate bound. By this, I mean: the type parameter is erased and replaced with the strongest type the compiler can reasonably assert. Thus, in the case of , T is mapped to Object. In the case of , T is mapped to Rentable, and so on.
  • Casts are inserted wherever necessary, to ensure that the code compiles.
(from link)

Structs vs. Classes in C#

From the MSDN Structs Tutorial:

Structs vs. Classes
Structs may seem similar to classes, but there are important differences that you should be aware of. First of all, classes are reference types and structs are value types. By using structs, you can create objects that behave like the built-in types and enjoy their benefits as well.

Heap or Stack?
When you call the New operator on a class, it will be allocated on the heap. However, when you instantiate a struct, it gets created on the stack. This will yield performance gains. Also, you will not be dealing with references to an instance of a struct as you would with classes. You will be working directly with the struct instance. Because of this, when passing a struct to a method, it's passed by value instead of as a reference.

Monday, December 12, 2005

LoudNetworks in the Hizouse

The LoudNetworks team in full force:


Phase 1: Design and implement (efficient) reliable communication between two PCs using a microphone and speaker. CHECK
Phase 2: Design and implement robust ad hoc routing between a set of PCs using sound as their only means of communication. CHECK
Phase 3: Design and implement (efficient, fair, etc.) resource control (that is, sound control) among a set of PCs using sound as their only means of communication. CHECK

Understanding C# Timers

All of this information is taken from VS2005 RC2 MSDN Documentation unless otherwise specified; unfortunately information about Timers is littered about the docs and not all in one place. So, in trying to make sense of it all, I made this compilation:

There are three timer controls in Visual Studio and the .NET Framework — the server-based timer you can see on the Components tab of the Toolbox, the standard Windows-based timer you can see on the Windows Forms tab of the Toolbox, and the thread timer that is only available programmatically.
  1. The Windows-based timer is optimized for use in Windows Forms applications.
  2. The server-based timer is an update of the traditional timer that has been optimized to run in a server environment.
  3. The thread timer is a simple, lightweight timer that uses callback methods instead of events and is served by thread-pool threads.

There are two types of threads in Win32 architecture: UI threads, and worker threads. UI threads sit idle most of the time and wait for messages to arrive in their message loops. Once they receive a message, they handle it and then wait for the next message to arrive. Alternatively, worker threads are used to perform background processing and do not use message loops. Both the Windows timer and the server-based timer run using an Interval property. The interval of the thread timer is set in the Timer constructor. The timers are designed for different purposes, as evidenced by their handling of threads:

  • The Windows timer is designed for a single-threaded environment where UI threads are used to perform processing. The accuracy of Windows timers is limited to 55 milliseconds. These traditional timers require that the user code have a UI message pump available and always operate from the same thread, or marshal the call onto another thread. For a COM component, this would be detrimental to performance.
  • The server-based timer is designed for use with worker threads in a multi-threaded environment. Because they use a different architecture, server-based timers have the potential to be much more accurate than Windows timers. Server timers can move among threads to handle the raised events.
  • The thread timer is useful in scenarios where messages are not pumped on the thread. For example, the Windows-based timer relies on operating-system timer support, and if you are not pumping messages on the thread, the event associated with your timer will not occur. The thread timer is more useful in this case.

Windows Form Timer
This class wraps the counters we had in Win32 based on Windows messages. Use this class only if you do not plan to develop a multithreaded application. The Windows Forms Timer component has an Interval property that specifies the number of milliseconds that pass between one timer event and the next. Unless the component is disabled, a timer continues to receive the Tick event at roughly equal intervals of time. This component is designed for a Windows Forms environment. If you need a timer that is suitable for a server environment, see Introduction to Server-Based Timers.

The Interval Property
The Interval property has a few limitations to consider when you are programming a Timer component:

  • If your application or another application is making heavy demands on the system — such as long loops, intensive calculations, or drive, network, or port access — your application may not get timer events as often as the Interval property specifies.
  • The interval can be between 1 and 64,767, inclusive, which means that even the longest interval will not be much longer than one minute (about 64.8 seconds).
  • The interval is not guaranteed to elapse exactly on time. To ensure accuracy, the timer should check the system clock as needed, rather than try to keep track of accumulated time internally.
  • The system generates 18 clock ticks per second — so even though the Interval property is measured in milliseconds, the true precision of an interval is no more than one-eighteenth of a second.

Thread safety: Any public static members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Server-Based Timers (System.Timers)
The Timer component is a server-based timer, which allows you to specify a recurring interval at which the Elapsed event is raised in your application. You can then handle this event to provide regular processing. For example, suppose you have a critical server that must be kept running 24 hours a day, 7 days a week. You could create a service that uses a Timer to periodically check the server and ensure that the system is up and running. If the system is not responding, the service could attempt to restart the server or notify an administrator. The server-based Timer is designed for use with worker threads in a multithreaded environment.

Server timers can move among threads to handle the raised Elapsed event, resulting in more accuracy than Windows timers in raising the event on time. For more information on server-based timers, see Introduction to Server-Based Timers.

Key Programming Elements of Server-Based Timers
The Timer component raises an event called Elapsed. You can create handlers for this event to perform whatever processing needs to occur. Some of the more important properties and methods of a Timer component include the following:

  • The Interval property is used to set the time span, in milliseconds, at which events should be raised. For example, an interval of 1000 will raise an event once a second.
  • The AutoReset property determines whether the timer continues raising events after the given interval elapses. If set to true, the timer continues to recount the interval and raise events. If false, it raises one event after the interval elapses and then stops.
  • The Start method sets the timer's Enabled property to true, which allows the timer to begin raising events. If the timer is already enabled, calling the Start method resets the timer.
  • The Stop method sets the timer's Enabled property to false, preventing the timer from raising any more events.

Thread safety: any public static members of this type are safe for multithreaded operations. Any instance members are not guaranteed to be thread safe.

Thread-timer (System.Threading.Timer)
Use a TimerCallback delegate to specify the method you want the Timer to execute. The timer delegate is specified when the timer is constructed, and cannot be changed. The method does not execute on the thread that created the timer; it executes on a ThreadPool thread supplied by the system. The callback method executed by the timer should be reentrant, because it is called on ThreadPool threads. The callback can be executed simultaneously on two thread pool threads if the timer interval is less than the time required to execute the callback, or if all thread pool threads are in use and the callback is queued multiple times.

When you create a timer, you can specify an amount of time to wait before the first execution of the method (due time), and an amount of time to wait between subsequent executions (period). You can change these values, or disable the timer, using the Change method.

As long as you are using a Timer, you must keep a reference to it. As with any managed object, a Timer is subject to garbage collection when there are no references to it. The fact that a Timer is still active does not prevent it from being collected.

Note: System.Threading.Timer is a simple, lightweight timer that uses callback methods and is served by threadpool threads. You might also consider System.Windows.Forms.Timer for use with Windows forms, and System.Timers.Timer for server-based timer functionality. These timers use events and have additional features.

Thread safety: This type is safe for multithreaded operations.

Other Timers
1. timeGetTime() : This Windows.DLL call can give you up to 1 microsecond of accuracy on some operating systems; however it can be up to 5 microseconds on Windows NT.
2. System.Tickcount (Environment.TickCount): Gets the number of milliseconds elapsed since the system started.
3. DateTime.Ticks: The value of this property represents the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight, January 1, 0001.
4. QueryPerformanceCounter: often used in C++ Windows games. Provides a high resolution timer of less than 1 microsecond. Not exposed in managed code, so you would have to write a wrapper for it.

References
Programming the Thread Pool in the .NET Framework
System.Timers Namespace
Introduction to Server-Based Timers
Timer Programming Architecture
Introduction to the Windows Forms Timer Component

Other C# Timer Resources
Comparing the Timer Classes in the .NET Framework Class Library (added 12/15/05 5:37PM)
http://www.mvps.org/directx/articles/selecting_timer_functions.htm (added 12/20/05 2:20)
The mvps link is very revealing; it discusses timers in the context of high performance games and evaluates them via benchmarking.

Sunday, December 11, 2005

Redick vs. Morrison

My officemate saw Adam Morrison of Gonzaga sink a last second three-point shot over two defenders with 2.5 seconds left yesterday at Key Arena (where the Seattle Supersonics play). We also watched Morrison dominate the game vs. U. of Washington last week (43 points, which ties his career high) -- Morrison is a spectacle, his shot is perfect and he always seems to be in the right place to get a much-needed steal or pick up an offensive rebound. I also observed that he tends to "power dribble" immediately after receiving a pass, which is particularly difficult to guard given that he is 6'9".

J. J. Redick of Duke also had an amazing performance yesterday, scoring a career-high 41 points vs. the #2 team in the country (Texas). He shot 9/16 from the three-point line.

Katz compares the two on espn for a preliminary investigation of NCAA player of the year.

(link)

Friday, December 09, 2005

Painting Techniques in .NET

http://windowsforms.net/articles/windowsformspainting.aspx

Nash a Professional Soccer Player

You cannot escape the "grass-is-always-greener" syndrome:

"'How good are you?', I asked him after his team won. 'I guess I could have played professionally,' he said. 'If I’d focused on it. Sometimes I wish I had. But that’s probably just a grass-is-always-greener kind of thing.' " [Steve Nash talking about playing soccer professionally]

(from link)

Sunday, December 04, 2005

CFP: mobilehci

The 8th International Conference on
Human-Computer Interaction with Mobile Devices and Services
Dates: 12-15 September, 2006
Location: Espoo, Finland
Website: www.mobilehci.org
Deadlines:
* Papers, Workshops and Tutorials: 1 March 2006
* Short Papers, Posters, Demos, Panels, Industry Cases: 7 May 2006

Saturday, November 26, 2005

Thanksgiving 2005 in Nebraska

For those not in "the know," Nebraska is one of those fine "great plains" states centered around Iowa, South Dakota and other spectacles of fun.




My Mother, the Sweater Model

My mother is now a professional model at http://www.familyknitwear.com/! Buy all the clothes she is modeling for so she gets more modeling work!

Tuesday, November 22, 2005

Ah, Minnesota Pride

Yet it's safe to say the Jazz are looking for Humphries, who left the University of Minnesota for the NBA after his freshman season, to develop much more of an all-around game. "I told him, 'I don't want a confrontation every time. (But) how are you going to make a living in this league? Shooting it every time you touch it? Or, I say, you can make a living in this league if you defend, rebound, run the floor and do some of those things,' " Jazz coach Jerry Sloan said when discussing Humphries' play after Utah's Saturday-night loss to Memphis "I don't have a problem with a guy shooting," Sloan added. "But every time he touches it? He's got to learn to pass it. To me, that's one of the simple things to learn how to do. Once you do that, then your teammates accept you a lot more and it makes the game easier for you." Desert Morning News

And

"Another day, another lesson for Kris Humphries. The Jazz's second-year forward checked into the game at the start of the second quarter Saturday against Memphis. So he was obviously shocked when Robert Whaley subbed in for him just 2 1/2 minutes later. As Humphries approached the bench, Jazz coach Jerry Sloan stopped him with a blunt message. "I can't put you out there," Sloan said as Humphries passed by, "if you're not going to compete." Salt Lake Tribune

(from link)

Wednesday, November 16, 2005

College Graduation Rates

Unfortunately I did not see any references to the source of data for this article -- it's a pretty startling statistic.

Just 54 percent of students entering four-year colleges in 1997 had a degree six years later -- and even fewer Hispanics and blacks did, according to some of the latest government figures. After borrowing for school but failing to graduate, many of those students may be worse off than if they had never attended college at all.

(from link)

Monday, November 07, 2005

Informal Awareness in a Hallway

Just saw a very insightful "hidden" camera view of a workplace hallway taken by Saul Greenberg back in the early 90s (at least that's what the presenter said). Essentially, a hidden camera was placed at an end of a office hallway allowing the viewer to see how people casually peered into offices as they walked by to create an informal awareness of the people in their immediate surroundings.

Tuesday, November 01, 2005

What the Public Deserves

From the Washington Post:

"In my administration, we will ask not only what is legal but what is right, not just what the lawyers allow but what the public deserves," Bush said Oct. 26, 2000.

(link)

Sunday, October 30, 2005

Sunday Lament

Since grade school, I have suffered from a perpetual dislike of Sundays. Like so many students before me, the thought of Sunday evokes a certain anxiety which can only be attributed to the dread of school. As a 20th grader (not counting kindgarten or preschool), I feel apt to assert that it is not Sunday's fault. I am certain, now more than ever, that I dislike Sundays only because of the impending Monday. Which leads me to conclude that a Sunday without a Monday is not so bad.

Tuesday, October 25, 2005

Fakes Words in Your Dictionary

Originally in the New Yorker (the following stolen from boingboing):

This piece from last August's New Yorker documents the fascinating hunt for the fake word inserted into the New Oxford American Dictionary. These fake words are inserted by dictionary editors as a kind of watermark to catch competitors who copy their dictionaries wholesale. The process of figuring out which of the words in the NOAD was the fake was quite involved, with six candidates sent around to a panel of distinguished language-scholars who had a vigorous debate about whether each word was a fake

I believe that phone companies used to do something like this with their phone indexes. They would insert fake names and business (complete with phone numbers and addresses) to catch unsuspecting plagirists who would just copy the book wholesale.

Friday, October 21, 2005

Mind Blowing

http://www.patmedia.net/marklevinson/cool/cool_illusion.html

Give it a try -- it really worked for me (both perceiving the green dot and the disappearance of all the pink dots).

Sunday, October 16, 2005

Gloria Mark, Mary Czerwinski, Eric Horvitz, Linda Stone

Gloria Mark and other HCI researchers are written up in this New York Times article. I received my Master's degree from UCI where Gloria Mark is a professor (her office was adjacent to my advisor's).

The article, titled Meet the Life Hackers, begins with highlighting Mark's research with Victor Gonzalez on how human's "multitask" in the workplace.

http://www.nytimes.com/2005/10/16/magazine/16guru.html

Pumpkin Carving Party






I made the Scooby one (not yet complete).

Tuesday, October 11, 2005

Apple in New Yorker

"Tidal" was uneven. Apple was nineteen when she recorded it and had a teen-ager's sense of drama, which sees the world ending whenever a relationship does; she did not yet know that "invade your demeanor" is a phrase that God never intended anyone to say out loud.

-Sasha Frere-Jones in the 10/10/05 New Yorker on Fiona Apple's new album

Monday, October 03, 2005

The Sky Really is Falling

An article written about security in IT cites Ed Lazowska, a faculty member in my department at UW, and begins:

Ed Lazowska, cochairman of the President’s Information Technology Advisory Committee, says that there is a looming security crisis, and the government, vendors and CIOs aren’t doing enough to stop it.

http://www.cio.com/archive/100105/qa_lazowska.html

How Dare You Compare Me To Cheney

Like Vice President Dick Cheney, who led the search for a vice presidential nominee before choosing himself, Miers headed the team searching for O'Connor's replacement and ended up choosing herself.

Ack. There's something fundamentally suspicious about heading a search committee that ends up choosing you. Also note to self, attempt not to follow in Cheney's footsteps in anyway such that comparisons like these could be made.

Sunday, October 02, 2005

CSE Rainbow

Taken on my camera phone (SMT 5600 SmartPhone) from the top floor of the UW CSE building.


Tuesday, September 20, 2005

Absolute, Relative, Mixed Formulas in Excel

Here is a quick review of absolute, relative, and mixed formulas. Normally if you enter a formula like =SUM(A2:A4403) in D1 and then copy the formula to E2, your formula in E2 will change to =SUM(B3:C4403). This is a cool feature of worksheets called "relative addressing", but sometimes we do not want that to happen. In this case, we want every formula to refer to the range A2:B4403. As we copy the formula from cell to cell, it should always point to A2:B4403. While entering the formula, hit F4 once after entering the range, and your formula will change to =SUM($A$2:$A$4403). The dollar sign indicates that that portion of the reference will not change as you copy the formula. This is called absolute addressing. It is possible to lock only the column with the $ and allow the row to be relative. This is called a mixed reference and would be entered as =$A4406. To lock the row but allow the column to be relative, use =B$4405. As you enter a formula, use F4 to toggle among the four flavors of relative, absolute and mixed references.

(from link)

Friday, September 16, 2005

Mayer forms John Mayer Trio

Signed into the iTunes Music Store tonight and saw that John Mayer has a new band called the John Mayer Trio. Since I'm essentially TVless, I did not see him perform at the Grammys where, I guess, the John Mayer Trio sort of debuted their stuff with a new take on Mayer's grammy award winning number, Daughters.

The John Mayer Trio represents a different, harder-edged sound for the singer, songwriter and guitarist. Those fortunate enough to have tickets to the sold-out Fillmore gigs will witness a different side to the pop tunesmith known for slick hits such as ``Your Body Is a Wonderland.''
``I wouldn't just change just for the sake of changing, but I've always had another agenda,'' Mayer explains. ``That other agenda is a whole different set of heroes and hues and colors and textures. I've just decided to go to my next place. . . .
``It's a very thought-out process of taking what excites me about Eric Clapton and B.B. King and Buddy Guy and Blind Faith and Derek & the Dominos and the Band and Cream . . . and placing it in my thing. I love pop music. I love guitar playing. I love blues. I love jazz. And I love the idea even more that I could put my own stamp on all those things and roll them into one sound.''


...

``He's really serious about his guitar playing,'' Palladino says from his home in London. ``Some guitarists have a special touch, and you know the guys I'm talking about, and John is one of those guys. It's the way he strikes a note. He just has something.''
The same could be said for both Jordan and Palladino, two stellar players who have performed with rock legends.



(from link)

Monday, September 12, 2005

Well, at least we have sports...

Headline story on espn.com this morning:

Moment of Relief
Two weeks of suffering. A city, and region, in mourning. The mayor's pregame plea. Did New Orleans really need the Saints' 23-20 win Sunday? Len Pasquarelli says yes.

I have to remind myself why I check this page everyday? It certainly can't be for the insightful and worldly perspective.

Tuesday, August 23, 2005

Incredible Idea

Such an incredible idea. Wishing I would have thought of it.

http://www.engadget.com/entry/1234000430055701/

Cool Discovery Photos

An online picture journal of the Space Shuttle Discovery Mission. Amazing what a group of engineers can accomplish.

Saturday, August 20, 2005

More Adobe Premiere Problems

I made sure that when I finished my "wedding video" project in late June, I left the files in a perfectly archived state so that I could come back to it at anytime. Unfortunately, Adobe Premiere had yet another unfortunate surprise in mind for me.

I loaded the .prproj file tonight to give my friend Scott a short tutorial on Adobe Premiere. I was showing him the ins and outs of cross fades and video transitions when I noticed that one of the primary video source files was missing! Ack, what happened? I had not changed this project (or any of its dependencies) since archiving it months ago. What's the problem?

Ironically (long story) I received the lovely "red screen of death" faced me which said "media missing!." I double checked to make sure the video file was in the same place in my file system. I then tried linking, then unlinking the media through Premiere's pop-up menu. Nothing worked. Finally, I found a link on Adobe Premiere's "Support Knowledge" base which said to,

Rename the .AVI file to use the .MPG extension (for example, rename movie.avi to movie.mpg), and then import it into Adobe Premiere or Adobe Premiere Pro.

I did this and sure enough, the problem was resolved. Now what I don't understand is what caused this error? Why now? I hadn't done a thing between the last time I had used this .prprof file. Ah, yet another sad revelation of how bad Adobe Premiere really is.

Sunday, August 14, 2005

Sky Diving Accident

My clever girlfriend went skydiving for the first time in Australia a few weeks ago. Then I found this story on CNN about a woman who died on her first tandem skydive jump.

Friday, August 12, 2005

Intel IRCON 2005 in Portland, OR

Some pictures from Intel's IRCON 2005 in Portland, OR.




Sunday, July 31, 2005

Intel's Placelab in the news...

Microsoft's Virtual Earth project has recently debuted. It provides real-time location services by either (1) looking at your ip address and making an estimate on your position based on your dns entry or (2) by using Wi-Fi technology. This second method is said to be more accurate and is based on research by Intel Research Labs, Seattle pioneered through the PlaceLab project. Of course, one of the main tenents of PlaceLab is to try and preserve privacy by conducting the localization algorithms "on-device" rather than "on-server" so that no information is exchanged with an outside source that might compromise privacy. Privacy is certainly a critical issue in many domains of CS right now, from e-mail to peer2peer apps, but it's arguably more important when dealing with location as it opens the possibility of endangering someone's physical health.

Two recent articles about PlaceLab. They both specifically mention my research :)
1. The Future of Mobile Computing
2. Intel experiments with Wi-Fi as GPS substitute.

Tuesday, July 26, 2005

You take your car to work

I'll take my board.

All along the undertows, strengthening its hold.
I never thought it would come to this, now I can never go home.

Best part is when they break it down boys choir style 2 minutes in and then proceed to rock out.

Ack, I need to stop listening to the same music I listened to in high school.

My name is Steve Vaught and I walk

Very cool, inspirational story from a fat man born Stephen James Liller in Youngston, Ohio.

http://www.thefatmanwalking.com/

Monday, July 25, 2005

K's Choice, More than an Addict

K's Choice is popularly known for their song "Not an Addict" about the dark, unrelenting temptations of heroin. Launchcast served me up another song by them called "Believe" and before I could hit the next button, I was hooked. K's Choice, not just a one hit wonder. Who knew?

They are now an official member of my "purchased music" playlist in iTunes.

Saturday, July 16, 2005

Eclipse Ruins Then Saves

I love Eclipse. I even use Eclipse when I don't really need to. Right now, Eclipse is my glorified CVS client -- I'm using VS2005 b2 for my C# IDE.

Imagine, if you will, the following frightening developer horror story:

I open Eclipse. I select some dirs to check-in. I try to commit them but I get an error. I look into a folder and think perhaps the cause is an object folder that has been bothersome (and should never be in CVS anyway). I think I select such a folder but really I select a folder containing new source code. I press delete and reflexively hit the enter button on the delete confirmation dialog.
I notice my error and panic, but only slightly. I search on Google for recovery software. I download two such tools PC Inspector File Recovery, which seemed OK but didn't find my newly deleted C# code and Restoration, which really blew and didn't find my source code files either.

Ack, now I'm getting more panicky.

I remember that Eclipse saves a local history of files. I wonder to self if Eclipse could be written such that, upon file/folder deletion through its interface, it would do one last local history backup. To calm my expectations, I figure that, nah that's probably not possible particularly when I only open the Eclipse IDE momentarily to checkin my files and not as a development environment.

I was wrong.

Eclipse saves the day. I open the local history browser and wahlah, my files! Again, stay calm. I make sure that these files are, in fact, the newly modified files and not some old, worthless version... ah, I see a new method, I see two new methods, I see all my new methods.*

Relief!

*I am a big geek.

Wednesday, July 13, 2005

XML Newbie

I am a relative newbie when it comes to XML. For work, I created an XML file and a corresponding parser in C#. For whatever reason the text "Cajun & Creole" kept throwing an XmlArgumentException. I thought perhaps it had something to do with the ampersand and... I was right. To include the "&" character in XML text, you must use "&"

This link from XML.com explains it all.

Sunday, July 10, 2005

Prescription for a Queasy Stomach

A friend of a friend told me about the King County online restaurant inspection reporting system and how it, for a while anyway, completely affected the restaurants she would patronize.

Here is a listing of health inspection reports for restaurants on University Ave. in the University District at UW (note that the listing spans multiple pages). Be forewarned, however, that such listing could impact your desire to eat on the Ave. ever again. Below, I will review some of my favorite restaurants on the Ave. and their records of inspection.

But first, a briefing on the way these inspection reports supposedly work.

Inspections Overview
Inspections are based on regulations to eliminate risk factors for food borne disease. Every violation of these regulations is color coded and has a numerical value based on the amount of risk they create.

The red violations are the highest risk and pertain to things that cause food borne diseas, and the blue violations relate to maintenance and cleanliness of the restaurant. Most importantly, there is a scoring system (note that the lower the score the better).

  • 35 or more red critical violation points require a re-inspection within 14 days.
  • 75 or more red critical violation points require the establishment be closed.
  • 101 or more total (red & blue) points also requires the establishment be closed.

Those restaurants that are forced closed are allowed to reopen when they "have remedied the conditions that have led to closure" -- Whew, that's a relief!

Interesting Finds
What I've noticed from my brief investigations is that American food places tend to do very well (e.g. Schultzy's, Big Time Brewery, even Jack in the Box), each maintaing a near perfect health inspection report (no score over 10). Schultzy's is one of my favorite places on the Ave. so I am fairly relieved there and many of my fellow Grad students hang out/eat at Big Time Brewery. Cheers to them as well.

The most common citation among all restaurants was "Food worker cards not available or current," which presumably means that (a) the restaurant is not keeping good records of their employees or (b) restaurants are hiring illegal immigrants. Admittedly (b) would be more likely in California.

Disgusting Finds (e.g. Point Winners)

  • Honeybee's Cafe back in February '04 was cited with "Ineffective measures to control pests," a 13 point penalty (apparently). I'm not sure what this means exactly, but it cannot be good. It sort of has this implication that there is a pest problem to control.
  • Ichiro Teriyaki scored a resounding 49 points on their last routine inspection. Cited for, among other things, improper refrigeration of food, poor handwashing facilities, unclean food contact surfaces, and, our favorite, ineffective measures to control pests.
  • Never one to be out done, Aladdin Gyro-cery & Deli one-upped Ichiro Teriyaki by 7 points, scoring 56 points in 02/11/2004 for inadequate toilet facilities, unsanitary wiping clothes, improper refrigeration, inaccurate thermometers in refrigerators (the latter point here perhaps the cause of the former?). Of course, Aladdin really didn't learn much from that inspection given that one year later (02/10/2005), the restaurant scored 46 points. I hate to say it, but anyone who has eaten at Aladdin's (I have multiple times) probably isn't surprised by such a record. I'm not being perfidious, just honest.
  • China Express has scored above 37 three times (see Worst Restaurants Section)
  • Batavia just opened on the Ave and already received a 48 (see Worst Restaurants Section).
  • Tokyo Garden. One of the few places mentioned in this blog post that I have never eaten at and perhaps for good reason. Tokyo Garden received a score of 58 points on 02/18/2005 for not storing utensils properly, poor handwashing facilities, food storage.

Favorite Restaurants and how They Fared
My all time favorite restaurant on the Ave is actually on Brooklyn Ave. Cedars offers a fantastic selection of Indian and Mediterranean food -- a seemingly strange mix, but works quite well. I really like Indian food and this is the place to do it in the U. District. The only bad part about Cedars is the table wait on weekend evenings... and their apparent "presence of pests" which are "not controlled." Cedars consistently scores in the 10-20 range in their health inspection report, most recently because of said pest issue and because of separation of living quarters/employee area, inaccurate refrigerator thermometers, etc.

My two favorite Mexican places on the Ave are, Pepes and Chipotle (yes, I know it's owned by McDonalds, shhhhh I like to eat corporate food sometimes, ok?), both of which have flawless health inspection reports never scoring even one point.

Thai food on the Ave. is fairly popular only second in prominence to Teriyaki places. I like, in order of preference: Thai 65 (just opened in early 2005), Thai Tom, Thai Spice, Thaiger Room. Overall, I am not a huge fan of Thai food (it tends to be too sweet and I don't like peanut sauce) but it's hard to avoid on the Ave.

IMO, Worst Restaurants on the Ave. (and how they fared)
The worst restaurant on the Ave is a relatively new addition to the U. District and goes by the name Batavia, which tries to pass as an authentic Indonesian restaurant. Now, I've never been to Indonesia but I hope for their sake that Batavia's version of authentic is a bit skewed. The portions are incredibly small but the food is so bad, that's actually a blessing. I went there one time and that was more than enough. Batavia received a score of a 48, which is, imo, 27 points too small. It would seem that there is some people who disagree with me on Citysearch. My guess would be, however, that those reviews were written by the owners themselves (or their kin).

The second worst restaurant on the Ave goes to Hawaii BBQ Restaurant, which managed to give myself and two others digestion problems for an entire afternoon. I went to Hawaii BBQ for the benefit of a friend who wanted to try it out and when I saw the pictures of their food on the menu posted by the door, I had difficulty staying. But I did and soon regreted it. I'm not sure what Hawaii BBQ is supposed to mean but they appeared to only have three or four authentic Hawaiin dishes -- the rest was your standard Teriyaki offering found at a dime a dozen on the Ave. But I digress, they scored a 39 at their worst inspection and an 18 (most recent) at their best.

The third worst restaurant on the Ave goes to China First, which offers a $3.50 lunch making it almost worth it suffering through their cuisine. The food here is standard Americanized Chinese food, not necessarily bad but just not good. China First has quite the health inspection report though receiving 50, 43, 38 respectively for such things as: food stored on floor, floors not properly cleaned (maybe because there was food in the way?), room temperature storage dangerous (at highest bacteria breeding temperature)

Conclusion
I feel a slight sense of guilt actually typing up these health inspection reports and publishing them on my blog. I realize that many of the restaurants on the Ave are owned and operated by families and that they are doing the best they can. It is a difficult environment, lot's of competition and little pricing flexibility. An overwhelming portion of patrons are students and, therefore, there is only so many foods and preparations that can be offered at the $6-10 range.

Fremont Outdoor Movies

I went to the "Scene It Fremont Outdoor Movies" night in Fremont tonight and saw, for the first time and perhaps only time, a Monty Python movie: Monty Python and the Holy Grail*. Sadly, I am not blessed with a British sense of humor and, for the most part, found the movie utterly boring and sinfully edited. Mostly, it felt like a high school improv class video gone bad (with slightly higher budget, say, $5,000 rather than a nickel). Sole funny parts: flesh wound scene, monsterous rabit, John Cleese. Everything else, I could have more than lived without. I do not think this opinion to be unique. One person I was with fell asleep and I heard plenty of "when does this thing end" chatter behind me.

My apologies to the geeks I've offended everywhere. This is yet more mounting evidence that I do not have what it takes to be a true computer scientist (dare I admit to not liking Star Trek or seeing any of those movies).

I will say, though, that I thoroughly enjoy the idea of outdoor movies. I wish that it were in a park in Fremont (perhaps a grassy knoll) rather than a parking lot. But I suppose we can't have everything -- especially when the price of admission is a suggested donation (ala The Art Institute of Chicago Museum)

* I cannot believe that Monty Python and the Holy Grail received 8.4/10 votes, beating out Braveheart, The Deer Hunter, Sixth Sense, The Graduate, Saving Private Ryan, Hotel Rwanda, The Sting, and even the Wizard of Oz (to name a few). That is blashemy and a testament of the influence that geeks have on imdb.com.

Thursday, July 07, 2005

Update: Australian Calling Rates

Last week, I blogged about the large pricing disparity in calling Australian land lines versus Australian cell phones with American calling cards. I also mentioned using SkypeOut as another possible cheap way to call my g/f overseas.

Well, I tried SkypeOut as well as another calling card company called Pincity, which came highly recommended to me from a friend who uses it to call Asia.

Although SkypeOut offers the cheapest calling rates of any other technology I looked into (other than computer-to-computer of course), my experience with SkypeOut was absolutely horrible. SkypeOut from Seattle, WA to an Australian cell phone costs 2 cents a minute but it is hardly worth it (rates). The audio quality was bad but the delay (over 5 seconds) was worse -- paired together, SkypeOut to Australia was unusuable. *Given that SkypeOut is essentially Voice over IP, I imagine that they will improve.

My Sprint International Calling Card that I got from Sam's club was out of minutes, so rather than recharging it I decided to try Pincity. Pincity offers incredible global calling rates to nearly everywhere in the world (rates). Calling an Australian land line costs an incredibly low $0.05 a minute; however, calling an Australian cell phone is nearly 5 times as much ($0.23 a minute). Nonetheless, I opted to try out Pincity and purchased a 10 dollar card online. Unfortunately, not only is the Australian mobile phone rate twice as high as Sprint's, the sound quality was diminished by that digitized feedback and a 2 second delay.

As soon as my Pincity account runs out (I have roughly 35 minutes left), I'm back to Sprint.

* If you're curious, SkypeOut is able to provide insanely low call rates because it uses the internet to carry most of the call to its destination and then there is only a local charge to make the call to a regular phone (link).

Tuesday, July 05, 2005

Independence Day @ Gasworks

A few photos from my meager SMT5600 phone camera (I biked and didn't want the extra pocket load of my S200 -- particularly since it has been so unreliable lately, see this post).



Australia in Pictures

Images courtesy of my clever girlfriend

Monday, July 04, 2005

You Have a Right to Scream

You have a right to protect yourself. Traveling alone as a female has always been difficult (though I can't say from experience) and if a conflict arises, protecting yourself in anyway possible (including screaming) is imperative. Read this blog post of a woman taking a train to Chennai - a very poignant account of the vulnerability of travel and the ambivalence of law enforcement in India.

Sunday, July 03, 2005

Canon S200 on Last Legs?

I've taken approximately 11,000 (11,173 to be exact) pictures with my Canon PowerShot S200 Digital Elph, which I received for Christmas from my beloved father in 2002. Lately, though, I've been having some difficulties with the quality of photographs the S200 snaps. The autofocus has ceased to work on two occassions -- most recently when I was on vacation in Minnesota. Luckily, on both occassions this problem went away on its own but it makes me a bit worried, what if I am trying to capture a once in a lifetime moment and it turns out like this:

Which fortunately is just a picture of my Dad and not, say, an expose of Brad kissing Angelina... but you get the idea. For like a week, every picture I took with my S200 looked basically like this. Here's another one of my cousins and I at at my grandfather's house.

In some ways, I can understand why my camera would be a bit tired -- 11,173 is a lot of pictures. BEyond that it has survived two falls off a countertop onto the floor, being carried for 2 years in the front pocket of my backpack, camping trips, etc. Overall, it's been a wonderful camera - I can't really criticize it - definitely one of the best pieces of technology I've ever owned (robust, easy to use, and typically did exactly what I wanted when I wanted).

Saturday, July 02, 2005

Candy Ambivalence

I just finished off a box of:

My girlfriend left them here so I ate them. I've never particularly liked Charleston Chews, yet I consumed them contently. I gravitated to them only because they were in my room staring at me and because I felt like something sweet; now I feel guilty (one serving is 19% of my daily saturated fat and 23 grams of sugar). I may have had three or four servings -- hard to tell given how voraciously I swallowed them down.

Data Loss Paranoia

I have been using computers since the Commodore 64 days and I have never experienced hard drive failure (knock on wood). At this point, however, it seems prudent to begin exploring automated backup approaches for my data. I have over 60 gigs of music files, thousands of pictures, not to mention the countless number of school papers, projects, and other documents. Most of this data is sentimental and invaluable; it deserves backup.

Ideally my backup solution would be at some offsite location so that in the case of a fire or robbery, I would still have my data. Since I'm not a business or even a working professional, I don't have the cash to purchase a backup service over the internet. However, I'm thinking I might be able to do this on my own. Right now I'm looking at the following external USB hard drives on amazon.com:

1. $189.88 Maxtor OneTouch II Hard Drive 250 GB Hi-Speed USB (1.31 GB/dollar)
2. $189.99 SimpleTech SimpleDrive 250 GB External USB 2.0 Hard Drive (1.31 GB/dollar)
3. $220.99 LaCie 250 GB d2 External Hard Drive Extreme w/USB 2.0 (1.13 GB/dollar)
4. $244.99 Maxtor OneTouch II 300 GB USB 2.0 External Hard Drive (1.22 GB/dollar)

My plan right now is to purchase one of the above hard drives, attach it to my home computer and make an initial backup (which would be quite large), unattach the drive and then hook it up to my office computer at school. A twice a week backup would hopefully then only be incremental and therefore require little bandwidth to synchronize over the internet (e.g. from my home machine to school). I'm not sure, however, that the backup software that ships with any of these computers is capable of such an effort. I could probably use some 3rd party application like rsync...

Thursday, June 30, 2005

If it's any consolation

Being robbed in your own apartment while you're sleeping is bad, but at least it's not

Tuesday, June 28, 2005

Australian Calling Rates

I can no longer depend on free nationwide long distance from my cell phone to call my g/f as she now lives in Australia. One plan is to use Skype with its "Skype Out" feature, the other is to use calling cards. Here are the results of a quick calling card investigation I did to find the best rates to Australia.

First, note that when calling Australia via a calling card the recipients phone line type is factored into the calling rate. Calling an Australian land line tends to be much cheaper than calling an Australian mobile (cellular) phone line. The type of telecom technology used for the originating phone call (e.g. the phone that places the call) has no impact.

Second, if the calling card is not specifically an international calling card it will most likely have a listed number of minutes. These minutes are usually for domestic nationwide long distance and NOT for international calls. You must check with the calling card company (as I did for the three examples below) to get exact rates to the region of the world you want to call. The domestic cards will then tell you the ratio of minutes charged to actual minutes talked. For example, calling Australia with one AT&T domestic phone card is charged at a 6:1 ratio. That is, for every one minute of talk time, six minutes are actually deducted from your bank of minutes.

Third, some calling cards round up to the minute others round to the second. Obviously the latter is preferred but watch out for connection fees, cards that round to the second often charge you a buck or two every time a phone call is successfully connected.

Three phone cards I investigated re: Australian rates
  1. $14.99 - 150 domestic long distance AT&T ($0.09 a minute)
    From: Best Buy
    Rate 1: 6:1 minutes ratio for USA to Australian cell phone ($0.60 a minute)
    Rate 2: 3:1 minutes ratio for USA to Australian land line ($0.30 a minute)
  2. $21.95 - 600 domestic long distance AT&T ($0.04 a minute)
    From: Sam's Club
    Rate 1: 12:1 minutes ratio for USA to Australian cell phone ($0.44 a minute)
    Rate 2: 4:1 minutes ratio for USA to Australian land line ($0.15 a minute)
  3. $19.98 - Sprint International Calling Card
    From: Sam's Club
    Rate 1: $0.11 a minute for USA to Australian cell phone
    Rate 2: I'm not sure what the rate difference is to call an Australian land line.

I have been quite happy with the Sprint calling card. The line quality is good and there is no connection fee. By the way, the Australian country code is 61.

Sunday, June 26, 2005

VS2005 Visual C# Enhancements

http://msdn.microsoft.com/vcsharp/2005/overview/productivity/

Uses change tracking visualization concept similar to what I proposed in the Augur Eclipse plugin.

Saturday, June 25, 2005

Towering Pines


Just got back from a week long family vacation in North-Central Minnesota with 23 other family members (four generations).

Sydney, Australia

Clever girlfriend is in Sydney, Australia until August 20th. I can avoid doing complicated arithmetic by checking the current time here. For the record, it looks like Sydney, Austrlia is 15 hours ahead of Minnesota and 17 hours ahead of Washington.

Friday, June 17, 2005

Land O'Lakes

Before I embark on my journey home, I thought it fitting to include a tidbit on my native state, Minnesota. As a Minnesotan I am innately proud of many things my fine state has to offer, ice fishing, Nate On Drums, snow mobiling, cross country skiing, the ice palace, Prince, Kirby Pucket before he got in trouble with the law, the old Minneapolis Lakers, Charles Lindbergh, Garrison Keilor... but most of all, we are proud of our lakes. In fact, our state motto is the "land of 10,000 lakes." Aha, but recently a conniving, malevolent geograhy professor from Ohio has said that Texas, the land of bad mottos (e.g. "Don't mess with Texas"), has 269,976 lakes!

In Minnesota's defense, this same professor showed that humble Minnesota actually has upwards of 100,000 lakes. And, I suppose if you were to break it down density-wise, Minnesota would most definitely have Texas beat. However, there is little defense against coming in 7th out of 50 (yes, there are now 50 states in the union!) particularly because we lost to such winning states as Kansas and Oklahoma.

Of course, one argument is that many states are actually artificially increasing their lake count via reservoirs and other man-made bodies of water. They say this is for aesthetic or water irrigation reasons, I say it's because they want to beat Minnesota. Fat chance of that happening, we have Moose (Meese?).

(link)

Thursday, June 16, 2005

Morphing

About two or three months ago, I scoured the web for freeware/shareware morphing programs. I found three: Morphbuster, Morpheus and SqirlzMorph. I remember each having distinct advantages and disadvantages but Morphbuster and Morpheus are crippled shareware (e.g. they limit the number of morphs, or they place a title over the morph until you register, etc.). SqirlzMorph had a frustrating interface but was free so I went with it (note that this was the third morphing program I had used so some of the interface issues were solved simply by applying things I had learned from past experience).

Steps I used in SqirlzMorph:

1. Resize images in Adobe Photoshop taking careful note to line up the morphable object between all images -- this is essential. You can resize the images in SqirlzMorph too I think but it doesn't give you as much control to crop images so that the objects are in the same place across multiple images.
2. Open SqirlzMorph, drag your first two morph images into the interface. Maximize the SqirlzMorph interface.
3. Click the icon that shows six blue tiles in the toolbox on the left side of the SqirlzMorph interface. This will arrange your images to fill up the SqirlzMorph window.
4. OK, now we're ready to begin setting morph points. Morph points tell the software algorithm where one set of pixels in the first image translates to one set of pixels in the second image. The more morph points you place and the more accurate you place them, the better the morph will look. All morphing software that I found, used this same basic concept. Go back to that toolbox on the left side of the SqirlzMorph window, and select the icon with the black arrow AND the green plus. This will allow you to both lay down a morph point on the first picture and move its corresponding point on the second picture. Note that the red minus sign removes dots.
5. Set your first morph point on the first picture. Note that the corresponding morph point shows up on the second picture, move that second point to where it should be.
6. Do step 5 as many times as you would like -- usually the more, the better -- though this has some exceptions, particularly when your morph points don't follow some simple linear pattern for translation.
7. After your morph points are set. Go to the Morph menu in the File Menu. Select the type of Morph you want. I used One Way morph with the Mix - 1 morph algorithm.
8. Also in the Morph menu, set the Period. I used 500 frames per cycle (the more frames, the more fluid the morph).
9 . Now click on the avi icon in the toolbar on the top of the SqirlzMorph interface. Select a filename for your morph and your avi frame rate (i used 30 fps because that's what speed my video was using).
10. You've done it!

Other morphing software that I used had a much better interaction mechanism for placing, moving, and removing morph points. This is my one major criticism of SqirlzMorph.

Wednesday, June 15, 2005

Apple Places High Value on My Opinion

I received an e-mail from Apple today requesting that I fill out an iPod survey.



As a valued customer, your opinions are very important to us. That's why we would greatly appreciate your feedback regarding your iPod. Your participation in this survey will help us to better meet the needs of customers like you.Please click the link below to take the survey. This will take you to an external site hosted by Advanis, an independent marketing research firm we have engaged to perform this study. The information gathered will be for research purposes only, is strictly confidential, and will be used only by Apple. Your personal information and responses will not be shared with anyone.

The survey asked, among other things, the one thing I would like changed about my iPod, how many accessories I've purchased for my iPod, what kind of car I drive, what I think about being able to control my iPod through the steering wheel, the number of iPods in my household, if purchasing/using an iPod made me feel better about Apple, if purchasing/using an iPod made me more likely to buy an Apple computer, how I sync my iPod to my computer, how many songs I have on my iPod, how many songs I have on my computer, the number of songs I have purchased from the iTunes music store, the types of accessories I've purchased for my iPod, how I received my iPod, how I learned to use my iPod, the percentage of music that comes from downloading from the internet (not iTunes music store), ripping from CD, purchasing from iTunes music store, or other.

The survey probably took about 15 minutes and I flew through the questions. If you're curious, the only free form response question asked "what one thing would you change about the iPod?" and I said something like "The menu navigation to shuffle/repeat. The number of required menu traversals to toggle shuffle/repeat is quite high. What's most frustrating is when I am playing a song via a playlist and I want to start shuffle, I have to traverse back-up to the top level to set shuffle and then reverse traverse back down to where I was to the currently playing song (and playlist menu)."

Other things I would like to see:
* be able to play my iPod on many different computers without having to switch the iPod into "manually manage songs and playlists" mode. Ideally, I could play my iPod directly through iTunes on my work and school computers all the while keeping the iPod synched to my home computer. Note that the metadata would then stay up to date and consistent.
* when I play songs on my computer and the same songs on my iPod. The synchronizer should be smart enough to do an intelligent merge of the metadata (e.g. playcount, last played, ratings) and not just an overwrite.
* embed my ratings data (and perhaps other metadata) inside my music files themselves (mp3 id3 tags for instance)
* be able to stream my home computer iTunes library to one other computer at a time with login access.

Thursday, June 02, 2005

Adobe Premiere Success

After weeks (perhaps months?) of using different encoders in Adobe Premiere, I finally found the most optimal way of producing a fluid, high quality video. As soon as I have a chance, I will post some screens of how to go about doing this. The key is to forgo using the "Export" file menu in favor of the "Adobe Encoder" file menu.

I will say that despite the obvious advantages of using a professional-level movie editing program like Adobe Premiere over, say, freeware like Microsoft Movie Maker, the latter still has its place (at least on Windows boxes). Microsoft Movie Maker, for whatever reason, seems like it supports more formats than Adobe Premiere. I saw this when I was working off of DVD .VOB files converted into AVIs, I saw this when working with Canon S200 .avi movies, etc. All seemed to work flawlessly in Microsoft Movie Maker, but in Adobe Premiere, it took some tinkering.

Tuesday, May 24, 2005

Hallelujah

Now I've heard there was a secret chord that David played, and it pleased the Lord
But you don't really care for music, do you?
-Leonard Cohen

Monday, May 23, 2005

But where are they?

One can do anything, anything at all, I thought, if provided with a passionate and gifted teacher.
-Mr. Pat Conroy

Sunday, May 22, 2005

DVD Formats

I purchased the Memorex Dual Format/Double Layer DVD Recorder yesterday for $59.99 after rebate from Fry's Electronics. Of course, I bought a Sony DVD-ROM drive like 3 months ago for roughly the same price from Best Buy :(. Live and learn.

The box says I can record a full DVD disc in approximately 7 minutes. I remember when it took approximately an hour to burn a full CD disc (back in 1998). A full single layer DVD disc is 4.7 GB -- where as a CD-R disc is 700 megs. I can burn 6.7 times the data nine times as fast.

The confusing part about purchasing a DVD burner is that there are all of these different capabilities (Memorex burn speeds are in paranthesis):

1. DVD+R (16x)
2. DVD-R (16x)
3. DVD+RW (8x)
4. DVD-RW (6x)
5. DVD+R9 (4x) <- this is the double layer So, great, looks like my drive supports just about every DVD format I've ever heard of (imagine how confusing this will be if the next generation DVD formats, e.g. blu-ray, don't get standardized). However, while I'm at Fry's I then wanted to know, which Disc format should I actually buy to work in the most DVD players (I eventually had to call a friend before buying a 50 disc package of DVD-Rs). Here's the skinny: http://www.manifest-tech.com/media_dvd/dvd_compat.htm#DVD-R/RW%20and%20DVD-RAM

I was really only interested in DVD-R vs. DVD+R, the link above says,

The DVD-R (Recordable) format is designed to fill much the same role with DVDs as CD-R does with CDs. It can be used to burn large data disks, and it is currently the most reliable media for burning DVD video to discs that can play back in set-top DVD players.

The DVD+R (Recordable) write-once format was defined more recently. DVD+R media and products are expected in Spring 2002. It appears that current DVD+RW drives unfortunately will not be able to write the new DVD+R media.

If you want to author DVDs, and need to be as compatible as possible with any DVD players that you might want to play them on, then go ahead with DVD-R. It works, and it will continue to work in the future. With the existing momentum, prices should remain stable and the format will not be obsolete tomorrow.

And luckily I purchased a 50 pack of DVD-Rs. However, I should note that the Memorex DVD Burner itself shipped with one DVD+R. So it looks like this is the format they are pushing.

Wednesday, May 18, 2005

Thoughts of the Curse Mixtape

Initial impressions of this quarter's mixtape challenge: lots of songs, lots of bad songs.

Top songs so far (that I had not heard before):
Joshua Radin - Girlfriend in the Coma
Bloc Party - This Modern Love
Christopher O'Riley - Black Star
KGBtv - rx

Wow, two covers. Joshua's cover of the Smiths is absolutely gorgeous. He has a delicate, soft voice and I really like his interpretation of this song. O'Riley's cover of Radiohead is from an album of piano arrangements of Radiohead songs. I looked him up in iTunes music store (the album is called something like True Love Waits: Christoper O'Riley Plays Radiohead) and contains covers of Fake Plastic Trees, Motion Picture Soundtrack, Thinking About You, Karma Police, to name a few. My hope is that these renditions do not sound like glorified elevator music.

Anyone who knows my taste in music would not be surprised by my enthusiasm for the Bloc Party track. A perfectly repetitive guitar riff plays in the background entertwined with an intermittent piano riff which highlights the primary melody of the song. The verses are simple, terse phrases sung with dreary, stereoized vocals.

Tuesday, May 17, 2005

Number of the week: 8

[17:34] jonfroehlichUW: 8 is sexily symmetrical
[17:34] jonfroehlichUW: both over horizontal and vertical axes
[17:34] sled212: and orthogonally infinite

Monday, May 16, 2005

Breathalyzer Cellphones

Engadget has news that LG just launched the LG 410 series whose form factor is modeled after a sports car design AND includes a built-in alcohol sensor. Which is more compelling? I do not know.

The University of Washington in collaboration with Intel Research, Seattle has been working with multi-sensor microboards for a while (e.g. 2x1x2 device that contains a temp gauge, barometer, microphone, light detector, infrared detector, accelerometers, etc.). I wonder what contextual information could be derived from the addition of an ambient alcohol sensor? How much alcohol vapor is resident in that local pub down the street anyway?

(Link)

Sunday, May 15, 2005

Mixtape Challenge II (2005)

This year's mixtape challenge, Mixtape Challenge II (2005) - Curse of the Pirate Booty, included 28 submissions. By contrast, last year's mixtape challenge, Mixtape Challenge I (2004) - Songs in the Key of CSE, received 14 submissions (though I should note that only 15 people were solicited for mixes, so a very good turnout). Not sure how many people Ferris contacted about the 2nd mixtape challenge as he, for whatever reason, took measures to protect potential participants (e. g. bcc on e-mails).

I have yet to listen to any of the submissions for Mixtape Challenge II, but here's a quick breakdown.

MOST POPULAR SONGS
Our Lady Peace - 4am (2 submissions: Milind and Rachel)
Zero 7 - Destiny (2 submissions: Adrien and Rachel)
Chicane - Saltwater (2 submissions: Martin and Melanie)

MOST POPULAR BANDS
The Decemberists (5 submissions)
Mike Doughty (5 submissions)
Black Eyed Peas (4 submissions)
Nickel Creek (4 submissions)
Old Crow Medicine Show (4 submissions)
Carla Bruni (3 submissions)
Interpol (3 submissions)
Kruger Brothers (3 submissions)
Modest Mouse (3 submissions)
The Postal Service (3 submissions)
Regina Spektor (3 submissions)
Tori Amos (3 submissions)
Yeah Yeah Yeahs (3 submissions)

And a crap load (14+) of artists w/2 submissions each.

This year's mixtape challenge also includes yet another hip-hop evangelist campaigning to "give hip-hop a chance." Here is an excerpt from his text file description:

I just thought I would take it upon myself to expose you people to more forms of hip-hop. The trash you hear on MTV just doesn't cut it for anyone, myself included, but too many people use this as an excuse to not listen to hip-hop at all. I've attempted (though, more than likely, failed miserably) to represent a wide range of underground hip-hop (many fused with other genres such as jazz and electronica) in an effort to deliver this fine form of art in a palatable manner.

I am sort of neutral on hip-hop. I don't dislike it as a genre but find that most of the music just doesn't jive with me. There are plenty of exceptions to this (e.g. Jay-Z, Kanye West, etc) yet these artists are arguably pop artists first and hip-hop artists second. The hip-hop music i like the most is strongly melodic filled with catchy hooks that underemphasize bass beats. I usually dislike the very organic, stripped down hip-hop sound -- that where the focus is simply the rhyme or the flow of voice -- i would just rather listen to something more compellingly musical (sounding).

Hip-hop evangelists are great though because (1) they see it as their duty to expose people to new music (not a bad objective and certainly one music snobs subscribe to in one form or another for their favorite genre of music) and (2) they either don't care or don't realize that hip-hop is the number one genre of music in America (overtaking Country on the billboard and sales charts a few years ago) - not necessarily a music form in the need of gospel. I realize in this particular case we are speaking of "underground" hip-hop and typically underground music is less accessible (almost experiemental by nature) than its pop counterparts so more power to him. I will indeed give this mix a chance and report back soon. In the meantime...

As the Perceptionists put it in Black Dialogue:

Yeah, it was written in the books of Europeans
we were savage
That our history was insignificant and minds below average
But how can one diminish the work
Of the most imitated culture on this earth
Fast foward to 2000 and now
You see it everywhere you look, speech, music, fasion and style
It's black dialogue

Friday, May 13, 2005

The Brunettes

Saw the Brunettes in concert tonight (they opened for the Shins). Thought I would buy their new album in iTunes when I got back -- but that was presuming iTunes Music Store actually carried an indie New Zealand band. I gather this was a bad presumption because a search for "Brunettes" returns only three tracks in iTunes, none of which are related to this particular band.

So, fall back plan is amazon.com's music store (of course)! I search for Brunettes once again and, yep, you guessed it amazon.com barely carries the Brunettes -- I say barely carries because they only have an import album (for $29.49 no less -- but the album qualifies for free shipping, wee!). Here's the link in case you're fond of pricey import albums (i'm not).

So either the Brunettes have no stateside album releases or my two main music sources have failed me. Must I now be forced to try msn's online music store? The horror.

I will say this, in the age of the internet I think it's best to pick a name that's very unique yet easily spellable. I have trouble with the word Brunettes for some reason (is there two n's? is there two t's? are there both two n's and two t's? is there one n and two t's? etc.) Of course, it's not nearly as hard to spell as the band Desapareicidos. And no I did not have to look that word up -- this time.

Dim Future for CS Research in US?

On May 12, 2005 computing researchers met with a congressional panel about impending funding cuts in technology-related research. The primary concern is that broad long-term computer research is being shortchanged in lieu of more narrow, targeted research. Much of this debate has been spurned on by DARPA's recent withdrawal from supporting university-based computer research.

The Computing Research Policy Blog has the CRA's press release, here are some highlights.

"The impact of IT research on enabling of innovation resonates far beyond just the IT sector," said James D. Foley, Chair of CRA and professor of computer science at Georgia Institute of Technology. "IT has played an essential - many argue the essential - role in the economic growth of the US in the past 20 years. In fact, the seeds of this economic growth are in the fundamental discoveries, most of which are pre-competitive and occur in the nation's universities and research laboratories," said Foley.

Congressional members seemed to agree that the US cannot afford to make compromises that would sacrifice our position as technology leaders/innovators.

Rep. Lincoln Davis (D-TN), the panel's ranking Democrat, agreed. "We cannot afford to squander our technological edge in a field that will only grow in importance."

(link to CRA Policy blog)

Archiving by Categories

I wish there was an easy way to have an archive listing by blog post category in Blogger -- apparently there is not. Found this on How to Blog comparing TypePad to Blogger:

Archiving of Posts
With Blogger, you get one choice: no archive, daily, weekly, OR monthly.
With TypePad, you can choose any of the above AND you also can archive by Category.
Winner - TypePad


(link)

Update 09/24/2006 @ 9:58AM: Blogger beta now allows archiving of posts by label/category (i.e., tagging) and by date

Wednesday, May 11, 2005

Movie Editing Frustrations

I have never been so frustrated with my computer. The past two or three weeks has been a constant battle to try and edit a video for a friend. I've used Adobe Premiere 6.0, Premiere Pro 1.0, and Pinnacle Studio Pro all in vain. It's one of those things where you think you'll fix the issue in another 20 minutes, then another hour, then by the end of the day, then by the end of the week, then you want to kill your computer. I'm sure you all empathize greatly.

Background: friend sends me a DVD formatted for DVD players (e.g. .VOB files) rather than a data DVD (this would be analagous to the difference between a music CD-R that plays in any cd player and a data CD-r that only plays on a computer, he sent me the former). So, this means that I need to rip the DVD just to get at the data I want (the video). Of course, this video was originally in VHS format so when my friend digitized it he had the option of making a data DVD (he just chose not to, so he chose wrong). I used dvddecrypt to rip the DVD (it sounds all very illegal, but remember these are fricking home videos). DVDDecrypter ripped it to MPEG-2 and seemed to do a fine job, e.g. the MPEG-2 videos look comparable to the original DVD video (of course, since the original was VHS, that's not saying much) and the video plays back fine in Windows Media Player and Winamp.

Problem: I load these converted MPEG-2 videos into my video editing program. I notice immediately that the monitor window in Premiere plays the video fine but as soon as I add the video to the timeline view, the sequence window playback is horrible -- choppy, audio is not aligned to video, etc. I check on google about this and it seems that this is at least halfway normal. The sequence window shows a rendering of the video while the monitor window shows the original. OK, so I try a simple splice and edit on like a 30 second clip. I export it first into the default AVI format in Premiere. I load the AVI up into Windows Media Player and there are three problems: (1) video and audio are not synced -- the lag is inconsistent so it is not just a matter of moving the audio timeline to sync with the video; (2) video skips and replays portions over again (e.g. think cat sequence in original Matrix; (3) video is choppy.

At this point I think, OK, weird -- perhaps an issue with the export encoder. I setup like over 50 experiments this weekend to get to the bottom of this but to no avail. I try things like converting the MPEG-2 files into a different format before loading them into premiere (no dice), I try using 11 different encoders to export short 30 second edited sequence (no dice), I try using Adobe Media Encoders (separate file menu from normal export menu) (no dice), I try an old version of Adobe Premiere (6.0) (no dice), I try Pinnacle Studio Pro (no dice), I try Windows Movie Maker -- Aha! This seems to work. The Microsoft Paint of movie editing programs seems to work. Why is this? Argh. Frustration. However, Windows Movie Maker isn't much help because (1) it forces you to render things in .wmv format (i wonder why?) and (2) it is the Microsoft Paint of movie editing programs (e.g. no functionality!).

And only 2 weeks until deadline. Why me?

3/5s of My Clever Girlfriend

My girlfriend takes her 3rd law final today at 2PM EDT. She will do well of course because she is clever. She only has 2 more to go.

Secondly, I am massively upset at both Adobe Premiere 6.0 and Adobe Premiere Pro 1.0. They have literally wasted two consecutive weekends of mine. Can you say incredibly opaque interface coupled with extremely unresponsive movie previewing makes for frustrating times (note i have a 2.53 Ghz P4 with 1 gb of RAM). I also tried Pinnacle's Studio Pro -- of course this software could not (a) read .wmv files (b) export my MPEG2 video correctly.

Thirdly, I am trying a new brand of contacts today. My old brand is no longer manufactured.

Fourthly, I updated my links on the right sidebar. You should try Educate Me, it's edutaining!

Lastly, I find it ironic that the cliques, power structures, and other social dynamics found in high schools across America can also be found in faculty circles on campuses across America. Ask me if I know where the pompous elitists hang out who seem to take humor in the intellectual deprecation of others and I will simply point you to the sixth floor of my building. It's unfortunate that obtaining a PhD does not involve achieving any level of respectable moral or social principles (though I would settle for much less). I have another post brewing about this in my head that I will save for later. If you're lucky, that post will sound even more jaded.

Tuesday, May 10, 2005

Make Believe Drops Today

Weezer's fifth album Make Believe drops today. It is getting taken through the proverbial cleaners by critics. Weezer was my all-time favorite band during high school. Everyone has one. I had Weezer. I shamelessly still had a giant Weezer poster in my bedroom up until the Spring of this year. The same poster that adorned every wall of every bedroom I've had since high school (let's see, that's probably 8 places).

Here are a few of my favorite quotes from Rob Mitchum's review on pitchforkmedia.com. Disclaimer: I have yet to listen to this album but much of what he says could apply to Weezer's last album, Maladriot, anyway which to me was a collection of b-sides off of the Green Album trying to prove both that Rivers could play guitar and that he could write songs where the guitar solos weren't just rehashes of the chorus melody (read: exact copy). It was dismal. And, let's be honest, the Green Album wasn't that much better.

There are two distinct groups of bad albums. The more prevalent kind is the fodder that fills a critic's mailbox, bands with awkward names and laser-printed cover art that don't inspire ire so much as pity. The second group is more treacherous: Bands that yield high expectations due to past achievements, yet, for one reason or another, wipe out like "The Wide World of Sports"' agony-of-defeat skier... Sometimes an album is just awful. Make Believe is one of those albums.

Weezer have been given a lot of breaks in their second era-- both The Green Album and Maladroit were cut miles of slack despite consisting of little more than slightly above-average power-pop. The obvious reason for this lenience has to do with the mean age of rock critics, and the fact that most of these mid-20s scribes were at their absolute peak for bias-forming melodrama when The Blue Album and Pinkerton were released.

Hearing a song like "We Are All on Drugs", which nicks the classic melody of the schoolyard "Diarrhea" song (you know, "when you're sliding into first..." and so on) for an anti-drug message stiffer than Nancy Reagan's "Diff'rent Strokes" cameo, it calls into question whether The Blue Album was really that great, or whether it just stood out as a rare beacon of guitar pop in a grunge-obsessed era.

The one half-decent song on the record, "This Is Such a Pity", fails to even maintain its status as a pleasant Cars homage, interjecting a guitar solo that sounds like it was cut from the original score to Top Gun.

And the absolute best...

So does Make Believe completely ruin not just present-day Weezer, but retroactively, any enjoyment to be had from their earlier work? I don't know-- I'm too scared to re-listen to those first two albums-- but it certainly appears that Make Believe will expertly extract the last remaining good graces the critical community has to offer latter-day Weezer, unless my colleagues' memories of slow-dancing with Ashley to "Say It Ain't So" are more powerful than I can possibly imagine. Of course, if Ashley went on to break your heart, fellow critic, Make Believe might be just the medicine you need; put it on repeat and watch your emotional scar be obliterated as collateral damage in the torpedoing of Weezer's legacy.

Touche my dear critic. Touche!

Monday, May 09, 2005

Yunnie Irony

I left Irvine1, CA for Seattle,WA only to develop a new found fondness for bubble tea.

1With a growing Chinese American population, the press, such as the Orange County edition of the Los Angeles Times, have considered Irvine to be "a [suburban] Chinatown in the making" and "becoming Orange County's Chinatown". (from wikipedia)

Shape of the Day


Sunday, May 08, 2005

It's 7:37PM and...

I am still in my pajamas and I have only Adobe Premiere Pro 1.0 to blame. I could not get that POS software to render my movie clips correctly. I am now downloading Pinnacle Studio Plus v9 in hopes that it will save me further misery.

signed,
extremely frustrated

Friday, May 06, 2005

Yahoo API vs. Google API

Yahoo! API exposes:

Google API exposes:

  • Google's main web index

Note that Yahoo! has taken a much more liberal approach in opening up more facets of their search engine. Based on the following, it's easy to ascertain that Yahoo is really looking to support developers here (perhaps in hopes of motivating developers to use their services over Google). I'm not sure if MSN search has an open API yet. Some other differences I observed while comparing their FAQs are below: Google is in blue while Yahoo! is in red.

Communication Implementation

How does the Google Web APIs service work?
Developers write software programs that connect remotely to the Google Web APIs service. Communication is performed via the Simple Object Access Protocol (SOAP), an XML-based mechanism for exchanging typed information.

Q: Why is Yahoo! using REST?
Our goal is to make Yahoo! Search Web Services available to as many developers as possible. REST based services are easy to understand and accessible from most modern programming languages. In fact, you can get a fair amount done with only a browser and your favorite scripting language.

Q: Does Yahoo! plan to support SOAP?
Not at this time. We may provide SOAP interfaces in the future, if there is significant demand. We believe REST has a lower barrier to entry, is easier to use than SOAP, and is entirely sufficient for these services.

Access Authentication

How do I get access to the Google Web APIs service?
You must first agree to the terms and conditions of the Google Web APIs service and create a Google Account. Google will then email you a license key to use with your Google Web APIs applications. Every time you make a call to the Google Web APIs service, you must include your license key.

Can I create more than one Google Account to get multiple license keys?
No. The terms and conditions you agree to restrict you one account for your personal use. Users who attempt to create more than one account are subject to being banned from the Google Web APIs service.

Q: Do I need a developer token to access Yahoo! API's?
No. Yahoo! Search Web Services use an application ID, not a developer ID.We require an Application ID to be sent with each request. This ID identifies your application, not you, the developer.Application IDs are not used to limit access to the services. Access is rate limited based on the caller's IP address. Each service may have a different access rate limit, and if you exceed that rate, you won't be able to use it for a set amount of time. The documentation for each service lists its rate limit.Best of all you can distribute your great Yahoo! Web Service-powered applications to all of your friends. So long as they're accessing Yahoo! Search Web Services from a different IP, their use will not detract from your limit. If they abuse the service from their computer, your access will not be affected.

Q: What is an Application ID?
An Application ID is a string that uniquely identifies your application. Think of it as like a User-Agent string. If you have multiple applications, you should use a different ID for each one. You can register your ID and make sure nobody is already using your ID on our Application ID registration page.

Rate Limits

How many queries can I issue from my computer programs?
Google provides each developer who registers to use the Google Web APIs service a limit of 1,000 queries per day.

Why is the daily limit only 1,000 queries?
The Google Web APIs service is an experimental free program, so the resources available to support the program are limited.

What if I want to pay Google for the ability to issue more than 1,000 queries per day?
Google is only offering the free beta service at this time. If you would like to see Google develop a commercial service, let us know at api-support@google.com.

Q: What are the limits on how much I can use Yahoo! Search Web Services?
Each service may have different rate limits. See the documentation for each service for more information. (As an aside, the image search has a limit of 5,000 queries per day per ip per application ID!)

Q: How will I know when I hit a limit?
When a rate limit has been exceeded, the HTTP request will receive an error code of 403; along with a standard XML error response. See our rate limiting documentation for details.

Results Per Query

Is there a limit on the number of results I can receive per query?
Yes. You can retrieve a maximum of 10 results per query, and you cannot access information beyond the 1000th result for any given query.

Q: What is the limit on the number of search results I can receive per query?
Each service may have different limits on the number of results you can receive. The documentation for that service will specify the default number and maximum number you can receive. Most services are limited to 50 results per query. Local Search is limited to 20 results per query.

Tracking Usage

How can I track the number of queries I have submitted each day?
Developers need to perform their own tracking of their daily usage.

Q: How can I track the number of queries I have submitted?
If you're a developer, please keep track in your code. Also, consider exposing the counts to the users of your application so they'll have a way to track their usage as well.

Q: How can I track the usage of my applications?
You can get daily usage reports for each of your Application IDs.