Archives

Archives / 2004
  • [link] favicon.ico generator

    Favorite icons (a.k.a favicon.ico) are cool. IE recognizes them when you save bookmark a page, Mozilla based browsers automatically request them. They're a nice finishing touch on a website, but not something that's usually scheduled or requested.

  • [tip] Use Freecache to distribute large files

    One of my small contributions to the Monoppix project[1] has been setting up hosting for the ISO. As we expected, distributing an ISO that's even remotely popular requires some serious bandwidh. Since the Monoppix 0.2.2.3 Preview Release was posted in August, it's been downloaded 11,067 times. At 404 MB per download, that's 4.47 TB, over 1.1 TB per month.[2]

  • [util] XPKeepPerUserDisplaySettings

    I share a home computer with my wife and 3 year old daughter, Rosemary. As a computer nerd, I can't go below 1280x1024 on the screen resolution, while my wife likes 1024x768 and Rosemary uses 640x480.[1]

  • [Util] Updated - Open Playlist in Windows Media

    Back in April I wrote a very basic console app which would (theoretically) allow you to play Shoutcast Playlists (PLS files) in Windows Media Player.[1] I say theoretically because in practice, I've been fielding a large amount of support requests from hapless users having trouble setting up the file associations, checking if they have .NET installed, etc.

  • Firefox Plugin - Greasemonkey

    Greasemonkey is a Firefox extension which lets you to add bits of DHTML ("user scripts") to any webpage to change it's behavior. In much the same way that user CSS lets you take control of a webpage's style, user scripts let you easily control any aspect of a webpage's design or interaction.

  • Surfacing - been busy with a large ASP.NET project

    I've been pretty silent on my blog lately due to time pressures at work. That's easing up a bit, and I'm very eager to start posting again, about (1) what I've learned on this project, and (2) other things I've been wanting to post about but haven't had time.

  • [OT] Half-Life 2 Patch Released

    The changes in this release are directed at reducing the problem some users are experiencing with sound stuttering. The sound stuttering is not indicative of a sound problem, sound stuttering is only a symptom of texture thrashing on your video card or AGP memory. For information on how to reduce texture thrashing visit this link on our support site:

    [THIS IS NOT THE LINK FOR THE PATCH. RESTART STEAM TO GET THE PATCH]
    http://steampowered.custhelp.com/cgi-bin/steampowered.cfg/php/enduser/std_adp.php?p_faqid=280

    This update will fix sound stuttering that users were experiencing that would last for longer than a few seconds during normal gameplay. This update will also eliminate this same behavior following a quicksave or autosave. There will still be a short pause while the autosave happens, but not the more drawn out stuttering behaivior.

    We are still investigating another performance problem on some hardware, which will manifest where the game is getting into a state where performance drops to less than 5 fps and does not recover or crashes.

    Next week we will be releasing the Source SDK, along with a surprise for the community.
    [via Steam News]

  • [util] ClipPath

    ClipPath
    "As a Programmer, we are often required to set the path or classpath Environment variables. But Windows Operating does not allow us to copy the full path of a file or a folder,say, c:\temp\try.java to clipboard so that we can paste the same anywhere we require. Clip Path utility tries to solve these problems. It is a windows Shell Extension Program. Once installed, you can copy full path of a file or folder to clipboard.

    New features in Version 2.1 include the Addition of one more menu item - "Create Outlook Link(s)"."

    Oh man... this is cool! Read about it on Early Adopter and immediately installed it. For me, this just rocks.

    I am copying file paths into Outlook/documents/etc all day it seems, and with Explorer it's been a two step process. Copy the path, then copy the file name. With this utility it's now done with one right click.
    [via Early Adopter and Greg's Cool [Insert Clever Name] of the Day]

  • Free icons and graphics from EggheadCafe and Lokas

    EggheadCafe has Free Icons And Graphics For Professional ASP.NET Web Applications:

    In partnership with Lokas software, EggHeadCafe.com is providing you with a wide array of business oriented graphics and icons.  No license fees, no royalties, and no restrictions.  Best of all, all of the graphics have transparent backgrounds that you can adjust in programs like Macromedia Fireworks or Adobe Photoshop.

    A small sampling:


    The icons on foood.net are nice, too, but they're not free.

  • [OT] Demographic analysis of US Election Exit Polls

    this post is about the recent u.s. election, but i don't think it's about politics. it's the results of my fact checking study on the exit poll analysis. i wanted to validate or disprove what i'd heard about the electorate who selected george w. bush, and how they made that choice. i'm not interested, in this post, in what they should have done. this is intended to be a demographic study, not a political argument. more disclaimers at the end, but you get the idea.

  • AdaptivePath feed, Ethnoclassification in RSS

    Richard Tallent linked to an excellent article by Peter Merholtz of AdaptivePath about "Ethnoclassification": Metadata for the Masses.

    First, the interesting news. Richard's post reminded me that I hadn't read the content on AdaptivePath's site for a while. These guys are just brilliant with internet usability, but I'd forgotten to scan their site for new info for a while...
    (brain trying to tell me something... wait this is a problem I used to have more often... not such a problem on other sites because of... )
    RSS!

    Sure, I want to read what these guys write as soon as it's available, and since they did the Blogger.com redesign they've gotta have a feed...

    Nope. They didn't. So I sent them an e-mail, and less than 24 hours later, they've added one. How cool is that?

    AdaptivePath news feed: http://feeds.feedburner.com/ap_news

    Now for the part you've been waiting for - my thoughts on Ethnoclassification and RSS (sounds like a class I would have done anything to get out of in college).

    The basic idea of Ethnoclassification is letting people categorize the world around them. One of the best examples, as Peter points out, is del.icio.us, a shared bookmark system where the users get to come up with the categories for the links. Letting users come up with their own categories has some big benefits - not only is it very user friendly, but it allows users to feed real information into the system much faster than "expert" system designers could. Examples are "moblog" and "cameraphone" on Flickr. There are some downsides to it - users misclassify things and create duplicates : "nyc", "newyorkcity", "newyork", etc.

    The payoff of the article is Peter's idea of letting users make the footpaths, then paving over them once the users have defined a general structure.

    This is just a quick summary of an already short article - you should just hop on over and read it.

    Anyhow, this reminded me of the Categories in RSS feeds. There's a big benefit to freeform Categories early on, but as some general structure emerges it would be nice to have some standard categories. You could always allow freeform Categories, but you provide some standard ones in the RSS schema. That seems like how music genres have emerged in CDDB, and a bit like how usenet newsgroup topics have stabilized. It's nice to be able to set up a new group if it's needed, but there's no point in having microsoft.programming.database.sql, microsoft.database.tsql, databases.microsoft.sql, etc.

    Paving the well worn paths improves the user experience by expanding likeminded audiences.

    No real necessity to do this now, as the paths are still probably in the creation phase, but something I'd like to see happen. It would be great to be able to search for feeds by topic without relying on string matches, chance, and search engines.

  • [feature request] Podcasting Client Audio Post-Processing

    I'm mildly interested in Podcasting. I've been test-driving it for a week and will probably post my obligatory YAPO (Yet Another Podcasting Opinion) writeup soon.

    I think it's safe to say that Podcasting is a kind of useful application of RSS to simplify the repetitive task of downloading periodic audio programs. With that in mind, Podcasting clients like iPodder could really add some utility with audio post-processing. Here are some things I'm thinking of:

    1. Split large MP3's into smaller files for players that don't bookmark or fast-forward slowly. I previously posted some information on how to split DotNet Rocks MP3's with mp3splt). I'd like Podcasting client to automate this. It should be configurable, but at a minimum should let me say "split into 2 minute chunks" or "split into "10 minute chunks", etc.

    2. Time Compression - a lot of people have rejected Podcasts because it takes too long to listen through them to compared to the amount of information you receive. In WMP I usually turn the speed tup to about 2x and still get bored sometimes, but most MP3 portables probably don't allow speeding up the play speed. Podcast clients run in the background on powerful modern computers, though, so they should have no problem re-encoding the audio a higher speed I get to pick.

    3. Add background music - during my commute, I regularly flip between music and spoken word (books on tape, NPR, talk radio, or Podcastable content like DotNet Rocks). There's no reason the two couldn't be mixed together. I could pick a folder or list of music MP3's that would make good background music, and my Podcasting client could mix them together. Then I'd get to hear my music and get my content.

    4. Recommend similar feeds[1] - It's hard to find good content now. iPodder.org has a Podcast directory, but it's not very useful. Assuming the content selection continues to grow (and it had better or this whole thing is going down like Boba Fett), they need a webservice that recommends feeds based on the ones I've subscribed to (yes, the aluminum foil hat crowd would need an option to shut this off).

    [1] The astute reader will note that this has nothing to do with audio post-processing. Yeah, well it was one other random feature idea and I thought I could slip it by here.

  • [feature request] URL's with offsets - www.sample.com/interview.mp3#time=32:05

    Adobe's PDF Viewer, as much as it bugs me, does have one really cool feature I'd like to see spread - it allows you to link directly to a page within a PDF:

    <a href="http://www.sample.com/document.pdf#page=42">see page 42</a>
    Scott Hanselman posted about it recently, although I first learned about it while working with a website search product (iPhrase) that spiders PDF's and jumps to the page with the text you searched for.

    What a great idea. So let's take it a step further...
    <a href="www.sample.com/interview.mp3#time=32:05">hear Jon Stewart make fun of bowties</a>
    Most audio / video players can skip ahead in a file they're streaming, so why not let me link to a starting point? I've been thinking about this while forming an opinion on Podcasting. One of the main features that's made weblogs and rss successful is that they're so easy to reference and interlink. Podcasts aren't, but if I could link to an interesting part halfway through a DotNet Rocks show, for example, they might be more useful as an information and discussion resource.

    Any media player (WMP, Winamp, iTunes, Real Player, Quicktime, etc...) could add this support in today, just as Adobe did with their PDF Viewer.

    It needn't stop there, either. I think being able to reference a portion of a file resource could open some new doors. Sure, it's not as dirt simple in most cases as asking for a specific byte range in a file (which is natively supported in HTTP). But the HTTP Content-Range supports multiple range types and could be extended quite a bit. I could, for example, request a pixel range on a GIF and the server could handle this for me. Not appropriate in some cases, but helpful in others. It's a trade-off: the server does a bit more processing, but now I'm able to link to a face within a group photo: <img src=www.sample.com/images/group.gif#pixels:180,200,580,600> Servers always have the option not to support this HTTP Content Encoding / Range Type (it's built into the spec), but there's a lot more flexibility if we make it possible.

    This gets more important as we move beyond HTML and images to a technology infrastructure that runs over HTTP (SOA, RSS, etc.). Being able to request a specific segment of a resource opens some new possibilities.

    To come back to reality a bit (assuming they're not going to extend HTTP at my blog request), there are still some cool applications in addition to media time references. What about linking to a section of a web page that didn't happen to put an anchor right where I'd like to link. What about http://www.sample.com/page.html##byte:3580 or http://www.sample.com/page.html##vertical-position:1500px, etc.? The browser would load the whole page and scroll to the proper position. Sure, I might link to a byte range in the middle of a javascript function, so either scroll to the nearest HTML or refuse the anchor as invalid don't scroll. I'd be no worse off than I am now.

    I think linking to a time offest in a media file just makes sense. The other ideas are intended to spark further thought, but seem to be semi-viable to me. What do you think?

  • Spotting GDI Leaks with Task Manager

    After reading KC's post about finding GDI leaks with the Windows Task Manager back in June, I've added GDI columns to my task manager view on all the computers I personally use. It's often a good problem indicator when my machine's really slow but the CPU and memory utilization isn't out of hand. RSS Bandit, my aggregator of choice, occasionally gets a little greedy with the GDI resources. Most apps seem to use a most a few hundred, but RSS Bandit occasionally shoots to over 4,000,000,000 (4 billion). That seems slightly excessive, so I restart it and everything's fine.

    It's also indicated a GDI leak in a Reflector Addin I was testing.

    Here's how to add the GDI Objects column to your Task Manager:
    1. Bring up the Task Manager (Ctrl - Alt - Del works)
    2. From the View menu, pick "Select Columns..."
    3. Check GDI Objects and hit okay

    By the way, this points out that it's still very possible to have resource leaks in Microsoft.NET apps. The .NET garbage collector will clean up your memory after you, but it doesn't watch resources. You have to make sure you're disposing your unmanaged resources.[1]

    [1] I'm not talking about RSS Bandit here, it's just a general statement. Often apps use components or call .NET code that just wraps unmanaged win32 code. I subscribe to almost 1000 feeds so maybe RSS Bandit is just telling me I need to cut back a bit and get another hobby.

  • [addin] SpoofStick (anti-spoof browser toolbar for IE and Firefox)

    Chris Sells recent post about URL spoofing quoted his wife asking "How is anyone supposed to know that?"

    There were some good comments on how to detect, filter, alert, or educate around the problem of URL spoofing, in which an e-mail or site shows a link that pretends to take you to one domain but takes you to another:
    <a href=www.evilhackerz.com/steelPasswurdz.php>www.ebay.com/update/passwords</a>

    I commented that someone could make a browser addin that detected URL text that looked like an HREF but didn't match domains and show a warning.

    I just saw a toolbar for both IE and Firefox that doesn't quite do that, but takes a step. It shows you what domain you're on, so you'd at least know (after you'd followed the link, but before you'd submitted any information) that you'd been had:
     

    I don't plan to use this - I get so many spoofing / phishing e-mails that I'm used to the precautions. I think I might set it up on my wife's computer and recommend it to family. At least it answers the question of "How is anyone supposed to know that" and takes a step to doing something about the problem. Hopefully, Phish Detection will be as standard as Pop-Up Blockers some day.

    Download Spoofstick here:
    http://www.corestreet.com/spoofstick/index.html

  • HTML Color Schemes

    I'm a web developer, not a designer. At least I know enough about design to realize I'm not good at it. However, I'm often expected to be able to come up with basic color schemes and designs. Here's my cheat sheet:

  • Precompile.axd in ASP.NET 1.1 with System.Web.Handlers.BatchHandler

    [UPDATE: DotNetGeek tested this out and listed some probable reasons why the BatchHandler didn't make the cut for ASP.NET 1.1. It probably works fine for small code-front folder based sites, but doesn't work well with the VS 2003 project approach. As this project approach goes away a bit in ASP.NET 2.0, it may have been easier to implement precompile.axd. I still think it's pretty worthwhile to look through the handler code in Reflector, since it's some pretty slick stuff.]

  • Fritz Onion slides and demo code

    Someone gave out this link when Fritz Onion was on DotNetRocks a few weeks ago and I've been meaning to post it. Tons of great slides and demo code:

    http://pluralsight.com/fritz/speaking.aspx

    Fritz also blogged recently about how he keeps his notes - a local install of FlexWiki. That beats the heck out of my http://notepad.yahoo.com/ solution - FlexWiki is versioned, searchable, interlinked, etc - kind of like a really light OneNote. I've often thought if I ever write a book, I'd like to build it up from a Wiki.

  • Chris Sells on DotNetBeatBox!

    This week .NET Rocks! regular guest (and guest host) Chris Sells joins Carl and the gang for a really fun discussion (after he comments on the mail and news) about Longhorn and WinFX, Longhorn features on XP, working on the MSDN Smart Client DevCenter, VS.NET 2005, learning about new technologies, learning by teaching, and Avalon. He answers some good technical questions from live listeners, and overall makes the two hours fly by. Of course you get the mail, news of the week, Weird Wide Webb, and Ask Rory. Richard is away this week so Carl gave away an iPod to a lucky listener!

  • [util] WinMerge

    I've been using WinMerge for over a year, but it's really gotten good in latest release.

    WinMerge is your basic text file diff / merge tool. It's like WinDiff (if WinDiff handled merging), BeyondCompare, Araxis Merge, etc, but it's free and the development team is on fire. It's an open source project on SourceForge.



    WinMerge has always had a really nice, intuitive navigation system (merge and move to next diff, all right, all left, etc.), but the latest builds have added recursive searches (search all subdirectories), comparison within Zip files[1], shell integration, Unicode and multi-language support, and more.

    You can write custom filters, too. For instance, this filter ignores .cs, .vb, .resx files (and their ilk), which makes it really easy to merge files from a local dev box to a server:

    ## This is a directory/file filter for WinMerge
    ## This filter lets through only files ASP.NET developers care about
    name: ASP.NET Devel

    ## This is an exclusive filter
    ## (it lets through only matching files)
    def: exclude

    ## Filters for filenames begin with f:
    ## Filters for directories begin with d:
    ## (Inline comments begin with " ##" and extend to the end of the line)

    f: \.xml$
    f: \.xlst$
    f: \.dtd$
    f: \.html$
    f: \.htm$
    f: \.css$
    f: \.gif$
    f: \.bmp$
    f: \.jpg$
    f: \.png$
    f: \.js$
    f: \.dll$
    f: \.aspx$
    f: \.asmx$
    f: \.ascx$
    f: \.config$

    d: \\*$ ## Subdirectories

    I've been using the latest features in experimental builds through the summer, but since they're at a Release Candidate build I feel good about recommending it to the general public (or, I guess, that segment of the public that cares about text differencing and merging. Sorry, Grandma!).

     [1] Requires you install 7-Zip. 7-Zip's interface looks like a Windows 3.1 refugee, but you can just install it and never use it and WinMerge will do the Zip compare thing.

  • Music Thieves?

    Robert Scoble summarized some of the reaction to Steve Ballmer's comments about most music on an iPod[1] being stolen. Very upsetting.

    And if we're honest, Steve Ballmer's comments are on the money.

    Let's do some simple math (Fermi question style):

    1. A $399 iPod holds 40GB.
    2. At 1MB / Minute (rule of thumb for 128 KB/s), that's 40,000 minutes of music[2].
    3. At 3 minutes per song, that's over 13,000 songs.
    4. At 13 songs / album, that's 1000 CD's.
    5. At $17 / CD, that's $17,000 to fill up a  $399 iPod. Sure, you can get CD's cheaper, but considering that half the songs on an album are lame and don't make it to the iPod, I figure $17 / CD is fair. Yeah, you can download them one at at time from iTunes / Walmart / etc., but how long will it take to download 13,000 songs clicky clicky style? I'm sticking at $17 / CD.
    How many people, honestly, have spent $17,000 on music? Okay, you got last year's model and only got 20 GB... have you really paid the entire $8500 to fill it up?

    The real question... do you have a digital copy of at least one song you haven't paid for? I know I don't want to answer that question...

    I think Ballmer's just being honest. Are we?

    And if you're that diamond in the rough who's gonna get all up in my face, how many of your friends are legit on the MP3 front? What percent of the music on the world's iPods is paid for? We all know it's true, and Information Minister bit is starting to look purty silly.

    [1] Or any digital music device. iPod just happens to be the popular one at the moment.
    [2] Closer to 41,000 minutes since a GB is technically more then 1000 MB, but I'll spot you the GB. Who loves ya, baby?

  • ASP.NET Forms Auth Vulnerability

    This may be fixed in ASP.NET 1.1 SP1, and may not be a problem for W2K3. Details sketchy, but this has been reproduced.
    NTBugTraq
    SourceForge thread

    Here's the short version:
    Say you have a secure page in a subdirectory - http://site/subdirectory/securepage.aspx
    If you browse to it with a backslash instead of a forward slash in a non-IE browser, you bypass forms auth: http://site/subdirectory\securepage.aspx
    Alternatively, in IE you can replace the / with %5C (hex for backslash) and again bypass forms auth: http://site/subdirectory%5Csecurepage.aspx

    New Vulnerablility in Asp.Net Forms Authentication which allows malicious users to read "private pages" - Looks like there's a way to bypass ASP.NET forms security, which is bad news. Reading the thread, it may be fixed in the 1.1 SP1 Framework - I couldn't reproduce the reported problem on my own server, which is running SP1. This is important enough that you should test it on your own servers though. [Via Larkware News]

  • Fritz Onion on DotNetRocks

    If you are remotely interested in ASP.NET, you just gotta listen to tonight's DotNetRocks show. The guest tonight is Fritz Onion, the author of Essential ASP.NET.



    I can't say enough about that book. Before I read it, ASP.NET was just this magical black box. I understood how to work with it, but I had no idea how it worked. Fritz takes it apart and explains it at the perfect level - very thorough, but understandable. You're gonna need to understand the stuff in this book to have a chance with Scott's interview questions.

    You can read Chapter 3 (Configuration) on Amazon here.

    You can always download the shows on the Monday following the show, but you miss out on the chat room fun then. They usually take questions from the chat room, and the commentary is usually fun, too.

    You can read Fritz's blog to pregame: HTML / RSS.
    Info about DotNetRocks: HTML
    DotNetRocks notifications: RSS

  • RSS is out of order? The whole system is out of order!

    RSS doesn't scale. As blogs and RSS aggregators get more popular, they overwhelm web servers. The kind folks who run weblogs.asp.net and blogs.msdn.com were getting slammed for bandwidth and made a bad decision - they chopped all RSS feeds all posts to 500 characters, and the aggregated web page feed to 500 characters, unformatted.

  • WQL / Reflection DataProviders for ADO.NET

    WQL DataProvider for ADO.NET WQL DataProvider is an ADO.Net data provider, so you can use it just like usual MS SQL DataProvider, but for WQL (WMI + SQL = WQL). This DataProvider supports SELECT, ASSOCIATORS and REFERENCES queries. Doesn't support event queries. [Via The Code Project Latest Articles]
    Having written a custom ADO.NET data provider before, I'm appreciative of the amount of work that this entails. Downloading just the source didn't go smoothly for me, but the dependencies were in the demo project so I can't complain. I didn't see the actual code for WQLDataProvider.dll in the project, but that's what Reflector's for. And if you just want to use it and don't care about the code, use the DLL and you're set.

    This allows you to databind against Windows Management Instrumentation (WMI), which employs a SQL like syntax to query systems, applications, networks, devices, and other managed components. The project includes a functional WMI Query Analyzer.

    And while I'm at it, if you haven't seen Matthew MacDonald's article on Creating a Custom ADO.NET Provider, it's worth a look. The cool thing about the article is his sample - he implements a Reflection Data Provider [source]. Cool idea. I tested it out by databinding on the types and members of the Reflection Data Provider itself. Talk about dogfooding...

  • Miguel de Icaza on Longhorn changes

    Interesting post by Miguel de Icaza on Microsoft's recently announced changes to Longhorn. Good to read if only to get a better understanding of the complexities of Avalon's implementation.

    My prediction is that Avalon v1 will be a throw-away: it is not really the foundation on which you will build applications: V2 will likely not be backwards compatible, they will have to re-architect bits of it: which means that people will end up with two frameworks running side-by-side: Avalon V1 and Avalon V2.

    The above problem is compounded with the fact that the CLR has not really sorted out a good model for sharing components across versions of the framework: the GAC solution today is a bit of a hack to keep things separate and allow for multiple installations, but does not solve

    This is like cooking, you can not rush a good steak, or a cake or an omelette by cranking the heat. Some things just take time. [Via Miguel de Icaza]

  • Monoppix Preview (0.2.2.3) Release

    Monoppix is a GNU/Linux distribution which includes Mono, XSP, and Monodevelop, and runs completely off a CD. It allows you to get familiar with Mono development in Linux without installing anything on your computer.

    Monoppix was based on Knoppix and Miniknoppix and was developed by Roiy Zysman (zroiy at spymac dot com).

  • ISORecorder v2 (beta) - Works in XP SP2 and W2K3

    I was happily using ISORecorder to burn ISO images to CD-ROM's / CD-RW's until it stopped working under XP SP2. CDBurn has worked since then but it's just a command line app.

    Alex Feinman just released a beta of ISORecorder v2, which works in XP SP2 and W2K3.

    Careful - v2 doesn't work on pre-SP2 machines, and you'll need to uninstall the old ISORecorder before installing v2.

    more info (new features / known issues / screenshots)


     [p.s. 6 GMail invites - contact me if you'd like one]

  • Monoppix - CSC Quickstart Walkthrough

    This quickstart was written by  Roiy Zysman and is included in the Monnopix ISO [ monoppix-v0.2.2.3.iso 404 MB].

    The following steps will show you how to write a small Mono program, compile and execute it

    1.Once the Initialization stage is over , open up the kwrite text editor.



    2.Enter the following text:


    using System;

    public class Test
    {
      public static void Main()
      {
        Console.WriteLine("We got mono...");
        return;
      }
    }


    3.Save as /tmp/test.cs




    4.Open a terminal window by clicking on the panel 'shell' button




    5.execute the following commands in the terminal window:

    • cd /tmp
    • mcs test.cs
    • mono test.exe


  • Monoppix - Basic XSP (ASP.NET) and Monodevelop Walkthrough

    Monoppix is a GNU/Linux distribution which includes Mono, XSP, and Monodevelop, and runs completely off a CD.  It allows you to get familiar with Mono development in Linux without installing anything on your computer.

    This walkthrough was written for Monoppix 0.2.2.3. It will step you through:

    1. Downloading the Monoppix ISO
    2. Burning the ISO to a bootable CD
    3. Running Monoppix off the CD
    4. Starting the XSP server
    5. Testing an ASPX webservice
    6. Editing the ASPX file in Monodevelop
    7. Saving the ASPX file to your /home/knoppix/ directory
    8. Restarting the XSP server in your /home/knoppix/ directory
    9. Verifying your changes
    10. Quick info on taking screenshots in Monoppix (or any Knoppix)

    1. Download the Monoppix ISO

    The Monoppix ISO is available from http://monoppix.url123.com/download [404MB]. The download goes through Freecache which should ensure a high speed download.

    2.  Burn the ISO to a bootable CD

    The easiest ways to burn an ISO to a bootable CD in Windows are:
    1. Nero, using the CD-ROM (BOOT) option
    2. ISORecorder (free, XP SP2 or Windows 2003 need to use the ISORecorder v2 beta release)
    3. CDBurn (part of free Windows 2003 Resource Kit, works on Windows XP, command line only)

    3. Running Monoppix off the CD

    Make sure the CD is in the CD drive and restart your computer. If it boots in your normal operating system, reboot again and change the start device priority in your BIOS to set the CD drive to higher priority in the boot order than the Hard Drive. At the prompt, you'll need to enter a Knoppix cheat code to tell Knoppix what hardware to use. If you're using standard equipment, you're probably okay with just "knoppix" (without the quotes). If you're using a laptop or LCD monitor, "fb1024x768" will probably work.

    4. Starting the XSP server

    Open a console window (the taskbar icon that looks like a shell). Type the following command:

    cd /usr/share/doc/xsp/test && mono /usr/bin/xsp.exe

    This will start up the XSP server. You should see the following:


    Next, open a browser. Monoppix includes Konqueror (the taskbar icon on the right) and Mozilla (in the Start menu). Browse to http://localhost:8080/


    5. Testing an ASPX webservice

    Click on the second link, TestService.asmx. Click the "Add" link on the left, then the "Test Form" link on the top. Enter two integers and submit the form:

    6.  Editing the ASPX file in Monodevelop


    You'll need to start Monodevelop from the command prompt in this release. Open a console window and type the following:
    /KNOPPIX/usr/bin/monodevelop monodevelop


    Select File / Open from the menu, then browse to /KNOPPIX/usr/share/doc/xsp/test. Open the TestService.asmx file.


    Edit the code. My changes to the code are underlined below; feel free to make whatever changes you'd like as long as it compiles.
    <%@ WebService Language="c#"
    Codebehind="TestService.asmx.cs"
    Class="WebServiceTests.TestService" %>

    using System;
    using System.Web.Services;
    using System.Web.Services.Protocols;

    namespace WebServiceTests
    {
       public class TestService : System.Web.Services.WebService
       {
          [WebMethod]
          public string Echo (string a)
          {
             return a;
          }

          [WebMethod]
          public string Add (int a, int b)
          {
             return String.Format("Here is your total:{0}",a+b);
          }
       }
    }


    7. Saving the ASPX file to your /home/knoppix/ directory

    Since the TestService.asmx file is located on the  CD,  you can't save your changes there. You can save files to the /home/knoppix/ directory, though, since that's located on the RAM drive. Select "File / Save As...", navigate to /home/knoppix/, and save the file:


    8. Restarting the XSP server in your /home/knoppix/ directory

    If the console window from step 4 is still open and running XSP, select the console window and press Enter (or Return, if you have a really old keyboard) to close XSP.

    In a console window, type the following command:

    cd /ramdisk/home/knoppix/ && mono /usr/bin/xsp.exe




    9. Verifying your changes

    Refresh your browser window if it is still open, or open a browser and navigate to
    http://localhost:8080/TestService.asmx

    Verify that your changes have taken effect. In my example, I changed the output from a simple integer value to "Here is your total: xx". Well worth the hours of work:


    10. Quick info on taking screenshots in Monoppix (or any Knoppix)

    Monoppix doesn't include Ksnapshot. I took these screenshots with xwd. I used the following command:

    xwd | xwdtopnm | ppmtojpeg > /home/knoppix/filename.jpg


  • Google Releases Gmail Notifier

    If you want POP access to GMail, there's PGtGM. If you just want a notification, there's now an official GMail Notifier:

    Philipp Lenssen writes "After several unofficial, screen-scraping Gmail utilities, Google now released the official Gmail Notifier (Beta) for Windows. It will sit in the Windows tray, alerting you of new emails in your account (if you are lucky enough to have one already). Additionally, the Gmail Notifier can connect 'mailto:'-links in web pages to Gmail."
    [Via Slashdot: ]

  • [HTML] FIELDSET and LEGEND tags

    ...one of my co-workers who is something of a css junkie showed me some tags I was not aware of before, and how they can be nicely styled up to give some interesting form effects. The tags are the “fieldset” and “legend” tags which can enclose one or more “form” elements (I won't try to post the html here for fear of skrewing up other dotnetjunkies weblogs). They render quite nicely in IE without styling (see below, I like the rounded corners). And you can style them up with colour (see here towards the bottom). They also display quite nicely in mozilla (albeit without the rounded corners). They are in the HTML 4.01 standard so you have a fighting chance of them working in older browsers too.

  • [OT] Vinyl Data

    One strategy that major record companies have been employing lately to deter downloading is adding bonus computer content to new CD releases. I recently discovered that this technique is not unique to CD's, but had in fact been practiced in the vinyl era as well. That's right: there were a handful of records released in the late 70's and early 80's that contained computer programs as part of the audio...

    ...good article with screenshots here... very thorough history software included in audio format on music releases. you can even play some of them online, and i suggest you do - the thompson twins need your help:

  • Who does the actual work?

    Pop Quiz - You send your Toshiba laptop in for repairs. Who does the actual work?

    1. Federal prisoners
    2. HP
    3. Independent contractors
    4. Best Buy
    5. Toshiba volunteers
    6. U.S. Military trainees
    7. UPS workers

  • POP access to web e-mail

    The major web based e-mail providers have been cranking up their spam filtering, which is great, but I still have to slog through it to catch the false positives - mail I'd like to see that got incorrectly marked as spam. For instance, I would have missed a GMail invite yesterday if I'd just dumped the spam, but going through it invloves checking 300+ likely spams a day. That seems to a common problem, from talking to friends and scanning blogs.

  • Cool solution to the "Ugly RSS Link Issue"

    I was just struggling with "Ugly RSS Link Issue" this weekend - you want the little orange XML link, but you know that a lot of folks are gonna click on it and see naked XML and think it's time to reboot or possibly even get a new computer... one with a lot more megapixels.

  • What would you want in a Linux / Mono Live CD?

    I've been wanting a Live CD with Mono so I could start playing with .NET apps on Linux. I got a response to my blog request for such a thing, asking what I'd like included. Well, heck, I don't know much about Linux so I thought I'd ask around. I say pack it out - if I'm gonna burn upwards of twenty cents (before rebate) on a cdr, I want to fill it up. Trouble is, I don't know what to fill it up with.

  • Windows Orchestration Engine in Longhorn

    AWARE THAT many people are beginning to give up hope of ever seeing a new version of Windows, Microsoft is continuing to send its spinsters waxing lyrical about what it will contain when it arrives. The latest prediction that the Redmond sleeping giant has ‘leaked’ to CNET is that it wants to embed core orchestration and workflow into Longhorn. New workflow and orchestration technology, called the Windows Orchestration Engine will be ready for the Longhorn/Orcas time frame.

    CNET quoted Bob Muglia, senior VP at Microsoft's Windows Server Division, who confirmed that work was under way. "Stay tuned," he told them showing his remarkable ability to pun in the face of tough questions from CNET hacks.

    [NeoWin]

    WOE seems like an unfortunate acronym.

    Almost as bad as the Children's Hospital Of Philadelphia.

  • Enterprise Connection String Management in ASP.NET - Best Practice?

    This is mainly a problem statement - it lists some solutions, but all have some pretty big downsides. I'd really like to find a good solution to this, so please comment if you have anything to add.
     
    There are some significant problems with using keeping connection strings with SQL Server Authentication in ASP.NET web.config files. Here are a few:
    1. Security - Both username, password are stored in plain text (associated with the server), so if the web.config file is compromised a hacker has the keys to the database. Config files are associated with the HttpForbiddenHandler, which mitigates the risk of hackers getting to web.config files, but only via HTTP.
    2. Control - Keeping login information in web.config files makes it difficult to control developer access to production databases, since developers will likely view web.config files during production support activities or in source control.
    3. Administration - Keeping login information in individual files on a per application / per webserver basis makes changing passwords (including regular password rotation) difficult.
     
    Trusted Connections (using Windows Authentication rather than SQL Server Authentication) seem to offer a better solution - connection strings don't contain login information, and centralized account maintenance of Windows accounts is well defined and supported. Trusted connections don't send credentials over the network, so they're much more secure Several Microsoft security articles propose this approach:
     
    However, this approach sounds like it works better in theory than in practice when it comes to ASP.NET applications. While the network communications are more secure, using Trusted Connections requires changes that make the ASP.NET application less secure.
     
    There are two methods available for connection to a database server with Windows Authentication - Domain Accounts and Mirrored Accounts.
     
    Trusted Connection cons (both domain account and mirrored account):
    1. Impersonation still requires putting a password in a config file (machine.config and web.config) so we've got passwords in plain text again. It is possible to encrypt the impersonation identity and to store it in registry, but this complicates administration.[1]
    2. Impersonation requires a little more setup on the webservers - the impersonated account needs write permissions on serveral folders (good info here). Also, upgrading .NET versions doesn't migrate machine.config information (why?) so there is additional work / risk when upgrading .NET versions.
    3. Impersonation in ASP.NET complicates matters a bit. I've run into some unrelated issues with ASP.NET impersonation in the past that indicates it's a bit of a frontier.
     
    1. Security issues have been mentioned with running the IIS user as a user that is a member of a domain.
     
    1. Difficult to change passwords, need to edit web.config / machine.config on multiple webservers
     
    Much more discussion here:
     
    1. Difficult to change passwords, need to edit registry on multiple webservers.[1 again]
     
    Custom encryption of Connection Strings in web.config cons:
    1. Makes management of multiple servers (password rotation, etc.) more difficult
    2. Custom or homegrown solution - may not be supported, may not be secure, etc.
     
    Centralized Connection String Management solution:
    A central service provides applications their connection string (and possibly other configuration data) in an encrypted format. Applications would use a common component to access and decrypt the information.
     
    Centralized Connection String Management cons:
    1. "Crown Jewels" - if that system's compromised, all databases are exposed
    2. Key management issues to do secure communications with central server
    3. Single point of failure for all applications
    4. Homegrown security solutions are likely to be insecure, and quickly turn into legacy systems that make upgrading difficult.
     
    Domain Accounts with Trusted Connections seems the best approach (if the security issue is not such an issue), with the impersonation account stored in the registry. Microsoft documentation / recommendations kind of lay out the options but don't indicate a preferred method. It would be great to have some general guidance on how to manage database connections in an enterprise web environment.
     
    It would also be great if impersonation were a bit more transparent - changing an encrypted registry setting is a bit complex. Changing the account an IIS Application runs under is as simple as logging into Windows; impersonation should work the same.
     
    Visual Studio 2005 has a Connection String Manager in the IIS MMC that interfaces with web.config and supports encryption, but that's a ways off.
     
    Comments? Guidance? What's worked for you? WWMD (What would Microsoft do)?
     
    [1] There are ways to push out registry changes to multiple servers (SMS, others)

  • SQL used for evil

    Yikes. I heard about a website being hacked, probably via SQL injection. This trigger was added:

  • [OT] I'm getting dumber, but more visionary

    Last time I took an online IQ test I got 142; now I'm 138. Oh, well. At least I'm a Visionary Philosopher - gotta get some sweet business cards made up: Jon Galloway, Visionary Philosopher. There was no posted time limit on this one, but I tried to hurry - I think I took 10 minutes.

  • Outbound SMTP Proxy?

    The company I'm working at is having to go through each application that sends e-mails and verify compliance with CAN SPAM. One of the requirements is a corporate opt out system that ensures once someone has opted out, they will never get an e-mail from you again.

  • [util] AutoBlog

    This was posted with a new utility I just wrote, AutoBlog. I got the idea from Raymond Chen's pre-recorded blogs while he was on vacation. Since I've got two kids under the age of 4, I don't always get consistent free time to blog regularly (blame it on the youngsters, they can't defend themselves). I often have to save blog fragments until I get time to flesh them out, which means I then have a pile of posts all at once. I'd rather spread them out a bit, hence this tool.

  • Rebol

    Now, I'm no Rebol zealot, I've just played with it for a few hours. This is interesting stuff to play with from a developer point of view, though - it kind of challenges your ideas of what a modern development platform can and should do.

  • [OT] Hang a star on that one - San Diego Padres Park Opener

    Whew! A last minute gift put my brother and me in the 5th row on the first base line at the San Diego Padres Petco Park opener. I've been to one baseball game in the past 10 years, but this game was just phenomenal. The Padres won it in the 10th innning, and both teams played great baseball. From the first pitch to Jimmy Carter to the closing fireworks show, this game was a ton of fun.

  • [Util] Open PLS Playlist in Windows Media Player

    [UPDATE: I finally built an installer and added some error handling, so this should  be  easier to set  up and use. Download the setup from http://www.codeplex.com/openplsinwmp.

    Some web radio stations (like the super cool SomaFM) only offer PLS playlists, and Windows Media Player doesn't support PLS playlists even though they're about the simplest file imaginable.

    I whipped up a simple app (OpenPlsInWMP) that parses the stream url out of a PLS file and shells out to WMP, so if you associate PLS files with OpenPlsInWM it'll seem like Windows Media Player decided to play nice with PLS files.

  • VS 2003 Macros gone screwy

    My VS Macros aren't working - just flicker briefly, the little macro icon shows in the notfication tray, and the macro doesn't actually execute. Debugger doesn't break on breakpoints in the VS Macro IDE.

  • Free Whidbey!

    While it's frightening to go out on a limb with a fringe statement like this (heck, even Frans goes party line on this one!), I'm willing to stand up and be counted in the Free Whidbey movement (logo to follow).

  • [UTIL] Right-Click "Touch File" - Recycle that web app

    We've been using external config files to manage separate dev.config / qa.config / prod.config settings for a while and it's worked pretty well. Pretty code sample here. The one difference here is that changes to the referenced external config files don't get picked up right away as web.config edits do, so we're always editing web.config to add / remove whitespace just so the ASP.NET application cache is invalidated and the app reloads, causing it to pick up the new config values.

  • Dot Net Script

    Just saw this on CodeProject: Dot Net Script. The innovative approach on this .NET script engine (as opposed to the others listed below) is an XML syntax to allow specifying assembly references and language.

  • ASP Classic weblog systems?

    I'm helping a friend on a website and .NET isn't available on that server. We'd like to add a simple blog system using Access as the data store. I was sure I could find something cheap or free, but I've been surprised that I haven't found anything I'm completely happy with. I've looked at BlogworksXML (no longer supported, but the install files can still be found), but it writes files out rather than writing to a database. I'm messing with UBlog, but the model's a bit different than what I'm trying to do and it's tough to make it fit. dBlog is promising, but it's Italian and I'm not. Am I really gonna have to take that trip down memory lane and write an ASP / Access blog system? Anyone recommend one?

  • Intellisense Oddity?

    Intellisense for overridden methods shows both the base and the overridden method in the derived object, even though you can't actually call the base method from the derived object. Bug or feebleminded developer? You be the judge: