Monday, May 22, 2006
easter pictures
Thought I'd test out Orb's photo publishing capability to throw up a few cute Easter pictures we took of Ethan.


orb
I've been trying out a new program called Orb which I love. Install it on your home machine (or whatever machine you have that you want to serve media from), and then all you have to do is log into a the website and you'll have access to all your media from any other internet-connected computer. All your music, movies, pictures can be accessed from any computer. Heck, if you've got a TV tuner, you can even stream live TV from your home computer. Granted, the quality isn't so great if you don't have a fairly fast connection, but if I'm ever stuck here at work while my favorite show is on, I don't have to completely miss it (or BitTorrent it the next day).
Thursday, May 18, 2006
ajaxy goodness
Google released the Google Web Toolkit recently, which looks like a very promising way to develop AJAX web applications. The premise is that you write standard Java code, which Google's toolkit will then take and compile/convert into Javascript. This means that you get all the benefits of Java, such as type checking and debugging instead of having to code Javascript by hand and track down lots of insidious little bugs. You also don't have to worry too much about making your app cross-browser compatible because the toolkit takes care of all of those worries for you. I'm definitely going to be looking more into this.
Monday, May 08, 2006
consolas
Microsoft has released the Consolas font as a free download. Previously, this font was only available as a part of the Windows Vista preview versions. It's aimed primarily at programmers (and is technically only licensed for users of Visual Studio 2005), but it's also great as a general purpose monospaced font as well. If you're sick of looking at Courier New for all your monospace text, you owe it to yourself to go and download this font.
Tuesday, April 25, 2006
15 megs of fame
Go check out 15 Megs of Fame. It's a music site that contains many Creative Commons licensed songs that you can stream off the website and then download if they suit your fancy. I've already found several great artists there including: Nicolle Chirino, Seven Ender, and Case of the Mondays. I'm still working my way through some of the songs, so I'm sure I'll run across a few other great artists too. It's a great place to go to find some good music that you don't hear everywhere you go. Let me know if you run across some artists I haven't found!
Friday, April 07, 2006
sql express
I just recently installed a version of SQL Server 2005 Express Edition. I'm quite pleased with SQL Server 2005 so far. At least, given what little chance I've had to mess around with it lately. What I'm particularly fond of however is it's ability to work well alongside my installation of SQL Server 2000. Also, installing both the regular and Express edition of 2005 seems to work just fine also. Everything plays together nicely, and I love having the new SQL Management Studio instead of having to drudge through Enterprise Manager.
Why would I install three versions of SQL Server, you ask? Well, 2000 is there for current development. 2005 is there just because, and I installed the Express edition to play around with user instances. User instances seem like a great way to develop client-side database applications. Basically, a user instance spawns a copy of the parent database instance, but makes it specific to the current user. Anything he does in this instance is essentially in a sandbox, which means if he (or more likely, the program he's running) wants to hose his server instance, it's not going to affect any other databases or instances. I'm also intrigued by the AttachDbFilename attribute in the SQL connection string. You could use this attribute in a SQL 2000 connection string, but after doing so, the database remained attached to the instance, and you had to manually detach it in order to make it portable again. I'm thinking that's probably not the case in 2005, especially when using the user instances. I've been hard pressed to find any concrete documentation that would answer that question for me, so I guess I'm just going to have to play with it and find out for myself.
Why would I install three versions of SQL Server, you ask? Well, 2000 is there for current development. 2005 is there just because, and I installed the Express edition to play around with user instances. User instances seem like a great way to develop client-side database applications. Basically, a user instance spawns a copy of the parent database instance, but makes it specific to the current user. Anything he does in this instance is essentially in a sandbox, which means if he (or more likely, the program he's running) wants to hose his server instance, it's not going to affect any other databases or instances. I'm also intrigued by the AttachDbFilename attribute in the SQL connection string. You could use this attribute in a SQL 2000 connection string, but after doing so, the database remained attached to the instance, and you had to manually detach it in order to make it portable again. I'm thinking that's probably not the case in 2005, especially when using the user instances. I've been hard pressed to find any concrete documentation that would answer that question for me, so I guess I'm just going to have to play with it and find out for myself.
Friday, March 03, 2006
easy on the eyes
Just got one of these monitors a few days ago. My eyes have never been happier. I no longer leave work blurry-eyed with a headache from staring at code on a CRT. Our new machines are here as well, and we should get our hands on those before too long. Once we get those, I'm going to have a pretty sweet tri-monitor setup once I pick up a copy of MaxiVista.
Monday, December 05, 2005
Friday, November 11, 2005
podcasts that rock
I got my iPod Nano a few weeks ago. The thing that has surprised me a bit is that I haven't listened to very much music on the thing at all since I got it. Instead, I've become enamored with podcasts. I had played around with a few before I got my Nano, but never really got into them. Now that I can transfer them to a portable player, that's about all I listen to anymore. Here's the ones that are currently at the top of my listening list.
The Daily Source Code with Adam Curry
TavernCast
TWiT (This Week in Tech)
Otaku Generation
Dot Net Rocks
Mondays
In addition, I've become addicted to the video blog / podcast phenomenom that is Rocketboom, even though I don't have a video iPod.
I don't have the time left to actually listen to music on my iPod! :)
The Daily Source Code with Adam Curry
TavernCast
TWiT (This Week in Tech)
Otaku Generation
Dot Net Rocks
Mondays
In addition, I've become addicted to the video blog / podcast phenomenom that is Rocketboom, even though I don't have a video iPod.
I don't have the time left to actually listen to music on my iPod! :)
immutable arrays
I've had a problem for months that, until now, I thought was impossible to solve without writing my own custom code to handle it. I've always wanted to have an immutable (or read-only) collection class. This is quite useful for exposing collections as public properties, but not allowing clients of the code to add, remove, or otherwise alter the collection. To provide good encapsulation, you should most often create methods on the object that contains the collection, so that the container object knows what's happening with the collection it contains. This corresponds to the Encapsulate Collection refactoring.
I've searched Google and every .NET resource I know several times, and it seems many other people have the same problem I do. As luck would have it, I was poking around in the .NET framework using Reflector, and was actually starting to roll my own immutable collection. It was then that I realized that System.Collections.ArrayList has a few static methods that I never noticed before. One of these is exactly what I need: ReadOnly(ArrayList) : ArrayList. Other useful methods I discovered were Adapter(), FixedSize(), Repeat(), and Synchronized. Each of these methods creates collection objects whose types are inner classes to ArrayList.
While I am very thankful that I finally have an answer to my problem, I do have a few gripes about this. Why are these nested classes of ArrayList instead of being more visible outside of the ArrayList class. For that matter, most of these methods take either an ArrayList or the more generic IList. The ones that take ILists create different classes than the ones that take the ArrayList. Why then, are these more generic classes in particular included as nested classes of ArrayList? They don't really have anything to do with ArrayList necessarily.
Of course, what this means now is that I have the nagging urge to go scour my previous code and refactor all those public collection objects in order to encapsulate them. That oughtta take a good long while...
I've searched Google and every .NET resource I know several times, and it seems many other people have the same problem I do. As luck would have it, I was poking around in the .NET framework using Reflector, and was actually starting to roll my own immutable collection. It was then that I realized that System.Collections.ArrayList has a few static methods that I never noticed before. One of these is exactly what I need: ReadOnly(ArrayList) : ArrayList. Other useful methods I discovered were Adapter(), FixedSize(), Repeat(), and Synchronized. Each of these methods creates collection objects whose types are inner classes to ArrayList.
While I am very thankful that I finally have an answer to my problem, I do have a few gripes about this. Why are these nested classes of ArrayList instead of being more visible outside of the ArrayList class. For that matter, most of these methods take either an ArrayList or the more generic IList. The ones that take ILists create different classes than the ones that take the ArrayList. Why then, are these more generic classes in particular included as nested classes of ArrayList? They don't really have anything to do with ArrayList necessarily.
Of course, what this means now is that I have the nagging urge to go scour my previous code and refactor all those public collection objects in order to encapsulate them. That oughtta take a good long while...
Monday, October 03, 2005
spam, spam, spam
Got my first bit of comment spam. I always figured I flew under the radar of such things, but I guess no one's immune. Because of this, I've turned on word verification for all comments posted here. Don't let that stop you from posting a real comment if you have one though!
extraordinary ways
Conjure One (Rhys Fulber's solo project) released his second album on the first of this month. With the exception of the final song, it's available for streaming on Rhapsody. This album is a must-listen for any Conjure One/Delerium fans. I've always loved this type of ambient/new-age/electronic hybrid music, because you can pretty well just turn it on and just let it wash over you. I'll probably have to dig up the full album somewhere so that I can hear the last song. That, and so I can slap it on my spanking new Nano that should be here in a week or so.
Wednesday, September 14, 2005
the data that would not bind
Just encountered some really strange behavior with the databinding mechanism in .NET 1.1. So far, I haven't been able to determine what went wrong, although I was able to fix it. Those are the most unsettling of fixes; you keep trying things until something works, and when it works, you have no idea why. All I was trying to do was bind a System.Collections.ArrayList to a combo box and set the DisplayMember property of the combo to display the name of the item. So, something along these lines...
This code, when bound to the combo box, works just fine for the first item, and displays the Name property just as it should. However, every subsequent item instead ignores the DisplayMember property and spits out the result of item.ToString().
How did I fix it? In the Model.GetItems() method, instead of placing the items in an ArrayList, I created an IMyInterface[] array. Now it works like a charm, and I'm left wondering why.
...
IList items = Model.GetItems();
combo.DataSource = items;
combo.DisplayMember = "Name";
...
public class Model {
...
public static IList GetItems() {
ArrayList items = new ArrayList();
// Create and add items that implement IMyInterface
return items;
}
}
public interface IMyInterface {
string Name {get;}
}
This code, when bound to the combo box, works just fine for the first item, and displays the Name property just as it should. However, every subsequent item instead ignores the DisplayMember property and spits out the result of item.ToString().
How did I fix it? In the Model.GetItems() method, instead of placing the items in an ArrayList, I created an IMyInterface[] array. Now it works like a charm, and I'm left wondering why.
Wednesday, August 31, 2005
office rodeo
There are some days that you wish you had a video camera at hand. It's not everyday you see a herd of cattle moving through your office parking lot. (Last year, it was pigs.) But what made it truly hilarious is watching one of these bovine chase your boss around a dumpster. :) As they were circling the dumpster, another boss jumped in his Ford Expedition and chased the cow away. If somebody had a camera, we all would've been a bit richer.
Wednesday, August 24, 2005
i <3 google
Two new things from Google have garnered my attention today. The first is a second beta to their desktop search tool. This one’s got a cool sidebar that is capable of showing virtually any kind of widget you’d want to come up with for it. This is probably in order to directly compete with Microsoft, who has announced similar functionality for future versions of Windows. It could also be seen as competition for the excellent Konfabulator, which was recently acquired by Yahoo.
Next, is Google Talk, the new instant messaging client that just entered beta. We played with it here at the office for a bit and I think it’s already replaced other forms of IM for us. We’ll see how it fares after the luster of newness wears off in a few days though. We’re all giddy about the voice chat though. It just works, which is more than I can say for just about any other voice chat software I’ve ever used. Plus, everything’s based off of Jabber, so even if I do stop using the Google-branded client later on, I’ve still got a spiffy new Jabber messaging address. That’s a good thing too, because I never seem to remember my old one without looking it up.
Next, is Google Talk, the new instant messaging client that just entered beta. We played with it here at the office for a bit and I think it’s already replaced other forms of IM for us. We’ll see how it fares after the luster of newness wears off in a few days though. We’re all giddy about the voice chat though. It just works, which is more than I can say for just about any other voice chat software I’ve ever used. Plus, everything’s based off of Jabber, so even if I do stop using the Google-branded client later on, I’ve still got a spiffy new Jabber messaging address. That’s a good thing too, because I never seem to remember my old one without looking it up.
Friday, July 15, 2005
not pron
I've fallen into the trap of addiction recently. The vice? A website called not pron. It's an internet riddle that's both insanely challenging and intriguing. I'm up to level 44 so far and I can't seem to quit. Once you hit about number 10 is when you realize that this game will consume you.
Friday, July 01, 2005
text editor woes
As a programmer, it's no question that a text editor is the most valuable thing in the toolbox. Why is it that not a one of them supports finding and replacing of multiple lines. I can't count the number of times that I've needed to swap out several instances of one section of code or XML for another snippet. But Visual Studio, ConTEXT, and even my beloved Notepad2 don't support finding or replacing on anything more than a single line. It'd be one thing if I could substitue newline ( \n ) escape sequences or something to achieve what I want, but none of them even support that. Am I really asking for something that obscure?
Guess that one goes on my ever-expanding list of personal to-do projects. Maybe I'll patent it and make a million bucks....
Guess that one goes on my ever-expanding list of personal to-do projects. Maybe I'll patent it and make a million bucks....
Tuesday, June 28, 2005
255 possible causes
I'm currently working with serialization via binary formatters in .NET. I ran across this exception thrown by the ObjectReader's Deserialize() method a little while ago, which I find particularly amusing:
Only 255? Gee, and I thought this was going to be hard!
I like the trailing spaces tacked onto the end of the exception text too; that's a nice touch.
<sigh />
"Binary stream does not contain a valid BinaryHeader, 255 possible causes, invalid stream or object version change between serialization and deserialization "
Only 255? Gee, and I thought this was going to be hard!
I like the trailing spaces tacked onto the end of the exception text too; that's a nice touch.
<sigh />
my list of tools - part two
Here's part two of my list, which contains some of my favorite development tools that I use often.
Developer Tools
Developer Tools
- Reflector - Every .NET developer will obviously list this as one of their favorite tools. When it comes right down to it, there just isn't another tool out there that comes close to being useful for a .NET programmer than this one.
- TestDriven.NET - This handy tool integrates with Visual Studio .NET and allows you to run unit tests without leaving the IDE. You can also run ad hoc tests on just about any method you care to right-click on.
- WinMerge - WinMerge is probably the best diff/merge tool I've been able to find. And I've tried a lot of them.
- XML Marker - Easy to use XML tool that validates as you type. This is a good one to use if you just want to get down and dirty and crank out some handwritten XML.
- CygWin - Installs a Linux-like environment onto your Windows machine. Lets you use a Linux command shell and run many utilities that just aren't available for Windows.
- NAnt - This is Ant, only geared towards the .NET Framework. Great for scripting builds and automation.
- CruiseControl.NET - Another port from the Java world, this is a wonderful build server automation tool. It will monitor your source code repositories and execute a build script when changes are detected. This lets you know immediately when a checkin has broken the build so that you don't have to hunt through two-month-old code that broke the build.
- GhostDoc - This Visual Studio plugin lets you use a keyboard shortcut to auto-generate skeleton XML documentation for your C# code. Saves lots of typing.
- Regions Addin - Yet another Visual Studio plugin that lets you easily create and add existing code to regions. Very useful for organizing code files.
- TortoiseCVS and TortoiseSVN - These are the best clients for CVS and SVN that I've come across. They integrate exceptionally well with the Windows shell, allowing you to perform checkouts, updates, commits, etc. right from Windows Explorer.
- NHibernate - A nice ORM (object-relational mapping) solution that has its roots in the Hibernate Java ORM. There are, of course, plenty of ORM solutions out for .NET, but this is my current favorite.
- Boo - This is a new language for the CLI (Common Language Infrastructure) that a lot of people are talking about nowadays. What I've looked at looks extremely intriguing, and I'm hoping to be able to delve into it a bit more in the near future.
- SharpDevelop - Can't afford an MSDN subscription? Can't stand Visual Studio? Then this is the IDE to use. It's not quite as full featured as VS, but still has plenty to help you write .NET code. This is an excellent tool for people wanting to get their feet wet writing code for .NET that don't want to invest huge sums of money to get Visual Studio. There's also a Linux version, MonoDevelop, available that lets you write code geared towards the new Mono framework.
- ColorMania - This is great for web developers, but also for client developers. Lets you find out what color a particular pixel is, and even suggest complementary colors and offers options to tweak the color to your heart's content.
- Snippet Compiler - Snippet Compiler lets you try out pieces of code in a quick, easy to use environment, saving you from having to wait an eternity and a day for Visual Studio to load a new project.
- SQL Buddy - This one's great in a pinch. It's basically a replacement for Enterprise Manager. And guess what? If you double click on a table in the treeview, it opens the table as a grid!! What a novel idea!!
- db4Objects - This is a database engine that allows you to store instances of classes directly, without the need to map them to a relational database. It seems to be quite good at what it does, and is currently the tool of choice for many Mono developers.
- Mono - This is the open source, funtional equivalent of Microsoft's .NET Framework. It's pretty well striving for binary compatibility with the .NET Framework, but with the goal of getting that running under a number of platforms. There have already been several significant applications built with Mono, and seems like a very viable solution for anyone who wants to target both Windows and Linux.
groktalks are available
GrokTalks were a series of 10-minute presentations given at TechEd earlier this month. They're up and available for podcasting now at groktalk.net. I've watched a few of them, and they do an exceptional job of cramming in lots of information in a very short time frame. From the looks of things, Scott put in a lot of rehearsal time to make sure his presentation was just under the ten minute mark. :) Billy Hollis' presentation was also quite good, as always, even if he does use the god-forsaken language of Visual Basic. I'm hoping to watch the others as I have time this week. Now I just need a new computer to play with all the cool things mentioned in these videos. :)
Subscribe to:
Posts (Atom)