RAnDOM Meeting Tomorrow

Brian LeGros | August 27th, 2008 | news  

For anyone who is interested, the first RAnDOM (Rich ApplicatioN Developers Of Melbourne) user group meeting is tomorrow, 08/28, at 7:00 PM @ Goombay’s on A1A. We had to move it back from 08/21 to its new date due to Tropical Storm Faye. We will be covering creating mashups using jQuery and Google Maps and Charts. The code sample is available in the RAnDOM SVN repository. Check out the blog for more information on requirements to participate in coding and please RSVP on EventBrite if you intend to come out. Hope to see you all there!

RAnDOM is ready

Brian LeGros | August 4th, 2008 | news  

After weeks of planning and months of picking a name, a few of us have finally put together a user group for the Brevard area. The group is called RAnDOM, Rich ApplicatioN Developers Of Melbourne. Our blog is located @ http://itsrandom.info. If you’re interested, you can see the cool layout that Sebastian put together for us.

My hope is that by bringing this group to Brevard we can begin to really grow the developer community in the area. We have an active .NET user group and Florida Creatives is getting started, but as far as coding goes, there aren’t that many opportunities to learn in a hands on way. At the Adogo, I really enjoyed our code camps these past few months, so I think that since we’re likely to start small, we can establish a great group by just hacking away. The area also seems to have a lot of web consulting companies, so maybe we can even a few of them to come out.

I really want a place to get together with fellow developers to code and discuss whatever may come over a cool beer and some wifi. If this is what does it, right on; if not, at least I still got a cold beer.

:)

Brevard user group meeting time

Brian LeGros | July 26th, 2008 | programming  

Well, this week I’ve gotten one step close to organizing a Brevard RIA/web developer user group. I hope to have our first meeting on August 21, 2008. I’d like to have the meetings every 3rd Thursday of the month starting @ 8:00 PM, lasting for about 1 to 2 hours based on the topic. Short of finding a place beachside or near 95 that is open in the evenings and has wifi, we’re going to stick with House of Joe for now on 192, next to the Melbourne Mall. Initially it looks like it’ll be a small group of us, so I’m not too worried about space being available. The new Florida Creatives group for Brevard looks like they are going to meeting on the 3rd Tuesday of the month, so that may cause some conflicts initially, but since I have little visibility for the group as of yet, we’ll see how it goes.

Now we need to just work on a name/acronym so I can get a domain and blog up. Here are some of the suggestions we have thus far:

  • Brevard Area Developer of Rich Internet Applications (BADORIA)
  • Brevard Network of Developers and Enthusiasts (BNODE)
  • Brevard Developer Web Group (BDWG)
  • Brevard Area Rich Internet Application UG (BARIA)
  • Brevard Rich Internet Application UG (BRIA)
  • Brevard Rich Internet Application Developers (BRIAD)
  • Rich Internet Application Techies (RIAT)
  • Web Brevard User Group (WEBBUG)
  • Brevard Area Web Developers (BAWD)
  • Beachside Developers (BSDEV)
  • Rich Internet Application Brevard User Group (RIABUG)

I’d like to have Brevard and something like Web or RIA in the name, but I’m still undecided. Does anyone has any suggestions? I’m open to ideas.

ASP.NET MVC URLs in IIS 6 using Ionic ISAPI Rewrite Filter

Brian LeGros | July 24th, 2008 | programming  

Ok, so I am totally swiping this from Ben Scheirman's blog post, but I thought I'd consolidate my comments on his post into a summary post. I've been working with ASP.NET MVC for a month now and everything has worked out as expected when I run my applications from the built-in IIS instance in VS2008. When I deploy to my local development environment, however, I run into the well know URL issue associated with using IIS 6.0. I dug into scraping the interwebs and found Ben's post as well as a post from Steve Sanderson. Both posts did the trick to help me fix the problems I was experiencing. Please keep in mind, since this is a PoC project, I have no budget, but I was able to find a solution using OSS.

+1 Ionic Isapi Rewrite Filter

Here are the steps I went through to get things working:

  1. Install Ionic's ISAPI Rewrite Filter into IIS
    1. Download version the file IonicIsapiRewriter-1.2.14-bin.zip and unzip it.
    2. Copy the IsapiRewrite4.dll file under the /lib folder to C:\Windows\system32\inetsrv.
    3. Create a file named IsapiRewrite4.ini and copy it into the C:\Windows\system32\inetsrv folder.
    4. Use the following template for the INI file. This will be used to rewrite URLs to include a .mvc extension so that incoming HTTP requests will be routed to ASP.NET:

      INI:
      1. # empty URL gets mapped to home controller
      2. RewriteRule  ^/$  /home [R]
      3.  
      4. # needed for URLs one token deep
      5. # map controller parts of urls to .mvc, ignoring the content directory
      6. RewriteRule  ^(?!/Content)(/[A-Za-z0-9_-]+)$   $1.mvc  [I]
      7.  
      8. # needed for URLs more than one token deep
      9. # map controller parts of urls to .mvc, ignoring the content directory
      10. RewriteRule  ^(?!/Content)(/[A-Za-z0-9_-]+)(/.*)?$   $1.mvc$2  [I]

      NOTE: We need two rewrite rules to account for URLs one token deep that do not have a trailing slash. For example, if we excluded the 2nd rewrite rule, the url "/home" would be rewritten internally to "/home$2". I'm not sure if this is intended behavior (PCRE rules don't seem to agree when I try rule 3 here with the previous example), but adding the 2nd rewrite rule prevents this from happening.

    5. Under "Properties" on the website you've created in IIS (via the IISAdmin), select the "ISAPI Filters" tab, and click the "Add" button.
    6. Use "Ionic Rewriter" for the value of the "Name" field, browse to C:\Windows\system32\inetsrv\IsapiRewrite4.dll for the file, and click OK.
    7. Stop the IISAdmin service then start the World Wide Web Publishing Service on the machine.
    8. NOTE: There are more detailed installation instructions in the download with more options, these are just the steps I took.
  2. Create a mapping for the ".mvc" extension in IIS to instruct ASP.NET to service these HTTP requests.
    1. Under "Properties" on the web site you've created in IIS (via the IISAdmin), select the "Home Directory" tab, and then click the "Configuration" button.
    2. Under "Wildcard Application Maps" click the "Insert" button, browse to the file C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll for the value of the "Executable" field, uncheck the box "Verify File Exists", and click the "OK" button.
  3. Add the following method to your web application's globals.asax.cs file in the Globals class:

    C#:
    1. protected void Application_BeginRequest(Object sender, EventArgs e)
    2. {
    3.    HttpApplication app = sender as HttpApplication;
    4.    if (app != null)
    5.    {
    6.       if (app.Request.AppRelativeCurrentExecutionFilePath.Contains(".mvc"))
    7.       {
    8.          app.Context.RewritePath(app.Request.Url.PathAndQuery.Replace(".mvc", ""));
    9.       }
    10.    }
    11. }

  4. Restart IIS just to be neurotic, like me.
  5. Build, publish, and load your application up in a web browser to give it a try.

Using these steps, I was able to get ASP.NET MVC URLs working on IIS without having the change my routes, which was ideal for me. When the upgrade for IIS7 comes hopefully I won't have to do anything too involved.

I hope these steps are helpful to those who want to try to the same thing. If I left anything out, please let me know. Best of luck!

More updates about the new Brevard user group

Brian LeGros | July 20th, 2008 | programming  

Well, after some searching, I've decided to give House of Joe on 192 next to the Melbourne mall a shot for the first meeting of the Brevard user group I'm trying to start. It's open until 11:00 PM on weekdays and has free wifi, so hopefully it'll work out. Thanks to Sebastian for the suggestion.

I've been doing some thinking about the focus on the group. I've decided that rather than focusing exclusively on Adobe technologies, I'd like to shift the focus to rich internet technologies (RIA) including Flex, AIR, AJAX, and possibly Silverlight. I've been messing a lot with jQuery recently, and just like the rest of the masses, I can't get enough of it; I'm sure there are others that feel the same way too. There are other cool APIs that'd I'd like to mess with including the spread over at Google (Data, Charts, Maps, etc.) that can fall under the umbrella of the RIA buzzword as well.

Based on the audience I've seen in Brevard and the types of jobs I see advertised on the job boards, I think this type of group will have a better chance at growth than just an Adobe focused group. My next goal is to pick a day and time that we can meet, then the first meeting's topic, then a hopefully a domain and website. Initially I'm going to focus on just meeting up with people and hacking away at code, but if we get more people joining us, then maybe we can start doing presentations too.

Keep a look out for more info as I continually try to get my act together, and fail at doing so. ;)

Anyone interested in an Adobe group in Brevard?

Brian LeGros | July 7th, 2008 | programming  

As the Adogo has grown over the last year, I've noticed that a few people, like myself, make the trek from the Space Coast into Orlando for our monthly meeting. In an effort to bring the work of the group to Brevard County, I was wondering if anyone would be interested in participating in an Adobe group locally? Initially I'd be interested in just getting together a local coffee shop or pub and doing hackfests with Flex, ColdFusion, AIR, and whatever else we can get our hands on. As attendance grows, maybe we could get into presentations, but until then, I'd like to keep it layback. I'm still looking to stay involved in the Adogo, but who can turn down getting away and coding for a few hours each month.

I'm looking for spots to have the meeting still, but things close pretty early in the Melbourne area; does anyone have any ideas about good joints that could support us? I'm looking into Charlie and Jake's in Suntree or possibly the Sun Shoppe Cafe (coffee shop) in downtown Melbourne. I'd love find something beachside, but I'm not sure where to look. If people are interested we also need to come up with a name, date, and time. Any suggestions?

As I put together more information, I'll post about them here. Please comment and let me know if you would attend. Check back soon for more details.

The LeGros family grows

Brian LeGros | June 29th, 2008 | news  

Well after a couple of years of roughing it alone, my wife and I have decided to bring a new member into the family. See below for our latest addition, Ptosis LeGros (3 months old) a Yorkie-Shi, or Shorkie. We're through the first day ... and beat. We're ready for day two though and all future exhaustion.

Ptosis @ three months

Ptosis @ 3 months

Tipping on your credit card

Brian LeGros | June 26th, 2008 | food  

Recently I picked up an order from a local pizza place and paid with my credit card. When I came in my food was waiting for me, ahead of schedule, and the girl at the counter treated me well, so I left a tip on the receipt. The next day when I got home, I was looking over the pending charges on my card and saw that the charge from the restaurant was more than what I paid. I called up my credit card company to ask about the charge and I learned something new. If a restaurant offers their patrons the ability to tip on their credit card, the restaurant will typically request an authorization on the card for the cost of the bill + a 20% gratuity. When the manager closes out the batch for the night, the cost of the bill + the actual gratuity is then charged to card. I guess the authorization for the tip is a safe guard that the wait/bus/host staff have the potential to get something out of the check as well.

Maybe I'm dense but I never knew that eateries did this since I usually see the charge after the authorization. I'm a firm believer in tipping, but I always like to check my card activity to make sure that people don't take advantage. Learn something new every day.

Moving into the .NET world

Brian LeGros | June 15th, 2008 | programming  

With my latest employer, I have taken the big dive into the .NET world. I've spent most of my career working with ColdFusion, Java, PHP, Flex and dabbled a little bit in the Ruby/Rails and Groovy/Grails world in addition to the obvious set of web technologies and standards that span all of these application languages. My limited experience with .NET was through some undergraduate and graduate work I did with C# as well as helping (if you can call it that) with an ASP.NET a long time ago with a colleague of mine. I am a application developer; even though I dabble in lots of different areas, the bulk of my knowledge is building applications in a corporate IT environment. I focus on implementing business requirements and managing technical concerns as it relates to the software development process. I've had jobs in the past associated with business and management roles but at the core I am a plain and simple application developer. As I've been getting my hands dirty in .NET over the last few months I figured I'd share some of my initial impressions. Please keep in mind, I may be looking at a lot of things in a very naive light, so read what I have as my opinion, ignorant or not.

With context out of the way, I have to say that so far working with .NET hasn't been a negative experience. There is the whole you're stuck with Windows thing, but since I'm in fully entrenched in the MS world now, I've been able to get past it. There have definitely been some nuances to get used to, but nothing extremely difficult to overcome. Here are a few comments on some of the things I've run into thus far:

  • Namespaces in C# aren't constrained by the file system with respect to partitioning your code. Initially this seemed like a nice decoupling, but I've found myself forming more of a dependency on tools to navigate my classes hierarchy rather than just looking into a folder.
  • There is no notion of a shared class path as there is in Java. If you want to get a hold of an assembly to use in your application you've got to find it and pull it in. I think there is a configuration option on an assembly that you can use to help, but I haven't had any experience using it.
  • Assemblies are pretty nice build artifacts. Versioning is addressed out of the box and integrated with the .NET framework. I'm not sure how they stack up against something like OSGI, but I'm enjoying having them around.
  • Everyone says the implementation for generics is better in C# than Java, but as an application developer I don't notice a difference except that I've been told I can use reflection on them in C#. C# also seems to have made a much larger use of them in their core over Java. It seems like stronger typing is a very important practice in the C# world than in my experience with the Java world, but that is probably biased based on how I've used Java.
  • There appears to be a very balanced view on uses for metadata (attributes) in .NET. Annotations in the Java world were a great addition to the language, but sometimes their use comes off as abuse; look at a JUnit 4 test suite class for a great example.
  • There are lots of accepted libraries available that are direct ports from the Java community such as NUnit, NAnt, Spring.NET, CruiseControl.NET, NDocs, log4net, etc. Getting comfortable with these libraries was pretty easy since I'd had experience with the Java equivalents.
  • The help systems in .NET leave much to be desired and make me long for Javadocs, Livedocs, RDoc, or anything else. I find myself clicking through a class definitions on MSDN and after two or three links I can finally get to a list of "members" that belong to a class, only to click another link to load another page to see more about the details of that "member". I have yet to find any easily usable API documentation.
  • .NET has a solid component model available out of the box. WCF is a really simple and tight implementation of a component architecture. Service-orientation is a focus with an emphasis on abstracting away protocols, execution environments, and exposing metadata for a more contractual usage. It has the feel of being an API built around WSDL 2 and many of the WS-* standards, but it goes by many of the concepts, although not by name, identified in Patterns of Enterprise Integration. It's compatible with synchronous and asynchronous operations and did I mention simple to use? I hope to do some posting about it later.
  • Getting used to assimilating applications into the bowels of the OS seems to be core to the .NET mentality. This is probably just a matter of perspective for the developer, but based on the examples I've seen thus far, the user folder, the registry, and Windows\system32 folder are popular hang outs for lots of applications. I've been met by quite a looks of confusion when I mention deploying applications without the use of some type of installer. There is a lot of power that you get from this tight coupling with the OS I've been told. Unlike my previous shops, writing cross-platform applications doesn't seem to be a priority for .NET developers, so tight coupling it is.
  • It took me listening to the episode of SER with Anders Hejlsberg to understand better it, but it appears to be that developing in .NET is meant to be an IDE integrated experience via Visual Studio. Regardless of the aspect of development I've worked with in .NET thus far, the development experience has been fairly consistent. There is always some visual representation of the code available (where applicable) and a debugger is always around and working no matter the context (desktop, web, etc.). At first it was so simple that I felt like I was missing something, but from what I have read and heard, as much work goes into VS as does the .NET framework, if not more. If anyone has used Netbeans for Java web development, it's a very similar experience in terms of its integration with the environment.
  • I've always seen code insight as a supplemental thing, relying on documentation for the majority of my work, but wow, code insight (intellisense) seems to be the major crutch on which a lot of .NET developers place themselves within VS. What's weird is that I don't notice anything different than what you'll experience when working with Eclipse and Java, in fact, the code insight seems to be limited to code only. I have yet to run into a situation where the IDE makes a suggestion on how something could be written or changed as IntelliJ does for Java. I will admit though, maybe I'm missing something.
  • The visual editors in VS seemed to get abused by .NET developers. I say abuse because quite a few .NET developers I've encountered can't talk to me about their code in any other context but how they dragged-and-dropped controls onto a screen and edited properties. Since I don't know the in's and out's of the tools quite yet, having a conversation is tough. I try to communicate in terms of language agnostic principles and patterns but most of the time all I get are blank stares and judgmental comments about how I am over complicating things.
  • MS alternatives exist in terms of the IDE and runtime, but they don't seem to be popular at all. I really like SharpDevelop as an alternative to Visual Studio. It's clean, easy to use, and integrates with a lot of OSS packages out of the box. Mono is available as a Linux-based .NET runtime that has a lot of .NET developers excited because of its potential to allow them to code for the Mac. I don't know any Mac owners that have Mono installed however, so I don't know if it's really a viable cross-platform solution.
  • I have some thoughts on ASP.NET web forms that I want to share, but I'll save that for my next post.
  • The developer community has always been important to me and I feel it's always important to remain active in the community in some capacity. As I've begun attending the local .NET user group meetings, I don't see a lot of topics that are not MS centric. There is no question that MS drives the releases of the .NET framework, but there have been lots of innovations coming out of the community that deserve attention. It feels like there are only a small minority of developers that actually utilize these contributions locally. I have yet to see any presentations on the various unit testing tools, build tools, ORM, IoC, etc. that have come out of this space. I do envy the direct support that MS has for its user groups, but I wonder if my expectations are too high.

In any case, so far the learning curve with .NET hasn't been very steep and when I do get to code I feel fairly productive. I should be posting in the next few days on my thoughts about ASP.NET web forms so I'm sure that will get me flamed, but it's a major part of the puzzle I'm having to work with that I feel needs some attention. Until next time.

Oasis Shaved Ice Extends Their Hours

Brian LeGros | June 12th, 2008 | food  

My wife and I stopped by Oasis Shaved Ice this evening and the owners told us that they are going to be extending their hours until 9:00 PM daily with the exception of 10:00 PM on Fridays. For anyone who has driven by after 8:30 PM on a weekday looking for a snack, this is great news! If you haven't had an opportunity to swing by and give them a try then take the time support a great local business.