Archives

Archives / 2004
  • APress Bücher richtig günstig

    Am Wochenende bin ich in der Lehmanns Fachbuchhandlung in Hamburg über ein Regal mit vielen interessanten APress-Titel zu sehr günstigen Preisen gestolpert. Statt 49 EUR so um die 12-14 EUR kosten sie. Eine Liste der Titel findet sich hier:

  • Neues Videoformat für Entwickler: dotnetpro.tv

    Vor mehr als einem Jahr habe ich dotnet.tv (bzw. .NET TV) begonnen zu produzieren. Inzwischen sind 8 Folgen erschienen und viele begeisterte Zuschauerstimmen haben gezeigt, dass Video ein geeignetes Medium zur Wissensvermittlung ist und darüber hinaus einfach aus Spaß machen kann.

  • Making of dotnet.tv - Folge 8 - Aus dotnet.tv wird .NET TV

    Der Sommer geht, dotnet.tv kommt. Nach einer kleinen Sommerpause startet dotnet.tv wieder mit einer brandneuen Folge.

    Während Sie in dotnetpro 9/2004 als Trostpflaster für unsere Sommerpause nur einen "best of"-Rückblick auf die ersten 7 Folgen sehen konnten, präsentieren wir jetzt als frisches Thema XML.

    Aber nicht nur das Thema ist frisch, sondern auch der Auftritt von dotnet.tv. Wir haben die Zeit genutzt für ein Redesign.

    Statt monatlich ein Thema in einer Folge zu behandeln, "senden" wir nun wöchentlich. Und statt einer langen Folge (30-40min) pro Thema, werden es nun vier kurze (5-10min) sein. Eine solche Stückelung schien uns günstig, um Ihre Aufmerksamkeitsspanne weniger zu strapazieren. Denn Entwickler im Projektalltag sind wahrscheinlich eher bereit, öfter mal 10min in die "Fortbildung" zu investieren, als sich 40min aus den Rippen zu schneiden.

  • Making of dotnet.tv 7 - Multithreading - Drehtagebuch

    Und wieder ist eine dotnet.tv Folge im Kasten! Puh. Thema: Multithreading. Und gab es neue Herausforderungen zu meistern. Diesmal mussten wir wirklich alles innerhalb von 5 Tage drehen und schneiden und komprimieren. Da gab es kein Vertun. Alles musste vom 24.5. bis 28.5. geschafft sein.

  • A Changed View on Application Architecture: Final Remarks on How to Host Businesslogic

    In the past days I tried to explain, what I think has to change in our application architecture message for the majority of developers now. My main point is: We need to change how we depict the parts of an application (i.e. frontend, businesslogic and backend). We don´t need to introduce new technologies/concepts, but just shift the implicit/explicit emphasize on existing ones.

  • Full duplex continued: Moving closer together

    Knives back in our boots I like Clemens' new post quite bit. Or even: I agree with his solutions for the scenarios depicted.

    However, I know few developers who are going to build such kind of systems within the next 10 years. Or to be honest: I know none.

    That doesn´t mean, I think there are none, but only makes a statement about the 5000+ developers I "touch" each year.

    As useful and necessary Clemens´ solutions are, I don´t think, we can motivate those 5000+ developers to adapt them anytime soon. Plus, I still doubt they make sense for all of them. At least as long as the technology to implement them is not here and easy to use. (Always remember COM+: A good technology and sound concepts below it do not guarantee broad success and adoption of the ideas!)

    This is why I still cling to the notion of in-proc resource components. Or maybe I should call them light weight services? ;-)

    Anyway, I don´t see Clemens and me that far apart in our views. We´re just looking at applications of different scale. This becomes clear, when I say, that Clemens´ "data services" are treated as separate applications in my architectural picture. Just because some component delivers data, I don´t think it can only be a resource component. If it´s big enough (or independent/autonomous enough) sure it can be made into an application of its own. SQL Server for example is an application of its own - but my application should communicate with it thru a resource component wrapping an abstraction layer around its services.

  • Full duplex: How I seem to have tricked Clemens Vasters into mentioning me several times in his blog - but in fact probably just was misunderstood

    Well, well, fellow German RD Clemens Vasters obviously found some time to read my blog between his job as a (probably fulltime) "architecture consultant" and writing "more code on a monthly basis than some full-time application developers"; so in his blog entry he honors me with some mentions of my recent "discoveries".

  • Neue technische Möglichkeiten für dotnet.tv???

    Beim Gespräch heute mit dem Sohn einer Bekannten - Maximilian, 15 Jahre - bin ich heute über ganz neue - oder alte? - technische Möglichkeiten für das Filmdrehen gestolpert. Maximilian hatte mit einer Digitalfotokamera Legofiguren fotografiert und zu Fotocomics zusammengestellt (ähnlich wie bei Bravo usw. die Fotogeschichten). Ich war beeindruckt von seiner Kreativität und fühlte mich erinnert an meine süßen Jugendjahre (war ich damals 12, hm...???), in denen ich einige Stop Motion Filme mit einer 8mm Kamera gedreht hatte.

  • Spans in ObjectSpaces are not enough - Proposal for sparse population of persistent objects

    Matt Warren has provided a look behind the scenes of how features of ObjectSpaces (OS) come into existence in his blog entry "ObjectSpaces: Spanning the Matrix". The entry plus the comments are an interesting read in that they show, how technology features are dependent on single people who advocate them, and how Microsoft watches the market of competive products and needs of developers. Good to know, in the end it´s all just humans at Microsoft :-)

  • Making of dotnet.tv Folge 5 - Drehtagebuch

    Folge 5 von dotnet.tv zum Thema "Code Access Security" ist abgedreht. Und natürlich habe ich wieder in einigen Postings unsere Abenteuer dabei beschrieben. Eine Übersicht der Drehtagebucheinträge findet sich hier:

  • Making of dotnet.tv Folge 5 - Drehtagebuch Tag 3+4

    Donnerstag war für Sebastian und mich ein besonderer Tag: Ganz inspiriert vom gewaltigen Oscar-Erfolg von HdR3 haben wir gleich zwei Videos gleichzeitig gedreht! Zum einen standen Szenen für dotnet.tv 5 auf dem Plan, zum anderen mussten wir noch ein Interview mit Thomas Fickert für den ersten Community Clip drehen.

  • Making of dotnet.tv Folge 5 - Drehtagebuch Tag 1+2

    Kaum war die Folge 4 von dotnet.tv geschnitten, ging es auch schon an die Planung von Folge 5. Da Sebastian ab 10.3. für einen Monat im Ausland ist, müssen wir den Dreh der Folge 5 schon jetzt durchziehen - mit kaum 14 Tagen Abstand zum letzten.

  • Embedding ObjectSpaces Mapping Info in an Assembly

    ObjectSpaces needs three XML documents to completly define the mapping between persistent classes and SQL Server databases. However, keeping these mapping files separate from the application code has the drawback, that mapping info and code/class definitions can get out of sync. You need to remember to always deploy three additional files with your app's assemblies.

  • Thoughts on how to bind to databases, or: Databases as services

    There´s much talk about O/R mapping tools lately in the .NET world. ObjectSpaces are slowly materializing and more and more 3rd party vendors are offering their solutions. But when looking at the different solutions I´m still feeling kind of uneasy. But today I have been able to lay my finger at least on part of the reasons for my uneasyness: I´m not yet satisfied with the way we bind our programs to databases.

  • ObjectSpaces questioned: Should object persistence really be thought of as orthogonal functionality?

    I know, by asking the question in the subject line, some will view me as a haeretic or as naive or something else. But still, I cannot shed the feeling, that striving for this orthogonality - as Microsoft ObjectSpaces (OS) does - could be harmful. (For my exculpation let me say: since the early 90s I have been a fan of ODBMS and I very much like the thought of transparent object persistence. So I´m all in for a good O/R technology.)
     
    Why do I think so? Because I saw what happened to MTS and then COM+. Many developers did not understand, that designing classes to be run in an application server is different from designing class to be run in a rich client (aka winforms client). Microsoft made it too easy (!) to deploy almost any COM object in an app server application. People could do anything they liked, e.g. keep state, have properties in their app server classes. And that made them unhappy in the end, because performance often was low. But not due to a immature technology, but due to misuse.
    So I hope you can agree, that deployment in an app server is not completely orthogonal to the design of my classes. I need to forethink what I´m gonna do with my classes.
     
    The same is true, I now come to think more and more, for persistence. Let me say, at least in many cases. (Maybe sometimes orthogonality is really ok and even desirable. Applications for scientific labs come to my mind, which are more algorithm oriented that database oriented.)
    The cases, where I think, orthogonality is not desirable are the typical business applications, the ERP systems etc. Developers know exactly which classes will be filled from a database. They know their persistent objects from the start of the design on. And which objects need to be persisted does not likely change over the lifetime of an application.
     
    So, why should it be suggested to them: forget your knowledge? As long as they still need to explicitly persist changes and even register new objects with OS for change tracking, transparent persistence is not reached in imperative code. Why then should transparent persistence in deklarative code (type definitions) be so important?
     
    Because there already exist classes, whose objects all of a sudden need to be stored using OS? I doubt it. The amount of work to be done in code is still huge.
     
    Because it is so much easier to not think about persistence when designing a class and leave it to some other guy to come up with a mapping? I doubt it. It puts much burden on the persistence engine. And it keeps the gulf between OO world and relation world wide open, because it suggests: don´t talk to each other. You database guy, do whatever you want. And you OO guy, do whatever you want. My experience is, this leads to poor performance in the end, when trying to bridge the gap.
     
    Or because class design should not be tied to a certain persistence technology, be it OS or some other tool? Well, I guess, that´s the real driving force behind the orthogonality idea.
    But my feeling is, keeping class design absolutely clean and just spread mapping info across several resources, is the wrong solution.
     
    My suggestion would be instead: Give developers a "domain specific language" (DSL) for the definition of persistent classes. No, don´t try to do it in C#/VB.NET with attributes! Because then you would not be free to maybe sometimes derive from a PersistentObject base class. Instead persistent class should be defined in a special language hiding all implementation details from the developer.
     
    Like HTML is used as a special language compiled to IL in ASP.NET. HTML is a DSL for the realm of presentation layer programming. And we´re all pretty happy with that. So why not have a special language for data persistence programming?
     
    I also suggest, this DSL should not be a fully fledged programming language. No imperative code should be able to be written with it. Whatever business logic needs to be added to persistent classes (to make them less anemic ;-), can be added by derivation or aggregation later on.
     
    My conclusion: A DSL would not interfere with how objects are persisted in code. A DSL still would keep the definition of persistent types clean of any persistence tool specifica. A DSL would make it clear to a developer, he´s dealing with a persistent class. A DSL would help close the gap between OO world and relational world.
     
    From my experience what went wrong with the MTS/COM+ message, I´d love to see it done better for solutions to the object persistence problem.

  • Plan for VB3 to VB.NET/IL Converter

    After a couple of meetings with clients still employing VB3 programms, I come to the conclusion, there is need for a "VB3 to .NET" migration tool. There´s still a lot (!) VB3 software running out there - and developers see no way to move it anywhere. Jumping onto the VB6 bandwaggon is not really the thing to do anymore - and an alternative is not in sight.

  • Making of dotnet.tv Folge 3 - Drehtagebuch Tag 5

    Die äußerlich aufregenden Tage des Drehens sind vorbei. Heute haben wir mit dem Schneiden von dotnet.tv Folge 3 begonnen. Weniger Aufregung bedeutet das jedoch nicht. Fast im Gegenteil! Denn jetzt stoßen wir wieder in für uns unbekanntes Gebiet vor.

  • Making of dotnet.tv Folge 3 - Drehtagebuch Tag 2

    Geschafft. Der zweite Drehtag mit wieder 12 Stunden Arbeitszeit liegt hinter uns. Dass wir das Pensum in der Zeit wirklich hinter uns bringen können würden, hätte ich gestern eigentlich nicht gedacht. Es waren noch Szenen von gestern übrig, die wir nicht hatten drehen können, weil in der Lobby des Hilton immer wieder zuviel los war. Zusammen mit den für heute geplanten Szenen ergaben sich eine Zahl von 36 Einstellungen mit z.T. mehreren Abschnitten - gegenüber 28 am ersten Drehtag.

  • Enum login time of users on Windows machine to check for logged on user

    In my previous posting ("Check for logged on user on Windows machine") I showed a WMI-based method to check, if a certain user was logged on. Andreas Häber then suggested in a comment, to use the Win32 API function NetUserEnum instead. Since WMI always sounds to me like a heavyweight technology, I liked the idea to resort to "simple" Win32 API calls to solve the problem. Below you find the result of my attempt wrapped in a VB.NET module.