Dead Fox

Dead Fox

This entry into my literary timeline is meant to be a follow-up to “Drifting on a Life Raft 60 Days after Being Laid Off”—a post representing a huge turning point in my W2-labor-camping career. I was turning from government and going back to the private sector. I was officially wading into the world of .NET shops in Southern California (yes, there was a thing before .NET). This entry was meant to report how successful this effort has been. This effort has been successful: I am now ‘officially’ at the end of the Southern-Californian line in terms of career growth. I have worked at what I consider the biggest and best .NET shops in Southern California—this includes Amgen, 20th Century Fox Filmed Entertainment and PIMCO (I am still here at the moment). I mention these companies by name because these companies (especially Amgen and PIMCO) represent the best Microsoft has enabled in Southern California for the enterprise. I do expect disagreement with this statement and I do exclude super-high-end-boutique shops like Tim Huckaby’s Interknowlogy in San Diego.

For me (personally) my work at 20th Century Fox (probably now entirely called 21st Century Fox) represents my first opportunity to build the .NET application of my very limited W2-at-will-employment dreams. This achievement is huge to me and no bizarre (and quite evil) revisions of history can take it away from me. At Fox I built a Silverlight application on top of RIA services. I built this application in a brown field. This means I built it inside of an older, crappier version of the same application. My new code ate the old code from the inside out (like a parasite). This brown-field experience makes me even more proud of my work because brown-field building is hard: you have to know how the old crap is built while discovering how to build the new crap at the same time. This made the work all-consuming. It was so demanding that I put up with a noisy neighbor for over a year to avoid complicating my life away from Silverlight. I am glad I was not a married man during this project because I would be in the throes of divorce court by now. When younger programmers talk about how “passionate” they are about building software, check with those kids when they get my age and see where the passion lies (most of them would have moved into management to have more time with the wife and kids).

So this entry is meant to be cheerful, celebratory and what they call “positive.” Yet simultaneously I show this photograph of mine. And I declare that this photograph represents my W2 life from the beginning of my career all the way to the present day. This one, “depressing” photograph says it all. One of the first things I am saying is that there is always room for improvement. There is nothing like an old, dilapidated building (with Fox on it) to symbolize this. Somehow, in spite of my vast amounts of experience, it has never (okay, rarely) been the “right” time for me to suggest what an organization can do to improve itself. Some of these folks actually give me the title of consultant and never consult me on anything. You have to get the Black history straight kids: it is not like they trusted me first and then I did something to lose that trust; it is not like I was able to “earn” trust and then did something to lose it. I just showed up and began to work—and the work is supposed to speak for itself without any political campaigning. So um… let us take another look at the whole burning bridges thing. Let us start with a rule that I am pretty much completely dedicated to:

You have to meet people where they are or simply refuse to meet with them.

So, yes, it is true I actively refuse to meet with a great deal of people—most of these people are middle managers of large corporations or owners of small businesses. I can still make myself laugh with the image of a guy walking in an office to meet someone sitting a desk. The guy walks in with a balsa-wood-and-string scale model of a suspension bridge. The guy sits down and starts talking. Eventually the guy sets the bridge on fire, gets up and leaves the room.

My point is that I am certain that the whole burning bridges thing is not always about irresponsibly destroying relationships that might be “useful” later. After being myself in the workplace for over 20 years, I can safely say that burning bridges responsibly and carefully only fails in a totalitarian society monopolized by one dominant organization of efficient oppression. So that means I’ll not be working in China anytime soon (but a lot of so-called democracies are starting to look a lot like China).

Imagine a world completely dominated by a cult of personality around the company that posted on the building of this photograph of mine. See that “executive realtors” sign posted on the building? Over 20 years ago I tried to be a freelance graphic designer in the City of Inglewood (just like this guy named Hannibal Tabu). I saw the horrible logo of this “executive realtors” outfit and offered to change it. I think we did business (I think the company paid me to trace the logo from a bitmap so it can blown up to any size). But my goal of changing the logo was never achieved. What is worse, is that years after I am gone the crappy logo is still there. At some point we can (sometimes) amicably agree to disagree but effectively burn any bridges between us that would allow us to reach agreement. I don’t even remember these people. I just remember the logo. From a time-management point of view, I do not see any loss in that (although ego bounds).

The “executive realtors” sign on the building represents my first forays into business (it also says that, like Hannibal Tabu, I first tried to establish myself as a professional within my Black community—so, in spite of monumental non-recognition of our devotion to ‘our people,’ dudes like me are Black first). The fact that the building in my photo is a Fox movie theater represents where I am now as a professional. Racism aside, these “two worlds” are not far apart—this is why it is so wonderful to see that “executive realtors” sign on that old Fox Theater.

My First XAML Data-Driven UI Recipe

Before XAML in particular and .NET in general, my typical data-driven UI “recipe” was to build on a Tab Control—usually just a bunch of forms in Tabs. The Tab aesthetic is directly connected to the “classic” desktop metaphor—directly coming from Xerox PARC. Next to the desktop there are filing cabinets—and in a drawer of the file cabinets are folders—folders with Tabs.

With the release of Windows 8, Microsoft reinforces what Apple has already started: a move away from the 1920s “modern” office space to the ancient world of the laminar tablet. In the same way the human eye jumps from one space on the surface of stone bas relief to another, our eye can see the flat panel display change in response to our touch. This flat panel aesthetic expressed in XAML leads me to these controls:

  • The DockPanel will allow the ‘root’ panel display to be subdivided into smaller panels and provide dynamic flow resizing (via LastChildFill="True").
  • The Frame will usually be the “last child” of the DockPanel and provide the means to let the eye “jump” from one interactive display to another.
  • The ItemsControl with a WrapPanel template loaded in the Frame takes advantage of the flow resizing literally making the layout of items flexible.

XAML

This four-control approach is not meant to be a Microsoft-only solution. This approach actually comes from Web design (with display: inline-block) and should be replicated in, say, Adobe Flex. The Web influence on this approach can also be seen through the use of the Frame element because it leads to the Page Navigation controls clearly mimicking the loading of HTML pages.

today’s @denisejacobs links

Great resource: A CSS Sticky Footer bit.ly/hKajhJ

Great resource: CSS Fixed Footer http://bit.ly/AWWBf

Great resource: In the Woods – Vertical Centering With CSS http://bit.ly/E8Z42

New posts on http://denisejacobs.com: “On Banishing Your Inner Critic” and “On-Demand Inspiration” #creativity #inspiration

Great resource: 960 Grid System http://960.gs/

Great resource: Responsive web design is boring! | Opinion | .net magazine http://bit.ly/oXpbMt

Check out this SlideShare presentation : Pragmatic responsive design http://slidesha.re/p5BF9C

I’ll be presenting “The Art of Disciplined Creativity” at webafternoon.com in Atlanta 10/22. @kurafire @bendotorg @jenseninman there too!

ASP.NET Web Forms Interview Questions

иконопис
MVP Chalermvong and his session - ASP.NET Performance Up!

Learning how to work with ASP.NET Web Forms is the other thing of “New Things Learned in the Labor Camp”… I’ve avoided confronting ASP.NET “classic” directly for years. Instead, I made the right decision to learn things about Web programming and Web design that Microsoft notoriously undervalued in its professional communication for years until the rise of Scott Guthrie from ASP.NET “classic” to ASP.NET MVC.

Sadly, there is a job market full of IT shops that are deeply invested (often emotionally invested) in ASP.NET “1.9”—the way of seeing the Web through the Microsoft looking glass just before ASP.NET 2.0 was released in 2005.

For years I’ve “run away” from confronting ASP.NET Web Forms directly. The following interview questions I’ve slapped together “finally” engage—directly. By the way to show that I’m super serious about this matter, I’ve literally spent hours over about two weeks building samples for ASP.NET for Web Forms in my studio.

What are ASP.NET Web Forms?

ASP.NET Web Forms is a technology that breaks down a plain-old HTTP Request into a series of clearly defined events (classified broadly under initialization, load and render)—these events describe the “life cycle” of a familiar model, the data-entry form in a Web page. ASP.NET is based on the event-driven programming paradigm made popular and traditional by Microsoft in the 1990s.

What is a ‘Post Back’?

The ‘Post Back’ is the concept developed by Microsoft that stands between the post HTTP verb and the first event recognized by an ASP.NET Page. Typically, the Page.IsPostBack Boolean is checked in the Page.OnLoad event handler. When Page.IsPostBack == false then the get HTTP verb is the request. Microsoft has defined a conventional Jscript function, __doPostBack(), that invokes the ‘Post Back.’ ASP.NET Web Forms seem crude and extravagant in the 21st century when a page-level post action is regarded as expensive and disruptive (ASP.NET AJAX was supposed to remedy this).

Why do ASP.NET controls require a parent form?

Without a parent form element, the ‘Post Back’ concept is not implemented. Conventional hidden fields in the form store event metadata (__EVENTTARGET, __EVENTARGUMENT, __VIEWSTATE).

See also:TRULY Understanding ViewState

What is the AutoPostBack property?

The AutoPostBack property is a Boolean that is apparently defined independently and conventionally in the System.Web.UI.WebControls.ListControl, System.Web.UI.WebControls.CheckBox and System.Web.UI.WebControls.TextBox. When AutoPostBack == true an event associated with these controls (select, check, blur) will cause a Post Back.

See also:
System.Web.UI.PostBackOptions and System.Web.UI.Page.AutoPostBackControl.


super smart msft peeps

What is a Cross-Page Post Back?

By default, an ASP.NET page “posts back” to itself (frequently). A Cross-Page Post Back declares that one Web Form should post to another Web Form—not back to itself. Input captured in the posting page can be captured in the receiving page via the Page.PreviousPage property.

Tip: The Page.IsCrossPagePostBack property is always null. During a cross page Post Back Page.PreviousPage.IsCrossPagePostBack will be true.

See also:
Button.PostBackUrl.

What is a Server Transfer?

An ASP.NET Server Transfer allows a Page executing on the Server to Transfer execution to another Page. It can be thought of as a call to another procedure from the currently executing procedure. In terms of a POCO class, a Server Transfer is a method call in a procedure of one class with a member from another class—the catch is that no arguments can be passed in the method call. After a Server Transfer, the new page running has access to all of the Request, Session and Application-scope data in the old page. Importantly, there is a Page.PreviousPage property which can be used with FindControl() to locate controls on the old page.

According to Microsoft MVP Karl Moore, “So, in brief: Response.Redirect simply tells the browser to visit another page. Server.Transfer helps reduce server requests, keeps the URL the same and, with a little bug-bashing, allows you to transfer the query string and form variables. …Don’t confuse Server.Transfer with Server.Execute, which executes the page and returns the results. It was useful in the past, but, with ASP.NET, it’s been replaced with fresher methods of development. Ignore it.”

See also:ASP.NET Server.Transfer Method

What is a Master Page?

The ASP.NET Master helps keep Web Forms DRY. They share visual elements among several ASP.NET pages providing the “consistent look and feel” Web designers expect. ASP.NET Master pages also centralize HTML page “meta” information, much of the angle-bracketed ceremony that make Web page markup noisy.

How does a Master Page affect the Control.FindControl function?

The ASP.NET Master adds one or more ContentPlaceHolder controls to the visual tree. These in turn demand Content controls, which implement INamingContainer—a “naming container” affects the ID attributes of child controls “inside” the container. So: a control named foo inside a naming container, bar, can be located by Control.FindControl("bar$foo") where Control would be an instance of the Master page in our example.


The ASP.NET Dream Team

How do Web Forms handle Validation?

ASP.NET handles Validation with PostBack-dependent server controls. These server controls share a ControlToValidate property, pointing to the input-related server control to Validate. There are validation controls for marking input as required, checking input for a data type, testing input with a Regular Expression and testing input with custom code.

One little annoyance: custom validators don’t work with blank input—so they must be paired with the validation control for marking input as required (RequiredFieldValidator).

What are Validation groups?

Validation groups allow more than one “validation context” to exist in a Web Form. For example, a layout with a GridView might have an EditItemTemplate with one Validation Group for editing while another form used for inserting new rows into the grid will have another Validation Group. Validation groups are declared with the ValidationGroup property.

What is a “Partial Page Update”?

The “Partial Page Update” is made possible with the UpdatePanel and the ScriptManager, which is the heart of ASP.NET AJAX. This extension to ASP.NET introduced in version 2.0 dramatically reduces the need to do the “classic” PostBack by implementing the “asynchronous PostBack” a.k.a. the “Partial Page Update.”

Today’s @denisejacobs links…


AG test of a great grids system