 Tuesday, March 15, 2005
Everyone has something to complain about with their various RSS aggregators, so it is a really good thing that there are so many of them out there. Should we add Microsoft to the list?
— Matt Ranlett
 Monday, March 14, 2005
Doug gave the announcements and talked to the group about SQL Connections and PASS – upcoming SQL conferences. Lots of jokes, a little bit of complaining about how salesy the last presentation was, and some thanks to our sponsors from Lumigent.
Harvey Parnell from Lumigent gave us a presentation on database auditing – an “essential business practice for Sarbanes-Oxley compliance”. Did you know that SOX compliance requirements within organizations have actually changed from the first year to the second year? In the first year of government regulated auditing, a lot of companies scrambled to meet the requirements. Frequently those requirements just couldn’t be met easily because there aren’t any products on the market which meet the needs. Basically, the Sarbanes-Oxley act dramatically changed financial reporting rules for public companies. In the second year (this year) there is a lot of focus on forcing accuracy of data down to the individual database level through automated tools and manual processes. The goal is to avoid future Enrons and Worldcoms (accounting scandals). As far as databases are concerned, the data contained inside of the financial applications are critical to the public organizations. Auditing attempts to prevent unauthorized access from both external and internal threats from happening, and if they happen they need to be monitored. Basically there are many auditing controls which are either violated or deficient. For example, development staff can run transactions in the production system. This brings to light the need to apply database auditing to all types of data access. That way, if something goes wrong, you know what the data was before the problem, what it is after the problem, and how to prevent the problems in the future. While tonight’s presentation focused on the Sarbanes-Oxley Act, there are other legislative requirements for auditing including the HIPAA (medical patient records), Graham Leach Billey Act and Basel II (personal financial records), and other regulations which require data retention for periods of time, such as seven years. After showing us how difficult it really is to monitor a database system as completely as one needs to be monitored, Lumigent’s staff told us how their application, the Entegra Auditing System meets as many of these needs as possible, with more features on the way.
Next Month – Shawn Wildermuth talking about CLR integration between Visual Studio 2005 (Whidbey) and SQL Server 2005 (Yukon). After several DBA-centric presentations, I personally will be happy to see something which speaks a little more to the concerns of the developers in the audience. Those who have seen Shawn present at the main .Net User Group or the Atlanta Mobility User Group know he is an engaging speaker. Come refresh your understanding of how the CLR integrates with the new Yukon database engine.
— Matt Ranlett
 Saturday, March 12, 2005
The date and location are up for the Atlanta Geek Dinner this month. March 24th @ Harps Irish Pub.
Check out details.
Also the organizer Shawn has a post too.
--Brendon Schwartz
 Friday, March 11, 2005
In case you haven't heard Chris is going to do something that I am very interested in. It is what most of us developers do, but never really package together. He is going to do something like community server, but using DotNetNuke as the front end. I look forward to it and would love to use it when he gets it up and running.
http://tamasii.com/blog/archive/2005/03/11/48830.aspx
Brendon and I got together with Paul Wilson over some burgers and chicken fingers and chatted with him about what’s been going on in his life. We talked about work, side projects, Paul’s MVP status, and more. I’ve actually been sitting on this material for a week now, so I figured I’d get my act together and write it all down where the rest of the community can read it. So here’s our Tale of Paul Wilson…
We were talking about how we all got started working with computers (Atari and Commodore and whatnot) when we got into how Paul got started working professionally with computers, especially since his education prepared him to be a math teacher. Once Paul decided that he didn’t really want to be a math teacher, he turned to computers. Paul actually got started with Delphi programming, something he, Keith Rome, and I have in common. Gradually his Delphi work became VB work, and he was off and running. His association with .Net applications began while he was working at a company as a regular employee. Paul’s projects at work weren’t really that exciting to him, so he started working on his personal website to learn more about the things that interested him. Now his website is a great tool for him, both as a teaching tool and example. Have a question about how to do something in ASP.Net? Ask Paul and he might send you to part of his website as an example of the solution.
Paul’s received no small amount of praise for his O/R Mapper, but he’s got more that just an O/R Mapper to keep him busy. We talked a bit about what he’s been doing in his “spare” time. Paul’s been working on a UI Mapper, an extension to the MasterPages class, and more. For a onetime fee you can get a lifetime subscription to all the code that comes out of Wilsondotnet.com. Ask Chris Wallace if he thinks the subscription is worthwhile. Paul spent a lot of time impressing on us is firm belief in the KISS principle – Keep It Simple, Stupid! This is actually the real reason he started creating his O/R Mapper and UI Mapper – he saw a need for a product and there were no simple products out there to meet his needs. Paul’s main drive is to keep things simple. He’s the first to admit that there might be other products out there that do some of the same things his products do (for example, NHibernate), but his strive the easiest to use. He’s not trying to address the entire market, just the cases where a simple and elegant solution fits. As far as what the future holds, Paul is working on something new, but he’s so early in the process that he didn’t want to talk about it before he proves it a viable concept to himself.
Paul shared a great story with us about what he feels lead directly to his being awarded the MVP distinction by Microsoft. It all began with that company he was working at where he first started using .Net technologies. That company was in the process of closing its doors, but it had several projects it was required to keep running for a long period of time. So Paul was in the maintenance phase of the project life cycle and he was able to spend time looking at the next technologies he might use. This is when he started working on his website. He was a frequent visitor of the brand new (at the time) ASP.Net forums where he was looking for solutions to his own problems. He started answering questions other people posted as he learned more and more. Because he was able to invest a lot of time in his website, ASP.Net in general, and the ASP.Net forums, his ranking as a top poster was stratospheric. This got him noticed by the powers that be over at MS and he was awarded the Most Valuable Professional award by the Microsoft MVP team. The funny thing about the award is that Paul feels it casts him as “Mr ASP.Net” when he has expertise in other areas as well. Fighting this exact type-casting is one of the things that eventually lead to the Wilson O/R Mapper – he wanted to prove that he could do stuff in other areas. That incredible job eventually with all the extra time ended; you can’t be paid to do nothing forever. Now that Paul’s working full time again, he doesn’t spend as much time on the message boards as he used to. He does visit when he gets the chance, and he is a very active local blogger.
So now we all know where to find Paul online if we need to ask him questions – the ASP.Net forums and his own blog. The next question we had for him was where does Paul Wilson go for help when he needs it. Paul told us that he does occasionally look in some newsgroups and websites, more often some reference books, and he told us that he stands on the shoulders of much smarter people than himself. He didn’t mention any names (to protect the innocent) but he told us that if he brought some of his brightest friends to chat with us, we’d all feel quite stupid in comparison. Brendon and I both felt Paul was being a bit modest, but we accepted the story that where Paul is smart, some of his friends might be brilliant.
We wrapped up our conversation with a quick talk about the Atlanta .Net Regular Guys’ mission. Paul’s been a strong online presence for quite a while now, but we don’t get to see him in person all that often. With the exception of the upcoming Code Camp, Paul doesn’t have any plans to present at any of the User Group meetings. So we asked him what we could do to draw him out of his house and into the community a bit more. While he wouldn’t actually commit to anything, Paul told us that he was very appreciative of our efforts to publish the user groups’ calendars and keep him informed of who’s coming to speak at which events. He mentioned that he might be enticed into coming out to hear some of our future presenters.
Well, that’s about all that I have for this Tale from the Trenches. Stay tuned – the next episode should show up in about two weeks.
— Matt Ranlett
 Thursday, March 10, 2005
The speaker list is finally up on our site. Sorry it took so long to get it there. We have the tracks and speakers up and we will make them all easy to get to by this weekend. For the time being check out the tabs we have if you want to know who is speaking or what the presentations are.
Speaker List
Presentation List
We still have a lot of work to do, but I thought you would rather have the content as soon as possible.
--Brendon Schwartz
A P R E S S . C O M | Books for Professionals, by Professionals ...
Suggestions for Writing Apress Book Reviews
Apress encourages user group members to write book reviews that are comfortable and fun to write. We realize that time may be limited for working professionals, so we appreciate any thoughtful and constructive reviews of our books.
We suggest posting book reviews wherever relevant: Amazon, Slashdot, your blog, your buddy's blog, Barnes and Noble, JavaRanch, or your user group's site—just to name a few.
Whenever possible, a review should mention chapter features, describing one or several chapters at a time. Additional topics might include:
- How will this book help you with your work (or hobbies)?
- What sets it apart from other books you've read?
- Would you recommend it? To whom?
- What was your favorite chapter or section?
Many reviewers enjoy sharing what worked (or didn't work so well) for them in our books. And review length is up to the writer—we typically see reviews that range from a paragraph to a few pages. Here are a few examples:
If you want to challenge yourself, take a look at some examples of Slashdot reviews:
If you're limited on time, follow the example of some Amazon customer reviews:
Here are some fine examples of reviews posted on user group sites:
And here are some blogs that feature book reviews:
— Matt Ranlett
Brendan Tompkins just posted a blog about random number generation within .Net. I felt it was topical since we just saw Keith Rome do some random number generation in his AppCenter Test demo for the C# User Group.
Brendan’s post starts off with, “If you want a true random number generator, you will want to look beyond System.Random, to the RNGCryptoServiceProvider in the .NET Framework”.
— Matt Ranlett
 Wednesday, March 09, 2005
The VB group is one of the only groups which is not meeting in the Microsoft offices. They get together in the New Horizons training center off of LaVista Road. Tonight’s meeting had a smaller group than usual. I’m assuming everyone is as busy as I am recently at work and just can’t spare the time. I know that we’re not talking about a lack of advertising – Brendon and I have been getting up in front of every single user group announcing all the upcoming meetings for the month. But I’m not discouraged by low turnout – quite the opposite. Every group has been experiencing record-breaking turnout recently.
Tonight’s meeting had three speakers scheduled but only two managed to turn out. And of the two that turned out, only one really had a presentation ready for display. That completely disorganized, unprepared presenter was me! But that’s a different story for a different day.
I was signed up to talk about the FileSystemObject how it differs from the System.IO namespace. The gist of my presentation was this – the FileSystemObject is actually part of the Windows Scripting Host. This is useful because it means that you can use the FileSystemObject outside of .Net applications. I showed an example of a VBScript file and a JavaScript program, both using the FileSystemObject to work with disks, directories, and files. The System.IO namespace offers more power and flexibility than the FSO does. For example, with the System.IO namespace you can get the extension of a file with the .GetExtension method. With the FSO you’ll have to search the file name string for the ‘.’ I didn’t have time to get a proper VB.Net sample project ready for everyone to see, so Jim came to my rescue. He had an application he uses to read in some bizarre custom format text files. He showed us how he could do the job with the FSO, a System.IO StreamReader, and a System.IO FileStream. We didn’t have a good way to measure performance, but the general feeling of the group is that the System.IO namespace would be faster than the FSO. If for no other reason, the FSO seems to require a COM Interop layer. For those of you who might be interested in how to use the FileSystemObject in JavaScript or VBScript, check out DevGuru.com – they have the entire object model of both scripting languages and more. Also, you should take a look at the Scriptomatic.
Brendon was the second speaker, presenting an interesting technique he found on the web to add custom properties to an enumeration. For example, he was able to create an enumeration of integers which had associated descriptions. This could be really valuable in cases like binary bit masking or error codes. With this technique you can have a meaningful description associated with otherwise bizarre enumeration values. I don’t have any links for examples of Brendon’s code yet, but he’ll be putting them up on the VB.Net site soon enough.
After the meeting we made our traditional pilgrimage to Chili’s for some food, drink, and talk.
— Matt Ranlett
Williem Odendaal posted some helpful Google tips a while ago. I thought I’d share them with you.
- After the search phrase, type site:microsoft.com. This will return only results from the microsoft.com domain.
- To find out what a word means, type define insane. With define being the keyword and insane the word I'm unsure of.
- To do conversions, type 12 pounds in kilograms. Very nice. Obviously this works for a lot of other conversions as well.
- And I just read about this this morning - to search for a word and all it's synonyms, use the tilde key. For example - ~food ~facts.
— Matt Ranlett
As an avid fan of mobile computing and a big believer that this is the direction computing is heading as far as consumer computer devices are concerned, I thought I’d share this blog entry from JKontheRun
Pocket PC Magazine- The Bright Future of Mobile Computing
Bibhu Choudhary and Suvarna Singh have written an article in Pocket PC Magazine that gives a good look at the future of mobile computing. The article concentrates on new technology that is either just appearing presently or on the horizon and they provide a thorough overview of the mobile technology we should be seeing in our devices down the road. The authors cover everything from tiny hard drives to flexible displays and how they will impact devices of the future. The article is a must read for anyone interested in what might be coming at us in our soon to be gadgets.
— Matt Ranlett
I have tried out about a dozen different blog readers and I currently like my Jetbrains Omea Reader the best. However, that doesn’t mean that I think it’s perfect. I just sent them this detailed list of feature requests:
“I LOVE Omea Reader and am considering purchasing Omea Pro to put my e-mail into the same application.
A few change requests:
Newspaper view - I like the ease of use of the newspaper view but I prefer the way the newspaper view works in the Onfolio tool. (almost but not quite enough to
-
Highlight which blog entry I'm reading in the newspaper view (draw a box around it).
-
When I hit the space bar move to the next blog entry.
-
When I'm reading a blog entry, mark it as read. I am annoyed that I have to mark a blog entry as read manually after I've looked through them in the newspaper view.
-
Give me the ability to flag items in the newspaper view.
-
Give me the ability to read Recent and Unread categories in a newspaper view. I don't understand why that doesn't work now.
Comments - comments are what make blogging such a powerful tool and I like the ability to download comments by clicking a button.
-
I'd also like to have a global option to ALWAYS download comments.
-
If the comment is posted via RSS I should be able to get new comments on old posts (and be notified that that post has changed) without having to check manually. I'd like an old blog post with a new comment to be highlighted as changed in some way (maybe just marked as unread)
-
I'd like to be able to read the comments in the newspaper view
Plugin request - I like the idea of the post to confluence plug in. But I use a different tool to write my blog posts and I'd like to see Omea send the post to it. I use BlogJet to write my posts offline and post at my leisure. Can we add a "Post to BlogJet" button to the UI so I can have a BlogJet format document created for me with the contents of the particular bit of information I'm reading in it (and a trackback link).”
With this nit-picky a list of requests, you ought to be able to see that it’s a pretty complete tool. Check it out for yourself. It’s free if you download it before the end of this month.
— Matt Ranlett
 Tuesday, March 08, 2005
http://www.ajc.com/news/content/custom/blogs/index.html
BIG problem - no RSS feeds. To me, that makes this totally useless. Plus they turn off comments after 5:00pm. I guess they don't want to queue up comments for review. I can't imagine they're currently getting lots of comments on a site that doesn't allow syndication.
AccessAtlanta.com also promises RSS feeds, but they don't seem to be working. Oh well - no local news in my RSS reader
-- Matt Ranlett
If you don’t mind reading the books online there are some free EBooks from APress up on their site.
A Programmer's Introduction to PHP 4.0 Dissecting a C# Application: Inside SharpDevelop Writing Perl Modules for CPAN Programming VB .NET: A Guide For Experienced Programmers COM and .NET Interoperability
http://www.apress.com/free/index.html
--Brendon Schwartz
Do you ever get irritated that some sites require registration to show you free content? Take the New York Times for example. Why require me to register for free stuff? So you can have my e-mail address and spam me with junk I don't want to hear about. What if I only want to read one article? Very irritating. I'll usually abandon my attempts to read that article as soon as I'm required to register for it.
- A coworker showed me this site this morning and it's fantastic.
- Go to http://www.bugmenot.com.
- Drag the bookmarklet link onto your links bar.
- Visit a random website that requires a free account to be created so that they can spam you to hell.
- Click on the bookmarklet link you added to your links bar.
- A page pops up with a login and password.
- If the first one doesn’t work try the next one.
-- Matt Ranlett
I love BlogJet. I don’t care that it has the ability to connect to 2 million kinds of blogging engines, I only care that it makes it easier for me to connect to mine. I like the offline editing of my posts. I used to write such long stuff online that my session would time out and I’d lose my post if I forgot to CTRL+A + CTRL+C the contents.
For a while there I was frustrated with BlogJet because I couldn’t figure out how to get it to FTP my images up to the blog for me. Turns out that Michael Earls gave me the right advice when I was complaining about it to him, “play with the slashes”. I found what I messed up:

Chris Wallace also offered to give me the solution. I’d already solved it by the time he offered, but I’m only getting around to posting it now. Sorry for the delayed reaction.
— Matt Ranlett
I work in a company where the same product has been around since before I started 4 years ago. We just keep refining and adding functionality to our product. These years of work have resulted in a much better product than we had originally, but we've been butting our heads against a problem with seemingly no good solution:
How do you manage the documentation for a product where dozens of different people are adding features to the same product?
- We've tried keeping one central document but Microsoft Word isn't very good about sharing the file and letting 20 people edit it at the same time. VSS tends to want to check out to one person at a time and merging the doc changes in don't seem to work because VSS treats the file as a binary object.
- We've tried having people write design documents that show the new features but the problem here is that we end up with one out of date functional document and 300 out of date design documents. People write the design document as they think things WILL be and then write the code as things HAVE to be. The two are not always the same. But deadlines being what they are, the design document doesn't get updated and becomes useless. Also, when Person A writes a design and code for something then Person B makes a change for a different feature in that same code, Person A's document is now out of date because the changes are detailed in Person B's document.
- We've tried to force people to accept the "living document" model - where if a document dealing with your area of functionality exits you should be changing that document. Only create new documents as a last resort. The problem here is that we don't currently have a good framework of documentation covering all the areas of the code. We have a single document that covers everything and hundreds of sub-documents dealing with new features, not specific areas of code functionality. For example, if I want to add the ability to sell an non-inventory decrementing item I'll write a document about how to do that. Then the next person comes along and wants to write about refunds for tax-free items. My document didn't deal with Sales and Refunds so the next person will write a document about their specific feature. These "delta" documents talk about how the new release has changed from the original Functional Specification (the 1 big umbrella document) but they're generally useless
- How do you relay this information to the customer? You need something a customer can refer to for configuration and troubleshooting. We need something internally for the same reasons.
We're a small company and we don't have the budget to implement a massively expensive product to help us manage this problem. So I came up with an idea that I pitched to the management team (to lukewarm reception). I proposed we implement a wiki internally. A wiki is basically a website that allows anyone who views it to easily change it ("wiki" means quick or fast in Hawaiian). The best example is the world's largest wiki - the Wikipedia, with over a million articles. The beauty of a wiki for document management is that anyone who wants to can easily create marked up, cross linked documents with very little effort. If I put my functional spec document into the wiki as a page, whenever I find a word I want to expand on (like Item Sales or Item Refunds) I can simply add a link and have a new page for my new information created automatically. Since the effort to create entirely new documents suddenly becomes less than the effort to simply expand on an existing one, the document management process will slowly solve itself.
I picked FlexWiki for several reasons. 1) - it's free. 2) - it's based in .Net. and 3) - it's markup syntax is really easy to use. I slapped together a random sample of what it would look like and presented it to two of the managers. They both liked the flexibility but both are worried about the lack of structure. The other problem is that a wiki isn't very presentable to clients. I picked FlexWiki because it supports user authentication for making modifications, but that still doesn't help us print up a fancy deliverable. The other problem is that the lack of structure is great for adding content as you see fit but not necessarily condusive to easily understandable document structure.
A coworker was looking at this same problem and came up with an alternate solution. He felt that some forums would be the way to go. He chose the free Snitz forums. Structure is very rigid and easily understandable. Just like a wiki, anyone (with access) can add to a forum topic. The problem I have with the forums is that it does even less than a wiki does as far as creating documentation of a product. Forums are great for trouble shooting (which is where my coworker started his forums - documenting our troubleshooting guide) but suck as far as readable documentation goes.
I personally prefer the wiki. Look at the Wikipedia - a little effort can turn something small into a tremendous resource. Forums have their place too, but especially where documentation is concerned, I don't think they fit the bill.
I know that I am not the only person working for a company that has struggled with this same issue. Anyone have any advice or thoughts?
-- Matt Ranlett
Check out the farewell editorial from Richard Grimes from Dr Dobbs Journal. Regardless of whether or not you agree with Mr. Grimes, he has written some excellent columns over the last three years as a contributor to the DDJ and he'll be missed.
While you're wandering around in the DDJ site, be sure to check out the columns written by Dino Esposito on ASP.Net. I wanted to bring up Dino Esposito because he's the author of the Introducing ASP.Net 2.0 book that the Atlanta .Net Book Club will be following for the next three meetings. Speaking of the book club, I wanted to announce the time and location of the next meeting. We will meet on March 17th (Thursday) at 6:30pm at the 5 Seasons brew pub. They have wireless internet access and great beer. Show up and you might be luck enough to receive one of the three copies we've received (courtesy of Doug Turnure) for free.
-- Matt Ranlett
I wrote a post asking if anyone had any comment requests and got a comment from Kevin. Well, it wasn’t really a request for comment ideas but Kevin took it as such and asked me to speak about something he and I had talked about on the phone a while back.
Is it OK to use someone else’s wireless access to the internet if you have the ability to do so? This applies to all kinds of situations, but the basic theory here is that you live near someone who has not secured their wireless router. You are close enough to use it. Should you?
There are several ways to think about this. Let’s take the pro-using side first. To begin with, are you really stealing anything? I mean, wireless internet bandwidth has no additional cost per additional user, at least to the individual paying for the subscription. As long as the paying customer is able to use their internet connection as they see fit whenever they want (within the limits of whatever contract they agreed to with the internet provider), should they care if someone else uses any leftover bandwidth? Probably not. The internet provider shouldn’t really care. The additional traffic is throttled to the limit of the bandwidth pipe they provide to the user and if the paying customer took up every bit of that bandwidth pipe they can’t say anything about it. So that cost can’t really be argued, can it? So, in these circumstances it really can’t hurt to steal wireless bandwidth you come across because there is no real impact to anyone. Can that even be called stealing? That’s like letting your neighbor water part of your lawn with overspray from a carelessly placed sprinkler. If the neighbor with the wireless router really cared about protecting their bandwidth, couldn’t they have taken some steps to prevent you from accessing the network – such as a password on the router?
Of course, the devil’s advocate would then pop up and say that using another’s internet access is bad because there are always consequences. When you siphon off some of the paying customer’s bandwidth you are taking up potentially unused bandwidth. By taking this bandwidth you are increasing the load on the internet provider’s servers and driving up costs. This will eventually result in the provider having to spend more on their servers and passing those costs on to the paying customers. In this scenario there is a direct financial impact – easily comparable to taking money from someone’s wallet. Even if your neighbor incorrectly places a sprinkler such that it waters your lawn, that water is going to cost your neighbor, not you. In this case, isn’t it your moral obligation NOT to take advantage of an unsecured wireless internet connection?
But people don’t view issues in a moral black and white vacuum. At least, they don’t usually act like that. Consider this example – a waitress returns with your change and hands you too little change back. Most people will complain about this and get the problem rectified. But if that waitress hands you too much change, people’s attitudes change. Generally, if the amount of the difference is large, most people’s consciences get the better of them and they inform the waitress and return the extra money. But if she’s off only by a little bit (a sliding threshold for all of us) we tend to walk off with the extra money thinking, “It’s not my mistake!” Stealing wireless internet access is kind of like that. If all you plan on doing is downloading your e-mail every once in a while, it’s easy to overlook the transgression. If you plan on downloading 600Mb movie files, you might see this as a larger impact activity and spring for your own access.
I got an e-mail from Kevin where he was talking about this same issue with a friend of his. Kevin and his friend were comparing the stealing of wireless access to pirating a copy of MS Office. I won’t paste the entire conversation into this blog entry, only a few words:
“… MS Office comes with a license that bars distributing copies. ISPs, by contrast, don't require their customers to promise not to allow others to use their wireless. There's no breaking of promises, or the suborning of the breaking of promises, by the person who uses an unsecured wireless network.”
So tell me what you think. Is using someone elses wireless access really stealing? Is it borrowing?
— Matt Ranlett
I keep telling people to read my blog and subscribe to it so they can keep up with what the Atlanta .Net Regular Guys are doing around town. The problem is that I frequently get blank stares from people when I tell them to subscribe to my blog.
“What’s a blog and how do I subscribe?”
If you are reading this webpage, you are reading a blog. A blog is short for a weblog. A weblog is basically an online journal where a person (or persons) can write down anything they want the world to read. Some people write about technology, some people write about politics, and some people write about their girlfriends. This blog tends to focus on technology, but you know that because you’re reading it.
Blogs are a great way for people to keep in touch with a wider audience. Just like any web page, all you need to read a blog is an Internet connection and a web browser. But blogs are more than just simple web pages because they offer the ability for someone to subscribe to the web page and get updates whenever something changes. This way, you can more easily keep track of what changes on a particular blog like this one without having to remember to go back to it and check it. This is really great when you read 50 or 60 blogs like I do.
What do I mean by “subscribe” to a blog? How does one “subscribe” to a web page? This is not the kind of subscribe where you give me your e-mail address and I send you stuff to read in e-mail. A blog actually publishes what is known as an RSS feed. RSS stands for Really Simple Syndication and is basically all the editorial content of a website without any of the human readable formatting. No colors or anything like that. It looks a lot like this – a specific flavor of computer file called XML. There are programs out there, called RSS Readers which read this RSS feed and presents it to you much like e-mail. The difference here is that I, as the publisher, don’t have to worry about sending e-mails out to people, and you the reader don’t have to be concerned about your privacy and spam. The person with all the power in this relationship is you. You decide which websites you want to subscribe to. You decide how frequently you want to check for changes. You decide when you want to stop reading a specific RSS feed. All of this without the publisher doing anything other than posting their content to the web. In fact, most blogs support comments, so if you are interested in a topic you can tell the author what you think and your comments will be put online under that topic so that everyone else can read what you said.
What kind of programs read RSS feeds? There are actually tons of programs out there that can do this for you. You have to decide which one you like the best. Some of the RSS readers are services provided by websites like Bloglines.com. The advantage here is that you can read your RSS feeds from any computer. There are some that fit inside your web browser and pull all your RSS information into a web format for you. An example of this would be Mozilla FireFox’s “live bookmarks”. The advantage here is that you can seamlessly be reading a blog post, then link from a blog post to a completely new website. Finally the third category is my personal favorite – programs that handle grabbing all the RSS feeds, or aggregating all the feeds for you. I personally prefer programs like these because they offer the most flexibility and power. For example, RSSBandit allows you to work in a program similar to an e-mail program. The interface is very familiar and comfortable for me. Some of these programs, like NewsGator, actually fit inside your e-mail programs and deliver RSS information to you as if it were e-mails! Other programs like Onfolio combine several aspects – there is a standalone reader AND one that fits inside your web browser. My personal favorite is Jetbrain’s Omea Reader. I like the organizational power I get with the Omea reader that I can’t find in other programs like RSSBandit and Onfolio. Some of these programs are free, others are not. Some of these tools will actually help you write your own blog!
How can I get a blog of my very own, as I am a very clever person with lots of clever things to say? This can be both deceptively simple and complex at the same time. The easiest way to get your own blog is to ask someone you know to host it for you. That’s what Brendon and I did for three months. Then we felt confident enough to go out on our own, purchase webspace, and put up our own blog engine. A blog engine is the software program that actually turns the text I type into BOTH the webpage you are reading now AND the XML based RSS feed. There are several free blog engines available to you, notably .Text (that’s dotText) and DasBlog. This weblog uses DasBlog. There are also tools that help you publish your blog postings. I prefer to use BlogJet rather than type on a webpage (which is the default method for getting blog posts into DasBlog)
How do I find interesting blogs to read (aside from this one, of course)? This is actually the easiest part. Start with this blog and follow any links that interest you. Odds are you’ll find me referring to another person’s blog. Search for interesting topics on Google. Lots of interesting topics have people writing blog entries about them. Check with central blog services like Technorati and BlogStreet. Check with famous Internet writers like Robert Scoble.
One final note about RSS. RSS feeds are not just restricted to individual blogs. RSS is rapidly becoming THE way for an individual, group, or company to keep in touch with and establish a rapport with interested parties such as customers. Nowadays it seems like you need to have RSS publications of your sites to keep people interested. What better way to find out what’s on sale than to publish the information to the world of people who are interested enough in your products to subscribe to your RSS feed. This is what Overstock.com did with it’s WOOT.com initiative. Take a single product and sell the hell out of it with RSS until it’s gone. You know what? It’s working! RSS for shopping!
— Matt Ranlett
PS. David Cumps has an enviable internship – read his blog because it’s excellent. Read his post about blogging in general to get a different perspective of blogging 101.
We’ve got a contact with a discount to Books24x7.com. Their library is the full text of all the technical books anywhere and is fully searchable. The problem is that the subscription costs $500 a year. Well, I’ve just made a contact that can get you this subscription for nearly half the cost. So if you are interested in a library subscription that is more expansive than just computer language books, send me an e-mail and I’ll get you the information you need.
This sounds like a great deal because it gets you all the latest books for a single subscription fee. If you don’t mind reading off the screen or killing lots of trees and printing the books you will have a great resource at your fingertips.
— Matt Ranlett
Tonight we had the best turnout ever at the C# User Group. We had 27 people show up for the advanced topics of memory management and code dom. We really seem to be getting the word out about all of these meetings and lots of people are showing up.
First up to bat was Keith Rome who presented AppCenter Test to the group. He was demonstrating some memory and performance problems with a simple application that did some really horrible stuff with strings and integers (check Keith’s code to see why StringBuilder is not necessarily protection against bad coding). AppCenter Test was really easy to set up because he was able to simply record the input to his webpage. Then he opened the ACT tester and was ready to go. The reports that ACT spit out for us were really great, showing us graphs and charts of the results which were especially impressive when he compared multiple tests against each other. AppCenter Test is only available in Enterprise Architect editions of Visual Studio.
Following Keith, Mitch Harpur from MetaJunction showed us a 20 minute presentation of CodeDom. To begin with, you should know what the code dom is – the ability to write some code that actually writes other code (generated code). Code generation is very handy because common code (ex data access layers) can be easily generated. Once that kind of code is stable it will have less errors than code done by hand. Code gen also helps your code fit into templates and patterns. Code has some areas which are ideal candidates for code generation, but not every problem works with code generation. You’ll want to to look into the System.CodeDom and System.CodeDomGenerator namespaces. Mitch showed us an excellent example where he was able to generate a class with very little actual code. I tell you what, Mitch showed us that he is a very bright guy and I’m going to really have to work to find some real understanding of code generation. This seems like a really complex topic which is easy to get wrong.
Doug Turnure was our group’s pinch hitter – presenting memory management in C#. We started with a review of CS 101 and rapidly went into memory diagrams.
- What’s the difference between a class, an object, and a reference?
- What is a stack and what is the heap and where can you find the managed heap?
- We sat together and walked through a simple code example to see how .Net will load up a type structure and initialise variable on the stack and the heap.
- We talked about how the typestruct is internally a CoreInfoClassStruct – a vtable that points to code compiled by the JIT compiler and how once compiled that code is kept around and referenced directly by the vtable.
- We talked about the difference between static vs instance members of a class and how static methods are faster than instance methods.
- We talked about the difference between value types and reference types (ref types are objects that get GCed where value types are raw data and not objects).
- Structures in .Net are faster than structures but you can’t inherit from them and you can’t replace the default constructor. One of the reasons structures are faster is that they are placed directly on the stack and are not pointed to on the heap. Structures CAN have methods and act just like classes.
- We talked about coping or cloning objects. Shallow copy vs deep copy. Deep copy-cloning is easily done by serialising the object into memory and re-hydrating the object into a new ref.
- Boxing is basically copying a value type just like it’s a reference type. Boxing occurs when you assign a value type to a reference value (ex – storing structs in an ArrayList). Unboxing is when you assign a reference type to a value type. The important thing to remember here is that boxing data creates a copy of that data and so if you change that boxed data you are not changing the original copy – it is up to you to synchronise those changes
- Generics are objects where the type is defined later.
- Garbage collection – Memory on the heap is allocated for (small) objects contiguously (that means really quickly) until there isn’t enough space on the managed heap. When you run out of space, unused objects (objects that have been orphaned when their references were set to null) are cleared out. Objects that survive garbage collection (because they’re still in use) are promoted from Gen 0 to Gen 1. When all the space is taken by Gen 1 objects, the GC will attempt to clean out all the Gen 1 objects and promote all the survivors of Gen 1 to Gen 2. When all the memory on the heap is full of Gen 2 objects, you’re out of memory! Garbage collection can be invoked manually, but in 99% of situations the automatic GC is more than sufficient. Always try to use a try..finalise which helps clean up objects. Also, don’t override Finalise unless you can’t help it – that’s slow! IDisposable is great but means your client code has to call it. That means you should implement both IDisposable AND a Finalise to ensure you clean up your object. You should also include a SuppressFinalize method as well.
The net conclusion of this talk is that Doug can crush you with his brain. Do not mess with Doug! Plus he’s funny even though he can’t be trusted with a marker and a dry erase board.
— Matt Ranlett
 Monday, March 07, 2005
Brendon, the other half of the Atlanta .Net Regular Guys, has suddenly become a bloggin’ fool! He’s posted eight of the last fourteen posts! Good Job! We need more content! More, more!
— Matt Ranlett
I took a little break from blogging on account of how much time I was spending at work finishing up this code I’ve been working on. But now that’s pretty much wrapped up and I can get back to writing the posts you have all been waiting breathlessly for. If you’ve not been waiting breathlessly for this, don’t tell me. It’s good to have your little illusions…
Coming up this Thursday will be the next edition of the Tales from the Trenches column. This week we’re talking with Paul Wilson, Atlanta’s ASP.Net MVP.
Reminder – tonight is the C# UG meeting. Doug Turnure will be talking to us about how the .Net framework handles memory management internally. This is a really fascinating topic to me, because when you know what happens under the covers you know why your apps behave the way they do. This is great when you have to debug bizarre memory related problems like Keith Rome had to do.
— Matt Ranlett
 Sunday, March 06, 2005
<Brendon Rambling> If you just want the point of the article read the last paragraph, otherwise if you got this far keep going.
You wake up at 2:30AM because you were so tired that you fell asleep at 7PM. Welcome to the world of the busy programmer. Many of you probably know exactly what I am taking about or just don’t go to bed until after 2:30AM. Part of this problem is due to the fact that I am always thinking, coming up with ideas and solutions. These traits can be look at as a blessing and a curse because I do them all of the time, just ask Matt. It is a blessing because I am able to help solve difficult problems with logical solutions quickly, but it is a curse because I am always thinking of something new to do or coming up with a new idea that I want Matt’s help to implement. I appreciate Matt for putting up with me and all my crazy ideas. Hope that they are as fun for all of you as they are for me.
Time update: 5:15AM Talk about a distraction. Who me? Get distracted? Are we back yet? Oh hi there audience let me tell you what just happened. Well this is how it went down. A friend ours, Jake (hi Jake), was kind enough to sign up to be a .NET Regular Guy. Thanks! I noticed this and was going to check the other people that signed up. NOTE: Thanks for those that have signed up I will make sure and hook you up. Well once I checked out who was signed up I was looking around the site as I normally do and I didn’t like the fact that the site wasn’t working right. So I took the next bit of time to fix the code and make sure everything looked ok and was set up right. If anyone has some feedback on our site please let us know how we can make it better for you, and by let us know I mean tell Matt =). Or what we can add to make it a useful site for the Atlanta .NET community. So back to why I started writing this blog.
I have a new idea, image that. I want to start a weekly blog entry of Atlanta .NET How To’s written by people in the community. I got this idea after reading Chris Wallace’s follow up blog to our Tale from the Trenches. Here is the idea, you can tell me if you don’t like it or if you do. Once a week we will put a blog post called “HOW TO: <whatever is figured out>” on our site from an Atlanta .NET person. We will have a link to their blog, article, or copy and paste from an email if they send it to us. If no one in Atlanta writes something that we can link to, which I think would be crazy there are a million people in Atlanta, then Matt or I will write a HOW TO article from the requests of the community. The idea here is that you will be able to read the HOW TO article and talk to the person through email or at the .NET user groups to ask questions. So thanks to Chris Wallace we will start with his post of HOW TO: Create Dynamic Buttons using GDI+ for WebPages. Please keep me posted if you read a good how to posting for us.
--Brendon Schwartz
© Copyright 2010 Atlanta .NET Regular Guys
Theme design by Bryan Bell
newtelligence dasBlog 1.7.5016.2  | |  | Page rendered at 7/29/2010 3:26:34 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
|