BusinessRx Community

Dedicated to the advancement of software, technology and the people who devote their lives to it.

Welcome to BusinessRx Community Sign in | Join | Help
in Search

BusinessRx Reading List

These blog entries are written by industry experts and leaders. We consider this content to be a good read for any software developer or web technologist.

Browse by Tags

All Tags » averyBlog   (RSS)
Sorry, but there are no more tags available to filter with.

  • Raleigh Alt.Net Beer Users Group

    I am happy to announce that this Thursday (9/25) will be the first meeting of the new Raleigh Alt.Net Beer Users Group, or Alt.bug for short. The basic idea is just to go hang out and discuss whatever comes up. We might consider setting topics for future meetings, but for this first meeting we are just going to see what happens. I have already confirmed that Derik, Dug, and Jayme will be coming and hopefully many more will show up as well.

    The meeting will be at O'Malleys Tavern (Guinness and Red Oak on tap) and start around 6:00 PM and go till whenever, hope to see you there.

    -James

  • September Lounge Update

    August was a great month for The Lounge, with Scott joining the network the web publishers room hit an all-time high of 1.7 Million impressions in the month. To start out this month I have moved Sam Allen who runs the excellent site DotNetPerls from the Small Publishers Room to the Web Publishers Room. Sam has been writing some excellent articles and has been rewarded with great traffic.

    I am thrilled to announce that I will be handling sponsorship for the Herding Code Podcast. I am convinced that podcast sponsorships are a great opportunity for advertisers and I love supporting the great content and conversations that I hear on the podcasts I work with. Herding Code is also joining the Small Publishers Room to run display advertising on their site.

    I have also added a number of other new publishers to the Small Publishers Room, we are now up to 26 publishers in that room!

    Ben Hall has been on my radar for quite some time as he is a member of the team building my favorite unit testing tool (MbUnit) and also does a great job writing about unit testing, build tools, and much more.

    I have known Scott Reynolds virtually for awhile and finally met him at CodeStock. Right after joining The Lounge he ended up joining the great folks over at LosTechies so not sure how long this blog will be in The Lounge, but thankfully LosTechies is a member as well so we aren't really losing Scott.

    Alvin Ashcraft has been writing an excellent daily link post and has also started to write some quality articles, he will make another great addition to the room.

    September is going to be an exciting month for The Lounge, I hope to launch another new room in the next couple of weeks as well as launching a side-project that is related to The Lounge in some ways. Should be able to announce both very soon.

    -James

  • NHaml-Users Google Group

    Since NHaml has broken out of MvcContrib (which is a great decision I think, I hate contrib projects in general since they are very hard to maintain) there isn't a great place to ask questions about using NHaml so I went ahead and created a NHaml-Users Google group.

    -James

  • RSS Advertising with The Lounge

    The RSS Room of the The Lounge is now live. The Publishers are still working on getting their feeds setup, but I hope in a week or so to have everyone setup and the first real advertisements running. RSS Advertising represents a new way for publishers to get well compensated for the hard work they put in to their sites and blogs. It also is a great way for advertisers to get the word out about their products and services to people who rarely visit sites or blogs outside of their RSS reader.

    Building the technology for RSS advertising was a fun challenge and I think it will be a good addition to The Lounge, I will blog about the technology as part of my Building The Lounge series.

    -James

  • Codestock

    Friday afternoon Kevin Hazzard and Justin Etheredge made a stop in Raleigh to pick me on their way to CodeStock. Nothing makes a six hour trip go by as quickly as riding with two very smart and fun developers. We got in around 6 or 7 and went to the pre-conference dinner (open dinner FTW, speaker dinners are elitist) at a little mexican restaurant next to the hotel. I finally got to meet people in person that I have known online for a long time, like Scott C. Reynolds, Alan Stevens, and Michael Eaton.

    CodeStock was an excellent conference (the keynote was pure marketing fluff, but everything else was good). I begged to get my talk early so I could enjoy the rest of the day and not worry about having to speak anymore. I did the 10 Open Source Tools talk and I think it went over fairly well. Trying to cram so much into the time was tough and I think I am going to retire that talk or maybe re-work it to just focus on a hand-full of the tools. After my talk I spent most of the time in open spaces and participated in some great discussions around working on a Mac, going independent, and Erlang (which turned into more of a polyglot programing conversation).

    After CodeStock we grabbed dinner then headed over to Alan Stevens house to hang out by the campfire, drink some beer, and have a good time.

    It has been awhile since I have been to a non-local conference and I am re-motivated to get out and go to more conferences. I already signed up to speak at Richmond Code Camp in October, plan on hitting the alt.net conference, RubyConf, and then the local Raleigh Code Camp.. so it will be a busy fall.

    And now for your viewing pleasure, here is Scott C. Reynolds intentionally dropping his iPhone on the concrete. (it was already cracked, but he dropped it about 6 times in a row and it is still working)

  • August Lounge Update

    July was another great month for The Lounge, we picked up some new advertisers in Gurock Software (the makers of SmartInspect) and Lite Accounting. We also added some great new members to The Lounge.

    I announced Scott joining The Lounge a couple weeks ago, I am thrilled to have in as a member and having him in the Web Publishers Room has vastly increased the advertiser value for that room.

    Nikhil Kothari has to be one of the longest blogging members of the ASP.NET team and he continues to write insightful posts on a frequent basis. He makes another great addition to the room.

    The Small Publishers Room also continues to grow with some great new additions.

    Jeff Blankenburg is a Developer Evangelist for Microsoft and increases my already high percentage of Great Lakes region (it's not called that anymore is it?) bloggers.

    I recently discovered Ryan Farley's blog but I was very impressed with the writing and the history of great content (since 2003!).

    Shawn Wildermuth is very well known in the .NET community, is an INETA speaker, and has been writing some great posts about NHibernate and Silverlight.

    The month ahead will be very eventful for The Lounge, I plan on launching the RSS room in the next week, announce some new podcasts, and also plan on launching another all new room!

  • New Phone Number, New Phone, and 4 years of Infozerk

    When I got my first check as an independent I bought myself a 40GB iPod. This month marked four years of being an independent consultant (I have some more posts about this coming up) and that seemed like the perfect justification to buy the wife and I new iPhone 3Gs. This also means I finally got a 919 number and can get rid of my old Cincinnati number.

    My new number is 919.600.0742, I am going to hang onto my old phone for a couple weeks since cell phones apparently don't support call forwarding when you cancel. If you had my old number please update it, if you didn't have my number before you do now!

    -James

  • Something new is on the way

    http://ideavine.net

  • Testing out RSS Advertising

    If you subscribe to me through an RSS reader you should now see a small ad at the bottom of each feed item. I am testing out the new RSS advertising that I have added to The Lounge. I have tested them in Google Reader, NetNewsWire, and Feed Burner. If you see an issue in your feed reader please let me know, I want to make sure above all that I am not causing any problems with a specific reader that I have not tested with. Over the next week I will have a couple other sites roll out the ads to test it on a larger scale, my goal is to launch the .NET RSS Room August 1st.

    RSS advertising has become more and more prevalent over the last couple of years with plenty of big players in the market like Google, FeedBurner, and Pheedo. My goal is to deliver more relevant ads as most of the ads you see on the big players are more general technology ads, with The Lounge RSS ads I will be able to focus in on .NET publishers and .NET advertisers.

    I will also only support people adding my advertisements to full feeds, ads in partial feeds is just wrong. Right now you will see an ad in every feed item, but that will be changing before August 1st as I add a metering option so publishers can decide how often the ads should show up.

    -James

  • Scott Hanselman joins The Lounge

    I am thrilled to announce that Scott Hanselman will be joining The Lounge in August. It says a great deal about someone that they literally need no introduction, if you work with .NET or any Microsoft technology, you know who Scott is. Since taking over The Lounge getting Scott onto the network has been one of my goals and I finally think The Lounge is at the point where it can be a mutually beneficial partnership. We have agreed to a six month trial to make sure that the partnership works out for both us, but I am confident that it will.

    I have also picked up a couple of other excellent bloggers this month, but I will save that for my normal end of the month update.

    -James

  • WaterField Designs gets it right

    I ordered a new sleeve for my MBP today and got the shipping notice:

    Hi James,

    Thanks very much for visiting us again. I just want to let you know that your order (#75387) will ship fresh from our San Francisco factory on the evening of 14-Jul-2008 via US Priority Mail. Your tracking number is 91014762139077056409 and you will eventually be able to track your order at www.usps.com.
    The total charge to your credit card will be $46.00.

    If there's anything else I can do for you, just let me know.

    Best regards,
    Gary

    PS: By the way, this is what we're sending you:

    1 -SleeveCase- -Horizontal Orientation- -Size 15-2-- Make:-Apple- Model:- MacBook Pro 15"- Battery: $39.00

    Product Total: $39.00
    Sales Tax: $0.00
    Shipping: $7.00
    Grand Total: $46.00

    First off it is very personal which is a nice touch, the other thing I noticed is that it says "Thanks very much for visiting us again" even though you don't login to their site and I haven't ordered from them in at least 2-3 years. That means it at least checks to see if my email has been used before (since its a different physical address, credit card, etc).

    I need to keep emails like this in mind when building sites, keep it personal instead of trying to be bigger than you are. 37signals has a good section on this in Getting Real called Be Yourself.

    -James

  • Building The Lounge - Release 1.1 - Refactoring, Models, SubSonic, and Testing

    This is the first in a series of posts about building The Lounge Advertising Network. My goal here isn't to try and tell people how to build applications, but rather just to explain how I have refactored/built this application.

    First a little backstory. The Lounge was started by Kevin Fricovsky in 2007. In December of 2007 I took over The Lounge and began the process of refactoring it and building upon what Kevin had built. When Kevin turned The Lounge over to me it was built using ASP.NET 2.0 and used SubSonic as the ORM to talk to SQL Server 2005. I also want to make sure it is clear that I did not have any problems with Kevin's code, the Lounge worked perfectly for me from Day 1.

    Because I was starting with a production application I had to prioritize technical improvements vs. new features. I wanted to start out with a refactoring and testing release. Release 1.1 only included two tickets:

    I am a big fan of having rich models that contain as much business logic as possible. This makes the front-end pages very light and easy to modify, and it makes the DB simple and easy to work with. It also helps me practice TDD and get good test coverage as I can focus my testing time and effort on the Models. So the first step with The Lounge was to refactor as much logic as possible into the Models and to wrap those with tests.

    SubSonic makes it fairly easy to do this style of development as long as you structure it correctly. What I did was in my Model project create a subfolder called SubSonic where the SubSonic models are generated. To generate them I use the External Tools trick in Visual Studio which makes it easy to quickly re-generate the subsonic models when I make a change. I don't want to put any logic in these models though since they get blown away when you regenerate. Thankfully SubSonic makes all of these models partial classes, so in the root of my Model project I have my own model objects with their logic. This is actually very Rails/ActiveRecord like since my models just have logic and don't have to have the data properties. Yes I know that my models do not have PI, I am OK with that.

    Part of putting as much logic as possible in my model means moving any validation to the model and not keeping it in the code behind or UI. In the past I have used a custom attribute based system (that turned into EVIL) and I have also been enamored with ActiveRecords validations.. but neither was really an option since I didn't want to add anything to the SubSonic models. I ended up writing a simple little ValidationEngine that just gives me some standard ways of checking for conditions and throwing a standard error message, using my little engine I can override the SubSonic Validate() method with something like this:

    public override bool Validate()
    {
    
      ValidationEngine valEngine = new ValidationEngine();
    
      valEngine.CheckRequiredString(Title, "Website Title");
      valEngine.CheckRequiredString(Url, "URL");
      valEngine.CheckValidURL(Url, "URL");
    
      validationErrors = valEngine.Errors;
      return valEngine.IsValid;
    }
    

    Its pretty simple but it keeps all of my validation in the model, in one place, and it makes sure all my error messages are standardized across the models. I try to keep everything in my models, so even simple things like this go in a model so they stay out of the view:

    public bool IsPayPal
    {
      get
      {
        return PaymentOption == "PayPal";
      }
    }
    

    For the unit tests I use MbUnit, at one point I was close to 100% coverage but lately it has crept down a little bit. I feel another hardening release in my future. One part of my refactoring was tweaking how the ads were served, I made a couple changes that I hoped would have a positive impact on performance, but before I did that I wanted to get an idea of how long it took. To do that I wanted to test more than just one ad being served... so I decided to write a test like so:

    [Test]
    [Repeat(100)
    public void GetNextPassTest()
    {
      Pass pass = Pass.GetNextPass("127.0.0.1", "DOTNET");
      Assert.IsNotNull(pass);
      Assert.IsTrue(pass.RoomCode == "DOTNET");
    }
    

    This uses the nice MbUnit Repeat function to get 100 Passes (a Pass is basically a campaign). I can run this test and see how long it takes, make my changes then run it again. It isn't as precise as using something like ANTS Profiler or dotTrace, but this was a way to quickly run my test and make sure I wasn't negatively impacting performance. I don't remember the exact numbers but I know that I cut the time in half that it took to get 100 passes. (MbUnit also has lets you assert on run times, but I just wanted a metric to keep track of and didn't have a strict goal I was shooting for)

    At the end of the release I deployed and didn't really deliver a single new feature, but I got alot of housekeeping out of the way and was ready to move on to the most important feature to my advertisers at the moment.... Reporting.

    -James

  • Project Spotlight: WhatIWantMost

    Well, its been awhile since the last one of these, about 8 months to be exact, but I want to keep this series alive so I am going to try and do at least one a month. I did decide to change the name of the series to Project Spotlight from Side Project Spotlight because I don't think it necessarily matters if the project is on the "side" or not and I think some people might prefer not to refer to their project as a side project. I will continue to focus on small projects that are created and launched by a developer or a couple of developers though, I won't be doing PR pieces for companies or anything.

    So for the second one of these I talked to Dan Hounshell about his project WhatIWantMost. The interview is actually a little bit out of date (since we did the email interview earlier this year) but I am sure Dan will correct me on anything that has changed since then.

    Give me a quick bio:

    I am a software developer for Telligent Systems. I am part of a two person developer team that maintains the www.asp.net, forums.asp.net and weblogs.asp.net sites. I have been a web developer since 1997 or 1998 when I was first introduced to ASP and Visual Interdev. As sad as that first version of Interdev seems now, it was awesome to me then. The majority of my focus has always been in the Microsoft web stack, though I have taken some short detours with Red Hat, PHP, postgreSQL and MySQL. I've spent all of my professional career working for small to medium sized web agencies. I have built everything from small e-commerce sites for local organizations like Gold Star Chili and the Cincinnati Zoo to a project management application for FedEx, and more recently sites based on Community Server for Microsoft. However, I've never been able to shake my fascination for experimentation and my entrepreneurial spirit. WhatIWantMost is one of the recent manifestations of those two things.

    What inspired you to write WhatIWantMost?

    There's really two things that contributed to my inspiration for building the site. First some friends and I were sitting around at work during the Christmas holidays talking about how much shopping we still had left to do and that most of the people on our lists were getting gift cards… again. I mentioned that I had thought about writing a little web application for my family to use to keep track of things the kids wanted. Something like that would be much better than making them write out 10 copies of their list and passing them out at Thanksgiving followed by many calls back and forth later to coordinate who had already bought what. We started searching for domains that would work for a site like that and I found and registered WhatIWantMost.com. I held the domain for about a year and a half before ever doing anything with it – I just kept it tucked away in my back pocket.

    The second contributing factor was my urge to work with some new technologies. Like many of us I never get to play with everything that I'd like to during my day job. Some people can read a book or an article or two and poke around with a couple of code examples and feel satisfied that they have gained some cursory knowledge about some new technology. I like to work with those things by creating a project to immerse myself. Some of those projects get "finished" and some of them don't, but I feel I get a deeper understanding that way.

    I really wanted to work with .netTiers (among other technologies) a bit to see what it was all about. I decided that building the WhatIWantMost wish list site with .netTiers was a good opportunity to do so.

    What are your plans and goals for the site?

    My original plan was to just build the site, get some experience with .netTiers, and blog about the process each step of the way. The series turned out to be pretty popular and I still get a lot of hits from Google searches for .netTiers on those blog posts. That itself is pretty satisfying to be able to help out the community like that. Once I had the site in a pretty good state, however, I figured that I might as well put it out there and see what happened.

    Currently I still use the site as an experimentation platform. If I find something that I want to try and it will fit in with the site then I will add it. For example, I've recently added some Twitter support where an update is posted to your Twitter timeline (something like "I just added Product X to my wish list on WhatIWantMost") when you add something to your wish list. I've alos been working on a simple Facebook application. For the short term I think I will continue to do the same – keep experimenting.

    Some of the things I plan on adding soon revolve around building more "community" into the site: allowing members to upload avatars; being able to create a list of friends to follow; allowing members to create calendars for special events (birthdays, anniversaries, etc); notifications of your friends upcoming events; etc.

    What technologies did you use to write it?

    The base of the site, the data and business layers, is built on .netTiers, which is a community project CodeSmith template for generating a complete application. I was really amazed at how simple and powerful .netTiers was to use. I've added functionality to the site over time and re-building everything except for the UI layer is as simple as starting up CodeSmith, opening the project file, and clicking the "generate" button.

    One of my goals with the site was to make it really easy to search for products from the site and add them to your wish list. To accomplish this I spent a lot of time researching and working with the API offerings from Amazon, Ebay, Yahoo, Google and Live Search. I wanted to build a library that would query the web services of those sites and present the user with a combined list of search results from all of them. Some of that research was frustrating: Google had not yet offered a search API for Froogle and Live Search's API did not cover their "product search" (both of those may have changed by now). I was able to get a combined search working for Amazon, Ebay and Yahoo, but the overhead of hitting all three web services along with lack of AJAX skills really hurt the user experience. For the initial launch I disabled the Ebay and Yahoo searches and went with just Amazon. It's still a slick and easy to use implementation, but I've been thinking about other ways to tackle the problem recently and I hope to eventually work all those web services back into the product search.

    The UI was built using standard ASP.NET controls with a lot of help from ASP.NET AJAX and the AJAX Control Toolkit. I mentioned earlier that my AJAX skills were limited when I started the project so most of the AJAX used on the site is implemented with Update Panels and a lot of client-side Javascript wiring. I'd like to make another pass at the AJAX implementation now that I have more experience to try implementing more AJAX web service calls than relying on the Update Panels.

    My database of choice is SQL Server 2005 and I make use of a lot of 3rd party and/or open source libraries like: Microsoft's Patterns and Practices Group Enterprise Library for logging, exception handling and caching; RSS.NET to help build the various RSS feeds; URLRewritingNet for pretty URLs; and some .NET helper libraries for working with the Amazon, Yahoo, Ebay and Twitter web services.

    How many people are using WhatIWantMost?

    There are currently about 300 members of the site. I'd say that about half of those are active members who have returned to the site more than once. There are probably about 50 who update their wish lists on a regular basis. The site averages about 6-10 new members a week.

    What are your plans for the future of the site?

    I mentioned before that I am using the site for my own selfish development experimentation purposes right now. The wish list genre is very big. There are literally dozens of smaller sites similar in size and stature to WhatIWantMost and there are a dozen more big sites that really offer top notch features and functionality. Additionally, every large e-commerce site has its own wish list functionality and sites like Amazon have killer wish list applications. I had no pretense when I built the site of breaking into that top tier, of building a large community, or of making a lot of money from the site. I just built it for my friends and family to use and if other people find it useful and like using it then that is great. I've really not set any goals beyond that. I've maintained a "let's see what happens" attitude. If the site miraculously becomes monstrously successful then I'll have to take a more active approach. Right now I'm just happy that all my family started using it this Christmas!

    How much time do you spend on WhatIWantMost?

    The initial development time was about three months of evening and weekend work. I'd estimate that I had 100 hours in the development. That's not too bad considering many of the technologies I used were new to me.

    As far as continued development goes, it really depends on what new cool thing I find that I want to add to the site. Some months I do nothing, some months I find myself putting a couple of nights work into it. On average I probably put 8-10 hours a month of development work into the site.

    I built the site to be as hands-off as possible. It really requires no manual intervention or maintenance. Occasionally I'll correct or add a link to an image or a product if it looks like there was some sort of data entry error on the member's part. Of course I check stats and logs every once in a while to keep an eye on things. Beyond that, the site offers RSS feeds for almost everything. I subscribe to the new users lists, updated wish lists, and the lists of items added to make sure that somebody doesn't try to take advantage of the site or use it distastefully (I've been lucky on that front so far). I would be surprised if I spend more than 8 hours a month doing maintenance.

    Thanks to Dan for doing this interview and in the time it took me to post this he managed to churn out another project, a site dedicated to ASP.NET MVC.

    If you are working on a cool project and would like to be interviewed please drop me an email and let me know. (javery at infozerk.com)

    -James

  • Deep Fried Bytes: Developing .NET Software on a Mac

    Last week I was a guest on Deep Fried Bytes and the podcast is now live. It was a ton of fun to talk with Keith, Woody, and my fellow guest Leon Gershing. The focus of the podcast was about writing .NET software on a Mac, which is actually becoming much more popular and it is a ton of fun.

    (remember if you want to sponsor DeepFriedBytes let me know)

    -James

  • July Lounge Update

    It has been a very interesting month for The Lounge, I am very disappointed to announce that Rick Strahl and Roy Osherove have left the .NET room to join a competing network. It was only a matter of time until a competing network was created, The Lounge has been very successful so far and existing companies need to do what they can to try and "get in on the action". I am disappointed to lose publishers though, but I hope to win them back in the future.

    This month I moved the Lounge to it's own domain, theloungenet.com, I liked having it under Infozerk but I think it will work better as a completely separate brand.

    I am thrilled to announce a new addition to the .NET room: the excellent community blog site LosTechies home to a ton of top-notch bloggers. The site is relatively new but is growing very quickly and will make a great addition to the room.

    The Small Publishers Room also continues to grow at a break-neck speed, this month we hit 20 publishers with the addition of 4 new publishers this month:

    I have been following Scott Koon's blog (lazycoder) for awhile, but he is another person who I got to know through Twitter more than anything. He writes a great blog and is part of the excellent new podcast Herding Code.

    Nick has been blogging a lot about ASP.NET MVC and was the author of the highly humorous post about what blogger girls like the best.


    Just Etheredge is another developer I got to know on Twitter and is the author of the excellent blog CodeThinked.

    And lastly I finally decided to move my own blog to the Small Publishers Room. I have been showing Lounge ads on my blog since the beginning but I was never officially in a room.

    Also this month I have made the podcast sponsorships that I have been selling official by adding a new Podcast Room to The Lounge, right now I am working with the Alt.Net Podcadst and Deep Fried Bytes.

    I also added a Screencast Room for the work I am doing with DimeCasts.NET.

    Overall it has been a great month despite a small bump in the road, I look forward to what July will bring. I plan on opening at least one more room this month, and have another good announcement I hope to have ready soon.

    -James

More Posts Next page »
Powered by Community Server, by Telligent Systems
'