Azure’s Service Bus and EnergyNet (PDC Day 0)


On Day 0 of Microsoft PDC, I attended the Software in the Energy Economy workshop. Much to my surprise (and disappointment), we didn’t talk about energy for the entire first half of the workshop. Instead, it was about Azure’s Service Bus. BAD Microsoft!! It was explained to us by Juval Lowy that he wanted to do it entirely on energy but Microsoft forced him to have half of the talk on the service bus. Now I can understand this from Microsoft, but this should have been clear to the people there. Honestly, I would have much preferred to go to another workshop than to learn about the Azure Service Bus. Cool stuff but my current analysis of it is that it’s way too unreliable (I don’t mean bugs, I mean lack of transactional support) and it is simply missing some of the things that I would want/need in such a system, like queues! There are hacks to implement them, but I don’t want to have such an important foundational part of my architectures built on hacks! Anyways, that can be for another day (gotta get to the keynote).

(more…)



Going to PDC 2009


Yesterday I got the thumbs up that I’m being sent to PDC 2009 by my company! I planned on going whether I was sent or not but it’s nice to not have to foot the bill out of my own pocket this year. In 2005 I was lucky enough that my company covered airfare and hotel while Telerik was generous enough to cover my registration for the conference and the pre-conference. Last year I wasn’t so lucky and had to cover almost all of it out of pocket but that’s what you expect as a contractor.

Here’s what I have to do:
(more…)



How to identify the user your ASP.NET app uses to authenticate as


I was recently asked how to identify the user your ASP.NET application uses to authenticate as. This can be a simple question or a bit more involved. Let’s start with the simple answers first.

Default Accounts:
Windows XP, Windows 2000, and earlier (you should NOT be caring about earlier!):
ASPNET – this is created automatically by the .NET Framework

Windows Vista, Windows 2003, and newer:
NETWORK_SERVICE

Overridden Examples:
Just because that is the default, it doesn’t mean that it is that way for your application. The first place to check is in the Advanced Settings for your Application Pool. This should tell you the account your application will default to if you don’t override it within your application.

Next, you can check your web.config to see if you’re application is impersonating a user. This is the next level of defaults to check. (and perhaps machine.config too, but you should probably NOT be overriding it there!) This will override the above defaults.

Now that you have checked there, the next thing to do is identify what type of IIS Authentication is being used. If anonymous, then you’re done – it will default to the above defaults in that overriding order. If you’re using ASP.NET impersonation, then that should default to the above as well. If you’re using Basic, Digest, Forms, or Windows authentication, then the authentication will be based on the user that the end-user logs in as.

Things can get even trickier if you do things in code, but generally this will figure it out for you.

-Shane



New Indy ALT.NET Site is up


We now have a newly revamped Indy ALT.NET site up and online! While we’re not completely done with it, we are far enough along to go ahead and turn it on for the time being. Very soon we will be filling out some of the interactive portions but for now it is fast and has all of the necessary information there!

So why did we do this? Several reasons…
1. The original site was a wiki system manipulated into being a community-type site. It worked, but was a little strange.
2. The original host was donating their services to us and we had began to overstay our welcome.
3. Our original replacement .NET-based CMS was not as efficient for us to manage as we had hoped.
4. Our original replacement host had very serious availability issues (also donated hosting).

So as a result, we ended up choosing a PHP-based CMS and are paying a little bit of money for some proper hosting. And what you see is the result! A (soon-to-be) proper community site that is very responsive for you, very flexible for everybody, and very easy for us to maintain and update. All-in-all, a good site for the group! :-)

Major kudos go out to Sasha Kotlyar for all of the hard work with getting this up and running! Without him, we’d still have a pretty crappy site! :-)



IndyTechFest registration is now open!


IndyTechFest registration is now open! This year there is a limit of 500 registrations (I believe last year’s was like 400 and it was booked up within just a couple weeks). So I strongly encourage you to register sooner rather than later!

There is a great lineup of speakers and sessions at this year’s IndyTechFest! Some of the speakers I have seen speak before include Paul Hacker, Larry Clarkin, Michael Eaton, Arie Jones, Tom Pizzato, Dan Rigsby, and Bill Steele. There are many other great speakers that I know or have heard of. This should be an excellent event and one that is worth a good long drive to get to!

Some of the sessions that I’m really looking forwards to include Test Driven Development (TDD) w/ VS 2008, Tips and Tricks for the New C#, Tips and Tricks for the New VB .NET, Duplexing WCF in the Enterprise, and Virtualization of SQL Server. There are many other sessions that I’m going to hope to get to but alas, with it being a one-day event, I doubt I’ll get to most of the ones I really want to see. :P

Props to the people who worked hard to make this event possible, including Brad Jones, Dave Leininger, John Magnabosco, Mark McClellan, and Bob Walker, as well as all of the support of the local user groups to help drive the event!

Just as I was wrapping this post up, I received a phone call. Apparently as of 1pm (1 hour after registration opened), nearly HALF of all available registration slots were filled! If you read this post and have not registered, go register NOW and don’t wait or you’ll be left out!



inkubook


A friend and colleague of mine, Eric Willeke, has helped lead a team to create and deploy an interesting new site at www.inkubook.com where an ordinary person can take the pictures they have taken with their digital camera and make a simple and professional-looking bound photo book based on them. Erik has posted a bit more about it here. It’s a great example of a nice, clean, Silverlight 2.0 app that focuses on the end user experience and not on trying to show off the bells and whistles of the platform.

Ignoring the technology, this is a great site and idea! For as little as $14 (softback) to $25 (hardback), you can have the pictures printed and bound into a nice little book. His team has done a wonderful job and this site offers a great little product! If you’ve spent hundreds to thousands of dollars on a trip or vacation, why would you NOT want to dish out another $25 to be able to cherish it and share it with others? Also, if you forgot to buy somebody a souvenir while you were out, this would be a great thing to consider as well!

-Shane

PS. Mom, if you see this and get something like this from my trip to Vegas last weekend, it’s NOT because I forgot to get you something!! ;)



Indy Invades CinArc!!


On Tuesday (July 8, 2008) evening, Sasha Kotlyar, Dean Weber, and I made a spontaneous trip to Cincinnati to check out the CinArc group (not to be confused with this CinARC). This group is Cincinnati’s Architecture User Group and seems to be mostly .NET-based. They are a very new group as this was only their second meeting. They meet monthly on the second Tuesday of the month. Their current meeting-format is that of a fishbowl meeting. You can read more on Wikipedia about this here.

I must say, the three of us Hoosiers really enjoyed ourselves at CinArc! Despite the downpours, rush-hour construction, and construction barrels we had to dodge in the middle of the road, it was great! Oh, and I won a door prize as well! I walked out with a VS2008 Pro license (only had MSDN-based licenses before, now I have a permanent license!). The group is led by Mike Wood, who also happens to lead the Cincinnati .NET User Group. Lots of other people were also in attendance (I’m not even going to attempt to name them because I’m horrible with names and I’ll surely forget some of them but turns out I follow lots of them on Twiter). There was a total of 19 people there with 5 chairs in the middle of the fishbowl (1 moderator, 3 speakers, 1 open). It was great that they veered away from the norm where it was a very interactive discussion and almost everybody participated in it.

The agenda for the meeting was different than what I’ve been used to for user group meetings, and I really liked it! I’m used to food before hand, kicking things off with announcements, then going into the discussion for the rest of the night, and door prizes at the end. What they did, instead, was kick things off with the discussion, about an hour into it take a break for food, kick the second half off with announcements, go back into the discussion after the nice little break, and then door prizes at the end. The trick to accomplishing this is timing on the food and if it can be pulled off, I may actually try to assimilate this style into the ALT.NET meetings! However, one important part of the ALT.NET meetings, I feel, is the social time spent before the meeting. Perhaps we can have snacks and drinks available then and real food available at “Halftime”.

One other thing that was really neat was that the meeting attendees were able to choose the topics to discuss. Ideas were put up on a whiteboard as recommended by the people there, and then everybody voted on the ones that they were most interested in participating in discussion with. There were 3 topics that seemed to be the most popular, and it turned out that we had time to discuss 3 topics. So it worked out perfectly!

As I said before, I had a great time at CinArc and I highly recommend it to anybody who is in the area and is interested in best architecture practices and bouncing ideas off of one another! There were some extremely intelligent guys at this group and it’s great that they are trying to expand knowledge in the community and help one another! I can already see this is going to be a very popular user group in the future! I hope some of those guys come visit some of our Indy events, and I just may try and pick up some Reds tickets some second Tuesday of the month afternoon so I have a good excuse to be in town again for another CinArc meeting! :)

-Shane



What is ALT.NET?


When we were discussing the Indy ALT.NET group’s goals with others, we were asked, “How are you going to distinguish Indy ALT.NET from the Indy .NET User Group?” This was a GREAT question!

In coming up with that answer, I’ve mulled around and tried to come up with a definition for ALT.NET. There are plenty of posts out there that have attempted to do this but the reality of the situation is that there is not yet a single, concrete, agreed-upon answer to this. So as such, I’ll add my thoughts to that cloud of what some people think ALT.NET is.

In trying to define this, I am going to outline the process I went through in coming up with this definition. I think going through the process helps you understand what it is just a little bit better. Here was my first attempt:

The concept of ALT.NET means that you try to use all tools and techniques available in an appropriate way to do your job in the best and most efficient way possible.

The problem with this definition is that it leaves you just as confused as you were before. From this definition you would believe that ALT.NET is the same as being a good software engineer. I believe this definition is a 100% accurate definition but unfortunately, it is 90% useless. So let’s try it again and fill in not just what ALT.NET means but also what it stresses.

The concept of ALT.NET means that you try to use all tools (whether mainstream in your specific industry or not) and techniques available (whether mainstream in your industry or not) in an appropriate way (without overkill) to do your job in the best (as defined in almost any possible way) and most efficient way possible.

With these stresses, this definition starts to make a little more sense, but it’s still not all that useful. Let’s try it again and this time add a lot more to it.

The concept of ALT.NET means that you try to use all tools and techniques available in an appropriate way to do your job in the best and most efficient way possible.

The tools may come from any source whether it’s your industry or not. For example, there may be some tools that Java developers take for granted that are just completely unknown about in the .NET industry. Or perhaps there is a tool used by accountants to ensure calculations are done correctly and that tool would be an awesome yet non-obvious solution for implementing a suite of unit tests for your code.

Like the tools, the techniques may also come from any source whether it’s your industry or not. Perhaps you’re running into some architectural problems of how to lay things out and a VLSI engineer has a technique for laying out blocks of functionally-related items on their boards that an architect could use in laying out their classes.

In addition to these examples, the concept of ALT.NET even takes it one step further. Not only should one look to other industries for a tool or technique, one should also consider developing new tools or techniques to as part of the greater evolution of things. While they’re not ALT.NET-created concepts, “alternative” methodologies such as Domain Driven Design (DDD), Behavior Driven Design (BDD), and Agile Development have not always been around but had to have been dreamed up at some point. I believe ALT.NET encourages the evolution of our industry by encouraging such new “outside the box” concepts to be considered.

Now, one thing to be careful about is overusing these tools and techniques. Just as an architect needs to ensure he/she does not over-architect the system, you must also ensure you do not go overboard with these tools and techniques. They need to be used appropriately and not just for the sake of using them. In fact, often times the KISS methodology applies! When determining what tool or technique to use, you need to ensure you make such a decision to ensure you create the “best” thing you can. Best is a very vague word here that can be defined MANY different ways and that’s for you to decide. Perhaps it means the quickest solution to code. Maybe it means the fastest solution to execute (from a performance perspective). Perhaps it means the cheapest third-party tool that fits the bill. Or maybe it means the easiest for a user to interact with. The “maybes it means” list can go on forever.

Whew! I think that just might be it! I think that just might be a pretty good explanation of what ALT.NET is!


Now, while I believe that is a good definition for it, I think it’s important to discuss one more thing that has been a popular topic of debate. Is ALT.NET divisive? I am going to change the question a little bit and not answer whether it is or not but rather it should be (to me the difference in the questions are due to the rude and perhaps elitist behavior of some individuals and not the fundamental concept of the ALT.NET movement).

So, should ALT.NET be divisive? My answer is a simple “no.”

Let’s go back to my very first definition of what ALT.NET is:

The concept of ALT.NET means that you try to use all tools and techniques available in an appropriate way to do your job in the best and most efficient way possible.

As I stated before, this definition essentially means that you are simply trying to be the best software engineer that you can be! Again, I believe this is a 100% accurate definition. And by this definition, there should be absolutely no division created within our industry because of ALT.NET. This is what all of our peers should be doing. ALT.NET focuses on some non-mainstream things and in some scenarios such things are the “best” way of doing things but there are certainly times when they’re not the “best” way of doing things. The only question that remains is what exacly that “best” word means to you. Let’s use some examples.

Consider that you’re a consultant working on a small application for a non-profit company where the code will later be maintained by college students on a somewhat casual basis. In this case would it make sense to invest in a potentially complex way of architecting the system so that it follows a generic, standard philosophy? Perhaps but probably not if it is going to be too complex for the college students to easily (and safely) maintain.

Now consider that you’re a software development shop that regularly works on custom projects for clients. In this scenario, your business model could be built around efficiently pumping out successful projects in a repeatable fashion. In this case would it make sense to invest in a potentially complex way of architecting the system so that it follows a generic, standard philosophy? Probably so once you have nailed such a thing down you can repeat it regularly to increase productivity in the future.

One more example. Consider that you’re the said software development shop above and you are working on a very critical project with a tight deadline and you have not yet mastered this new architecture. In this case would it make sense to invest in a potentially complex way of architecting the system so that it follows a generic, standard philosophy? I would say probably not. Any significant fundamental change to your current process can introduce some very significant risks. With that being said, many of the topics that ALT.NET covers can introduce significant risks if they’re used in inappropriate situations or are not done well (which can very well happen since they’re not very widely understood in the industry and not many people have much experience with a lot of these things). So you must consider that doing such a thing can be a big risk.

In the last example, I hit on one very big thing and that is that many of the ALT.NET-focused topics bring a lot of risk with them because they are not yet really all that proven to be successful. There are many companies and situations where this is unacceptable and in those cases, the mainstream tools and techniques should probably be considered. This is not to say that the ALT.NET-focused topics are “too difficult” for certain people. It has nothing to do with that at all! It has everything to do with that “best” word. But I think people who determine that the ALT.NET topics aren’t currently “best” for them may still want to consider following the ALT.NET topics for their personal professional development. Increasing your awareness of various things is a good thing, afterall!

Now I want to end this post with a last closing thought. Personally to me, my interest in this ALT.NET movement has two motivations to it:

  1. I want to learn about some of these neat new things that I’ve never heard about before!
  2. I want our Indianapolis development community as a whole to learn about some of these neat new things too!

-Shane


EDIT: 4/30/2008 4:13pm EST
I have been asked for some links on various community sites by some people who are just now being introduced to the ALT.NET movement. Here are a few links to get you started. Over the next day or two I’ll see if I can get a “History of ALT.NET” post up. :)

David Laribee’s coining the term ALT.NET
AltNetPedia.com
MSDN Magazine article on ALT.NET
ASP.NET Podcast Show #103 – ALT.NET with David Laribee



Indy Code Camp was fun!


Indy Code Camp is in its last session now. It was quite fun!

Personally, I really wish Indianapolis would have more events like this! This city is really starved for community software development events, at least applicable to .NET developers. Despite the slumping economy world-wide, the market in Indy is really good for .NET developers, which means we’ve been having a lot of new people moving into the area. The community here is growing quite fast, but we still don’t have many events. Currently we have the monthly .NET User Group meeting, a yearly Indy Tech Fest, and then random events similar to this. I know there is also Microsoft’s DevCares, I believe Crowe Chizek sponsors something, and there will soon be some Indy ALT.NET presentations. We really need more events to satisfy our hunger and the growing number of people in town, though!

But back to topic, I enjoyed Indy Code Camp! We had some really good presenters!

-Shane



Speed up .NET Compact Framework compile time by a LOT!


I was complaining on Twitter about the long time it takes to compile a Compact Framework application and Steve Schoon informed me of a hack you can do to DRASTICALLY speed up the time it takes to compile! You can get the details here.

Read the entire thing so you are aware of what you’re disabling by performing this hack but unless you are constantly flipping back and forth to various different target platforms with your mobile development, you shouldn’t need this feature very often at all! It dropped our compile times down from about 3 minutes to about 10 seconds. It was amazing!

-Shane

Next Page »

Jaxidian Update is proudly powered by WordPress and themed by Mukkamu