I got this error today when trying to get-latest version
using a custom get-latest tool we have written at my current place of work. This tool uses
SourceSafeTypelib.DLL binary to communicate with the SS server, and the first
call to GetLatestAllFiles resulted in a COM exception citing “Version Not
Found”

 

A great deal of research went into finding the problem –
was it complaining about file versions? Different tree versions? Label versions??
With almost all avenues exhausted, I looked at the installed version of source
safe.

 

My primary machine (which works) runs SS v6.0c…..and
the virtual machine (which had the problem)? SS v6.0d.

 

Took a stab in the dark – uninstalled 6.0d and
re-installed 6.0c…..and who would have thought it, but that actually fixed
the problem….how bizarre :)

 

 

-x


I wont just link to The Technologist
Manifesto
, I want to make one clear point about this reading that really
stood out for me.

 

Right at the top, the author asserts that there are
two types of business processes – Physical
and Logical.

 

There are two basic types of
processes in business: physical and logical. Physical requires the proximity of
two or more objects which must interact; like someone to load a crate onto a
barge. Logical means it can be done anywhere with an acceptable network
connection (like invoicing the loaded barge).
The only point of IT is to improve physical operations by providing
efficiencies and reducing logical operations by providing automation.

What hit home for me was this statement which so
clearly defined the industry I (and presumably you) work in.

 

I say forget about all the other “goals”
that your company tries to teach you. If you’re striving to achieve these
two targets, I believe your will be successful in IT.

Rule 1: Where a
task requires physical labour, your solution should help to make the task as
efficient as possible

Rule 2: Where a
task requires logical operations, your solution should automate as much as
possible for the personnel
.

 

Seems very simple when you read it but definitely something
that a lot of people easily miss out. To me, this is the stuff that separates developers.
Not just cutting code but understanding the domain and building a solution to
match.

 

 

 

 

—————–

 



Heres one just for the nerds…

You heard right….this “beast” runs at
76KHz and draws its power from 5 potatoes, running at roughly 1 millionth of
the power of a 386 motherboard.

 

http://d116.com/spud/

 

fun fun J

 


And I’m fully aware of it too – sorry :P

 

After coming back from holiday its been hard to get into the
swing of things – I still have over 2000 MSDN blog posts to sort through….

 

 

 

 

 




Sounds weird, right? Not quite :)

 

Imagine if you will, Xerxes sitting at his work desk on a
Saturday LATE afternoon
really pushing to get his work done to meet a looming deadline. At this point
in the story, my current task is to create an SQL query to load the same
information from three separate tables, but return the data as one column in
the result set. (See picture below…

 

 

 

Okay so we have three tables like in the diagram
above….Tables B and C have a foreign key back to Table A. What I needed
to do was grab a list of ALL *_Name fields in each table and have them returned
in one column (because this “Name” field became one of the columns
in an outer query – ie: this also had to be a subquery.

 

At first it looks like a simple INNER JOIN on A_FK –
A_PK but if you do that then you’ll still end up getting 3 columns in the
SELECT clause…

 

Funnily enough the answer is so simple, but eluded me at the
start….Simple set theory dictates that the result of a UNION operation on
any two sets is the conglomeration of those two sets excluding
duplicates….That means I just had to UNION 3 select statements together,
and viola, all values for that “name” across each table came into
one field…(with a bit of field aliasing and inline table’ing :P)

 

For those interested – here is what the SQL looked
like (for obvious purposes, I cant post the real code, but hopefully this
conveys the point)

 

SELECT

           
A.PK,

           
NAMES.Name

           
D.Field,

           
E.Field,

           
F.Field,

           
G.Field,

FROM

           
A JOIN

           
(

                       
SELECT

A2.A_PK AS PK,

A2.A_NAME AS Name

                       
FROM A A2

 

                       
UNION

 

                       
SELECT

B.B_PK AS PK,

B.B_NAME AS Name

                       
FROM B

 

                       
UNION

 

                       
SELECT

C.C_PK AS PK,

C.C_NAME AS Name

                       
FROM C

 

           
) AS NAMES ON NAMES.PK = A.PK

           
JOIN D ON D.D_PK = A.A_PK

JOIN E ON
E.E_PK = A.A_PK

JOIN F ON F.F_PK = A.A_PK

JOIN G ON G.G_PK = A.A_PK

WHERE

           
Blah….

image001.gif
image002.gif


I heard the rumours, but this seems to have sealed it –
employees at MSFT basically “own” blocks of code for themselves.

 

http://blogs.msdn.com/michkap/archive/2005/06/22/431394.aspx

 

Its not that I disagree with the policy, and in fact I’m
a de-factor owner of entire modules at my current
place of work
, but owning a few API’s seems funny – I guess
when we’re talking on the scale of Windows, you’d need to have incredibly
fine granularity of code ownership – the worst thing would be for a bug
to arise in a block of code, and for no one to know what it does or who should fix
it.

 

Just interesting to think….


Eran Sandler has just started blogging….He’s a
pro when it comes to debugging using native-low level debuggers and always has
lots of interesting stuff to say.

 

Read Here!

 

 

 


This
article
over at MSDN discusses the design, architecture and implementation
of the Bungie.NET website. It’s really quite interesting to read how they
leveraged .NET and other technologies to create such a successful site.

 

(Taken from article)

Summary: The Bungie.net
site is the online companion to the wildly successful Halo 2 video game for
Xbox, released in November 2004 by Microsoft. The site also acts as the
community hub for all things related to Bungie games. Built with the Microsoft
..NET Framework, Bungie.net serves up more than 4 million pages per day,
accumulating 300 gigabytes of online game statistics per month from more than 1
million games played daily. Deemed "Most Innovative Design" by IGN
Entertainment in 2004, the site provides innovative ways for users to view game
statistics and details as well as interact with each other through forums and
team Web pages. The release of the Bungie.net site represented a milestone in
online console game play. This case study provides insight into this
accomplishment.

 


Yeap….In what has been dubbed the “Blue
Hat”
conference in US, Microsoft invited several security researches to
demonstrate various aspects of Windows being compromised, in an attempt to show
that the company is serious about squashing security holes…

 

Very interesting to read….

 

 

 


I come from a background of Delphi development, and came
across this article by Steve Trefethen about The Delphi
R&D Development Process

 

Interesting to note that the Delphi IDE builds in only 20
mins….Even more interesting is the fact that all of borland’s tools
(both internal and some external) are written in Delphi…..Hopefully one
day they’ll fix up the Delphi product line and make the IDE actually functional
and productive….compared to VS.NET, unfortunately Borland have a long way
to go just yet…