Blog - Title

April, 2004

  • Fabulous Adventures In Coding

    When Are You Required To Set Objects To Nothing?

    • 52 Comments
    A quick follow up on my earlier entry on the semantics of Nothing in VBScript. I see code like this all the time: Function FrobTheBlob() Dim Frobber, Blob Set Frobber = CreateObject("BitBucket.Frobnicator") Set Blob = CreateObject("BitBucket.Blobnicator...
  • Fabulous Adventures In Coding

    Writing Code On Whiteboards Is Hard

    • 87 Comments
    Work has been crazy lately and I haven't had much time to work on SimpleScript. It's a lot of work starting from scratch! Right now I'm writing a templatized hash table for the binders and other lookup tables. I haven't written templatized C++ for a loooong...
  • Fabulous Adventures In Coding

    Rumours of VBScript's Death Have Been Greatly Exaggerated

    • 29 Comments
    A reader recently left the following comment today which deserves a full and detailed response. (Yep, I'm going to get prolix again.) I teach a Windows network administration scripting course to about 1500 admins and auditors each year...
  • Fabulous Adventures In Coding

    Customer Service Is Not Rocket Science

    • 26 Comments
    (This post has nothing to do with technical matters except insofar as this story happened in geek paradise.) I was down at Fry's Electronics yesterday -- huge electronics warehouse. Geek paradise. Everything from DVD boxed sets to multimeters. Why...
  • Fabulous Adventures In Coding

    A Face Made For Email

    • 19 Comments
    A few weeks ago, Charles Torre and The Scobelizer showed up in my office with a hand-held camera, asked me a bunch of random questions for a couple hours, edited the video into bite-sized chunks and slapped it up on the web . It's a blog,...
  • Fabulous Adventures In Coding

    Plumbing the Depths of .NET For Office

    • 2 Comments
    My lead Eric Carter has started blogging about the work we're doing on VSTO2 . I'm excited that he's taken the plunge into blogging about this stuff for two reasons. First, no one has a broader or deeper technical understanding of the plumbing underlying...
  • Fabulous Adventures In Coding

    SimpleScript Part Five: Named Items and Modules

    • 16 Comments
    Named Items "Named items" are what we call the "top level" objects of the host provided object model. WScript in WSH, window in Internet Explorer, Response in ASP, are all named items. A host tells an initialized script engine about named items...
  • Fabulous Adventures In Coding

    SimpleScript Part Six: Threading Technicalities

    • 20 Comments
    Refresher Course Before you read this, you might want to take a quick refresher on my original posting on the script engine threading model. That was a somewhat simplified (!) description of the actual script engine contract. Let me just sum...
  • Fabulous Adventures In Coding

    SimpleScript Part Three: Engine Skeleton

    • 3 Comments
    Before I get into today's topic I want to quickly address a minor defect that Raymond Chen (who apparently spends his holiday in Sweden doing remote code-reviews, oddly enough) was good enough to point out to me. It is legal to unload a DLL if the only...
  • Fabulous Adventures In Coding

    SimpleScript Part Four: Finite State Machines and Script Engines

    • 11 Comments
    Last time I said that I'd discuss finite state machines (also sometimes called finite state automata, same thing.) The FSM is a fundamental idea in theoretical computer science because it models computing machinery in a very simple, abstract and general...
  • Fabulous Adventures In Coding

    engine.cpp

    • 1 Comments
    #include "headers.h" ScriptEngine::ScriptEngine() { DLLAddRef(); this->m_cref = 1; this->m_thread = threadNone; this->m_state = SCRIPTSTATE_UNINITIALIZED; this->m_psite = NULL; this->m_pNamedItemList = NULL; } ScriptEngine::~ScriptEngine...
  • Fabulous Adventures In Coding

    SimpleScript Part Two: Class Factories Are Also Boring

    • 7 Comments
    Before I get into it, a Lambda poster pointed me at the NullScript project, which is a very interesting illustration of how reverse engineering works. It's an implementation of a "null" script engine -- an engine with no language -- in ATL, which the...
  • Fabulous Adventures In Coding

    You Are Thrilled To Read Today's Blog Entry

    • 13 Comments
    No tech today. Too busy. But this was too precious to pass up: The Greenlake neighbourhood in the north end of Seattle does something really cool; they have one weekend in April that everybody knows is "the garage sale weekend". Everyone who...
  • Fabulous Adventures In Coding

    Runtime Typing in VBScript

    • 1 Comments
    A few short takes today: SimpleScript I wrote the name table logic over the weekend but it is not ready to post yet. For those of you following the conversation in yesterday's comments about whether I should use standard templates...
  • Fabulous Adventures In Coding

    Quotable Quotations, Part Two

    • 11 Comments
    I'm tremendously excited to learn that Joel Silver is producing a sequel to " Dungeons and Dragons ". That movie was one of the cheesiest, chewiest, goofiest and lowest-grossing episodes of Scripting Goes To The Movies ever, and that's saying something...
  • Fabulous Adventures In Coding

    Gretchen and Zoe are cool

    • 1 Comments
    Mike pointed me at Gretchen and Zoe's blog about how we recruit people at Microsoft. I'm really enjoying reading it, both because it is engagingly written and because I'm fascinated by the whole process of hiring people. I only ever see the technical...
  • Fabulous Adventures In Coding

    mutex.cpp

    • 0 Comments
    #include "headers.h" Mutex::Mutex() { m_fInitialized = FALSE; } HRESULT Mutex::Create(Mutex * * ppMutex) { AssertOutPtr(ppMutex); HRESULT hr; BOOL fSuccess; DWORD error; Mutex * pMutex = NULL; pMutex = new Mutex(); if (NULL == pMutex) { hr...
  • Fabulous Adventures In Coding

    engine.h

    • 0 Comments
    #ifndef ENGINE_H // { #define ENGINE_H const DWORD threadNone = 0xFFFFFFFF; // The error has been reported to the host via IActiveScriptSite::OnScriptError const HRESULT SCRIPT_E_REPORTED = 0x80020101L; class ScriptEngine : public IActiveScript...
  • Fabulous Adventures In Coding

    nameditemlist.cpp

    • 2 Comments
    #include "headers.h" NamedItemList::NamedItemList() { this->m_cBuckets = 0; this->m_Buckets = NULL; this->m_pMutex = NULL; } NamedItemList::~NamedItemList() { this->Clear(); if (NULL != this->m_Buckets) delete[] this->m_Buckets;...
  • Fabulous Adventures In Coding

    nameditemlist.h

    • 0 Comments
    #ifndef NAMEDITEMLIST_H // { #define NAMEDITEMLIST_H class NamedItemList { private: class NamedItem { private: NamedItem(); public: ~NamedItem(); static HRESULT Create(const WCHAR * pszName, NamedItem * * ppNamedItem); NamedItem * m_pNext;...
  • Fabulous Adventures In Coding

    mutex.h

    • 0 Comments
    #ifndef MUTEX_H // { #define MUTEX_H class Mutex { private: CRITICAL_SECTION m_criticalsection; BOOL m_fInitialized; Mutex(); public: static HRESULT Create(Mutex * * ppMutex); ~Mutex(); void Enter(void); void Leave(void); }; #endif ...
  • Fabulous Adventures In Coding

    hash.cpp

    • 0 Comments
    #include "headers.h" ULONG ComputeHash(const WCHAR * psz) { AssertReadString(psz); ULONG hash = 0; while (*psz != '\0') { hash = 17 * hash + *psz; ++psz; } return hash; }
  • Fabulous Adventures In Coding

    hash.h

    • 0 Comments
    #ifndef HASH_H // { #define HASH_H extern ULONG ComputeHash(const WCHAR * psz); #endif // HASH_H }
  • Fabulous Adventures In Coding

    dllmain.h

    • 1 Comments
    #ifndef DLLMAIN_H // { #define DLLMAIN_H extern void DLLAddRef(void); extern void DLLRelease(void); extern void DLLAddLock(void); extern void DLLReleaseLock(void); #endif // DLLMAIN_H }
  • Fabulous Adventures In Coding

    classfac.h

    • 0 Comments
    #ifndef CLASSFAC_H #define CLASSFAC_H class ClassFactory : public IClassFactory { private: long m_cref; ClassFactory(); ~ClassFactory(); public: static HRESULT Create(ClassFactory * * ppFactory); // IUnknown STDMETHODIMP QueryInterface...
Page 1 of 2 (26 items) 12