• Anonymous (unregistered)

    I am quite fond of the implementation of single-threading using multi-threading quite unique.

    At least he left the infrastructure to convert it to multi-threading again, assuming anyone wants to take on all that work.

  • WASABI (unregistered)

    You might want to take a look to the

    component. A quick google search returned this: http://www.bsdg.org/SWAG/DELPHI/0190.PAS.html

  • Sam (unregistered)

    Hey, MJ is still active in the Firebird database world. Maybe that free component is the only piece of code in that miracle which really works as advertised.

  • Tigress (unregistered)

    So, maybe my idea of making a KITT-type scanner out of the activity leds on our switches wasn't so bad after all. ;)

  • Bitter Like Quinine (unregistered)

    I used to work for a High Energy Physics lab writing software for the control system.

    We had one manager who could just never walk past the main control room without 'tweaking' something. So we made up a control screen with meters, sliders and indicators that could be attached to a (real life) knob. Now the manager would wander into the control room, see the eye catching screen (quickly put up by the operators), gently turn the knob until some indicator was more to his liking and walk out again, apparently satisfied that he'd done his bit for the project.

     As far as I know, twiddler.cdf is still there.

  • Martijn Tonies (unregistered)

    Funky! I guess I'm the first that is happy to show up on The Daily WTF :)

     

    Someone contacted me via my blog, I just had a quick look through the source of the component ( I still have it ) and it's dated 10-28-1996.

    Thanks for contacting and letting me know!

    Backlink: http://blog.upscene.com/martijn/index.php?entry=entry061129-203710

     

    --

    Martijn Tonies

    Upscene Productions

     

  • Sean (cs)

    This UDP is lazy.  Someone probably had to manually login and start the application anytime the machine was rebooted.  A real rock star would include a script to automatically login a user session and start the app.

    Some may foolishly question why it would be a GUI instead of a service.  Well, you can't put a useless red status bar in a service now, can you?
     

  • Willbo Baggins (unregistered) in reply to Bitter Like Quinine

    Hrm... -I- work for a HEP lab.

    Trying to figure out if you work with me or not. :-P

    finding all cdf files

  • Volmarias (cs) in reply to Willbo Baggins

    This wasn't funny, this wasn't terrible, it just filled me with more existential dread than Jean-Paul Sartre ever could in college.

  • MrData (cs)

    This further supports my theory that All People, not just Germans, love David Hasselhoff (and KITT).

     

    Sorry, couldn't resist. 

  • Sizer (unregistered)

    I guess the multi-threading through single-threading solution is a better solution for someone who just can't figure out how to do synchronization than the other horrid hack of just inserting sleep()s everywhere near critical code blocks (which are determined to be critical because it tends to crash there).

     

  • pnieuwkamp (cs) in reply to WASABI

    Anonymous:
    You might want to take a look to the component. A quick google search returned this: http://www.bsdg.org/SWAG/DELPHI/0190.PAS.html
    Hmm, hsbos, Hogeschool 's Hertogenbosch.. I got my Bachelor of Science there. They merged and renamed it Avans Hogeschool a few years back though.

     At work I have to mainain a monstrosity like this (not the component, the processing engine), it has a flashing beeping userinterface if (or should I say when) something goes wrong, whilst emailing, texting (through an email2sms gateway) and dialing supervisors at the same time. It consists of 1 HUGE function (aprox. 5k LOC) that downloads from ftp, reads files, checks hundreds of things, and it does so in the most procedural and spagetticodish way possible, using tens of global variables, all wrapped in _ONE_ try / empty catch...

     Fortunately, even though the code is still a mess, it's pretty stable after a lot of hard work and cursing the one who wrote it, and we rarely have to change anything anymore.

  • joe_bruin (cs)

    I have created a new programming paradigm.  I shall call it Serial Threading.  With Serial Threading you need none of the confusing and difficult-to-use locking, signalling, and waiting that plague current multithreaded programming systems.  This is designed to simplify multithreaded programming and reduce the obscure errors that one often gets when multiple threads are trying to do something at the same time.

    example code:

    /* serially threaded application running a producer thread and a consumer thread (not at the same time, of course) */
    do
    {
      producer_thread_main_loop_iteration();
      consumer_thread_main_loop_iteration();
    }
    while(!done);

  • Ghost Ware Wizard (cs)

    ARGH

    the "Ultra Dedicated Programmer" working on "His" engine was the in-house idiot/expert right? Especially since these people, self-proclaimed gurus at vapor ware, basically *look* good "His" engine worked right?  Translation: Only the "Ultra Dedicated Programmer" was the one to use it, or could use it properly.  Wtf #1 is the obvious "make it so others can't maintain it for job security" and wtf #2 is he left telling others to tweek it without actually *using* it....

     <Idiots are everywhere.  They keep following me around/>

     

  • Ghost Ware Wizard (cs) in reply to Bitter Like Quinine

    I love it :)

  • miraculous (unregistered)

    "Surviving after being shot twelve times, thrown from an airplane, landing on a rosebush with a hornets nest inside, dragged out to the river by a bear, carried downstream over Grade VI rapids, and spit out to the ocean for a three-day tread"

     

    Know thats miraculous....

  • miraculous (unregistered) in reply to miraculous
    Anonymous:

    Know

    Now

    *Dolt*

  • Jman (unregistered) in reply to Bitter Like Quinine

    Ha! Nice.  Also, I probably know the person that you are speaking about, since I also work for the CDF collaboration.  I'm guessing you were talking about the CDF control room next to the cloud chamber?

  • Richard C Haven (unregistered) in reply to Ghost Ware Wizard

    There are two ways of constructing software: one way is to make it so simple that that there are obviously no deficiencies; the other way is to make it so complicated that there are no obvious deficiencies. -- Charles Hoare

  • Michael Bolton (unregistered) in reply to Martijn Tonies

    So what's the over/under on when Martijin will get a cease and desist from Intertrode for posting their source code?

  • Wuggy (unregistered) in reply to joe_bruin
    joe_bruin:

    I have created a new programming paradigm.  I shall call it Serial Threading.  With Serial Threading you need none of the confusing and difficult-to-use locking, signalling, and waiting that plague current multithreaded programming systems.  This is designed to simplify multithreaded programming and reduce the obscure errors that one often gets when multiple threads are trying to do something at the same time.

    Sounds like Active Objects to me. :)

    http://en.wikipedia.org/wiki/Active_objects

  • Corporate Cog (unregistered) in reply to WASABI

    I can't help but complain about Delphi (now known as BDS).  I've been working with it for years (I know, I've nobody to blame but myself).  I've developed several of my own components, and tried to build and install this one.  I just couldn't figure out how to get it to appear on the "component pallette" to save my life.

    Damn I'm glad Delphi/BDS is dead...
     

  • jer (unregistered)

    Martin?

    http://blog.upscene.com/martijn/index.php?entry=entry061129-203710

  • JonnyBoy (cs)

    K.I.T.T., get me outa here!!!!

  • jer (unregistered) in reply to jer
    Anonymous:
    Martin?

    http://blog.upscene.com/martijn/index.php?entry=entry061129-203710

    sry forgot to link :)

    http://blog.upscene.com/martijn/index.php?entry=entry061129-203710

  • GrandmasterB (cs) in reply to Corporate Cog

    Anonymous:
      I've been working with it for years...I just couldn't figure out how to get it to appear on the "component pallette" to save my life.

    If you've been working with Delphi 'for years' and cant figure out how to register a component, you are either a liar or a complete dimwit who shouldnt be allowed near a computer.  Add a couple lines of code in your source telling it on what tab you want it to go, and then select 'install component' from the menu.  Wow, so tough.  My goodness, how do you manage to feed yourself on a day to day basis?

    Damn I'm glad Delphi/BDS is dead...

    Somebody better tell CodeGear...

    I've never understood this fascination with declaring Delphi's death.  Its unlike any product I can think of in this regard.  I have bookmarked usenet posts (via google groups) going back to the mid 90's proclaiming it dead.  Why do people care?  If you dont like it, use C++ or Java instead.  Me, I'll happily continue to use Delphi and be more productive than the C++ programmers who work for my competitors.

     

  • utu (cs) in reply to Sean

    Sean:
    Some may foolishly question why it would be a GUI instead of a service.  Well, you can't put a useless red status bar in a service now, can you?

    If you write it as a service, you can make it launch a nice GUI (since services can interact with desktop - any desktop) for each and every user that happens to log on the machine no matter if they want it or not - plus make it nearly impossible to get rid of. And you can have a uniquely useless red flashy status bar in that GUI if you so wish :)

  • darin (cs) in reply to Sean
    Sean:

    This UDP is lazy.  Someone probably had to manually login and start the application anytime the machine was rebooted.

    The of the only Windows program I ever had to write involved a service to send some incoming mail to our application.  This used Microsoft's MAPI component that communicated with their Exchange mail server.  This was supposed to be a completely non-interactive service, running all the time.  I'm not all that familiar with Windows, but I researched forever trying to figure out how to get this thing to run as a service without first logging in, and I couldn't do it.  It could run as a service as I recall, but it would only start if someone was logged in first.  The snag was that you had to use a normal windows event loop, which didn't work well with services.  This may have been fixed over time, but back then people told me that I was basically stuck.

    So I basically had to suck it up.  Everytime I told a customer "yes, you have log into your computer after it reboots so that the service can run" I could feel them staring at me like I was incompetent or lazy.  People don't like to hear that you can't fix their application, or that another mail server would fix the problem, etc.  They were already annoyed enough that the installation instructions required a service pack to be applied...

  • Anony Moose (unregistered) in reply to Wuggy

    Anonymous:
    Sounds like Active Objects to me. :)

    Then you need to read more carefully, and understand what you're talking about.  ;)

    The point to active objects is that the thread that sent the request continues running while the request is executed simultaneous in a second thread, possibly even on a separate processor for genuine parallel execution. So a thread can send multiple requests to multiple genuine threads, do its own work, and only then need to wait for its requests to finish executing.

    WTF-style "serial threading", on the other hand, requires the thread that sent the request to wait for the request to be executed. Which is clearly very different because it doesn't include the important element of active objects, which is "two threads executing in parallel".

  • Mikademus (cs) in reply to Anony Moose

    Anyone else that remembers the movie "Wargames"? I personally like the "lots of blinking lights" design school, not in interactive programs though, but it sure makes those looming hulks more interesting, and as for services, it does add that "thing that goes BING!"-factor that makes managers understand things are actually happening.

  • ssprencel (cs) in reply to darin
    darin:
    Sean:

    This UDP is lazy.  Someone probably had to manually login and start the application anytime the machine was rebooted.

    The of the only Windows program I ever had to write involved a service to send some incoming mail to our application.  This used Microsoft's MAPI component that communicated with their Exchange mail server.  This was supposed to be a completely non-interactive service, running all the time.  I'm not all that familiar with Windows, but I researched forever trying to figure out how to get this thing to run as a service without first logging in, and I couldn't do it.  It could run as a service as I recall, but it would only start if someone was logged in first.  The snag was that you had to use a normal windows event loop, which didn't work well with services.  This may have been fixed over time, but back then people told me that I was basically stuck.

    So I basically had to suck it up.  Everytime I told a customer "yes, you have log into your computer after it reboots so that the service can run" I could feel them staring at me like I was incompetent or lazy.  People don't like to hear that you can't fix their application, or that another mail server would fix the problem, etc.  They were already annoyed enough that the installation instructions required a service pack to be applied...

     

    I'm not sure how long ago you're talking about but how long has "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" been arouund?  Windows 9x?  You may not have gotten that "Service" look but the only people who would know are the people thumbing through Task Manager when they see your process.  Actually, without being MCSE certified, I'm think there's a couple of easy work-arounds.  I'm thinking you got some bad advice.

  • utu (cs) in reply to ssprencel
    ssprencel:

    I'm not sure how long ago you're talking about but how long has "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" been arouund?  Windows 9x?  You may not have gotten that "Service" look but the only people who would know are the people thumbing through Task Manager when they see your process.  Actually, without being MCSE certified, I'm think there's a couple of easy work-arounds.  I'm thinking you got some bad advice.

    You know... that requires that someone logs into the machine. I believe the purpose was to prevent the need for anyone logging in; meaning that no matter if someone was logged in or not, the system would be available as long as the machine happened to be powered on.

  • Joe (unregistered) in reply to Martijn Tonies

    Well, that's good that you can be a good sport about it. I shudder to think of some of the things I wrote 10 years ago as a budding programmer that might still be "out there".

  • Zlodo (unregistered)

    I always found hollywoodian intepretation of computers in movies ridiculous with all their pointless diagrams, graphics and whatnot.

    It would seem that they were more realistic than I thought, however.

  • shadowman (cs) in reply to Joe

    Anonymous:
    Well, that's good that you can be a good sport about it. I shudder to think of some of the things I wrote 10 years ago as a budding programmer that might still be "out there".

     

    The WTF isn't Martijn Tonies's Knight Rider program -- it's the fact that someone decided to get it off the internet and put it in this "mission critical system"

  • anonymous (unregistered) in reply to utu
    utu:
    ssprencel:

    I'm not sure how long ago you're talking about but how long has "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" been arouund?  Windows 9x?  You may not have gotten that "Service" look but the only people who would know are the people thumbing through Task Manager when they see your process.  Actually, without being MCSE certified, I'm think there's a couple of easy work-arounds.  I'm thinking you got some bad advice.

    You know... that requires that someone logs into the machine. I believe the purpose was to prevent the need for anyone logging in; meaning that no matter if someone was logged in or not, the system would be available as long as the machine happened to be powered on.

    So isn't this what "HKLM\...\RunServices" is intended for? Or did this not exist back then? 

  • ssprencel (cs) in reply to anonymous
    Anonymous:
    utu:
    ssprencel:

    I'm not sure how long ago you're talking about but how long has "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" been arouund?  Windows 9x?  You may not have gotten that "Service" look but the only people who would know are the people thumbing through Task Manager when they see your process.  Actually, without being MCSE certified, I'm think there's a couple of easy work-arounds.  I'm thinking you got some bad advice.

    You know... that requires that someone logs into the machine. I believe the purpose was to prevent the need for anyone logging in; meaning that no matter if someone was logged in or not, the system would be available as long as the machine happened to be powered on.

    So isn't this what "HKLM\...\RunServices" is intended for? Or did this not exist back then? 

     I knew I got the HKLM - HKCU thing right.

  • Corporate Cog (unregistered) in reply to GrandmasterB
    GrandmasterB:

    Add a couple lines of code in your source telling it on what tab you want it to go, and then select 'install component' from the menu.  Wow, so tough.  My goodness, how do you manage to feed yourself on a day to day basis?

    Those lines were already there in the source for the component. 

    GrandmasterB:

    and then select 'install component' from the menu.  Wow, so tough.  My goodness, how do you manage to feed yourself on a day to day basis?

    Did that (obviously).  Doesn't work.  That's why it sucks.  You do the same thing your coworker does; his works, yours doesn't.
     

  • Mr (unregistered) in reply to Sean

    Umm... yes you can. You just have to set your service to interact with the desktop.

  • Jameson Laphroaig (unregistered) in reply to Corporate Cog


    Did that (obviously).  Doesn't work.  That's why it sucks.  You do the same thing your coworker does; his works, yours doesn't.

     

    Your coworker's worked and yours didn't, so Delphi sucks? Your apparent logic disability may have had something to do with it as well.

    Components don't always need to be installed anyway. Just "use" the unit and create the object directly in code. Delphi sucks like that too because it allows you to think for your self and work around a problem in another way rather than rely on the expectation of convenience, which turns out to be the upper limit of some people's capabilities.

     

  • Corporate Cog (unregistered) in reply to Jameson Laphroaig
    Anonymous:

    Your coworker's worked and yours didn't, so Delphi sucks?

    Yes, it sucks because you see this alot. 

    Anonymous:

    Components don't always need to be installed anyway. Just "use" the unit and create the object directly in code. Delphi sucks like that too because it allows you to think for your self and work around a problem in another way rather than rely on the expectation of convenience, which turns out to be the upper limit of some people's capabilities.

    Yes, I know I could do that.  But I expect installing a component to just work.  An "expectation of convenience" is something I get with superior IDEs.  It's a good thing.

    I have a right to bitch about Delphi because it's caused me so much pain over the years.
     

  • ElSicilianoMaldito (unregistered) in reply to Corporate Cog

    Just said
      "I dont know hot to do this..."
       or "I dont know how to use Delphi..."
      
    Is not the same "im a noob in Delphi" to
      "Delphi Sucks"

    Dont Justify your ingnorance Sr...

     You can do almost anything and easy with delphi
      IF YOU KNOW HOW TO USE IT

  • eyu (cs)

    50% more for a contractor isn't that much if you factor in the additional taxes.

  • Anonymous (unregistered)

    Alex Papadimoulis:

    For whatever reason, he was never able to figure out the source of some rather obscure multithreading errors through the system, so he devised a "work-around."  A Thread Manager was created to allow only one of the application's threads to run at a time. When a thread completed its task, it would then have to notify the Thread Manager so that the next thread in the queue could be reanimated.


    This can actually be a useful technique, for implementing coroutines, since most environments don't support coroutines directly. (Okay, I wouldn't use a Thread Manager, I'd just use a mutex, but whatever.)


    eyu:

    50% more for a contractor isn't that much if you factor in the additional taxes.


    It might even be less. The usual rule of thumb is that the company pays as much in overhead for a given employee (taxes, benefits, office space, etc.) as it does in salary.

     

  • triso (cs) in reply to miraculous
    Anonymous:
    Anonymous:

    Know thats

    Now that's

    *Dolt*

    "<font size="+1">D</font>ouble Dolt"

     

  • mallard (cs)

    Of course, The Real WTF(tm)  is that everyone keeps attributing that scanner to Knight Rider's KITT, when it in fact orignates from the Cylons of Battlestar Galactica (the 1978 series, obviously). 


    <span class="Apple-style-span">Glen A Larson, was the creator of both shows, <span class="Apple-style-span" style="font-weight: bold">reused</span> the effect &quot;because he liked it&quot;.</span>

    http://en.wikipedia.org/wiki/KITT#Trivia

  • PLasmab (unregistered)

    This is not the wtf you are looking for!

  • Marc (unregistered)

    After declaring that his system was "perfect,"

     =D
     

  • anonymous (unregistered) in reply to Marc
  • Mike Dimmick (cs) in reply to utu

    utu:
    If you write it as a service, you can make it launch a nice GUI (since services can interact with desktop - any desktop) for each and every user that happens to log on the machine no matter if they want it or not - plus make it nearly impossible to get rid of. And you can have a uniquely useless red flashy status bar in that GUI if you so wish :)

    Interactive services are going away in Vista and "Longhorn" Server. They'll still run, but by default, the user won't be able to see any UI that they do create. It's already a problem for remote administration using Remote Desktop, since interactive service GUI only appears in the console session - you have to specify the /console switch to mstsc.exe in order to connect to the console session remotely. This only works on Windows Server 2003 - it does not work on Windows 2000.

    If Fast User Switching is turned on for Windows XP, the first user to log on gets session 0, and will see interactive service UI. Subsequent users - if the first user has not logged off - will get higher session numbers, and will not see interactive service UI.

Leave a comment on “K.I.T.T. on a Critical Mission”

Log In or post as a guest

Replying to comment #:

« Return to Article