Software Geek

March 21, 2008

Implied tags in the IE HTML parser and how that can be interesting.

Filed under: Software

Also see: Language parsing and compiler design doesn’t have to be hard, but boy this book really sucks!

I recently made the verbal error of saying that for the new BASE element changes in IE 7 you had to put your tag inside the HEAD element. Well, someone pointed out to me rather quickly that on Firefox you could just have a bare TITLE and BASE followed by some body content and away you go the page would validate and parse properly. Well, we do the same thing in IE, and it is called implied tags in HTML. There are some gotchas though.

First, I’ll start with the trick… What in the heck is IE doing?
<HTML id=”dumpInternals”><TITLE></TITLE><BASE href=”foo”><BUTTON onClick=”alert(dumpInternals.outerHTML)”>Click Me!</BUTTON></HTML>

That is your boilerplate. When you click on your button there you’ll find that IE is actually putting the TITLE/BASE in the implied HEAD of the document and then putting the BUTTON into the implied BODY. Good stuff, and the document is still perfectly valid. Issues can arise when you do this though because you aren’t necessarily realizing what elements belong in the HEAD and which belong in the BODY and so you might terminate your HEAD enclosure early and put a bunch of random elements that don’t belong in the BODY into the BODY.

This won’t look right without your IE 7 Beta 1, since the BASE element is going to wrap a bunch of stuff, but you can get the gist. The below will show you that the second BASE ended up inside of the BODY. That isn’t good, we don’t look for BASE elements there and it won’t get used. (Read my previous post on IE 6 behavior and you’ll see that it used to get used because of some container magic, but not anymore, we are compliant).
<HTML id=”dumpInternals”><TITLE></TITLE><BASE href=”foo”><BUTTON onClick=”alert(dumpInternals.outerHTML)”>Click Me!</BUTTON><BASE href=”foo”></HTML>

(more…)

The Exception Model

Filed under: Software

I had
hoped this article would be on changes to the next version of the CLR which
allow it to be hosted inside SQL Server and other “challenging”
environments.  This is more
generally interesting than you might think, because it creates an opportunity
for other processes (i.e. your
processes) to host the CLR with a similar level of integration and control.  This includes control over memory usage,
synchronization, threading (including fibers), extended security models,
assembly storage, and more.

< ?xml:namespace prefix = o ns =
"urn:schemas-microsoft-com:office:office" /> size=2> 

However,
that topic is necessarily related to our next release, and I cannot talk about
deep details of that next release until those details have been publicly
disclosed.  In late October,
Microsoft is holding its PDC and I expect us to disclose many details at that
time.  In fact, I’m signed up to be
a member of a PDC panel on this topic. 
If you work on a database or an application server or a similarly
complicated product that might benefit from hosting the CLR, you may want to
attend.

(more…)

Programmers At Work

Filed under: Software

Via Scott Rosenberg (whose book Dreaming in Code I think we mentioned here before), I learn than Susan Lammers is making the interviews from her 1984 book Programmers At Work available on the Web.

Here is how she describes the goals of her new site:

Many people have urged me over the years to do a second Programmers At Work (PAW) with a new generation of programmers and I’ve sketched out the project, made lists of new folks to feature, done inquiries, thought about going back to talk to the guys in the original edition, and other variations. Now with this web site, I will make the original interviews available online, and perhaps it will become the seed for a more “thoroughly modern” approach to the PAW series. What I’m hoping we can kindle on this site is an ongoing exploration and dynamic conversation with the “connected” community of programmers on the web about the creative process in programming.

Who better than the LtU community to contribute to such a conversation?

The first PAW interview posted to the site is the interview with Charles Simonyi , a man whose views of the future of programming, and programming languages, are mentioned here often (though not always with great enthusiasm).


http://lambda-the-ultimate.org/node/2702

I’ve finally settled into my new position on the Internet Explorer team…

Filed under: Software

Also see: Language parsing and compiler design doesn’t have to be hard, but boy this book really sucks!

Also see: Sliced Bananas On Opaque Data

Also see: VS.NET Macro To Group and Sort Your Using Statements

Wow, 7 months since my last post! Well, there is definitely a good reason for the lengthy delays. Back in February a became a full-time member of the Internet Explorer team starting work on IE7 and continuing support for previous versions of the browser. Needless to say, joining any team of this size there is a lot of information to consume before you can start making decent contribution so all of my free time has been spent brining myself up to speed. Hopefully I’ll be able to leverage some of this knowledge and focus some postings on web development and scripting, in addition to my previous topics.

This is still my personal blog where I’ll be posting about all of the interesting things that I’m working on or feel like talking about, so try to keep the browser flames to a minimum. For obvious reasons there will be comments that I won’t be able to respond so if you don’t hear back from me, I’m probably ignoring you, but in a good way.

Well, good to be back, make sure you stick around and look for further posts.


http://weblogs.asp.net/justin_rogers/archive/2005/06/14/412413.aspx

Life Calculus

Filed under: Software

Also see: Dare Obasanjo on C# Anonymous Types

align=right hspace=12/>Yesterday my coworkers redecorated my office.  Pictures
in this blog entry are photos of their work.  Strangely enough, I found myself
quite appreciative of their act of vandalism.  :-)

Today is my 40th birthday.  Like most other days,
I started by walking the dog and making a To-Do list.  However, today’s list
has a special item:

  • Decide whether to have a mid-life crisis or not.

:-)

I’ll confess I am not entirely thrilled about being 40.  It
doesn’t seem that long ago that 40 seemed far away.  Now that it’s here, I
realize that it’s not what I expected.  I thought my life at 40 would be
different.

align=left hspace=12/>Many who know me would assert that I have nothing to
complain about.  And they would be correct.  My life has been filled with
blessings of all kinds, for which I am truly thankful.  I am a published
author.  Most would consider me financially successful.  I am in a career where
I enjoy my work.

But still…

As the old saying goes, nobody lies on their deathbed
wishing they had spent more time at the office.

Like most everybody else, when I was 30 I looked ahead ten
years and formed a picture in my mind.  My life today doesn’t match that
picture very well.  Examples:

  • I thought by now I would be more solid in the quality of
    my relationships with my loved ones and in the practice of my faith.

  • I thought by now I would be a better guitar player.
  • There’s a messy pile in my study that has been there for
    ten years.  (Yes, we moved six years ago.  The heap moved too.)  I thought
    it would be cleaned up by now.

  • I always assumed that by 40 I would have learned to
    exercise regularly and stop eating junk food.

(more…)

Binding to .NET Frameworks Assemblies

Filed under: Software

Also see: Sliced Bananas On Opaque Data

Also see: Applied Metamodelling: A Foundation for Language Driven Development

Also see: From C# to Java: Part 4

Also see: ASP.NET MVC in CodePlex and Extensible Unit Testing

Also see: Uniqueness Typing Simplified

Also see: Silverlight 2 Developer Poster

Also see: LINQ - The Uber FindControl

Also see: The obligatory Halo 2 partial review and thumbs up.

Also see: Versioning/Deploying Unmanaged Files

Also see: A first stab at BaseN encoding with a focus on general alphabet encoding.

Also see: Parallels adds “Express Windows Installation”

Also see: Infrequent blogging

Also see: VS.NET Macro To Group and Sort Your Using Statements

Also see: Stand alone FXCop download

Also see: AppDomains (”application domains”)

Also see: LoadFrom’s Second Bind

Also see: Generating WPF Content with LINQ

Also see: Solving big business problems in our little toolbox application. A use case for Project Distributor.

Also see: A first stab at BaseN encoding with a focus on general alphabet encoding.

Also see: Access to old blogs

Also see: Language parsing and compiler design doesn’t have to be hard, but boy this book really sucks!

Also see: Generating WPF Content with LINQ

By “Frameworks assemblies,” I mean the assemblies that ship with the CLR. But, I’m not counting mscorlib.dll , since it’s special in a different way.

With v1.0 SP3 or later, Frameworks assemblies are unified. That means that the version of those assemblies that you request is ignored - you get the version that matches the loaded CLR. This only applies when the assembly is loaded by version - that is, by assembly display name or static reference (AssemblyRef in the CLR metadata).

For example, if the v1.1 CLR is loaded and you request v1.0’s system.dll, then you’ll get the v1.1 system.dll back. If you load it by path from c:\foo\system.dll, however, then you’ll get c:\foo\system.dll back, not the v1.1 system.dll.

Those assemblies are unified because the owners of the code feel that they are so closely tied to the CLR/mscorlib.dll that they should not be loaded with a different version than they were built against. Additionally, there are some cases where they expect that only one copy of the Frameworks assemblies be loaded in a given process.

If the v1.0 (pre-SP3) CLR is loaded, though, you will get the assembly that you ask for. Unification isn’t done for Frameworks assemblies in that version.

Do not rely on this behavior. You should still fully-specify assembly references with the correct version. That’s just good practice, in general. Besides, if your assembly is loaded in a CLR later than v2.0, those references may not be unified,

Live Person Software: Just one single click and your website visitors are getting into instant message chatting with you.

Also see: Parsing things you don’t understand

Also see: Bloggers in the Mavs Locker Room ?

Also see: Cool Silverlight Momentum Video Posted

so you may get unexpected behavior.
http://blogs.msdn.com/suzcook/archive/2003/07/30/binding-to-net-frameworks-assemblies.aspx

Email Responsiveness

Filed under: Software


Also see: I love ClearContext!!

I’m not sure if this is a universal truth or not, but I suspect it is.

People can’t manage their email.

This isn’t a spam problem or tool problem. This is about people that don’t understand how to deal with mail in a timely fashion and manage their time. I have seen people that proclaim proudly that they have 4,000 messages in their inbox with 1,000 unread items. It must make them feel important to be so popular?

It is time to take a stand. We must demand action.

Jeff Bogdan (a coworker) and I have been trying a new system. We basically compete with each other to keep our inbox as small as possible. We read mail several times a day and try to respond, file, or delete each mail as we read it. The goal - less that 20 messages in your inbox.

It’s amazing - Once you get your email under control the frustration you feel when someone isn’t responsive to your mail is even worse. We are hoping that we can use shame and humiliation as a tool to convince others to follow our lead on agressively managing mail.

This is such a huge deal at a company like Microsoft. We communicate almost exclusively through email. It is not uncommon for people to get 200 mails a day, with some people toping at over 500. I’m sure that many other large companies out there are the same way. People get bogged down in mail, stop responding, and next thing you know you are always walking down to someone’s office asking them to read you mail right away. Or, even worse, you start tagging every mail with a !

  1. Read mail several times a day (not continuosly, but also not only in the AM or PM)
  2. When reading mail try to respond, file, or delete the mail when you first read it. The goal is to touch each mail only once.
  3. Use Outlook (or whatever program is your favorite) to auto-file large mass mailing lists into folders so that they don’t pile up in your inbox and hide important mails.
  4. Keep less than 20 mails in your inbox.

(more…)

Snippet Compiler update

Filed under: Software


Also see: From C# to Java: Part 4

Also see: Parsing things you don’t understand

Also see: Mix 08 Sessions Published

I’ve uploaded a minor update to Snippet Compiler. I also put up an Add-Ins page with the following samples:
  • Web References
  • Folder Browser
  • Settings ToolBar
  • Snippet Repository

http://weblogs.asp.net/jkey/archive/2006/01/29/436800.aspx

I love ClearContext!!

Filed under: Software


Also see: ASP.NET MVC in CodePlex and Extensible Unit Testing

After several months of using the Free version of the ClearContext addon for Microsoft Outlook, I just cant imagine what I would do without it.  It has reduced my email time, kept me more organized, and uncluttered my Inbox better & faster than any ad-hoc system I have devised in the past.

As a developer, I hate it when I have to “code in Outlook”.  If it were up to me, I would ban all email during a project and deal with all communication via instant messenging, Scrum meetings, and whiteboards, but the truth is that email is a neccessary evil especially as a Tech Lead who needs to interface with the Project Manager, Customer, and IT personnel.

Enter ClearContext Information Management System…

First, I set it up to flag emails from my bosses in Red, so I dont miss them.  Plus, for good measure, I have an Outlook rule that sets a FollowUp flag to make sure I dont overlook them.  Also, ClearContext automagically ranks emails based upon my prior history with this person, so I know what to do when I get some nice blue and green colored mail too.

If I receive an email relating to my current project, I simply hit ALT-P to popup the CC dialog and flag it with the topic “projects/MyProject” then either leave it in the inbox for further review, or hit ALT-M to file the message for future reference.    Accordingly, if I receive some corporate or administrative relating email, then I assign it’s topic appropriately and file the message to send it to its respective holding area.  

(more…)

Tagspace: Social Bookmarking for the Whole Web…from Microsoft

Filed under: Software


Also see: Blogs at work

I am tickled pink ’n honored to announce the third release of Microsoft Tagspace *, a social bookmarking solution for technical professionals, like you. With this release, Tagspace becomes Microsoft’s first true social bookmarking application for the whole World Wide Web Web. Learn more about Tagspace and its potential to help you save, recall, and connect to the people, subjects, and Web-based resources that matter most to you here.

With today’s release, you can now use Tagspace to:

  • Tag Practically Anthing on the Web–Apply tags to practically any site on the World Wide Web, excepting those that are known to contain offensive, malicious, and otherwise inappropriate content.
  • Browse Member Tags–See what other users have tagged and view their personal tag clouds, by clicking on their display names.
  • “Tag Drafting”–Subscribe to the RSS feed for a tag (like tagspace ).
  • “Member Drafting”–Subscribe to the RSS feed for other members’ public tagged items (my Tagspace RSS feed here ;-) , by clicking on their names and subscribing to the RSS feeds associated with their tagged items lists. 
  • “Tag Drafting ” and “Member Drafting” are excellent ways to stay up to date , diminish information overload , and approach what I like to call domain omniscience “, at little expense to yourself.

(more…)

Get free blog up and running in minutes with Blogsome
Theme designed by Jay of onefinejay.com