On this page.... RSS 2.0 | Atom 1.0 | CDF
# Wednesday, 30 August 2006

I know the job market for .NET devs right now is really hot, and those with experience typically have a lot of choices.  So let me add another choice to the list.  Yes, I'm talking about Infragistics.  No, they're not paying me to say this.  Well, yeah, they're paying me, but not to say this. Rather than just stick a job description out, I hope you'll let me tell you why I like working for Infragistics.  I've been here nigh on four months, and I'm still liking it, so that's something.

Why I Like Infragistics

I've worked at more than my fair share of companies in my career, sometimes consulting, more often as an employee, and this is the best company I've worked at.  Sure, at other companies there are good people; I've worked with many.  But Infragistics not only has good people, it is a good company--it has good culture and actively works to improve it.

It's not just that it is a software company, though I think that helps.  I've worked at more than one commercial software company, and the cultures between them are as starkly contrasted as light is from darkness, happiness from sorrow.  It's not just its size because I've worked at others about our size, larger and smaller.  It's not just that the dress code is as relaxed as it gets, though that's nice. 

Other companies talk about passion, but here it is ingrained in the culture.  People care about what they are doing and strive to do their best, and it starts at the top.  Probably no one here is more passionate about the company than our CEO and the rest of our management team.  And the enthusiasm spreads into every department, even to folks like me, in case that wasn't obvious.  For me, that makes all the difference--working with positive, enthusiastic, and creative individuals at a company that fosters that kind of an environment.

For those who are still new enough in their career to think that stuff like this isn't important, that salary is all that matters, I hope you can take it to heart from me that probably more than anything--more than salary, more than benefits, more than location--the culture of your company is what makes or breaks whether or not you are happy in your job.  Now I'm not naive enough to think that our culture fits everyone; it won't.  But if you are a motivated and talented individual who likes to be challenged, likes to make a difference, and wants to get experience working with, learning from, and sharing your knowledge with other similar individuals, Infragistics just may be the place for you.

Being a community guy, I also like that Infragistics has done and is doing a lot of community support.  We host the local .NET and Java user groups at our HQ.  We often sponsor and send speakers to code camps and tech fests.  We sponsor user groups worldwide, and if you like being involved in the community, Infragistics goes out of its way to help you in that.  And we're always looking for new ways that we can support our communities, so if you have ideas, shoot them over to me.

Of course, being a geek, I like that Infragistics gives me the opportunity to work on the latest and greatest technologies.  If you're stuck in a job where they're taking the "safe" course of not upgrading, you won't face that problem here.  In fact, we're challenged to be and stay on the edge of the technological spectrum.

And as an aesthetically sensitive person, I appreciate that Infragistics provides a good working environment.  The building is nice; the work area is nice; the equipment is nice, and there is a degree of freedom to make your space your own.  If you want to have medieval action figures along the tops of your cube (like I do), you can do that.  Or if you are into feng shui, so be it. 

In terms of location, I think it's great.  I've already blogged about that.  We're now rounding into fall (already!) and our hottest temps this summer were a few days of maybe a hundredish.  Coming from Tampa, I can now avow that it in fact does not get (or at least seem) as hot and humid here--it was stickier when I left Tampa in early May than it got here the entire summer.  And you don't have to worry about hurricanes really.  Of course, Wally recently counseled me that I might want to wait until I've lived through a winter before I sing the praises of the weather, but I'll take a livable summer and cold winter any day over unbearable, six-month-long summers and mild winters (that don't really even qualify as winters).  I've always said, you can bundle up as much as you need to, but you can only take so much off! 

But again, like company culture, I know there are different strokes for different folks (Joe!). :)  The only reason I mention this is to counteract the common misconception about New Jersey being an undesirable place to live.  If you're into culture, plays, or clubbing, New York City and Philadelphia are just a stone's throw away by car or train.  If you like small town family feel, we've got that, too; I just went to a butterfly festival with my family a couple weeks ago, and they've had others (like insect, peach, etc. festivals all over the place).  If you like history, you can't go far without running into some monument commemorating where Washington did something or where, e.g., some of our founding fathers went to college.  Shopping?  Route 1 is the place to be (or, again, NYC).  Like to travel?  The Newark airport is one of the largest in the US.  Compared to the other places I've lived, it fares quite well on the pros v. cons.  So if the "armpit of the US"/Sopranos stereotype is all that's stopping you from joining us here in central Jersey, don't let it!

What's Available

Now that I know you're chomping at the bit to work for Infragistics, I guess it wouldn't hurt to mention the positions we're hiring for.  You can see a full list of open positions on our careers pages.  You'll need to use the quick links to see the list by location.  Yes, we do have more spots open than at our HQ here in NJ, and if those appeal to you, the more the merrier.  But looking specifically at our HQ openings (and since this is a developer-oriented blog), I'll highlight the Sr. R&D Engineer position for our .NET web controls.  We need someone who is very strong with web UI development and, of course, .NET.  It's a tall order, but I'm sure you're out there.  If you think you're an ASP.NET web UI expert, you should definitely consider it.  That position has challenges that most of us devs never have to face.

We also have some other dev positions in the internal systems department, so if the R&D position doesn't seem like it would fit you, you might check those out.  There is a lot of mobility possible in this company, so you might start in internal systems and then move to other areas that you later find more interesting, e.g., evangelism, R&D, etc., as positions become available. 

It's certainly a fun, interesting, agile, and challenging place to work.  All of these positions involve cutting edge technologies, working with great people, in a great culture.  Maybe you see some other position that's open and interests you, or even if there isn't a perfect fit on the web site but you think you have something to offer a company like I've been describing, you can just send me your resume, and I'll ensure it gets into the right hands.  Yes, we do have a referral program, and yes, I will take you out to lunch if you get hired on as my referral.  I had to mention that because, hey, you wouldn't believe me if I said I'm just doing it to help my company (no matter how true it is). :-p No more waiting.  Do it!

Wednesday, 30 August 2006 19:36:22 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, 23 August 2006

Everybody who has done any cross-browser web development is aware of the many quirks of IE6, so it is good to read, as Scott points out, that the IE team is addressing many of them with IE7.  While it isn't 100% yet, I've noticed that more often than not, if you get it right in Firefox, it looks right in IE7 and vice-versa.  That certainly cannot be said of IE6.

And on that note, I'd like to draw more attention to the IE web developer toolbar, which is mentioned in the IE team's blog.  Those who use Aardvark in Mozilla should definitely give this add-in a whirl.  It's not the same, but it does offer many similar features and some that Aardvark doesn't.  It helps take the guesswork out of troubleshooting layout and styling issues.

Wednesday, 23 August 2006 11:43:45 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Friday, 18 August 2006

Here's a quick tip for something pretty neat in ASP.NET 2.0.  You can specify output cache profiles in the application configuration like so (this is under the system.web configuration section):

<caching>
 
<outputCache enableOutputCache="true" />
  <
outputCacheSettings>
   
<outputCacheProfiles>
      <
add name="StandardPages" duration="300" varyByCustom="browser;culture" />
    </
outputCacheProfiles>
  </
outputCacheSettings>
</
caching>

Then in your Global.asax code, add the following handler:

public override sealed string GetVaryByCustomString(HttpContext context, string custom)
{
 
string[] variances = custom.Split(';');
  System.Text.
StringBuilder response = new System.Text.StringBuilder();
  foreach (string variance in variances)
  {
   
switch (variance)
    {
     
case "browser":
        response.Append(
this.Request.Browser.Type);
       
break;
      case "culture":
        response.Append(System.Globalization.CultureInfo.CurrentUICulture.LCID.ToString());
        break;
      }
    }
 
return response.ToString();
}

Now, on any pages you want to be cached like this, you can just add the output cache directive like so:

<%@ OutputCache CacheProfile="StandardPages" %>

Of course, you can add other profiles for pages that, say, vary by parameters, controls, and the like, but this makes it easy to control the caching of all of a kind of a page via the web.config and also shows how you might set up a profile that varies by browser and culture.  And with an implementation of GetVaryByCustom like this, you can add your own variances and mix and match them in your profiles as desired.  It makes for a pretty flexible caching system.  For instance, you could add a check for authentication and, if authenticated, effectively turn off caching by appending a user ID or name and the current date and time (DateTime.Now.ToString()).  That way pages would be cached for anonymous visitors but for authenticated users, where the content is more dynamic, you might not want to cache.

Friday, 18 August 2006 16:54:02 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, 02 August 2006

I just ran across Ryan Plant's post about the "Web Architect."  He seems affronted at the idea, but this was one of my titles in a former life.  So it's not so surprising to me.  There are indeed a lot of considerations (some of which Ryan talks about) that you have to think about when designing web applications that you don't have to think about in other kinds of applications.  It really does take a specialized set of skills.

That said, I don't think that having those specialized skills would necessarily qualify one as a web architect.  Given my previous thoughts on the subject (illuminated here and elsewhere), many of which seem to echo or be echoed in other publications on the quesiton of what is IT architecture, I tend to think that the web architect role would be a valid role if it was thought of as the individual responsible for a company's web presence.  There are I think distinct questions that have to be thought about in terms of the business and how it is represented on the web (at least on the properties controlled by the business). 

Depending on the company, there may be warrant to have an individual in a web architect role, which would of course assume the knowledge of the specific skills Ryan speaks to, but, more importantly, this role would be responsible to consider how to strategically take advantage of the web to address business needs.  In some companies, such a role may be subsumed into the greater enterprise architect or solutions architect roles, but in others, I could see it being a peer or possibly a report to the enterprise architect and a peer with other IT architects, working with him to coordinate technology application for the business specifically on the web.  This assumes that there is sufficient business need for such a distinguished role, not just a need for the web skill set.

Wednesday, 02 August 2006 14:13:41 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Tuesday, 01 August 2006

I was just reminded via email today that I never came through on my intention to post something about my Oracle ELMAH provider.

There's not a lot to it, and if you want to understand it, just look at the ELMAH docs for how to write a provider.  There are some SQL files in the project that you'll need to run on your Oracle db.  Alternatively, there is a CreateElmahTable static method you can call from code to automate setting the table up.

Note that in addition to your standard connection string, there is a schema attribute you need to set in your ELMAH config to tell Oracle what schema to use for the ELMAH stuff.  Other than that, it should be plug-n-play just like ELMAH.  Enjoy!

Without further ado: Oracle ELMAH Provider (15kb)

 

Tuesday, 01 August 2006 11:31:30 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, 26 July 2006

Okay, so I'm a little late to this bandwagon, but on an email list I'm on, Michael Campbell alluded to Robert McLaws' shell extension idea to run the ASP.NET web development server for any folder.  Then, in a comment on that blog, Chris Frazier provides the code for a console application that overcomes some of the limitations that Robert's idea had and adds the nice feature of opening your default browser to the new root.

This is all fine and dandy, but where's the dang EXE?!  So I took Chris' code, incorporated Daniel Fisher's suggestion for getting the path to the web dev server.  In fact, I took it a step further and created a simple installer so taking advantage of this neat idea is as simple as running an installer.  So without further ado:

OpenCassini.msi (355kb) <-- This will do it all for you, including making it easy to remove via Add/Remove Programs

OpenCassini.zip (11kb) <-- You'll have to manually place the files and modify the .reg file to get it going.

I hope others find this useful and maybe a bit easier than setting all this up on your own.  Also, I'll be happy to share the project with anyone who cares, but there's not much to it beyond what's outlined in Robert's post.

UPDATE: I just found the post that Robert alluded to (too bad it wasn't linked from the original).  Unfortunately, his link is giving me a 404, so maybe my time wasn't totally wasted after all. :)

Wednesday, 26 July 2006 16:48:28 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Thursday, 20 July 2006
I've recently been informed that "the .NET Framework groups are offering another series of Live Meeting presentations called “Live from Redmond”. These talks are given by product team members, so it’s content directly from the program managers and developers on the team. The feedback from the first series that was done in partnership with INETA was overwhelmingly positive so Microsoft has decided to offer another set of talks."  Looking over the list, it looks like there's a lot of good stuff, so I thought I'd pass 'em along.

Client Talks

Date

Title

Speaker

Registration URL

16-Aug

Smart Client: Offline Data Synchronization and Caching for Smart Clients

Steve Lasker

Click here

23-Aug

Windows Forms: An Overview of Windows Forms in Microsoft Visual Studio 2005

Saurabh Pant

Click here

30-Aug

Visual Studio: Developing Local and Mobile Data Solutions with SQL Server Everywhere

Steve Lasker

Click here

13-Sep

(WinFX) Windows Forms: How to Leverage Windows Forms and Windows Presentation Foundation in a Single Hybrid Application

Scott Morrison

Click here

20-Sep

Windows Forms: Solutions to the Most Common Windows Forms Development Challenges

Scott Morrison

Click here

Web Talks

Date

Title

Speaker

Registration URL

25-Jul

ASP.NET: An Overview of ASP.NET and Windows Workflow Foundation Integration

Kashif Alam

Click here

3-Aug

ASP.NET: Building Real-World Web Application UI with Master Pages, Themes and Site Navigation

Pete LePage

Click here

10-Aug

ASP.NET: Creating Web Applications Using Visual Studio 2005 Team System

Jeff King

Click here

17-Aug

ASP.NET Atlas: A Developers Introduction to Microsoft Atlas

Joe Stagner

Click here

22-Aug

Best Practices and Techniques for Migration Visual Studio 2003 Web Projects to Visual Studio 2005

Omar Khan

Click here

24-Aug

ASP.NET: An ASP.NET Developer’s Look at Using RSS

Joe Stagner

Click here

7-Sep

ASP.NET: Under the Covers - Creating High-Availability, Scalable Web Applications

Stefan Schackow

Click here

14-Sep

ASP.NET: Using User, Roles, and Profile in ASP.NET 2.0

Joe Stagner

Click here

21-Sep

ASP.NET: Comparing PHP and ASP.net

Joe Stagner

Click here

28-Sep

ASP.NET: Security Tips & Tricks for ASP.NET Developers

Joe Stagner

Click here

Commerce Server Talks

Date

Title

Speaker

Registration URL

1-Aug

Multi-Channel, Connected Commerce (BTS/CS integration)

Caesar Samsi

Click here

15-Aug

Commerce Server 2007 Overview

Mark Townsend

Click here

12-Sep

Commerce Server 2007 Architectural Deep-Dive

David Messner

Click here

.NET Compact Framework Talks

Date

Title

Speaker

Registration URL

29-Aug

.NET Compact Framework 2.0: Optimizing for Performance

Ryan Chapman

Click here


Thursday, 20 July 2006 20:49:01 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  | 
# Wednesday, 19 July 2006

While reading over the latest issue of Perspectives from the IASA, it struck me my current thinking about philosophy rings true for how I'm thinking about architecture, at least in one rather important aspect.  You see, in considering all of the various philosophical systems developed over human history, it strikes me that there is no one philosophy that suits all people, at least not realistically speaking.

Sure, as a devout Roman Catholic and amateur philosopher myself, I do think, ideally speaking, that Catholicism is the best philosophy for all human beings.  The problem is that, first, not all humans are philosophers.  Second, and vastly more importantly, all philosophers and non-philosophers alike are humans. 

As humans, we're made up of more than just plain ol' objective reasoning.  Indeed, I rather think that we are first and foremost a bundle of nerves and emotions, and only a few among us even try to tame that bundle into something resembling objective and rational thought.  Even those are still far and away subject to the non-rational whims of humanity, including prejudices, presuppositions, and all that other non-rational goo that makes us who we are.

This is why I say, realistically speaking, there is and can be no unifying philosophy that all humans can follow, as much as I might like for it to be otherwise.  I think this much has proven true in that neither by force nor by argument has any one philosophy been able to subdue humanity in all our history, despite attempts at it by both the very strong, the very intelligent, and the very persuasive among us.

If this is true, what is then the best thing that we can do?  Right now, it seems to me that perhaps the best thing that philosophers can do is to try to discover philosophies that are the best for persons with a given background, a given culture, and at a given time.  I don't think this is the same thing as relativism because, first, we can still talk about the best objective philosophy for all humans (even if all humans will never follow it), and second, we can talk about an objectively best philosophy for persons of similar backgrounds, cultures, and times.  We can still say that our philosophy is the best for humanity while realizing that perhaps the best for this person over here is another, given all the factors that have shaped him or her.

About now, my technical readers will be wondering when I'll get back to talking about architecture and how it relates to these ramblings, and, happily for them, here we are.  The most recent issue from the IASA has several articles purporting what it means to be an architect, how to become an architect, and how best to educate for architecture, among other things.  In reading these, I was struck (I should say again) that there doesn't seem to be one unifying idea of what it means to be a IT architect or how to become one.

Certainly, there are commonalities and core competencies, but I think that ultimately, the question of whether or not one can know if he is an IT architect (shall we say, the epistemology of IT architecture) and consequently whether or not you can tell someone else you are one, depends largely on the context of the question.  Just as there are many different industries, company sizes, and corporate cultures, so it seems there should be many different categories of architects to match. 

In an earlier blog post and article this year, I tried to throw out some ideas about what software architecture is and how we should be thinking about it.  I still think that the distinctions I was drawing are valid as are the key differentiators between software architects and developers, and incidentally, I'd suggest that the distinctions are also valid for the infrastructure side of IT.  It seems to me that the key defining aspect of an architect is the ability to tangle with both the business and the technology problems and effectively cut through that Gordian Knot, arriving at the best solution.

If so, then what makes a person an IT architect depends on the business at hand and the technology at hand, not on some presupposed host of experience with different businesses and architects.  The issue I take with Mr. Hubert in his "Becoming an IT Architect" (IASA Perspectives, Issue 4) is that it sounds as if one must have visited all his "stations" in order to know one is an architect.  While he starts out the article saying he is just recounting his particular journey, most of the article smacks of an attempt at generalizing his individual experience into objective truth, in much the same way that some philosophers have tried to draw out the best objective philosophy based on their own experiences and cultures.  In the end, such attempts invariably fall flat. 

Without digging into the specifics of the "stations" that I don't think are core to becoming an IT architect, let's stick to the central proposition at hand (which makes such a specific deconstruction unnecessary), namely that IT architecture at its essence is the previously described weaving of business and technology skill, with an admittedly stronger technical than business bent.  If that is the case, there is no one definition for what it means to be an IT architect, nor is there consequently any one path to become one.  With that in mind, reading Mr. Hubert's story is valuable in as much as one wants to know how to become a software architect at the kinds of companies, projects, and technologies that Mr. Hubert works with today, but it is only one story among many in the broader realm of IT architecture.

Rather than trying to establish some single architect certification that costs thousands of dollars and requires specific kinds of experience to achieve, we should think in terms of what it means to be an architect for a company of this size, with this (or these) primary technologies, this culture, and at this time in the company's life.  Only within that spectrum can we realistically determine the best definition of an IT architect, much like there may be a best philosophy for individuals within the spectrum of particular backgrounds, cultures, and times.

Does this mean we can't talk about skills (truths) that apply to all architects?  I don't think so.  The chief skill is what I've already mentioned (solving business problems with technology), but perhaps we could say that all architects need deep experience and/or training in a technology (or technologies).  Similarly, we could say that architects need training or experience in business in general (those concepts and skills that span different industries).  We might also say that they need training or experience in particular industries, at least one.  These individual truths combine to form something of an objectively best architect, but the specific best architect definition will vary depending on the context.

This kind of talk provides a broad framework for speaking about IT architecture as a profession while leaving room for the specific categories that could be specified to enable better classification of individuals to aid in both education and recruiting.  We already have some of these definitions loosely being developed with such terms as "solutions architect," "enterprise architect," and "infrastructure architect."  However, I feel that these may still be too broad to be able to sufficiently achieve an epistemology of IT architecture.  Maybe "enterprise" is the best one among them in that it historically does imply a large part of the context needed to have a meaningful category within IT architecture, but I tend to think that "solutions" and "infrastructure" are still too vague and lacking context. 

I don't propose to have the solution all worked out, but I do think that the key things, both in philosophy and software architecture, are to provide contextual trappings to determine the most meaningful solution to the problem at hand.  If that means speaking of a software architect for a local, small, family-owned brewery on the one hand, and an infrastructure architect for a multinational, Fortune 500, telecom company on the other, so be it.  But if we can generalize these sort of highly-contextual categorizations into something more usable for education and certification, all the better.  Granted, we won't have categories that sufficiently address every meaningful variation (as is the case with all taxonomies), but as long as we're working forward with the necessary framework of context, I think we'll get a lot closer than many of the current attempts that result in over generalization (and thus lose meaning as categories per se). 

In the meantime, I'd suggest that my assertion that the key distinction is in one's purpose (see the aforementioned article) is the best way to establish a basic epistemology of IT architecture.  I think it is certainly sufficient for individual knowledge and broad group identification, though clearly more needs to be worked out to assist in the development of training, education, and certification that will feed into trustworthy standards in the various categories of IT architecture.

Wednesday, 19 July 2006 22:30:40 (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [2]  | 

Disclaimer
The opinions expressed herein are solely my own personal opinions, founded or unfounded, rational or not, and you can quote me on that.

Thanks to the good folks at dasBlog!

Copyright © 2017 J. Ambrose Little