Fabulous Adventures In Coding
learn.microsoft.com/en-us/archive/blogs/ericlippert
Eric Lippert's Erstwhile Blog
- Posts
- 642 from 1 Sep 2003 to 25 Sep 2024
- Posting
- archived, read-only
- Kind
- personal blog
- Feed
- https://learn.microsoft.com/en-us/archive/blogs/ericlippert/feed.xml
2024 1
2012 42
- A new fabulous adventure
- Shadowcasting in C#, Part Four
- Shadowcasting in C#, Part Five
- Dynamic contagion, part one
- Shadowcasting in C#, Part Six
- He's So Dreamy
- High Altitude
- Every public change is a breaking change
- What is the defining characteristic of a local variable?
- Anonymous types unify within an assembly, Part One
- Anonymous Types Unify Within An Assembly, Part Two
- Bad Metaphors
- What is "binding" and what makes it late?
- Generating Random Non-Uniform Data In C#
- A Simple Puzzle
- The Solution To The Simple Puzzle
- The C# 5.0 beta release is now available
- Why are local variables definitely assigned in unreachable statements?
- Why not automatically infer constraints?
- null is not false
- null is not false, part two
- A brief digression
- null is not false, part three
- GUID guide, part two
- GUID guide, part three
- Announcing Microsoft Roslyn June 2012 CTP
- Persistence, Facades and Roslyn's Red-Green Trees
- Implementation-defined behaviour
- Eric Rambles On About C#, Again
- Foolish consistency is foolish
- The Best Advice I Ever Got
- When is a cast not a cast?
- Should C# warn on null dereference?
- Wackiness ensues
- An "is" operator puzzle, part one
- Fabulous Adventures In Casting
- An "is" operator puzzle, part two
- Static analysis of "is"
- Roslyn September 2012 CTP is now available
- How do we ensure that method type inference terminates?
- Does Not Compute
- Is C# a strongly typed or a weakly typed language?
2011 55
- A method group of one
- Dynamic contagion, part two
- It's still essential!
- Shadowcasting in C#, Part Two
- Roguelike people
- So many interfaces, part two
- What's the difference? Remainder vs Modulus
- Why have a stack?
- Why IL?
- A C# Reading List
- Breaking changes and named arguments
- The Roslyn Preview Is Now Available
- Insanely great
- Async articles
- Keep it secret, keep it safe
- Inheritance and Representation
- What is this thing you call a "type"? Part Two
- What is this thing you call a "type"? Part one
- I'm glad and sad that that's over
- Strings, immutability and persistence
- The curious property revealed
- What curious property does this string have?
- My Buddy Neil Totally Agrees With Me
- Ref returns and ref locals
- Atomicity, volatility and immutability are different, part one
- Read-only and threadsafe are different
- Optional argument corner cases, part four
- Optional argument corner cases, part three
- Optional argument corner cases, part two
- Optional argument corner cases, part one
- Uses and misuses of implicit typing
- Refreshing the Async CTP
- Happy birthday Channel 9!
- So many interfaces!
- Compound Assignment, Part Two
- Dot NET Rocks!
- Compound Assignment, Part One
- Implementing the virtual method pattern in C#, Part Three
- Implementing the virtual method pattern in C#, Part One
- To box or not to box, that is the question
- References and Pointers, Part One
- Guidelines and rules for GetHashCode
- Never Say Never, Part One
- Looking inside a double
- What would Feynman do?
- Optional arguments on both ends
- Strange, but legal
- Curiouser and curiouser
- Spot the defect: Bad comparisons, part four
- Spot the defect: Bad comparisons, part three
- Spot the defect: Bad comparisons, part two
- Spot the defect: Bad comparisons, part one
- Not as easy as it looks, Part Two
- Not as easy as it looks
- Enormous Explosions
2010 71
- Why are anonymous types generic?
- All your base do not belong to you
- Asynchrony in C# 5, Part Seven: Exceptions
- Asynchrony in C# 5 Part Six: Whither async?
- Asynchrony in C# 5 Part Five: Too many tasks
- Asynchrony in C# 5, Part Three: Composition
- Asynchronous Programming in C# 5.0 part two: Whence await?
- Asynchrony in C# 5, Part One
- Continuation Passing Style Revisited Part Five: CPS and Asynchrony
- Continuation Passing Style Revisited Part Three: Musings about coroutines
- Continuation Passing Style Revisited Part Two: Handwaving about control flow
- Eric Lippert, from Microsoft?
- Debunking another myth about value types
- No backtracking, Part One
- The Truth About Value Types
- Ambiguous Optional Parentheses, Part Three
- Is is as or is as is?
- Teach Yourself C# In... how long?
- Eric's solution for old school tree dumping
- Old school tree display
- Graph Colouring, Part Five
- Graph Colouring, Part Four
- Graph Colouring with Simple Backtracking, Part Three
- Graph Colouring With Simple Backtracking, Part Two
- Graph Colouring With Simple Backtracking, Part One
- Spoiler Alert
- Murky Research
- Computing a Cartesian Product with LINQ
- Hide and seek
- Don't repeat yourself; consts are already static
- Live from New Orleans
- Better late than never
- Cast operators do not obey the distributive law
- More Boring Metablogging
- Every Program There Is, Part Nine
- Every Program There Is, Part Eight
- Every Program There Is, Part Seven
- Every Program There Is, Part Six
- Every Program There Is, Part Five
- Every Program There Is, Part Four
- Every Program There Is, Part Three
- Every Program There Is, Part Two
- Every Program There Is, Part One
- Every Tree There Is
- Every Binary Tree There Is
- It's Essential!
- Ignoring parentheses
- Precision and accuracy of DateTime
- Turning a bug into a feature
- Some Last-Minute New C# 4.0 Features
- Knights, Knaves, Protected and Internal
- Socks, birthdays and hash collisions
- Do not name a class the same as its namespace, Part Four
- Do not name a class the same as its namespace, Part Three
- Do not name a class the same as its namespace, Part Two
- Too much reuse
- Attracting Talent
- Careful with that axe, part two: What about exceptions?
- Careful with that axe, part one: Should I specify a timeout?
- What’s the difference between ternary and tertiary?
- Chaining simple assignments is not so simple
- Making the code read like the spec
- How Many Passes?
- Style follows semantics
- Calling constructors in arbitrary places
- Why are unused using directives not a warning?
- What’s the difference between a destructor and a finalizer?
- A Definite Assignment Anomaly
- Why Can't I Access A Protected Member From A Derived Class? Part Six
- Continuing to an outer loop
- Is there such a thing as too much precision?
2009 75
- Constraints are not part of the signature
- What's the difference between covariance and assignment compatibility?
- The Purpose, Revealed
- Always write a spec, Part Two
- Always write a spec, part one
- Closing over the loop variable considered harmful
- Simple names are not so simple, Part Two, plus, volcanoes and fried foods
- Simple names are not so simple
- I have a Fit, but a lack of Focus.
- Begging the question
- What is this thing you call "thread safe"?
- As Timeless As Infinity
- Absence of evidence is not evidence of absence
- What's the difference between "as" and "cast" operators?
- Why No Extension Properties?
- Why does char convert implicitly to ushort but not vice versa?
- String interning and String.Empty
- Why is covariance of value-typed arrays inconsistent?
- Why do ref and out parameters not allow type variation?
- West of House
- What's the difference between a partial method and a partial class?
- What's the difference between conditional compilation and the conditional attribute?
- Sorry about the CAPTCHA
- What's the Difference, Part Five: certificate signing vs strong naming
- What's the Difference, Part Four: into vs into
- What's the Difference? Part Three: fixed vs. fixed
- Iterator Blocks Part Seven: Why no anonymous iterators?
- Queueing Theory In Action, plus, frogs
- Four switch oddities
- Precedence vs order, redux
- Not everything derives from object
- What's The Difference, Part Two: Scope vs Declaration Space vs Lifetime
- What's the difference, part one: Generics are not templates
- Iterator Blocks, Part Six: Why no unsafe code?
- Iterator Blocks, Part Five: Push vs Pull
- Iterator Blocks, Part Two: Why no ref or out parameters?
- Iterator Blocks, Part One
- Color Color
- The correct answer is "no"
- The void is invariant
- Iterators at the Summer Games
- Mmm, Curry
- Why Doesn't C# Implement "Top Level" Methods?
- Use your legs, not your back
- Making it easier
- What does the optimize switch do?
- Fabulous Adventures In Russian
- Alas, Smith and Jones
- Bug Psychology
- When Five Hundred Posts You Reach
- What Would Tufte Do?
- Null Is Not Empty
- Reserved and Contextual Keywords
- Zip Me Up
- The Stack Is An Implementation Detail, Part One
- Five-Dollar Words For Programmers, Part Five: Reification
- Comma Quibbling
- Restating the problem
- Many Happy Returns
- Good Names
- A Book By Any Other Name Would Smell As Sweet
- Reposting Information
- Five-Dollar Words For Programmers, Part Four: Boustrophedonic
- Five-Dollar Words For Programmers, Part Three: Homoiconic
- Loops are gotos
- Locks and exceptions do not mix
- What are the horns for?
- References are not addresses
- Properties vs. Attributes
- Long division
- Why no var on fields?
- Reading Declarations
- Things That Make You Go Hmmm
- Future-Proofing A Design
- Automatic vs Explicit Properties
2008 34
- The Future of C#, Part Four: Yet More Video
- The Future of C#, Part Three: On video, plus the dead-trees edition
- The Future of C#, Part One
- Boring Metablogging, Part Two
- Preventing third-party derivation, part two
- Preventing third-party derivation, part one
- Arrays considered somewhat harmful
- Vexing exceptions
- High maintenance
- Tasty Beverages
- What To Do When The Source Control Server Is Down
- A Face Made For Email, Part Four
- Method Type Inference Changes, Part One
- Method Type Inference Changes, Part Zero
- Precedence vs Associativity vs Order
- Method Hiding Apologia
- A Generic Constraint Question
- Reading Code Over the Telephone
- Mutating Readonly Structs
- Computers are dumb
- Protected Semantics, Part Five: More on immutability
- Yet More Book News
- Why Can't I Access A Protected Member From A Derived Class, Part Three
- Why Can't I Access A Protected Member From A Derived Class, Part Two: Why Can I?
- Translating intentions and mechanisms
- How to not get a question answered
- Why Do Initializers Run In The Opposite Order As Constructors? Part Two
- Why Do Initializers Run In The Opposite Order As Constructors? Part One
- deque.cs
- Immutability in C# Part 10: A double-ended queue
- Immutability in C# Part Nine: Academic? Plus my AVL tree implementation
- Immutability in C# Part Eight: Even More On Binary Trees
- Recent Book News, Part Two
- Recent Book News, Part One
2007 49
- He's Just Sayin'...
- Immutability in C# Part Five: LOLZ!
- Immutability in C# Part Four: An Immutable Queue
- Immutability in C# Part Two: A Simple Immutable Stack
- Immutability in C# Part One: Kinds of Immutability
- Covariance and Contravariance in C#, Part Ten: Dealing With Ambiguity
- A Couple Links
- C# 3.0 Return Type Inference Does Not Work On Method Groups
- Covariance and Contravariance in C#, Part Nine: Breaking Changes
- Covariance and Contravariance in C#, Part Eight: Syntax Options
- Covariance and Contravariance in C#, Part Six: Interface Variance
- Covariance and Contravariance In C#, Part Five: Higher Order Functions Hurt My Brain
- Covariance and Contravariance in C#, Part Four: Real Delegate Variance
- Covariance and Contravariance in C#, Part Three: Method Group Conversion Variance
- Covariance and Contravariance in C#, Part Two: Array Covariance
- Covariance and Contravariance in C#, Part One
- Path Finding Using A* in C# 3.0, Part Four
- Path Finding Using A* in C# 3.0, Part Two
- Psychic Debugging, Part Two
- Psychic Debugging, Part One
- Future Breaking Changes, Part Three
- Future Breaking Changes, Part Two
- Future Breaking Changes, Part One
- Talking About The Weather, Part One
- An Inheritance Puzzle, Part Two
- An Inheritance Puzzle, Part One
- What exactly does 'lifted' mean?
- Inside or Outside?
- Calling static methods on type parameters is illegal, part three
- Calling static methods on type parameters is illegal, part one
- Bad Names
- FYI: C# and VB Closures are per-scope
- Should we produce warnings for unused/uninitialized internal fields?
- Why are overloaded operators always static in C#?
- Even More Conversion Trivia, Part Two
- Even More Conversion Trivia
- Write-only variables considered harmful? Or beneficial?
- Chained user-defined explicit conversions in C#, Part Three
- Chained user-defined explicit conversions in C#, Part Two
- Chained user-defined explicit conversions in C#
- News flash: Instances of anonymous types will be immutable
- Practice thinking like a compiler tester, part three
- Practice thinking like a compiler tester, part two
- Practice thinking like a compiler tester
- Lambda Expressions vs. Anonymous Methods, Part Five
- Free Food! And Meet The Compiler Guy! And Win an XBOX 360!
- Lambda Expressions vs. Anonymous Methods, Part Three
- Lambda Expressions vs. Anonymous Methods, Part One
- The horror! The horror!
2006 22
- Every Number Is Special In Its Own Special Way
- A Face Made For Email, Part Three
- How do I mitigate a SQL injection vuln?
- "Boolean or" or "boolean or"?
- Do Not Call IsBadFooPtr, Indeed
- Why does a recursive lambda cause a definite assignment error?
- Type inference woes, part four
- What Are The Semantics Of Multiple Implicitly Typed Declarations? Part Two
- What Are The Semantics Of Multiple Implicitly Typed Declarations? Part One
- Standard Generic Delegate Types, Part Two
- Standard Generic Delegate Types
- Type inference woes, part three
- Type inference woes, part two
- Type inference woes, part one
- Using undefined variables in JScript
- Visual Studio Tools For Office: Using Visual Basic 2005 with Excel, Work, Outlook and InfoPath
- Writing Code Isn't Rocket Science (It's Worse Than That)
- Odious ambiguous overloads, part two
- Odious ambiguous overloads, part one
- Delegates, Lambdas, Type Inference and Long Playing Records
- The Root Of All Evil, Part One
- Back in the saddle
2005 78
- Regular Expressions From Scratch, Part Eleven: Eliminating Multi-Symbol Rules
- Regular Expressions From Scratch, Part Ten: Magic!
- Regular Expressions From Scratch, Part Nine: A Dream of a Machine
- Regular Expressions From Scratch, Part Eight: The Diagonal Argument
- Regular Expressions From Scratch, Part Seven: Listing All Members Of A Language In Order
- Regular Expressions From Scratch, Part Six: The Insanely Clever Bit
- Regular Expressions From Scratch, Part Five: The Regular Expression Language
- Regular Expressions From Scratch, Part Four: The Kleene Closure of a Language
- Regular Expressions From Scratch, Part Three: Concatenation
- Regular Expressions From Scratch, Part Two: Some Examples of Languages
- Why Can't I Access A Protected Member From A Derived Class?
- Five-Dollar Words for Programmers, Part Two: Orthogonal
- Five-Dollar Words for Programmers, Part One: Idempotence
- Do not use string hashes for security purposes
- FYI, C# 2.0 Has A Breaking Change in Enum Subtraction
- Another C#/LINQ chat, Thursday 1300h Pacific Time
- Resolving ambiguity in C# param passing
- Checking For Script Syntax Errors, This Time With Code
- Checking For Script Syntax Errors
- C# 3.0 is still statically typed, honest!
- Delightful, delicious, DLINQ
- Implementing Event Handling, Part One
- Book Signing at the PDC
- VBScript Default Property Semantics
- Caching Dispatch Identifiers Is A Bad Idea
- Through the Looking Glass
- Fabulous Adventures in C# and VSTO
- Recursion, Part Six: Making CPS Work
- Recursion, Part Five: More on CPS
- Recursion, Part Three: Building a Dispatch Engine
- Recursion, Part One: Recursive Data Structures and Functions
- More on full qualification, this time in C#
- Scripting Type Library Constant Injection Performance Characteristics, Part Three
- The Answer To Last Week's Puzzler
- A Puzzler
- Scripting Type Library Constant Injection Performance Characteristics, Part Two
- Scripting Type Library Constant Injection Performance Characteristics, Part One
- High-Dimensional Spaces Are Counterintuitive, Part Five
- Chronological Index
- High-Dimensional Spaces Are Counterintuitive, Part Four
- I'm So Prolix
- High-Dimensional Spaces Are Counterintuitive, Part Three
- Books, Books, Books
- High-Dimensional Spaces Are Counterintuitive, Part Two
- High-Dimensional Spaces Are Counterintuitive, Part One
- How To Obtain The Name Of The Client From The ASP Server
- What is the relationship between global object enumerators, execution contexts, activation objects, variable objects and this?
- Instance-bound nested classes in JScript .NET
- Bad Recursion Revisited
- How Do Script Engines Implement Object Identity?
- Binary Files and the File System Object Do Not Mix
- Desafinado, Part Five: Getting Down Without Hitting The Bottom
- Desafinado, Part Four: Rolling Your Own WAV Files
- Desafinado, Part Three: Too Many Fifths
- VBScript Quiz Answers, Parts Eleven and Twelve
- A Face Made For Email, Part Two
- VBScript Quiz Answers, Part Eight
- VBScript Quiz Answers, Part Six
- VBScript Quiz Answers, Part Five
- VBScript Quiz Answers, Part Four, Plus, More Trivia!
- VBScript Quiz Answers, Part Three, and RegEx Memory Leak
- VBScript Quiz Answers, Part Two
- VBScript Quiz Answers, Part One
- Why does WScript.ConnectObject not always work?
- Win Fabulous Prizes!
- You Want Salt With That? Part Four: Challenge-Response
- You Want Salt With That? Part Three: Salt The Hash
- You Want Salt With That? Part Two: We Need A Hash
- You Want Salt With That? Part One: Security vs Obscurity
- Fun With Floating Point Arithmetic, Part Six
- That's a Big Transistor
- Fun with Floating Point Arithmetic, Part Four
- Fun With Floating Point Arithmetic, Part Three
- Straight from the source
- Floating Point And Benford's Law, Part Two
- Benford's Law
- Still Scratching The Surface
- Floating Point Arithmetic, Part One
2004 134
- T4: VBScript and the Terminator
- Whidbey Island And Bagel Mathematics
- Ologiology
- VBScript Constants Are Not Hoisted
- Why do built-in JScript functions not appear in the typeinfo?
- Integer Arithmetic in VBScript, Part Two
- Bouncing Zero Bugs, Together
- Democracy in Action
- The National Coin Flipping League Championship Series
- Google Desktop On The Cheap Part One: Nope, That Doesn't Work
- Google Desktop On The Cheap, Part Zero
- Wherefore IDispatchEx?
- Anthimeria weirds languages
- Breadth is sometimes better than depth
- Use vs. Mention in JScript Doesn't Come For Free
- JScript, DNA, and Mad Cow Disease
- The Postmodern Gumballs
- Thirty Years of Backwards Compatibility
- Hostile Exception Filter vs Benign Assert: Who will win?
- "Finally" Does Not Mean "Immediately"
- Error Handling in VBScript, Part Three
- Error Handling In VBScript, Part Two
- Error Handling in VBScript, Part One
- The Attribute Of Manliness
- Solution to Spot the Defect Part Two
- Spot the Defect, Part Two
- Math is Everywhere
- JScript .NET Type Coercion Semantics, Part Four: Coercion at last
- JScript .NET Type Coercion Semantics, Part Three: Assignability
- JScript .NET Type Coercion Semantics, Part Two: Promotability
- JScript .NET Type Coercion Semantics
- Typing Hard Can Trip You Up
- Pop Quiz
- VSTO Web Cast On Tuesday
- Aargh! Part Eight, plus Boring Metablogging
- Recursion and Dynamic Programming
- Why no ++?
- Not Logical Is VBScript
- Eric's Complete Guide To Type Signatures Of Scriptable Object Models
- What I Did On My Summer Vacation
- Going Dark
- Some Quick Notes On Variable Scoping
- Reading Code Is Hard, Part Two
- Reading Code Is Hard
- A JScript .NET Design Donnybrook, Part Two
- A JScript .NET Design Donnybrook
- Aargh! Part Seven
- Rarefied Heights Part Two, Plus Some Random Short Takes
- What's the Difference between WScript.CreateObject, Server.CreateObject and CreateObject?
- JScript .NET Classes Are Serializable -- Surprise!
- You Can't Convert Data Structures To Strings In VBScript Without Breaking A Few Eggs
- Revisionist History
- Original: When Are You Required To Set Objects To Nothing?
- Results Of The Fibonacci Challenge Are In
- Dude, Where's My Asymptotic Order Analysis?
- The Stygian Depths Of Hacked-Together Scripts
- The Rarefied Heights of Mathematical Purity
- Some LΘ℃αℓization Questions
- Aaargh, Part Six: One More Thing About Comments
- Aargh, Part Five: Comment Rot
- SimpleScript Part Seven: Binder Skeleton
- invoke.h
- invoke.cpp
- binder.h
- When Are You Required To Set Objects To Nothing?
- SimpleScript Part Five: Named Items and Modules
- You Are Thrilled To Read Today's Blog Entry
- nameditemlist.h
- nameditemlist.cpp
- mutex.h
- mutex.cpp
- Hash h
- hash.cpp
- Runtime Typing in VBScript
- Quotable Quotations, Part Two
- SimpleScript Part Four: Finite State Machines and Script Engines
- A Face Made For Email
- SimpleScript Part Three: Engine Skeleton
- engine.h
- engine.cpp
- SimpleScript Part Two: Class Factories Are Also Boring
- Gretchen and Zoe are cool
- dllmain.h
- classfac.h
- classfac.cpp
- dllmain.cpp
- assert.cpp
- guids.cpp
- assert.h
- guids.h
- headers.h
- SimpleScript.def
- Aargh, Part Four: There is no part four
- Strolling Around VSLive
- Aaargh! Part Three
- I'm A Travelin' Man
- Revenge of The Cycle Detector
- School days, part two
- School Days, School Days
- Attack of the Undead Cycle Detector
- I'm Putting On My Top Hat, Tying Up My White Tie, Brushing Out My Tails -- In That Order
- Things in my eyes!
- Denne funksjonen er fullstendig ubrukelig!
- Aargh, Part One: A Pirate Walks Into A Bar…
- OOP = Obviously Oxmoronic Posting
- Cargo Cultism, Part Four: Other Disciplines
- Metaprogramming, Toast and the Future of Development Tools
- Cargo Cultists, Part Two
- Mooooore's Laaaaaaw!
- WSF Files, Pedagogic Code, and Lippert's Paradox
- Table Driven Programming
- Randomness
- VBScript and JScript Don't Mix, at least in ASP
- How Does Script Debugging Work Internally?
- Quotable Quotations
- True Confessions of a Language Developer
- Unicode output and the Windows Script Host
- JScript, IE Behaviours and instanceof Redux
- Laugh While You Can, Monkey Boy!
- Eval is Evil, Part Three
- Script And IE Security Part Eight: IDispatchEx
- Why Are So Many Of The Framework Classes Sealed?
- Script And IE Security Part Seven: Other Stuff
- The Triumphant Return of Clinick's Clinic
- Script In IE Security Part Six: Creating Objects With State
- Script In IE Security Part Five: Creating Objects With The IE Security Manager
- Script And IE Security Part Four: Creating Objects Without The IE Security Manager
- Script And IE Security Part Three: Some Object Creation Techniques Are Explicitly Forbidden
- Can you fix my computer?
- Script And IE Security Part Two: Digging Deeper
- Welcome to blogs.msdn.com.
- Code Security Part One: Code Security and IE
- VBScript is to VB as Cheese is to...?
- Virtual Methods and Brittle Base Classes
2003 81
- Multi-cast delegates the evil way
- Once More Into The Breach
- Heads up: Fabulous Adventures will be moving
- The JScript Type System Part Eight: The Last Blog Entry About Arrays, I Promise
- A Grammatical Aside
- Six out of ten ain't bad
- Speeding Can Slow You Down
- The JScript Type System Part Seven: Yeah, you've probably guessed that I wrote the array stuff
- The JScript Type System, Part Six: Even more on arrays in JScript .NET
- The JScript Type System, Part Five: More On Arrays In JScript .NET
- The JScript Type System, Part Four: JScript .NET Arrays
- The JScript Type System, Part Two: Prototypes and constructors
- The JScript Type System, Part One
- Eval is Evil, Part Two
- A Parable
- Eval is Evil, Part One
- Functions are not frames
- Global State On Servers Considered Harmful
- How many Microsoft employees does it take to change a lightbulb?
- JScript Goes All To Pieces
- The Most Boring Story Ever
- Compatibility vs. Performance
- Michael's Security Blog is online
- Attention passengers: Flight 0703 is also known as Flight 451
- Making Sense of HRESULTS
- Constant Folding and Partial Evaluation
- I'm not stringing you along, honest
- The Malware of Ultimate Destruction
- How Bad Is Good Enough?
- Long jumps considered way more harmful than exceptions
- Dead Trees vs. Bits
- Designing JScript .NET
- Digging A Security Hole All The Way To China
- Wrox is dead, long live Wrox
- It Never Leaks But It Pours
- What Everyone Should Know About Character Encoding
- How Do I Script A Non-Default Dispatch?
- Why Is There No #Include?
- WSC vs WSH
- Why Can't I Create The WScript Object?
- Spot the Defect!
- I can't make my script do nothing!
- Eric's Blog for January 279th, 2003
- Let's Get Explicit!
- For-in Revisited
- A Little More on Nothing
- A Whole Lot Of Nothing
- In, Out, In-Out, Make Up Your Mind Already
- What could numeric rounding possibly have to do with MS-DOS?
- Bankers' Rounding
- More on Certificates and Trust Decisions
- Evil Security Twin Powers... Activate!
- I'm a traveling man, don't tie me down
- Error Messages Considered Harmful
- They call me "LoadPicture Lippert"
- JScript eval redux, and some spec diving
- Running Me Ragged
- "For Each" vs. "for in"
- JScript and VBScript Arrays
- Why does VBScript have Execute, ExecuteGlobal and Eval?
- Arrrrr! Cap'n Eric be learnin' about threadin' the harrrrd way
- Hard Core Denotational Semantics
- Why is it a bad idea to put script objects in Session scope?
- How does Active Server Pages use the script engines?
- What are threading models, and what threading model do the script engines use?
- How Do The Script Garbage Collectors Work?
- What are closures?
- Are JScript strings passed by reference?
- Why do the script engines not cache dispatch identifiers?
- What Are "Anonymous Functions" In JScript?
- Are JScript strings passed by value or by reference?
- Smart Pointers Are Too Smart
- Bad Hungarian
- Eric's Complete Guide To VT_DATE
- What are the VBScript reference semantics for object members?
- More On ByRef vs ByVal
- What do you mean "cannot use parentheses?"
- Why does JScript have rounding errors?
- What's Up With Hungarian Notation?
- Eric's Complete Guide To BSTR Semantics
- Fabulous Adventures!