 Wednesday, June 08, 2005
TechEd day three – the first session of the day is an ASP.Net session led by Mr XML Web Services Tim Ewald.
I showed up late due to a venue change (why when they change rooms do they have to put them on the opposite sides of the mile long conference center?)
- Thinktecture’s code generator takes a WSDL contract schema and creates a framework of the application, complete with all the appropriate web services attributes. This, combined with the WSDL generator Tim was in the process of demonstrating as I walked in (CodeFirst from XMLSoap.com?), allowed Tim to create a skeleton web service without typing a single angle bracket. These third party tools enable schema first design to be less painful than in the past. Remember that when you are specifying an external contract you need to give the web service binding a name and a location. Then in the web service method attribute you need to reference that binding
- It is better to pass objects around through web services rather than passing around individual parameters. Rather than passing strings and integers to the web service methods, use an object as the only parameter in and out. This enforces the contract first design and allows for looser coupling in design. This model also makes it easier to retrieve the body of the message as XML vs multiple parameters. When specifying the service method’s ParameterStyle attribute, be sure to use the SoapParameterStyle.Bare value
- Using the XMLSerializer is a great idea as it handles marshaling. It maps instances to XML and types to XSD. It won’t process data without clear XSD mapping. Restrictions include the fasts that it only processes trees of data, it only handles public data, no duplicate references, limited support for polymorphism and limited support for collections. You’ll notice lots of XML type information in the WSDL generated attributes. This allows support for polymorphic data through the XML Serializer. To do this, you have to inform the parent type about the child type. This is the limitation of polymorphism in the XML Serializer – this is for the XML API. When designing your WSDL contract, you need to annotate your XML base types with the child types so the marshaler and the schema generator can work correctly
- Missing data – if the message doesn’t contain some expected data, the XMLSerializer uses the default value for that data type. Missing ints become equal to 0, missing strings = “”. Extra data is ignored. The XML serializer is not a schema validator – that is up to you. For optional elements, you can detect if the parameter was actually sent over the wire by checking with xyzSpecified (use the XMLIgnore attribute when defining the schema). In the 2.0 version, you can use the “?” style in the definition of the class to define the type as nullable (ex public int? Age). By using he XMLElement IsNullable=”false” attribute means that an optional piece of content which won’t be passed over the wire as nil.
- Access to XML, it is useful to bypass default marshaling and work with raw XML for schema validation, transformation and complete control over (de)serialization. This gives you the ability to make decisions on a per type basis. To work with the XML object, it is inefficient to load up a DOM object to read the XML nodes. Instead implement the IXmlSerializable interface and stream the XML with the ReadXml (XmlReader), WriteXml(XmlWriter), and GetSchema methods. GetSchema is used in 1.0 and 1.1. In 2.0 you can use an XML Schema Provider.
- WSDL.exe running from the command line avoids choices made by visual studio.net and is the only way to generate a server skeleton. This helps resolve proxy namespace issues. Helps with duplicate type issues but you have to be careful with files URIs – use the full URI on the command line eg file://
- Sharing types – the plumbing generates XSD types in service namesspaces by default. If you use the same CLR type across services, you get types in different XSD namespaces. If you generate client code for each service, you get different incompatible types in XSD. This is a problem, so you have to get around it by applying an XMLType attribute to explicitly specify an XSD namespace. This is great but can cause collisions on the WSDL type definitions. In 1.0 you have to reference the external schema (writing the contract by hand) or you could use the SoapExtensionReflector. In 2.0 you can use “wsdl.exe /sharetypes” In 2.0, you must process all the WSDLs at one time for the comparisons to work
- Using facades – data formats exposed on the wire are almost certainly not what the service or client works with internally – it’s a simplified model for easy consumption. Services and clients use the facade pattern to isolate internal details of the service from the client.
- Versioning – ASP.Net offers no intrinsic versioning model. The goal is to evolve service without breaking clients. The most common solution is to build additional endpoints. This requires mapping multiple facades to common internal models.
- WS-I basic profile 1.0. Using this you can claim conformance to the WS-I basic profile using the WebServiceBinding. This is great for interoperability.
Tim’s demos reinforced how web services are a great method for building web applications today. Great show.
— Matt Ranlett
posted with BlogJet
So this is going to be a really short entry b/c I’m up late writing this (1:15am) and I wanted to get some stuff down before I forgot.
Tech Ed day 1 was awesome. I didn’t get to go to many of the presentations – I spent a large part of my day talking to people. In the morning I went to a Biztalk presentation that didn’t impress Brendon (but was over my head). After that presentation we wandered around talking to people for a while before meeting Rocky Lhotka and Keenan Newton (both from Magenic) for lunch. I have to mention this not b/c I was sitting at lunch next to Rocky, but because we spent a good deal of time talking about the very same debate about objects and O/R mapping vs database engines that I’ve alluded to a few times on the blog. The conversation was really interesting and I’ll be following up this blog with something dedicated to that conversation.
After lunch Brendon had to go work a booth for a while, so I wandered off to do my own thing for a bit. I was on my way to a When to Use What session about creating connected .Net applications when I ran into a member of UG executive team from the Wisconsin .Net UG – Gerry Heidenreich. Gerry and I stood around talking for about an hour and a half talking about all kinds of things, from UGs and leadership styles to knowledge management systems to German board games and even Lee Greenwood (sings God Bless America). We eventually migrated over to a couch to sit down, where we talked even longer about things like Wikis and interviewing candidates for hire.
I eventually hooked back up with Brendon, Rob, and D’Arcy and we made the obligatory swag run through the vendor booths. I’m coming home with two bags full of stuff to give away at the UG meetings.
After the swag run and grabbing some food for dinner, Brendon and I went to the Visual Studio Tools for Office cabana talk where we looked more in-depth at the impressive demo of .Net Outlook integration we saw at the Steve Ballmer keynote. The talk was really cool b/c we not only got to talk with several of the developers and the project manager – we also got to talk to the developers from the company who worked with Microsoft to create a reference application. They talked to us about how they have been able to make their information workers (in this case, recruiters for an executive placement service) significantly more productive by moving the data from three applications and multiple servers into a single view within Outlook. By integrating the applications into something the IWs had open all day every day and were intimately familiar with, they were able to drastically reduce complexity and help their recruiters to build relationships by giving them all their information in an extension to e-mail.
We finally quit at about 9:30 and headed back to the hotel. Brendon and I wandered around looking for D’Arcy for a while, but we never found him and eventually quit and headed off to our rooms after we got tired of talking to each other.
Great day and I’m looking forward to tomorrow.
— Matt Ranlett
posted with BlogJet
Samantha Bee from the Daily Show teamed with Steve Ballmer to give our keynote address. The keynote was a great presentation complete with several announcements. The first announcement was about a new service pack to Exchange and Windows Mobile – allowing push e-mail to remote mobile devices, including administration and security. For example, you can set up a profile to wipe out all the personal data on the device if the password is incorrectly entered X number of times. You can also remotely “clean” a device in case it’s lost. We also heard about a new Microsoft Update initiative to help bring uniform security updates across various sized organizations through the appropriate tools. Small businesses and individuals will continue to use Windows Update. Large organizations will want to use the Microsoft Server Management stuff (I forgot the product name) but everything is based on the ubiquitous Windows Update service agent. We saw a cool presentation where Microsoft Operations Manager (MOM) 2005 was able to remotely administer and operate both Windows machines and other operating systems (the demo used a Sun Solaris server). We saw a really slick demo of the Longhorn file system interface (Explorer with some major enhancements). Each of the demos was accompanied with a fun video presentation and some humorous comments by Samantha Bee. My favorite humorous sketch was where Samantha and some guy re-enacted the kinds of problems IT admins and developers have with each other – using puppets. Good stuff…
I’m writing this entry from the back of the room while in a Biztalk presentation. Unfortunately, I entered the presentation in the middle because the keynote ran a bit long. The talk seems to be a good explanation of how Biztalk, Infopath, and WSE can work together to bring some really impressive flexibility and agility to business process orchestration. Basically, we’re taking an info entry web page (generated with Infopath) and sending the messages through WSE to a Biztalk module. We got to see the Biztalk WSE web services publishing wizard (the wizard is actually within Visual Studio!) I sit here realizing that I don’t really know anything about Biztalk and I have a lot of studying to do.
— Matt Ranlett
posted with BlogJet
It’s already the first day of TechEd as I write this. It’s actually 7am and I’m sitting in the convention center in front of one of the Hands-On Labs (a SharePoint lab). I wanted to save the actual TechEd day one notes for a separate blog entry, so I’m going to focus on the INETA User Group Leadership Summit which took up the entire day Sunday.
Brendon and I, always the eager beavers, started out volunteering to help out with organizing and checking in attendees. We met with Sara Faatz (now one of the INETA Vice Presidents) and Samantha Spears (Atlanta’s own INETA head honcho). They rapidly realized we were just going to pester them until they let us do something so we started carrying boxes full of books, nametags, t-shirts, etc up to the checkin table. Then Brendon, Sara, and I checked everyone in and made sure the people had nametags, t-shirts, books, and more.
The morning was filled with keynotes and introductions from the Microsoft INETA and Culminis liaisons, the VP of the Exchange team, and a really cool demo from Ari Bixhorn, part the Indigo team. Lots of great information was flowing around the room, most important in that was the actual introduction to INETA (the International .NET Association – an entirely volunteer organization with a single paid executive director (Samanatha Spears)) and Culminis (equivalent to INETA but for the IT Pro side of the technology workforce as opposed to the developer side). Brendon and I came away with a great impression of the guys from Culminis and a resolve to try to meet with them and wrap them into the collective mind-share that has been happening with the developer community. It’s great to share the leadership experience amongst the group and have the other people as resources to lean on.
Lunch was provided by the hotel, and was one of the best conference meals I’ve ever had. If you feel like throwing a convention in Orlando and the JW Marriott is in your price range, I heartily endorse it based on the quality of the meals alone! After lunch a group of us took off to go through early registration at the Convention Center (a huge place comparable in size to the Georgia World Congress convention center).
The second half of the day was filled with user group leadership workshops. Lots of different topics including financing your UG, maintaining members, writing effective newsletters, developing an online presence, etc. Each of the sessions that I attended began with fantastic information and usually ended with the various UG leaders talking about their own various successes and problems. Everyone present was a fount of information and experience, and I took three pages of notes based solely on what’s worked at other UGs. I’ll be typing up these notes and sharing them with the rest of the Atlanta UG leadership team (Doug W, Doug M, Jim, and Keith – and of course Michael E in his role as the INETA liaison and general advisor).
After all the workshops ended, INETA threw us a party (open bar) where anyone who didn’t have a chance to meet and mingle from before got to sit down and swap stories. Mark Dunn even managed to show up (why did he only make it to the part with the open bar, I wonder?). Once we finished eating and drinking our fill, my crew and I (Brendon, Caleb, Chris, D’Arcy, and Rob) all took the bus back to the convention center to play some Xbox games and relax for a bit. Rob and Brendon quit playing Xbox with me after I beat them too badly at Halo 2. Quitters! We hung out a bit more and then all got back on the bus to head back to the hotel. The trip back was filled with really bad jokes (I broke out my library of Guys with No Arms and No Legs jokes) and general good humor. Everyone is excited.
We all have had a great time and I really want to thank the folks at INETA who managed to make this event possible and of course our omnipresent sponsor Microsoft. Thanks for everyone’s hard work and participation!
— Matt Ranlett
posted with BlogJet
 Tuesday, June 07, 2005
I'm very frustrated with the state of the wireless connections here at TechEd - it seem this wireless connections thing has caught on and now all the connections are being taken by other people. I can't get my tablet to connect wirelessly anymore. That and it's getting heavy to carry all the time so I left it home in the hotel this morning.
I've got stuff to talk about but it's all written on my tablet in BlogJet and I'm not retyping it all here on the common use CommNet PCs:
- keynote with Steve Ballmer
- keynote with Paul Flessner
- lunch with Rocky Lhotka
- BizTalk sessions with Mark Dunn
- Community Cabana pranks
- swag, swag, swag...
-- Matt Ranlett
November 7th!!!
Lanuch party announcements to come...
-- Matt Ranlett
 Sunday, June 05, 2005
I get up at 6am the day before the main TechEd event so I can be downstairs bright and early. Today is the INETA User Group Leader summit – 12 hours of how to be a better User Group leader. In talking last night to several of the people who are already here, Brendon and I have some great new ideas to try out on the groups in Atlanta. I have a feeling that today is going to be a whole lot of fun.
— Matt Ranlett
posted with BlogJet
It’s Saturday, two days before the official start of TechEd 2005. I’m travelling down to Orlando with Brendon, courtesy of Microsoft and the fine folks over at the CodeZone Refresh department. Brendon and I participated (along with about 20 or so other people) in the beta testing program for the Code Zone refresh, and our participation in the beta test program earned us scholarships from Microsoft – free travel, hotel, and TechEd registration. I want to thank Doug Turnure for getting us into the beta program, as it’s been AWESOME so far!
Brendon and I get on a 4pm flight to Orlando where I end up sitting next to a guy from California who works for a Defense Department subcontractor building and maintaining armored vehicles for the military. Interesting conversation, that one. He also bore a striking resemblance to the guy who played Bernie from Weekend at Bernie’s (the dead guy). Brendon and I get off the plane at 5pm and go down to get our luggage. On the way to the luggage carousel, we meet Hugo, our limo driver, who is holding a sign with our names on it. No shit – a limo (well, a Lincoln Towncar, but still nice)! We get our luggage, drive to the HUGE J.W. Marriott which is attached to the Ritz Carlton down here, and get checked in by a pack of greeters and desk clerks who swarm over to us like bees to honey. We thought we’d done something wrong, but they were just trying to be incredibly nice and helpful. We get our stuff dumped off in our rooms and go to explore the area. We managed to find the INETA pre-conference prep room and wander in to say “Hello”. We meet Samantha Spears, Chris Wallace from Denver’s UG (not to be confused with the Chris Wallace of Atlanta), and more. We chat and help them get all the name tags set up, along with Caleb Jenkins from Tulsa and D’Arcy from Winniepeg. After helping out for a while and talking to the fine folks, Brendon, D’Arcy, Caleb, and I decide to share a cab over to the Geek Dinner hosted by Jeffrey Palermo. $25 one way! Anyway, we find the dinner and Rob Zelt of Raleigh and Chris Williams of Charleston. Also in attendance is Scott Hanselman (who makes it away before Brendon and I can introduce ourselves) and lots of other really nice people. We eat some food and make fun of Canadians (D’Arcy and Rob are Canadian) while the main group retires to the bar. We were going to join everyone in the bar, but the true geek pops out and Chris announces he’s got to get back to his room quickly so he can charge his PDA. Chris and Rob aren’t staying at the same hotel as Caleb, D’Arcy, Brendon and I, but because we’ve decide that the $25 cab is too expensive to take back to the hotel, so we convince Chris and Rob to give us a ride back to the hotel. We then discover that, “Yes!”, you CAN fit six developers into a two-door Chrysler Sebring hardtop! Expect fun photos from D’Arcy’s camera soon. Everyone goes their separate ways back in the hotel. I get back to my room to find a welcome food basket on my bed – chocolates, cheese straws, truffles, fancy water bottle, and a pocket knife of some kind. I didn’t open the shrinkwrapping yet, so I don’t know what else is in there.

— trouble with the photo uploads = photos at the end of the week.
Expect sporatic reports from TechEd. I’ll be recording as much as I can, but I don’t have Internet access in my room (I’m not paying $10 a night for Internet!). Why do the more expensive hotels charge for the stuff you can get for free from the cheaper hotels? Courtyard Marriotts give away wireless Internet access like it’s going out of style!
— Matt Ranlett
posted with BlogJet
I’m reading back over some downloaded blogs when I come across this entry by Jay Kimble over at CodeBetter.com. Basically, Jay writes about his having noticed a sort of backlash against the DBA. Take a look at O/R Mappers, object persistence, and even some of the older OODB stuff. Jay postulates that there may be a rebellion of sorts against RDBMS, perhaps due to the power of the DBA or due to the difficulty of SQL. His question – is the time of traditional RDBMS over?
I’ve asked questions in this blog before – about objects vs datasets, etc. I’ve never personally thought about this particular set of questions before, but I can certainly see why someone might have questions like Jay’s. Are we finally heading towards a meld of object based databases? We’re able to put code in the SQL Server DB engine now, and object persistence and datasets look like we can take the data out of the DB and put it in the code? Are we moving towards the next evolution in programmatic data storage?
What do you guys think?
— Matt Ranlett
posted with BlogJet
 Thursday, June 02, 2005
By creating a news reader for your online community won’t you lose sponsorship because not as many people will see the ads? Then we'll have to face the possibility of embedding the ads in the downloaded content.
—Brendon Schwartz
I was reading about the new NNTP service from http://forums.asp.net and i realized how fast things move. I was talking to Matt about anther issue and in the time it took him to respond to MSN (like 3 seconds) I had moved to other topics. How do we slow down? Is it by adding back the ability to have NNTP readers? Either way you look at it I think it is great to have the ability to have news readers on forums because it is just another way to get to the information. Great job Community Server team! My only request is that you be able to view them without having to have a user name and password. Let me know if you get that feature.
—Brendon Schwartz
Posted with BlogJet
It is funny who we trust and don’t trust on the web with all of the sites that require logins today. It seems like everyone wants your information and that you must supply it for so many things. What happened to the days on the internet when you could just anonymously view things and not have to register for them. I just ran into a situation where a friend of mine (Matt Ranlett) would not use his passport on a site, but he logs into like 200 sites a day. It is so funny that he would not trust using his passport. Come on sign up Matt everyone else is doing it.
—Brendon Schwartz
Posted with BlogJet
Jim Wooley and I showed the group a little higher level material this time. Jim showed off Generics, using the WhiteHorse class designer and separate code implementations contrasting inheritance, interfaces, and generics. Using simple examples he showed us how generics preserve Intellisense and provide faster runtimes over 100,000 iterations. Despite being a contrived example, we saw clear differences in performance over significant numbers of element access.
I showed off the Observer pattern using the example provided by the Head First Design Patterns book (this went on the white board) and an article from OnDotNet where a reproduction of a binary clock sorta demonstrates the concepts of an observer pattern. The thing I learned most from my own presentation is that I need to spend more time reading that Head First Design Patterns book. I felt like I understood what I read, but I had a hard time explaining it in a way that made sense to everyone else. Actually, I had a hard time explaining the example they used in the book to illustrate the bad way to do things. Everyone got the correct “pattern” method right away.
— Matt Ranlett
posted with BlogJet
 Wednesday, June 01, 2005
Alright folks, let's form us a Mobile Madness team and win those cool mobile phones. Brendon Schwartz and I signed up to play on Wednesday. So far, Rob Zelt wants in. Who else wants to join the fun and take home some cool stuff?
-- Matt Ranlett
[Edit] - I had to change the date to Tuesday as the #1 choice for this event. The other times conflict with other events.
There's going to be a lot of fun stuff to do at TechEd. I'm talking about stuff beyond the conference sessions themselves (and there are some of those which look so cool I'm already drooling)
Mobile Madness - they give you a new smartphone to run a scavanger hunt with - winners keep the phones
Parties
Parties
and more! Much more!
-- Matt Ranlett
 Tuesday, May 31, 2005
Bill Baker, the general manager for SQL Server Business Intelligence with Microsoft is coming to present to the SQL Server User Group. To accomodate Bill's busy schedule, the SQL Server group will be meeting in the Microsoft Offices in Alpharetta on Thursday, July 21st. The doors open at 6:30 and Microsoft will be providing some refreshments.
Come one, come all, learn the magic that is BI. Be sure to register at the SQL Server group website
-- Matt Ranlett
I am not sure where most people find tools to motivate themselves, but I tend to find music inspirational. As far as music goes Hans Zimmer is the best composer to me. You may ask who he is, if so check out the movies he has worked with. Rain Man, Backdraft, Radio Flyer, A League of Their Own, The Lion King, Crimson Tide, The Rock, The Preacher's Wife, As Good As It Gets, The Prince of Egypt, Gladiator, Pearl Harbor, Black Hawk Down, The Contender, and much more! I really feel that with motivation you can push yourself beyond the limits that you thought were possible. I suggest checking out one of his albums (scores) and see for yourself. Usually when I feel like I am tired or can’t do anymore I put on some Hans Zimmer and complete what needs to be done.
—Brendon Schwartz
Posted with BlogJet
 Friday, May 27, 2005
I’m not sure why, but figuring out WMI with Microsoft's resources seems to take forever. I have spent a couple days looking over WMI and trying to figure out how to use it the way I want. I didn’t find any good .NET resources until the 3rd day when I had already started to figure out what I needed. That being said, this is the best resource for .NET and WMI that I have found. www.enterprise-minds.com by Klaus Salchner. He has wonderful examples and the best articles on how to use WMI with .NET.
The one major thing that is missing with WMI are the tools to make it understandable and simple. I know it is mostly for sys admins that do scripting, but it shouldn’t be so difficult to find out how to use it. If anyone has worked with WMI leave us some links or resources of better places to find things.
Here are the resources that I finally found that were useful.
—Brendon Schwartz
Posted with BlogJet
I am Kung Fu Master.
I like to be in control of myself. I dislike crowds, especially crowds containing people trying to kill me. Even though I always win, I prefer to avoid fights if possible. What Video Game Character Are You? |
-- Matt Ranlett
 Tuesday, May 24, 2005
The kind folks in the UK sent me a link to a series of short (15 minutes or less) webcasts called MSDN Nuggets. Waiting for something large to compile or for some kind of batch process? Spend the time constructively and watch a short video that teaches you the power of docking Winforms components or something. Bonus, all the presenters seem to have that fun UK accent…
— Matt Ranlett
posted with BlogJet
So I’m getting ready for an international business trip (more details in a later blog) when I notice that my brand-spanking new passport has my name spelled wrong! I’m apparently Matthew Steven Rancett. Rancett? I even gave them my old passport with my name spelled correctly! It’s RanLett! The lower case L and C don’t look anything alike and they’re located on opposite sides of the keyboard! Come on, people…. Now I’ve got to call the Passport office and see if this is going to be a problem. And I need it in 2 weeks!
— Matt Ranlett
posted with BlogJet
I’m not talking about the original Showtime series. I don’t know who’s been reading this blog, and for how long, so I’ll catch you up. After six years of marriage, Deanna moved out of the house in October of 2004. Our divorce was finalized the following January. In the time between now and then, I’ve met Kim. We’ve been dating for several months now. I’ve spent a lot of time sorting out my feelings these past several weeks, and now I feel like my head is on straight. So last week I used the L word and told her that I love her. I think I could possibly have been more romantic, but I’m a computer programmer, not a soap opera star. Anyway, she says she loves me too…
Anyway, I figure a week went by, so I’d share with the rest of the world…
You may now all go back to your regularly scheduled programming. Pun intended.
— Matt Ranlett
posted with BlogJet
I freely admit that I’m a Microsoft fanboy when it comes to the Xbox vs PS2 discussion. Sure, the PS2 has like 10 times the number of games, but 90% of them suck!! The original Xbox had so much going for it (hard drive, online play, etc) when it came out that I couldn’t even consider the PS2. Sony seems to be coming back with some improved features for the PS3, but Microsoft is widening the gap, crushing the PS3 with provable hardware superiority:
(from Bit-Tech.net)
- 3 CPU cores, each with a form of HyperThreading for 6 simultaneous instructions
- The graphics engine of the Xbox 360 is nearly 2 years in the future for PC cards
- Heatpipe based liquid cooling = quiet in the living room
- Wireless controller that charge batteries via USB (plug in when not in use)
- Built in Media Center Extender (dammit – now I have to buy a Media Center PC)
( from the “Xbox Live Director of Programming”, a 4 part series )
- Xbox 360 has more general purpose processing power and more memory bandwidth than PS3
- The PS3 excels at floating-point operations, which are less important in the time of GPUs
- Xbox 360 has a faster GPU w/double the texture samplers of the PS3
- Xbox 360 has over 5 times the RAM bandwidth for SPEED!
More hardware based reviews here CNet previews the Xbox 360 here PlayStation.com shows off the PS3 tech specs CNet previews the PS3 here
All of this has me so excited that I’ll probably be in line somewhere at midnight to get mine (provided I don’t pre-order or win a free one).
— Matt Ranlett
posted with BlogJet
[Edit] – Microsoft has announced that the Xbox 360 WILL be backwards compatible with existing Xbox games. The announcement was made at E3, ending months of speculation. The post I’m linking to is actually from a Microsoft Xbox developer working on backwards compatibility. This is fantastic because I currently own 24 Xbox games (I buy them off of Ebay at an average $9.00 per game, including shipping). That would be a big waste if I couldn’t play my existing games on the new console.
I’m going to have to give my rusty time-management skills a workout. I’d previously cut DNR recordings from my schedule of “Things I Can Do In A Day” because I’ve been putting in more time on job and community related activities. I’m sure I’ve missed some great episodes (all available for download after the fact). I was reading through the blog on www.msquaredweb.com (just who is Mark, anyway?) when I found a reference to the coolest demonstration of XHTML and CSS I’ve ever seen.
You absolutely must check this out: www.csszengarden.com
Thanks for the link Mark!
— Matt Ranlett
posted with BlogJet
© Copyright 2008 Atlanta .NET Regular Guys
Theme design by Bryan Bell
newtelligence dasBlog 1.7.5016.2  | |  | Page rendered at 12/3/2008 9:44:50 PM (Eastern Standard Time, UTC-05:00)
Reset | Slate | Movable Radio Heat | DasBlog | Just Html | Candid Blue | Discreet Blog Blue | Movable Radio Blue
|
On this page....
Search
Navigation
Categories
Blogroll
Sign In
|