I'm blogging about programming, but ... hey look over there - it's something shiny!
Tuesday, December 26, 2006
The Little Drummer Boy
"Mary, doesn't Jesus look so peaceful sleeping?"
"He sure does Joseph."
"Hey, whose that at the stable door?"
"Hey cool, the boy going to do a drum solo for Jesus."
Friday, December 22, 2006
The Joy of ReSharper
Use the IntelliJ key bindings.
Some of my favorite features:
- Cntl-n: find type. This takes you directly to the object of your desire. ReSharper (RS) does the google-suggest thing of giving you a dwindling list of all the objects possible based on your current key strokes.
- Cntl-Shift-N: Go to a file anywhere in the directory structure.
- RS gives advice on code. For example:
textWriter.Write("\r\n Date:"+DateTime.Now.ToString());
- Ctl-Alt-v: Add a variable to the left of an expression - if you don't have a ";". For example:
new StringBuilder()
[Ctl-Alt-v] var stringBuilder = new StringBuilder();
- RS said the "ToString()" was redundant and (this is the best part), offered to automatically correct it for me (OK, deleting a string is not all that helpful, but some of the other advice is a little tedious to implement. I especially like the offer to use the string.format option on long concatenated strings mixed in with variables. You can turn off specific suggestions like "the 'this' prefix is redundant".
- Real Refactoring. VS2005 comes with a few refactoring options, but typically not the ones I need. RS has a cornucopia of refactoring methods. Maybe the jetbrains developers actually read
by Fowler, unlike some other IDE teams.
One of my favorites is "Encapsulate Field..." which adds the getter and setters for a field.
Thursday, December 21, 2006
The Failure of Sanctions
The US imposed sanctions on Japan to prevent oil and steel entering Japan in response to Japan's occupation of Manchuria in the 1940s. The sanctions failed to free Manchuria from occupation and dragged the US into WWII. The sanctions on Cuba have forced them to abandon their communist ideology - oh wait, after decades it hasn't. In 433BC Athenians imposed sanctions on Megara for farming sacred land. The sanctions eventually dragged Athens into the disastrous Pelopennisian War with Sparta, which it finally lost after decades of debilitating warfare. The historical record of using sanctions for political purposes is a dismal failure.
In addition to virus scans, will we have RIAA scans?
Thursday, December 14, 2006
Seven Things You'll Love about Ruby
- Simple programs are simple
If you are like me, I have a stable of code snippets and little utility classes. When I start a new java program I mentally think about which old program is similiar to the new one (e.g., ok I need a program that reads a file, takes input from the user, and writes out some proccessed data to an output file). I modify the old one to create a new program. I found I don't do that with Ruby.
For example, just to do a hello world in C#,
using System;
public class HelloWorld
{
public static void Main(string[] args) {
Console.Write("Hello World!");
}
}
In Ruby:
puts "Hello World!" - Open Classes:
You can add methods to existing library classes. For example, in C# 2.0, Microsoft added the very helpful string function, IsNullOrEmpty() which replaces the unwieldly construct: if(mystring != null && mystring != ""). In Ruby you don't have to wait for the mavens in Redmond to decide you need a new string function, you can add it yourself.
class String
def NullOrEmpty?
(self == nil || self == "")
end
end
puts "test".NullOrEmpty?
puts "".NullOrEmpty? - Handy, time saving methods
I'm amazed at how long I've done awkward constructs in Java and C# without even thinking a better way could be found. For example, in Java:
if( x < 7 && x > 12 ) { ... }
In Ruby:
if x.between?(7,12) do ...
Ruby is littered with helpful real world utilities for getting your job done. - Methods can have variable number of arguments
This can be quite time saving and reduce your lines of code.
The following are all good calls to add():
add 1
add 1 3 5
add 1 3 5 7 - Functions can return more than one value
Yes, we could return a small array or structure with our multiply values, but why not just return multiple values:
average,total = joke.getAverageRatingAndCount
...
def getAverageRatingAndCount
record = Rating.find_by_sql(["select count(*) as count,avg(rating) as average from ratings WHERE joke_id = ?",id]);
return record[0].average.to_f , record[0].count.to_i
end - Parallel Assignment
You can swap the values in variables without the use of an temp variable. Remember your first programming class: Swap the values in "i" and "j"? You had to use a "t" variable to store one of the values first. Not needed in Ruby.
i = 0
j = 1
puts "i = #{i}, j=#{j}"
i,j = j,i
puts "i = #{i}, j=#{j}"
Which produces:
i = 0, j=1
i = 1, j=0 - Ranges
Ranges are real objects
puts (1..10).each{|i| p i}
Prints the numbers 1 to 10 without the syntax for(i=0;i<10;i++)
(1..10) === 2 # this returns true because 2 is in range
The Range object just does the right thing in its context which can reduce your lines of code and make code more readable.
These are little things, some of the big things you'll love in Ruby are Blocks and generating methods on the fly from code. More on those later.
Tuesday, December 12, 2006
A Disappointing Austin Dot Net User's Group
The XBox racing game pumped up the 75 people attending yesterday's .Net meeting. The wireless controllers were passed around the room. (Afterwards someone asked "Where are the controllers?" to which the answer was "EBay!".)
The new Microsoft developer Evangelist, Caleb, presented on the new ASP.Net AJAX component (nee Atlas). Caleb went over the basics and then showed a demo of using VisualStudio 2005 for developing applications. What happened was a parable of development with Microsoft tools. He built the application and it failed because of a JavaScript error - a class was not properly scoped. So Caleb had to go under the covers of the code that VS generated and try to fix what was wrong. That sounded so familiar to me. Too often the cool WYSIWYG tools of Microsoft take you 90% of the way, and then leave you dangling. The tools demo so well, but in actual development, they leave many things lacking. So as developers we end up having to know all the plumbing underneath applications anyway. This is in addition to how to build applications with the graphical tools.
I really liked Caleb and he'll be good for our area - too bad he doesn't have better tools to demo.
Other tidbits from the night:
75% of the attendees programmed in C#, the rest VB.
ASP.NET AJAX has hooks to transfer data using JSON in addition to SOAP for speed.
Browsers (IE?) use only 2 connections to a domain. To speed downloads put images in diff sub domains.
Fiddlertool.com is some tool for doing HTTP debugging like Firefox's Tamper.
Devtoolbar is available for IE (like Firefox's Developer Toolbar) at Microsoft's site.
Wednesday, December 06, 2006
Connecting to a Remote SQLExpress
C:\home\mfincher>osql -Usa -P"MyPassword" -S "MyServer\SqlExpress"
-d master -Q"SELECT DISTINCT name FROM SYSDATABASES"
The result was:
[DBNETLIB]SQL Server does not exist or access denied.
[DBNETLIB]ConnectionOpen (Connect()).
The solution took three steps to remove the default locked-down settings:
1. Select "Start/Programs/Microsoft SQL Server 2005/Configuration Tools/SQL Server Configuration Manager"
Select "SQL Server 2005 Network Configuration/Protocols for SQLEXPRESS" in the left pane. In the right pane, enable "Named Pipes" and "TCP/IP".
2. Select "Start/Settings/Control Panel/Services" panel.
Right click on "SQL Server Browser". In the "General" tab set "Startup type:" to be "Automatic".
In the Services panel make sure the "SQL Server (SQLEXRESS)" service is running.
3. In "Microsoft SQL Server Management Studio Express" (see previous post on how to get), right click on the machine instance (the top item) and select "Connections". The check the box labeled "Allow remote connections to this server".
It's thrilling to see Microsoft take such pains to have a more secure system by default, but it would be nice to have a single, obvious checkbox to allow the system to talk with the rest of the world.
Austin Java User's Group Christmas Meeting
The Austin JUG met last night at the Sun offices here in Austin. Sun supplied the pizza and drinks for the 60 attenders. Gregg Sporar gave the technotiser showing three different integrated profilers - YouKit, Ecliplse tptp, and the built in profiler for NetBeans.
Angela Caicedo gave the main course about Sunspots - Sun's Small Programmable Object Technology (SPOT). She demoed small sensor devices the size of a deck of cards wirelessly talking with each other and exchanging data. The technology looked very interesting, but felt immature. These new devices are produced and ready for sale to the public, except for legal issues. I wonder if that's the future of technology here in the States - great products ready for release, but held up over some patent. Can you image Windows Vista ready to ship on January 31st, but being held up by some patent issue? It could happen, talk with our friends at Blackberry.
Something else struck me at the meeting - most of the attendees were middle-age, very few younger people. Are there not many people going into programming as a career here or are they just out partying and not interested in learning more, or are they all at the Ruby rallies? What do you think?
Tuesday, December 05, 2006
All the world's population could fit in a Texas County
I was talking this morning with a friend at work and he mentioned some of the shrill prophets of overpopulation. What most people don't know is that the entire 6 billion members of this race we call human, could all fit in an average sized Texas county.
The math: Shackelford county is roughly 20 miles by 30 miles square so the area in square feet is
(20 miles * 5280 feet/mile) * (30 miles * 5280 feet/mile) = 16,727,040,000 feet^2, or almost 17 billion square feet. With 6 billion people on our lovely planet that works out to about 2.7 square/feet per person just in this one county. It would be crowded, but Texas has 253 counties to go.
Friday, December 01, 2006
Regular Expressions to the Rescue of Testing
<Survey name='USM1' groupName='US Malls' priority='4' status='1' cellLimiter='100'becomes
surveyLimiter='100' dateStart='2004-01-07T09:30:00' dateEnd='2006-01-28T16:30:00'
exclusions='0' cluster='Cluster1' allSurveysExclusion='-1' surveyType='AdHoc'
excludeSurveyType='' excludeSurveyTypeDays='-1' >
<Survey name='USM1' groupName='US Malls' priority='4' status='1' cellLimiter='100'This handy little regex replaced them all with the highest level of quality assurance:
surveyLimiter='100' dateStart='2004-01-07T09:30:00' dateEnd='2006-01-28T16:30:00'
exclusions='0' cluster='Cluster1' allSurveysExclusion='-1' surveyType='AdHoc'
excludeSurveyType='' excludeSurveyTypeDays='-1' jobNumber='JN-USM1'
localJobNumber='LJN-USM1' nickName='Nick-USM1' >
Find What:
\<Survey name='{[a-zA-Z0-9]+}'{[^>]+}{\>}Replace With:
\<Survey name='\1'\2 jobNumber='JN-\1' localJobNumber='LJN-\1' nickName='Nick-\1' >
Note that the value of the "name" attribute is gathered into the '\1' variable because its description is surrounded with curly braces.
Wednesday, November 29, 2006
A good trend in movie making will accelerate with digital projectors
Recently our family went to see "Facing the Giants" and really enjoyed it. The acting was uneven, but overall a very toucing movie. The movie is particularly interesting because it shows the trend to smaller budget grass roots films. "Facing the Giants" was made for only $100,000 but has done extremely well at the box office due to word of mouth.
This trend toward the masses being able to make films will accelerate drastically once digital projectors are common in theatres. Without the cost of printing the actual film, anyone with a digital camera and a Mac could make a movie, and with enough buzz get it into theatres.
Transfer to Dreamhost complete
Four ways to play with SqlExpress
1. My friend Frank showed me how to use Query Analyzer with SqlExpress.
Select "Start / Sql Server 2005 / Configuration Tools / Sql Configuration Manager "
Then drill down in "SQL Server 2005 Network Configuration" and select "Protocols for SQLEXPRESS" and enable "Named Pipes" and "TCP/IP" by right clicking and selecting "enable".
Now restart the Sql Express service (aka "SQL Server (SQLEXPRESS)").
Open Query Analyzer and add the sql server instance "yourboxname\SQLEXPRESS"
2. You can also download the free SqlExpress tool from: http://msdn.microsoft.com/vstudio/express/sql/
by clicking on the link to "SQL Server Management Studio".
3.To connect to SqlExpress inside Visual Studio 2005, select "View / Server Explorer". Right click on "Data Connections" and add "yourboxname\SqlExpress".
4. To connect through the command line osql program
osql -S"mymachinename\sqlexpress" -Usa -P"mypassword" -Q"CREATE DATABASE SD20"
Tuesday, November 28, 2006
Best thing happened to me this month...
Best thing happened to me this month was my cell phone died. I was forced to upgrade to a wonderful TMobile MDA (which stands for "Mitch's Digital Assistant"). The MDA replaces two and half devices of mine - old phone, old IPAQ, half my camera.
This morning my friend Frank showed me the Opera browser for it. It's amazing, wonderful. Now I can't live without it; couldn't think of going back to the pre-installed pre-cambrian IE browser. The cool thing is you can read a page like slashdot.com into one tabbed window while downloading links from that page into other tabs to read later - no more waiting for further pages to download, they download in the background.
Sometimes it's a happy thing when devices die.
Thursday, November 23, 2006
Lessons from History
"We have considered ourselves of too much importance in the scale of nations. It has led us into great errors. Instead of yielding to circumstances which human power cannot control, we have imagined that our own destiny and that of other nations was in our hands, to be regulated as we thought proper."
spoken by Virgina Federalist Daniel Sheffey on the eve of the war of 1812 from
The War of 1812 A Forgotten Conflict by Donald Hickey p300
(Remember that in the War of 1812, the White House is burned and the USA is fortunate to get a stalemate from the war).
I meet with a bunch of other guys about once a month to have dinner and discuss a historic event. This month's topic is the Mexican-American War. If you're in Austin on Tuesday Novemeber 28th come by and join us. Email me for more info, my email addresses is on www.fincher.org
Tuesday, November 21, 2006
Edible cotton breakthrough may help feed the world
The cotton plant provides a wonderful fiber for our lives, but it's poisonous seed protein is under utilitzed as cattle feed. Keerti Rathore has manipulated the genome of cotton to remove this poison. Now farmers from developing countries can earn cash for the fiber and use the seed to feed their families.
This is just a hint of the wonderful, fantastic, and dreadful fruits of the new science of the genome. The biotech revolution of the next 20 years will make the computer revolution of the last twenty years look like a child's toy. The revolution is coming, let's prepare for it and not squash its promise of filling the bellies of the world's hungry children.
Monday, November 20, 2006
A couple of web site picks
For laughs try the humor section of http://www.stumbleupon.com. StumbleUpon is a great idea and a lot of fun.
Saturday, November 18, 2006
First Rails Application
Hence the birth of www.CleanJokesForKids.com. It's not pretty and needs lots of stuff, but its there now. Kids can type in their favorite joke and rate other kids jokes. You can see the jokes filtered by the funniest, latest, or worst.
I've been very impressed with how Rails speeds development.
Friday, November 10, 2006
Late Night with Ruby version of wget
This will get a particular page and print to the screen:
require 'open-uri'
open('http://www.fincher.org/Misc/Pennies'){ |f| print f.read }
This will read a file of urls and print all to the screen:
#Reads first argument as file containing urls and prints them
#usage: ruby wget.rb wget.txt
require 'open-uri'
IO.foreach(ARGV[0]) { |line| open(line){ |f| print f.read } }
Monday, November 06, 2006
Structure of Photosynthesis revealed
Researchers have discovered the structure of how plants convert sunlight into usable energy.
If we could manufacture these structures and place them in water-filled panels, sunlight could be directly converted to hydrogen. This would short-circuit the bio-fuels path by going directly to hydrogen instead of cultivating crops. This would be more efficient and require no fertilizer or cultivation. An added bonus is that the hydrogen gas can be stored and used when needed, unlike solar cells.
Thursday, November 02, 2006
Austin Innotech 2006
Soyring from IBM speculated that the Paper Industry might be threaten by Organic Light Emitting Diode "newspapers". These are printed once and then updated daily from an embedded chip.
The Baby Boomers retiring and there are not enough replacements for all the high tech workers.
Labor arbitrage in India and China coming to an end as labour cost there are rising.
Starbucks pays more for health care than for coffee beans.
We need a single standard for health care records that are kept by the patients to avoid misdiagnoses from doctors without the complete health picture.
David Smith vp Technology Futures
The average cell phone is replaced every 11 months.
1/2 of our economy comes from industries just l0 yrs old.
More people read newspapers online now than the carbon based ones.
We are leaving age of physics entering age of biology.
Sarnoff's law N
Metcalfe is law N-squared
Reed's law 2N
In 2001 the US spent more on tort litigation than on R&D.
Most Companies make tech decisions by looking in the rearview mirror
Kert Peterson on Scrum.
Scrum is a project management frame work not a software methodology.
Scrum 4O% turnover is common in an organisation transmuting to Scrum. People are held accountable daily and some don't like that.
Vista preview by Kevin Remde
A funny thing happened during Kevin's preview of Vista - a popup window appeared and informed us that it was checking his digital rights for playing a video in the background.
Vista's Search tools can search new tag words of documents. In the properties dialog box is a field for attaching tags to a document. This looks interesting, but I don't know how many people will have the patience to enter these.
I liked the ability to go back to previous versions of a document.
Vista can use a USB memory stick as virtual memory, which kinda makes sense since it could be faster than a disk drive.
Finally, low priority background tasks will be given lower priority for I/O, making the experience better for the user.
Vista has hard drive failure detection like John Gibson's SpinWrite.
Overall I was impressed with the demo of Vista - it's catching up to the Mac in so many ways. But like many Microsoft projects it's dissappointing in how little they have progressed.
Thursday, October 26, 2006
Smaller, faster and easier
In a recent blog posting Mozilla CTO and creator of the JavaScript language Brendan Eich wrote that the goal for Mozilla 2.0 is to make the codebase smaller, faster and easier to approach and maintain.
Would that all our software releases would be smaller and cleaner than their predecessors. This would take enormous discipline of constant refactoring.
Tuesday, October 17, 2006
Experience with IE7 and "Mobile Favorites"
I have found a work-around for the synching of "Mobile Favorites".
1. Go to your web page you want to sync.
2. Hit the "Mobile Favorites" icon.
3. Create a new Mobile Favorite". Click "yes" to replace the old one.
4. Wait while the browser crashes.
5. Et Viola. Most of the web page will be downloaded to your machine and your Windows Mobile device can sync with them.
6. Repeat this process for each Mobile Favorite.
Those sneaky malware writers
It's puzzling that Microsoft does not release fixes more often than monthly.
Thankfully with Vista, "the most secure operating system ever released by Microsoft" we won't have this problem.
(cough, cough).
Tuesday, October 10, 2006
Last Night's Austin .Net Meeting
They emphasized buying products over building if you don't have the time or money to create what you really want. They recommended the following tools:
Tool | Description |
---|---|
Akamai | caching of static files, like gifs |
epsilon | email sending and racking. epsilon works with mail hosting companies to make sure their email is not locked as spam |
Gemini | for issue tracking |
Selenium | pure JavaScript implementation of GUI esting inside a browser |
psexec | from sysinternals for remote execution of windows commands. |
LinkSleuth | for link testing (free) |
System.Managemnet.ManagementScope | namespace in .Net for application health monitoring |
Camtasia | for creating a web demo. |
To me the most interesting was the demo of Selenium, which I've heard much about, but this was the first time I'd seen it.
Selenium IDE for Firefox for creating Selenium scripts from http://openqa.org/.
At one point Eric asked how many people use Firefox. About 80% of the attendees raised their hands.
Eric repeat the adage, "If it's a pain, do it all the time", as he talked about their build and deploy system.
Friday, October 06, 2006
EEStor, a way out of oil imports?
What is their product? The device stores electricity directly in a capacitor instead of converting it chemically like our current car batteries. The capacitor has no moving parts and will last longer than the car. Plug-in electric cars don't work today because of the high cost of batteries, the limited range of the vehicles and a long recharge time.
EEStor is rumored to have solved all of these. The cost of their device will be reasonable, have nine times the energy density of lead-acid batteries, be half the weight and charge in minutes. The cost of electricity would be equivalent to 45 cents per gallon for gasoline.
Why is a better "battery" important? Most of the oil imported into the US is used for transportation. If we could gradually replace most of our gas burning cars and trucks with electric ones, we wouldn't need nearly as much imported oil. All that money could stay in the US.
We can create electricity from many different sources including wind, solar, coal and nuclear. Cars could be recharged at night when demand for electricity is low and many power plants are idle. (In the distant future, cars could even be used as a buffer in our electrical grid, taking in power late at night and supplying electricity during the peak hours from 2-4pm.)
Many startups have made outrageous claims, so I'm skeptical. I few things give me less cautious. The reputable VC firm Kleiner Perkins Caufield & Byers are backing of EEStor. Also the firm itself is very quiet and not making any wild claims or asking for investors. I'm hoping that EEStor can pull this off.
Now, if OPEC would only cooperate by keeping oil prices high for a few more years to make sure funding continues for new technologies like this, we can kick our oil habit and oil will go back to 20 dollars a barrel.
Saturday, September 30, 2006
How much is too much unit testing?
But with some many tests adding a new feature can be work. Recently while adding a new feature I implemented it in such a way as to have a minimal impact on our test files. Bad, very bad. Should I change 150 xml files, adding in new parameters, or implement the new feature in a way that doesn't change the test files?
I chickened out and did the wrong thing. In the end, like most "shortcuts" it took more time. I went back and wrote a little ruby program to go through the 150 xml files and programatically add new xml attributes with their varying values (name of the file plus occurance in the file, eg, attr="Test5.xml:3").
I learned a few things from the experience:
1. Always do the right thing, even if it takes longer and you are really pressed for time.
2. Unit tests are great and wonderful, but they come with a price. You can have too many tests which can slow you down.
Does my project have too many unit tests? I don't think so, but I'm less sure of that than I use to be. My project partner thinks we have too many, but I still think the tests ensure quality, but the tests come with a higher price than I realized.
Wednesday, September 27, 2006
Last Night's Java User's Group Meeting
Jean George from OpenSky extolled the virtues of XMLC for software development. Open Sky developed a stack of software components to create software including Spring, ireports, Jasper for reporting and Acegi for security.
Jean said to do any modern work you have to master HTML, CSS, and JavaScript.
He also liked Postgres much better than MySQL. But his best line was about PHP programmers, "You can't get rid of them, they're like fireants, you keep stomping on them and they keep coming."
One thing that did strike me about the direction of software development: our systems are more declarative and use convention over configuration. With that in mind it matters less whether the glue holding the frameworks together is Java or C#.
Tuesday, September 26, 2006
New Windows Unpatched Exploit
regsvr32 -u "%ProgramFiles%\Common Files\Microsoft Shared\VGX\vgx.dll"
This unregisters the VML renderer, which is sparsely used today. To reregister the dll after October 10th,
regsvr32 "%ProgramFiles%\Common Files\Microsoft Shared\VGX\vgx.dll"
Don't take my word for it though, read Microsoft's note here.
Wednesday, September 20, 2006
Apache Redirects For URLs with spaces
I had an external web site link to one of my pages, but a space was accidentally appended to the link, eg.,
"<a href="http://www.fincher.org/Misc/Pennies/(space)">Pennies</a>".
My error.log file was filling up with 404 errors. The easy solution was to do an apache redirect, but it was a little tricky because of the space. I tried putting in the "%20" at the end, but apache liked simple double quotes to define the trailing space. The line in the .htaccess looked like this:
Redirect "/Misc/Pennies/ " http://www.fincher.org/Misc/Pennies
Friday, September 15, 2006
Vista could create 50,000 EU jobs
O Pelease!
This is just spin to help with Microsoft's ongoin legal troubles in Europe.
Besides, new jobs are not necessarily a good thing. A toxic waste spill in Europe could create 50,000 new well paying jobs in Europe. We could hire 50,000 painters in Europe to paint all the houses yellow, but after all the money is spent, will we be better off?
The real economic issue is whether Vista will improve the *productivity* of Europe.
Vast amounts of money will be spent training and finding new bugs, but really are we more productive? I doubt it. I've yet to see any features to really make us more productive with the exception of WinFS. Oh, I forgot. WinFS is not in Vista is it?
Besides, I still don't get what Microsoft gains by producing Vista. Most people just buy the OS on a new computer. Microsoft won't gain any new sales. Why didn't Microsoft just save all those billions and billions of dollars. They could have just improved XP for a few million. Microsoft might even lose money since Vista requires more expensive hardware leading to fewer machine sales and fewer OS sales.
Wednesday, September 13, 2006
Twilight of Patterns / "Day Coder"
Hopefully as languages like Java and C# become higher level we will have less patterns to learn - or we can switch to Ruby, Lisp, or Smalltalk - and perhaps no patterns in Ruby++.
I did learn a good buzzword today: "Day coder", a programmer with no real passion for the profession, they just work for the money.
Monday, September 04, 2006
Digital Video Recorders Compared
Below are some random comments on the tradeoffs with each:
Windows Media Center: Good user interface for selecting programs. Schedule information is free and the software is reliable. The software to burn a show to DVD is decent software, although clunky on the Sony using Click2DVD.
Fastforward is totally useless. I try to skip commercials, but once past them the WMC player doesn't stop for minutes, so I have to rewind, but have the same problem of overshooting on the other end. I don't use FF or RW anymore, although the pause/start button works superbly. Using WMC for watching TV concurrently with doing any actual work on the computer is frustratingly awkward due to cpu cycles being shared. Score: 2/5.
TimeWarner/Scientific Atlanta cable box: Good user interface for watching TV. I was immediately able to change channels. Watching the current channel in the corner is userful as I search for more fodder. That being said, the interface is horrible in every other respect. I could not learn how to record a series given a title. Selecting a known title to record in the future is incredibly tedious. I was looking for "Driving Through History", but the interface only offered to jump me to the "D"s. Do you know how many digital tv shows in the next two weeks start with "D". Lots.
I had to read the manual to program the remote to control the tv, took about 20 minutes (half a dozen codes were listed for my brand of tv)
If you ever wondered what an assmebly langauge programmer from the 1960's would produce for a user interface for watching tv, look no farther. The TimeWarner cable DVR is awful. Score: 1/5.
TiVo: Tivo is sweetness and light. From the first time I turned it on, TiVo has worked flawlessly. I was able to select my TV brand from an online list. Recording shows and series is effortless. The GUI just works like you think it should.
I love the "TiVo Recommends" section. I love being able to control TiVo recordings from anywhere in the world via the internet. I don't love the monthly fee, but I'd rather pay them than use the much cheaper TimeWarner box. Score: 5/5.
Freedom is ...
Saturday, September 02, 2006
New StarTrek Makeover / CGI
Check out the trailer (sans CGA):
Monday, August 21, 2006
NHibernate at the Austin .Net User's Group
They recommended two books:
Hibernate In Action by Christian Bauer and Gavin King
Hibernate Quickly
by Patrick Peak Nick Heudecker
Weston recommended winmerge and the iesi collections especially sets .
What's with the lack of an ordered set in .Net anyway?
Thursday, August 17, 2006
VS2003, Perforce, and Web Projects
We kept getting errors like
One or more of the project's destination paths are invalid. To open this solution, you must specify valid paths for each project. The error returned was "The Web at already contains a project. You need to choose another location for your Web project.
and
Visual Studio 2003 already contains a project. You need to choose another location for your Web project.
The best we can tell the steps to integrating a web project in Visual Studio 2003 and Perforce are as follows:
Check all the web project code directly into Perforce not using Visual Studio.
Create a virtual directory in IIS manually. Under the tab "Virtual Directory" remove the application.
In Visual Studio create a blank solution. Select "File/Source Control/Open From Source Control".
The perforce dialog box appears. Select the right attributes on the first panel and select "OK". On the second dialog box select your csproj file. If the moon is in the right phase and fortune smiles on you, the next dialog will have your web site url correct. If the proposed web site has "_1" appended, abandon all hope; somethings wrong. If the proposed web site url is correct, contine and life looks good.
We get an oddity where sometimes when adding the second web project Visual Studio will create an entire new .sln file for us and not add the second project into the current solution.
Well, all that being said, we are moving soon to VS2005 and all these problems will be solved. Right?
Wednesday, August 16, 2006
Converting Web Projects from VS2003 to VS2005
The default "Web Site Project" is very different from the 2003 web project. Files are no longer stored in a tidy dll, but spread all over the place. This makes unit testing very difficult.
Many developers hated the new project type so Scott Guthrie's team released on May 8th 2006 a new project type, "Web Application Project" more like the VS2003 project. Scott has a nice introduction here and the official microsoft docs are here
Monday, August 14, 2006
Upgrading an Asp.Net application from Windows 2000 to 2003 Server
Here's how to do it:
Open IIS Management Console
Right Click on your virtual directory
Select "Properties"
Select "HTTP Headers"
Select "MIME types"
Select "New..."
Set the extension to ".dtd"
and application to "application/octet-stream"
Thursday, August 10, 2006
The Parrot project has interesting possibilities. Parrot is a virtual machine specification like java and .Net bytecode to be used for Perl6. Parrot's difference is that it is being designed to implement any language. Java's bytecode has difficulties with untyped objects which makes a Ruby implementation difficult. .Net's bytecode is more robust, but still has issues. The designers of Parrot are testing different langauges like Forth to make sure the language has all the operators needed to support most known languages.
An interesting possibility is to have browsers interpret Parrot code so we can write any language and have it interpreted by the browser instead of just javascript.
Now if we could just get an open source spec for denser DVDs and bypass the whole HD-DVD and Blu-Ray war.
Saturday, July 29, 2006
First YouTube Video
The possiblilities at YouTube are so enormous. A friend of mine showed me her friend's page where she is teaching Japanese via short videos. Besides lots of humourous videos, the vistas are open for teaching.
Thursday, July 27, 2006
Why is Microsoft software so bad?
Another example - Visual Studio has so little clue about software. VS 2003 can't even take you to the correct overloaded method. VS2005 is better, but good grief it's been 3 years (21 in internet years) and they "give" us this? Refactoring is included, but very limited. VS 2005 is a great editor - if this was 1999. Why did't Microsoft just buy IntelliJ?
I waste so much time each day from bad error messages and a outdated IDE.
So why is this? Why is Microsoft software so bad?
Email Obfuscation
I ran into a friend and he suggested using javascript to hide email address. This is not the strongest method, but it is easy. Mail spammer have to increase their technology quite a bit to run the javascript, not that they can't do it, but it's a lot more work and computing time. Here is a snippet:
<script type="text/javascript"><!--
var name = "fincherdotorg";
var domain = "gmail.com";
document.write('<a href=\"mailto:' + name + '@' + domain + '?subject=Note%20from%20website\">');
document.write(name + '@' + domain + '</a>');
// --></script>
Tuesday, July 18, 2006
No Fluff, Just Stuff Conference 2006
Jay Zimmerman, Founder of NFJS and mystery woman:
My thoughts on Ruby on Rails
I remember seeing J2EE for the first time and thinking: "This is way complicated."
I remember seeing .Net for the first time thinking: "This is a lot like J2EE."
Seeing Ruby On Rails for the first time I thought: "This is way, way cool." I was very impressed that testability is baked into the very DNA of RoR. I liked the way all projects had the same directory structure, so you can understand a new project quickly. I like how in Ruby projects everything is Ruby, you don't have to learn (n)ant, and then different xml config files. The config files are Ruby, not some XML syntax.
Dave Thomas did a great keynote speech. He compared methodologies to the Cargo Cults in New Guinea. Basically saying that we ape some process that worked well in the past, but don't really think about if it's appropriate for us today.
Bruce Tate did a demonstration of Test-First programming that was very impressive. Using the Test-First process, the audience created a Tic-Tac-Toe program that was remarkably simpler than would have been done with a classic UML design.
Some other tidbits:
The Spring Framework came from real developers solving their own problems which is a key to its success.
"Type Declarations are Programming Chains."
Many Design Patterns just go away in Ruby.
Friday, July 14, 2006
Austin Ruby Coders Meeting Last Night
Another intesting tidbit was Eric's use of class recursion.
Class Grammar
Class Element < Grammar
...
This allows classes defined in "Grammar" to use all the class methods.
Monday, July 10, 2006
New Blog Hosting
To view my old blogs from 2002-2006 visit www.fincher.org.