Loading user information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading user information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements


rasx rasx Emperor of String.Empty
  • On Windows Programming

    I am over 18 by almost two decades. I consciously made the decision to learn “the way” of .NET because it features the best of OOP (Java) where years and years worth of my data is being held hostage (by Microsoft).

    My training is in the sciences and my discipline is in writing (for humans). This implies that I produce data on a personal level—not just on the level of a resource in some IT shop. And keep in mind that when I say the word data I refer to everything created by the Save As… command as well as DBMS storage. The WinFS world intends to make this mindset famous.

    I started storing my data on the Microsoft platform because Linux was not around in my formative years—compared to the available data management technologies featuring the office analogy (windows, desktops, files and folders—and the DBMS) Microsoft was the Linux of my formative years, during the late 1980s and early 1990s.

    In those days, using a UNIX system meant having academic privileges. Using a Mac meant being stuck with crappy tool like the early version of FileMaker Pro (Access 2.0 was far superior). Using an Amiga meant…

    So Microsoft excelled in providing personal data management tools for “small business”—, which really means that the average citizen can perform data processing tasks that only huge organizations enjoyed. Trying to sell this concept to the general couch potato public and the “average” techie nerd seems to be very difficult. So it makes sense why the people who might fall under these gross categories would “wake up” and reject Microsoft outright.

    I can’t just jump up and leave Microsoft because my data is stored in too many proprietary formats (especially my richly formatted Office documents). So for one last time, I decided to learn a new technology from Microsoft: the .NET platform featuring C#. Now that I know that this tool is available on the Linux platform (and developing on the Mac platform), I am encouraged to invest one more trek up the learning curve. I intend to get my data into standard formats (XML-based formats like DocBook and XHTML) and Microsoft will enjoy my relatively enthusiastic support of their platform and products until this process is complete. Now I do not have to “leave” Microsoft behind I just need to have the tools available to perform data interchange for all platforms I choose to recognize.

    I see myself having a shallow relationship with Microsoft—right now, it’s relatively deep. The depth of this relationship is directly proportional to the shortcomings of their products. Microsoft “wants” me to have a shallow relationship with their products. They want “smart” tools that can guess what I am trying to do and “help” me do what I am trying to do without much thought and study. But at the same time, they “want” me to be dependent on the Microsoft platform.

    The way Microsoft and other large commercial organizations (based on the cultural values of the Roman Empire) design dependency into their products will always find conflict with me. It is an error to assume that the Linux world will not be tempted by the desire for imperial/commercial power. It is an error to assume that I can “leave” Microsoft when I have so much data in their proprietary formats. My awareness of this fact makes me feel trapped not empowered.

    I do not have to “leave” Microsoft I just need to have the tools available to perform data interchange for all platforms I choose to recognize. As of this writing, the .NET platform provides these tools.

  • The Importance of Multi-​Threading Handlers

    Mike Dimmick wrote:
    The new piece is, I think, the BackgroundWorker class.

    Looks useful. I can see a lot of potential with BackgroundWorker.ProgressChanged.

    But what happens when DoWork contains a call to an object with events wired up to the UI thread? What Boolean will InvokeRequired equal inside the event handler(s)?

  • The Importance of Multi-​Threading Handlers

    Simo wrote:
    Interesting question re Forms 2.0.

    Does anybody know if there are improvements to the BeginInvoke / InvokeRequired/Is-my-code-back-running-on-the-UI-thread arena?

    Chris S. and Justin G. send me email.We're close and stuff Wink They assure me that all of this stuff multi-threading handling will be very, very gone in WinForms 2.0. Now Chris has the inside track in Microsoft; he says as much as he is allowed to about this topic. He does not volunteer much information (to me) about exactly how this is going to happen---but he says it's going to happen.

  • The Importance of Multi-​Threading Handlers

    Tuesday, October 26, 2004: Understanding Chris Sells Teachings about Multi-Threading in Windows Forms: The Importance of Multi-Threading Handlers

    Chapter 14 of Chris Sells, his book Windows Forms Programming in Visual Basic .NET (with Justin Gehtland on drums) explains all we need to know about implementing multi-threading designs in all but the most complex Windows Forms. Unfortunately, I had to read this chapter about five times and I had to send several stern emails to Chris Sells (which he generously answered) before I understood these basic bits:

    ·        Creating a worker thread can be an indirect procedure (by calling BeginInvoke) or it can be a direct procedure by getting a new Threading.Thread object. Sells discuses the disadvantages of using the latter method but I find I am able to name a new Threading.Thread object and sets is priority—I will tentatively call these “advantages.”

    ·        Think about implementing multi-threading handlers in the same manner you think about implementing error handling: every method that interacts with the UI thread (and is likely to be called from a worker thread) must be designed with a pattern that interrogates the Boolean InvokeRequired for true. The following is the Chris Sells multi-threading handler design pattern (written with my sense of style):

    Delegate Sub MySubDelegate(ByRef WinForm As MyNameSpace.MainForm)
    Sub MySub(ByRef WinForm As MyNameSpace.MainForm)

        If WinForm.InvokeRequired Then

            Dim del As MySubDelegate _

                = New MySubDelegate(
    AddressOf MySub)

            Call WinForm.BeginInvoke(del, New Object() {WinForm})


            With WinForm

                'TODO: Do stuff to objects on the UI Thread.

            End With

        End If

    End Sub
    'How will Windows Forms 2.0 eliminate the need for this pattern?

    ·        When InvokeRequired is always true, the flawed design is probably calling Invoke() or BeginInvoke() from an object created on the worker thread. The design pattern above avoids making this mistake by clearly showing that it is WinForm making the call (there is, believe me, the temptation to use del.BeginInvoke, which is incorrect—it puts wrinkles in Sells’ Burning Man kilt!).

    ·        Calling back to the UI thread from the worker thread means calling from an object that ultimately derives from System.Windows.Forms.Control that was instantiated by the UI thread.

    ·        The ISynchronizeInvoke interface contains the aforementioned worker-thread-to-UI-thread method invocations and the Boolean indicator that such an invocation is required. As of this writing, only one class implements this interface System.Windows.Forms.Control. Explaining why the ISynchronizeInvoke interface exists in the first damn place would have gone a long way toward why multi-threading handlers are important.

    ·        There is the temptation to make all Windows Forms event handlers multi-threading handlers as well. I find that this design goal creates too much code what with the writing of delegates for every single event handler. Another way is to not set form control properties directly in event handlers but to create a Client Layer of static methods that set Windows Forms controls, each with their delegates and multi-threading handlers.

    ·        When all of the above bits are found to be valid and not addressed by Windows Forms 2.0 kudos to the brilliant author who thunk it all up! Until then, these ideas are all my fault. Sorry, Chris.

  • Salary Raises

    Everyone is making great points in this thread regarding the asking for pay issue. But let's not forget the "technology used" issue. This leads me to evaulate a company's technology plan which is a Warren-Buffet-like assesment of the IT department's ability to use technology over time.

    One of the worst feelings in the world is to paid a great salary but you are convinced that your organization's technology is literally stupid. Unless you know how to hang on quiet desperation, your co-workers at least will get wind of your opinion which could lead to a hostile work environment.

    So I must remember to interview the company when they interview me. I need to understand what they intend to do and what is actually there. The software "speaks" for itself. Since the folks at Microsoft use the word "architect" to describe the master code builders of IT organizations then we should be able to articulate their architectual design within a coherent narrative.

  • I hate computers...

    We'll I am convinced that computers are made by human beings and these creatures constantly add to some historical record written to a harddrive that may crash---but it is often erased and reformatted.

    So I depend on the "historians" of ArsTechnica.com to tell me what a reliable computer system is before I try to build a new computer---or add new parts to my computer. I used to depend on PC Magazine but these guys are too commerical now which means they represent a virtual person we call a corporation (so they write articles for virtual people) while the folks of ArsTechnica (for the time being) are human beings who may or may not be incorporated.

    So my question (that I am sure you are not wont to answer this late in the game) to you is, "What brand of hard drive and motherboard are you using?"

  • WSE 2.0 Services can replace some ​"​old" Windows Services?

    VB6 guys would always brag about creating their first Windows Service. Now, the same VB.NET blokes would brag about creating their first Service—no, not Web Service or Windows Service, just Service. WSE provides this capability. This is attractive to me for the following reasons:

    ·        Code access security “complications” should not be an issue with these services. The assumption here is that the code is started by a privileged user—and the code is called by users of unknown security permissions (outside of the context of WSE security features). We may not have to be so devoted to the principle of coding for least privilege.

    ·        The “old” Windows Service components are bound to its hosting OS per machine while modern Service components “live” in an abstract layer punctuated with SOAP TCP addresses.

    The “DTS assembly” I just built a few days ago, loaded by reflection, looks like it can loaded by WSE instead. I am certain that loading an assembly with reflection has more security complications than simply calling a Service running under higher privileges.

  • The Channel 9 guy's apartment

    Don't let this self-deprecating portrait of the Channel9 Guy fool you. I ran into The Guy at the gym once and this little piece of plastic can push serious weight!

  • Why must MSDN be re-organized every 5 minutes!?

    The help files for VBA in the pre-Internet-hype versions of Office were immaculate tomes of wisdom compared to the rest of the personal desktop world. That's how Microsoft pulled me in...

    Now that "core competency" is getting a bit stale. I depend heavily on third-party web sites to tell me what Microsoft really means about certain issues. This is why I developed the Funky KB (at songhaysystem.com) to keep "cliff notes" on what the hell three or four MSKB articles are talking about...

  • Microsoft targeting younger ​generations.​..

    Hades, yes!

    Hell, yeah!

    That's straight how you roll it and thangs!

    Drop science! Rap out your thesis with the threat of violence!