Posts in Developer Stuff
Since word of it first spread, and since seeing a demo of it while I was in Redmond back in October, I've been very excited about the ASP.NET MVC Framework. And since its initial CPT release, I've been messing around with the ASP.NET MVC Framework quite a bit. Though I did have some trouble (like getting it to run in IIS7 on Vista—never got it working, even with help from Phil Haack), I really like what I've seen, and can't wait to begin using it in production. Now, it looks like it will soon be one step closer to being production-ready.
In a few weeks, there will be an ASP.NET MVC Mix Preview Release, which will address a number of this, as discussed by Scott Guthrie in his blog post titled ASP.NET MVC Framework Road-Map Update. Of all the goodness that he mentions, one thing stood out:
We have also factored out the URL routing infrastructure from the rest of the MVC framework with this preview, which enables us to use it for other non-MVC features in ASP.NET (including ASP.NET Dynamic Data and ASP.NET Web Forms).
As someone who uses URL Rewriting quite extensively, this is great news! I can't wait to see what I can do with the URL routing infrastructure and my existing Web Forms based applications.
One of the reasons I moved to a new host is because they were already offering ASP.NET 3.5 on their servers (and the price was right). The next logical step, after moving this site to the new host, seemed to be moving this site to ASP.NET 3.5. In order to try some new things out with LINQ to XML, and VB 9, that has now happened.
The first order of business was to try using LINQ to XML to pull in an RSS or Atom feed of my bookmarks at ma.gnolia, and utilize that data in the Links section of this site. It was ridiculously easy. A couple of lines of code to get a list of all the distinct tags, and a few more lines to grab the title and URL of each bookmark, based on the tag selected. Right now, I am just displaying both in simple lists (using the new ListView control, also very nice), but I will be spiffing it up and adding some additional functionality soon.
Now, since my day job involves working with XML most all of the time, I am very tempted to bring some of my existing code into the world of LINQ to XML.
For more information on LINQ, check out Scott Guthrie's LINQ related posts.
Additional LINQ Links:
I know that there hasn't been much action here in the last...well...long time, and of my 3 faithful readers from the site's heyday, maybe one remains, but I thought you might like to know that I'm going to Tech-Ed
. Julie is going, too, and we are both really looking forward to the trip. If you're going, shoot me a note via the Contact
VS 2005 Beta 1 is now up on MSDN Subscriber Downloads.
Just thought I'd give my previous post
a little .NET
If you've followed this weblog for any length of time, then you know that I track all referrers
via an HTTPModule that I wrote a year ago. What you don't know is that I recently implemented a way to “misdirect” certain referring sites, such as those responsible for referrer log spam
. At first I thought about just adding the sooner fan site that was responsible for the land thief traffic to this list, but then I thought of something else -- something a little more fun. Now my Referrer HTTPModule intercepts sites with “sooner” in the hostname and displays an intermediate page before allowing them to access the post they so eagerly want to read.
Copy and paste this Url into your browser (http://www.soonerfans.firstdownsports.com/forums/showthread.php?t=9144 - sorry not going to link to their site), then follow the link on that page back to my site to see what I mean. Now for most of you, the humor will be lost, but Longhorn fans, as well as anyone who despises ou, you'll get a kick out of it.
Just a reminder that this is ASP.NET Webcast Week
"Learn about ASP.NET from the experts! These free events are live and interactive. Live code demos and attendees asking in depth engaging questions are all part of this live event. This is a great way to get educated, engaged, and enlightened on Microsoft developer tools."
I was in the middle of registering for an account at MyDomain.com when I came upon some poorly coded form validation. One of the fields is the answer to a secret question. The user gets to choose the secret question from a list 7 options -- I chose one that asks “What is your father's middle name?” The problem I have is that the validation requires that the answer must be at least 6 characters -- my father's middle name does not meet this requirement. Come to think of it, besides my own middle name, no one else in my immediate family has a middle name 6 characters or longer.
Fortunately, I can get around this by choosing a different question (assuming I don't run into similar issues), or I can elect to not have a secret question, and thus no need for a secret answer...I wonder if selecting this option will still require a word of 6 or more characters...let's see...
Ok, it didn't balk at not having a secret answer, but upon submitting the form it did tell me that I don't have permission to access the server. Great. So much for trying them out for their free DNS services. I guess I get what I pay for.
I am wondering if anyone out there has done any development with Documentum's
Content Server and .NET?
I know that they've developed a Primary Interop Assembly for building applications using the Documentum Foundation Classes (DFC), but I've yet to give it a try.
This next week, we will be wrapping up an engagement with a member of Documentum's consulting services, and I will finally be able to dig into some code. So I am interested in hearing experiences from anyone who is already using .NET with Documentum.
I just came across the following on the MSDN Subscriber Downloads site:
Special Access to Longhorn and Whidbey PDC Release Code
Active MSDN Operating Systems, Professional, Enterprise, and Universal subscribers may request a set of software distributed at the Microsoft Professional Developers Conference 2003 (PDC), including the preview versions of the "Longhorn" operating system and SDK, and Visual Studio "Whidbey".
Eligible MSDN Subscribers can request the previews by calling MSDN Customer Service. Certified Partners and Breadth ISV / Empower partners should contact their respective Service Centers for further assistance. Note that the preview package contains DVD media, and a DVD drive is required. Please allow 3-4 weeks for fulfillment.
Yesterday, I came across a nice looking browser based RSS feed read -- MyBlogRoll.com
, by Julien Cheyssial
. It is in the early beta stages, but looks very promising.
While surfing around today, I came across nGallery
. It is a .NET based web app for displaying pictures, organized into one or more photo albums. I've only installed it on my laptop, but based on the looks of it, I will soon be putting it on my server. By the way, it is freeware and open source.
Why isn't there a single-character wildcard for use in ADO.NET's Expression
I came across this recently when I needed to filter a DataView (using the RowFilter
property of the DataView
) so that only records containing Value LIKE '2__' (underscore is single-character wildcard in T-SQL). This way I get 200, 201, 202, 203,..., 299, but not 2000, etc.
After a thorough review of the MS docs and my ADO.NET book from Wrox (which incorrectly states that * is for single character wildcards), I decided to just use the LEN() function available in Expressions and limit my results to LEN(Value) = 3 (based on example above).
Then end result is something like this:
MyDataView.RowFilter = "Element='Topic' AND Value LIKE '" & Chapter & "%' AND LEN(Value) = " & TopicNumberLength
Sure would have been nicer to just have a single-character wildcard.
I am so out of touch. I just came across RSS.NET
-- An open-source .NET class library for RSS feeds.
This past weekend I made a bit of a mistake. You see, I was at the grocery store Saturday morning picking up some things for breakfast, when I caught a glimpse of the new Harry Potter book
as I was checking out. On impulse, I threw it into the basket. So much for getting any studying in for the next few days.
Fortunately, I finished the book last night and will be getting back to studying any time now. I just wish that I could plow through my exam prep text as quickly as I made it through the Harry Potter book.
Well, it looks like I've caught the certification bug. Becoming an MCSD
is something that I've been wanting to do for a couple of years or so, but I always was able to find an excuse to put it off. Well, I am putting it off no more!
This afternoon I took the plunge and bought some Transcender
exams and ordered a couple of prep books. The web app exam is up first. I'll keep you posted on my progress.
It was great to meet Ruth Walther, both she and Stephen are relieved now that the new version of the Community Starter Kit is complete and unleashed.
[Eli Robillard's World of Blog.]
Oh man, how did I miss this? I guess this is what happens when you "disconnect" for a week or two. And just when I thought that I was done with the site I used the beta of the CSK on...
I just came across SQLBuddy
via a post
at Harry Pierson's
At first glance, it seems to be a fairly usable replacement for Query Analyzer. I will try to use it exclusively over the next couple of weeks and see how it goes.
I've finally taken some time to look through one of the ASP.NET Starter Kits
, specifically the Community Starter Kit (CSK). I needed to put together a fairly robust, dynamic site in a short amount of time, and thought that this kit might give me some ideas. As it turned out, I decided to just use the Community framework.
A design had already been done for this particular site, so all I needed to do was create a theme out of the design and assign it to the site -- simple enough. Then I plugged in the controls that are included with the CSK, tweaking a few along the way, and of course adding a couple of my own. A few days later, what do you know, I've nearly got a fully funtional, dynamically generated site that is going to be super easy for the site owner to CRUD content.
There are still a couple of bits of fuctionality to modify, but this is way better than having to do all of it from scratch. I'll put up a link to the site once it is complete.
The HttpModule that I use for tracking referrers broke when I went to v1.1 of the .NET Framework. It was very odd -- all of a sudden I was getting a message about the connection string property not being initialized. This happened most of the time, but not every time. To make matters worse, the db code is the same there as it is in the rest of the weblog app, which doesn't appear to have had this issue.
It seems to be working now. I reworked the code a bit. I'll be keeping an eye on it.
I mentioned the issues I was having with the ASP.NET Calendar Control, specifically styles. Somewhere along the way I read that it was being addressed in v1.1. Now that I am finally running v1.1 on my server, it is time to do some testing on this darned thing.
Since about half of the hits I get from Google involve searches relating to the calendar control, I will report back here as soon as the testing is done.
In case you haven't already heard the news, Visual Studio .NET 2003 is now available for download for MSDN Subscribers. Currently, it looks like there is only the full install available, no ISO images. Of course I am downloading it now, I can wait until later on to get disc images.
I do wonder if it is going to need a key. I didn't see one listed. Maybe it will use the same key as VS .NET v1.0. It would suck to have spent all this time downloading it and then not have a key to install it.
lots of people are interested in harvester. cool. :)
Add my name to the list of people that can't wait to try out Chris'
Harverster. From his screenshots
, it looks like a winner. How about an early preview, Chris?
Build a tool that uses the System.Net namespace of the Microsoft .NET Framework to check a POP3 e-mail account for unread messages.
[MSDN: Visual Basic .NET]
This does look like fun!
I went ahead and rebuilt my dev server late Saturday night with the final version of Windows Server 2003. Everything went smooth, as expected (this server has been running Windows Server 2003 since beta 1). Now I just need to load some of my web apps on it and start testing.
Now, if VS.NET 2003 would hurry up and RTM...
is presenting at tonight's Fort Worth .NET Users Group meeting
. Looks like he will be talking about ASP.NET Performance Best Practices.
I've not attended a FWDNUG meeting since I went to the very first one, but I will not miss this one.
Out of curiosity, if you are a .NET developer in the Dallas/Ft. Worth area, shoot me a note either via the comment system here, or email. If you belong to either DDNUG
or FWDNUG, let me know as well. Also, if you have a personal weblog, or site, please include the url. I am just curious at to whether any local .NET developers are coming across my site.
I've been working
on implementing the ASP.NET Calendar Control
into the weblog app lately.
Writing the code so that entries showed up where they are supposed to was easy, but I am having a heck of a time getting consistent formating of the calendar itself. For example, using CSSClass for styling the control is hit or miss -- mostly miss, and on my server, the font-size and forecolor properties of TitleStyle don't want to work, at least not if I also want to use NextPrevStyle. However, if I create the exact same calendar in a page running on XP Pro, they work.
Has anyone else experienced similar inconsistencies with this control? It is really starting to annoy me.
Robert Scoble is planning a .NET Blogger's dinner in San Francisco (Saturday, February 8th) during the VSLive conference. Anybody interested in joining in? We are meeting at the San Francisco Marriott at 6pm.
[StronglyTyped - Richard Caetano's weblog on software development]
I didn't think I would really miss VSLive this year. Afterall, I'd only gone once before (last year, specifically for the VS.NET launch). Then I come across this, and start thinking about all the cool stuff I am going to be missing out on.
As it is, I will be in the bay area during the week that VSLive is going on (arrive early afternoon on the 9th, staying until the 15th), so maybe I can latch on in the evening one night for something that doesn't require an event pass.
I can't believe how time is just flying by these last couple of weeks. It has everything to do with how busy I've been at work.
We are embarking on a rather large data conversion project, where we will be converting around 76,000 pages of content from Interleaf files to XML. At the same time we are moving from BladeRunner to Documentum as our repository, and switching from Epic to XMetal as our XML editor. We also have to build the publishing process for taking the content from XML to whatever else (print, CD, online, etc). Oh, and this all has to be complete by the end of the year so that starting in 2004 our content is updated in XML.
I am confident that we will succeed.
I need to read this article: What Is RSS?
. At first glance it looks to provide excellent coverage on the different flavors of RSS, as well as things to think about for the developer building tools to consume them.
Now is the time to let me know what you'd like to see in this app. Of course, it might be hard to tell what it needs, when you've never used it and I don't have a current feature list.
Oh well, if you think of something, let me know. If it is already implemented, I'll say so.
Vacation time is here again, and that means that it is time to overhaul my little weblog app
. Busy, busy, busy.
I've been busy attending talks and talking to vendors at XML Conference and Exposition 2002
The good talks have been few and far between. The one highlight so far was yesterday's first keynote presented by none other than Don Box. It was a nice look inside the world of SOAP and Web Services.
One other highlight was my aquisition of beta 1 of Office 11. I really liked the demo MS had of XDocs, and I can't help but to wonder if the next version of Word might work as an XML editor, instead of having to use something like Epic or XMetal.
I'll be in Baltimore all this week for XML Conference & Exposition 2002
. It is a real short notice trip. I went last year, and frankly didn't get a whole lot from it. Then I went to VSLive!
in San Francisco back in Feb of this year, and that was supposed to count as my big conference for they year, but then my bosses boss said that I should go to the XML conference when he learned this past Friday that I wasn't going (3 others from my group are already going). So, I spent the rest of Friday nailing down travel arrangements.
I am going to try hooking up with Ken
. We've only ever talked via email and IM, so I am looking forward to the possibility. If there is any once else out there that lives in the area or will be at the conference, email me
I'll be in the Inner Harbor area, so if anyone has suggestions for things to do or places to go, drop a comment here, or email me.
As I mentioned in a previous post, I've written a very basic Xml schema for RSS 2.0. It is very basic only because it currently includes only the elements that I use when building RSS files. Within the next day or two, I will flesh it out so that it matches the RSS 2.0 spec.
Additionally, after I had my schema, I then used the xsd.exe utiliy to create a class file from the RSS schema. I am now deserializing XML feed files into a rss object and then using that object within the feed reader included in the weblog app
I am building.
I know, this isn't exactly earth shattering, but it is fun doing things a little different from how I am accustomed to doing them.
It seems like I've been working on this .NET based weblog application
forever! Truth is, I really haven't done much with it since summer. The problem right now is that it works for me, but I wouldn't be comfortable handing it out to anyone else - but I want to. So the dilemma is finding time to clean things up and finish up some features that are still undone.
Here is what it has so far:
- a custom server control for handling the templating needs of the weblog, including entries, archives, comments, and trackbacks
- An XML Schema that provides Intellisense to the HTML view for said server control.
- It generates valid RSS 2.0 XML files.
- It includes an RSS Feed Reader.
- It includes a commenting system.
- It includes a trackback system.
- It can ping weblogs.com when an entry is created or updated.
- It can handle multiple weblogs.
- It has a hierarchical permission system for allowing/disallowing activity based on user roles.
- You can specify when an entry goes live.
- You can specify when an entry has expired.
- You can assign entries to categories.
- There is a comment notification system that emails each distinct person that has posted a comment for a specific post whenever there is a new comment, including the person who posted the entry initially.
hmm...what else? That is all I can think of for now.
Things that need to be done:
- User admin is incomplete
- Fixed (almost) - I wrote an XML Schema for RSS - it works for 0.91,0.92, and 2.0 (working on 1.0) - I should have known better than to trust the dataset to infer the proper schema.
Currently read RSS feeds into datasets - this works as long as elements are not duplicated at different levels within the file: this is bad because you could specify for example a category element as a child of channel and also as a child of item, which results in an error like this when reading the XML:
The same table (category) cannot be the child table in two nested relations.
The catch is that this implementation easily handles 95% of the feeds I subscribe to, in all flavors of RSS. If I fix the problem, I will end needing to add code to handle the variations in the other flavors (I know, I'm lazy)
- I'd like to clean up the HTML that is rendered by the custom server control. It needs to be more like the repeater control in that if you don't put the HTML in one of your templates, it doesn't get added to the page.
- Finally, I'd like to overhaul the UI for the admin area.
To be clear, this is not a complete list, there are more things to do, I just can't remember what they are at the moment.
So there you have it. I guess I should post something over at metaApps
so that people who end up there but not here know that it isn't dead.
I did notice that Charles Cook has an XML-RPC library for .NET that could greatly simpilify implementation of the server side of the MetaWeblog API version.
[Brian Graf's Weblog
Charles Cook's XML-RPC library for .NET is indeed very handy. I was able to quickly and easily implement
"pinging" of weblogs.com using it. I haven't done anything with the metaWeblog API
(or Blogger API in .NET), but I bet it would be easy as well.
It's time to start thinking about which conferences to go to in 2003.
I went to VSLive! in San Francisco this year, and am considering it again.
Where have you gone? Would you go back? What conference have you wanted to attend, but haven't?
I just set my friend, Cuyler
, up with his own metaBlog site. I can wait to see what kind of goodness he posts. My guess is that the topic will be far ranging, but will probably all come back to technology somehow.
Over the past year, my friends and I have repeatedly discussed getting out of the tech industry. The discussion typically starts out as a general bitch session about some work related incident, and then turns to "boy I sure would like to be done with this mess", and then we all nod in agreement and start talking about what we'd do.
More and more, I am seeing this same sentiment expressed across the web on the various tech related sites I visit. Of course, I didn't think that my group of friends were the only ones to be disillusioned with this industry, but I had no idea the feeling was so widespread.
I got into this industry because at one time I really enjoyed technology, I enjoyed immersing myself in the latest and greatest, I loved creating things. I still enjoy technology and creating things, but more and more I find myself longing for a simpler life. A life where I touch technology because I want to, not because I have to.
Of course the technology industry has afforded us a very nice lifestyle, a lifestyle where we don't have to worry about finances quite as much as the average family. Where we can splurge on high dollar items without going further in debt. Where we don't have to save up to take that really nice vacation - we just go.
So, while I find myself struggling to stay focused, I am not quite ready to give up the perks of the trade. Now, if I could just figure out how to maintain focus so that I am not forced from my perch before I am ready.
By the way, I'd like to be a park ranger for the National Forest Service.
I've been busy looking into this whole TrackBack
thing. You can see what I've been up to over at metaApps.com
Work has been busy again. This time I am having more fun. I've been building little utilities for our web content group (a small group within the Content Management Dept.) - things like XML/XSL transformation utility, that lets them select an XML file and then select a stylesheet and a location to save it, then with a click of a button transform the XML into whatever they needed. Simple, I know, but they had been hand coding HTML from the XML files! The next step is to make the utility so that it selects XML from our repository and then once the HTML is generated it continues on the process of creating a mak file and content collection (for NXT3
). I've also bit a handy little utility that allows them to do find and replace on entire directories or single files using regular expressions. It came in very handy when I had to remove class="" from several hundred HTML files.
Well I am off to Austin for some Longhorn Football
Believe it or not, I'm walking on air, I never thought I could feel so free-hee-heeee....
Sorry...I started typing the first few words, and the rest just came flowing out. You all do remember that TV show, right? The Greatest American Hero? Anyway....
What I meant to say is "believe it or not, I've found renewed enthusiasm for my weblog application" - to the point that I am once again writing code.
What happened, you ask? Simple, I started mocking up a new admin site and that just seemed to get the juices flowing again. The next thing I knew, I had this whole new thing staring back at me from the screen. Give me a few more days and you can see it too.
I am having trouble motivating myself to continue work on the .NET weblog app
. It's not that I don't want to continue, it's just that everytime I think about working on it, I quickly find other things to do. I've essentially taken the last couple of weeks off from the project, hoping that I just need a break - if that's the case, then a couple of weeks hasn't been long enough. I am still not ready.
The worst part is that there is so much to do. Perhaps that is part of it, maybe I am overwhelmed at what's left. There is no more "low hanging fruit" to be picked off. To make anymore progress, I must face the issues I've been putting off.
This always seems to happen with me and my side projects.
The Fort Worth .NET User Group
finally had a meeting this past Tuesday. Until now, .NET developers on the west side of the D/FW Metroplex had to drive to Dallas for their DNUG
meeting. I am glad that this is finally off the ground. I was too lazy to drive over to Dallas after work. Also, my department typically has a little happy hour get together the third Thursday of every month, which is when the Dallas group met. So no more excuses.
After learning of the Amazon.com Webservices
yesterday, I went right out and downloaded the SDK and got myself a dev token.
I finally had a chance to look at it today, and have built a simple page that searches Amazon.com
for books about ASP.NET
You could see it, but I broke it.
The webservice looks like a good start, though there are some things missing, such as a product description. However, I could see this being used by someone who is an Amazon affiliate, like myself, to display a list of books to their visitors. Taken a step further, I might look for visitors coming to my site from search engine sites, get their search terms, and display a list of books based on those terms. I nice personalized list of books reflecting whatever it was that drew the visitor to my site.
Well, that sort of defeats the whole idea behind content generation and publishing, doesn't it? The whole power of Radio is that it's "desktop publishing". Your server doesn't need to be anything except a dumb HTTP server that supports the GET protocol basically.[Drew's Blog]
Except that my web server already has ASP.net. I get a few hundred hits a day. What do I care? :-) I understand what motivates someone like Dave to make it just require FTP and no active server components. He has a monetary interest in working with the largest crowd possible. Personally, I don't have any such need. I'd rather prefer something powerful and dynamic over something static and flaky, but that's just me. :-) [The .NET Guy
Exactly! Let me burn cycles on my server - it has plenty to spare. :-) As to Drew's later point
about caching and page regeneration, I actually don't care too much about complex caching and page generation algorithms for this application. If I have to re-generate a page every time I get a request, that's ok with me, assuming we're not talking about a huge amount of CPU time (which we shouldn't be). I'm also willing to have to tweak .aspx files and/or code to customize my site (theme, page layout, etc.), rather than have a complete customization engine...[Greg Reinacker's Weblog
There sure is a lot of talk about a .NET weblog tool. I suppose I really should get metaBlog
finished. Speaking which, I still don't know about the name, but I just can't think of anything else at the moment.
In case you haven't been keeping up with the progress of the .NET weblog tool that I am building, it is coming along nicely.
Follow along at metaApps.com
My new weblog tool, metaBlog should be ready for it's first beta release sometime today. (fingers-crossed).
The initial beta is going to be limited, so please email
if you'd like to try it out. (You'll need ASP.NET and SQL Server).
I am building a weblog tool in ASP.NET. It is called metaBlog (tenatively). It is not yet ready for distribution, but you can follow its progress at metaApps.com
Make sure to check out Assignment 10 - see link from post below.
Ok. Here is an Old School link - Bryan's Webscripting HomePage
Browsing the directories of daneman.com
...what a treasure trove of code. Anytime I need to see where I've come from in my career, daneman.com is the place to go. There are files that date back to my first look at ASP. What a great look at the progression of my abilities over the years. I will post some specifics soon.
Hmm...I have one...two...three...four dynamically generated websites that I have developed. From a technology perspective, they could be looked at as major and minor updates to the same codebase. Unfortunately there is little compatibility between them. I can do things in one that I can't easily do in another, or at all. I have one site that gets many more visitors, but it has the last verison of the codebase...the newsest version doesn't get any traffic, which is ok, but I want its code.
I am building a web site/content management framework, but in the meantime, I have these other systems to support. What to do, what to do? I know what to do...finish the framework and the use it in every site I have. Easier said than done. I need to add features and functionality now, not in a month or two.
- daneman.org - version 1.0 of the codebase.
- metastash.com - version 2.0 of the codebase, and a great improvement.
- cachedcode.com - version 2.5 of the codebase...better design, but no functionality (dev time still goes to v 2.0)
- dev.chapter41.com - version 3.0 of the codebase...revolutionary...but still under development.
I just don't know what to do.
Cool stuff (that you can't experience...at least not yet):
I developed an ASP.NET page this evening that allows me to upload files to my web server. Big deal? Well, actually it is. You see, this is specifically for uploading new pictures, and not only does the page upload the image and save it to the server, it also resizes the image to a more web friendly size and saves that as well. Cool, huh? I thought so too.
Ok, so this site is finally making fully use of the stashIT! webservice
. It was already, but now it is using a proxy class to access the functions available through the web service. This means that as long as the interface doesn't change to the webservice, then my proxy will automatically reflect changes to the logic internal to the webservice.
Techies: Have Job Will Travel
This hits a bit too close to home. It is looking more and more like we will be packing up and heading back to Texas. The job market here in Colorado is dead. How I wish I had been part of the earlier layoffs...the ones where they gave 2 months severance, AND the job market was still decent. Now when the market totally sucks ass, you get a token couple of days and a swift kick in the hind quarters.