Announcement

Collapse
No announcement yet.

How does MS keep developers working on the plantation?

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    How does MS keep developers working on the plantation?

    While I never got into Ruby I was a BIG FAN of Python, and still am. Nowhere near as integrated and powerful as Qt4, Python is a powerful scripting language which, with the help of some GUI APIs, is a powerful GUI-RAD tool. My favorite combination is Python + Boa-Constructor. They are in the repository.

    Ruby and Python have kept a large number of developers away from proprietary programming tools, and have even drawn them from Java.

    But, MS isn't taking this standing still. They have EMBRACED both Ruby and Python, and EXTENDED them, creating IronRuby and IronPython. which provoked this comment and is an EXCELLENT read.

    The "Iron" part, users will soon learn, refers to the construction of the lock-in jail they will find themselves and their data encased in IF they continue down that path. The "Iron" alludes to making those tools "stronger", but Microsoft's track record for that is abysmal. When MS thinks they have lured the heart and soul of the Ruby and Python users into the IronRuby and IronPython camps it will EXTINGUISH those tools (not Ruby or Python) or do what they did to VFP or VB. Those who have incorporated the proprietary extensions into their applications and databases will be LOCKED IN (or back into) Microsoft's money generating upgrade treadmill, the whole purpose for the EEE tactic.

    I started programming for hire using Borland's Turbo Pascal 3.02A and the Database Toolbox and later switched to AREV when Borland was sold. I switched to MS dev tools when OpenInsight, a GUI version of AREV, failed to match AREV's performance. My experience with the effects of MS lock-in began when I learned to use FoxPro for DOS in 1997, a tool used by my last client and last employer. Upgrading to Visual FoxPro 5.0 was no problem. Neither was upgrading our applications and databases to VFP 6.0. The problem came when Microsoft announced, on the UniversalThread (a subscription web forum for developers of tools on all platforms), that VFP 6.0 was going to be discontinued. Suddenly, on cue, most of those members who had been awarded "VFP MVP" status, whom we thought were merely developers like ourselves, suddenly began offering C# and .NET training classes on the VFP forum. UniversalThread had over 40,000 ACTIVE VFP developers in their VFP forum, and estimates were that there were over 250,000 world wide. The outrage was immediate and intense. MS didn't expect that kind of backlash and after a couple months they relented and grudgingly continued, at a snails pace, to offer VFP, but with lots of C# and .NET enhancements ... warming the frog up one degree at a time.

    Lots of developers besides myself decided to leave both the UniversalThread and VFP. I go back on occasions to browse around but have found the wall around the UT even higher and its contents devoted more exclusively to MS tools. Like Dell's Linux offerings, there are token representations of other tools and platforms.

    At work we decided to leave VFP (and the UniversalThread) and move our applications to another tool not under Microsoft's control. That led me to explore Java, Ruby, Python, Qt3 and several other tools. I developed versions of the HomeStead application using the best tools in three of those languages and evaluated their ease of installation, development, maintenance, and upgrading.

    Java was available in at least two flavors, one owned by Sun and one a free clone. The free clone lacked a lot of Java's functionality and was always behind Java (sound familiar? Mono and .NET). One particularly aggravating problem was that I was constantly trying to work around JDeveloper's habit of marking the programs I needed to modify to add my functionality as "Do not edit this" because they were always regenerated. It also had the habit of re-arranging my GUI form objects to suit itself. I really hated the backward path reference structure of Java and how wordy it was. It reminded me of my favorite language to hate - COBOL.

    Moving to Python, I found I could develop in Python-Boa about 2X faster than with Java, and the Python executable was 2X-3X faster than the Java app. Python nearly won, but the fact that all its variables were global, it had "don't edit" functions, and it had to be synchronized with Boa, led me to focus on Qt3. Qt3 was a pain but Qt4 came out almost immediately after I began working on Qt3 and Qt4 was a dream. It also avoided Qt3's painful designer-IDE tool and returned to the classic C++ development paradigm, with the designer relegated to just designing GUIs.

    I found that development in Qt4 was faster than Java or Python and about the same or slightly faster than with VFP. Qt4 was a WHOLE LOT more stable than VFP. With a VFP app, even after deployment, a control (textbox, combo box, button) would occasionally "break" (cease working, or work differently than it was designed to work). I would have to edit the source, delete the defective control, drop in the identical control as a replacement, and recompile. No form element on a deployed Qt4 app has ever "broken" and required replacement.

    After I finished writing Hap2006 I wrote a document for the benefit of the other 15 developers in my department explaining how to install, configure, and write applications with C++ and Qt4. Hap2006 was the first time I ever used C++ or Qt4. Back then I used MS Visual Studio with Qt Integration on Windows and Kate on Linux. I found I was 2X-4X faster on Kate under Linux (including debugging) than on MSVC under Windows. That document is somewhat dated because the tools are now easily installed from the repository and are pre-configured for both a release and a debug version, dynamic or static, and with FOSS database drivers. It is now MUCH easier to install and use Qt4 and QtCreator. But, the document still has value because a lot of developers with more Qt4 and C++ experience than I possess have edited and contributed to that document, greatly improving it and correcting my errors and misunderstandings.

    It is unfortunate that a LOT of Ruby and Python programmers will be seduced by Microsoft's siren song and will open their eyes only after Microsoft pulls the "I'm for Open Source" mask off and "cuts off their Oxygen supply". It won't affect those who stay with Ruby OR Python. Those who jump onto the "Iron" (or Mono) bandwagon will find themselves, sooner or later, realizing they've been deceived and the whole purpose was to put them back onto Microsoft'$ upgrade treadmill revenue stream, holding their data hostage.

    Anyone found a way to get their data OUT of SharePoint and into an Open Source database? Yes, since Google attacked the problem, which is why Microsoft is attacking Google. It may not be easy, but that's what you should expect when you give your data to a proprietary business.
    "A nation that is afraid to let its people judge the truth and falsehood in an open market is a nation that is afraid of its people.”
    – John F. Kennedy, February 26, 1962.

    #2
    Re: How does MS keep developers working on the plantation?

    So this is supposed to be your opinion on how the really infamous MS enslave programmers / coders? I thought you started working on Qt4 during the last few years or months of your career but couldn't continue developing new tools and apps at work but maybe once you were free to do whatever you wanted at your own pace you kept using it.

    Well, I took a look at Qt and found interesting the way they use the signals and slots system to allow the gui communicate with the logic part of the app. I guess I barely understand that but hope to get better at this some day.... One of my first serious attempts to code with some Qt help would be a card game, similar to yet not a clone of Magic TG or some other trading card game.

    BTW, I remember someone told me that I could try to code it in C# but after I learned it belongs to MS and about how meticulous they are about what they would allow people to do with their language just because they want people to comply with their own weird standards... well, I just chickened out so to say.

    So is Qt4 fast enough to help people code a whole app, like the trading card game I'm planning to develop if ever possible, in less time than with other tools and languages? Or should I look for a open source version of C$, I'm sorry, C# to make sure it won't take ages before I can show off my first demo? (Like it would happen if coded in plain C...)

    I hope all of these things made any sense at all.
    Multibooting: Kubuntu Noble 24.04
    Before: Jammy 22.04, Focal 20.04, Precise 12.04 Xenial 16.04 and Bionic 18.04
    Win XP, 7 & 10 sadly
    Using Linux since June, 2008

    Comment


      #3
      Re: How does MS keep developers working on the plantation?

      Originally posted by kyonides
      .....
      I thought you started working on Qt4 during the last few years or months of your career but couldn't continue developing new tools and apps at work but maybe once you were free to do whatever you wanted at your own pace you kept using it.
      I started using Qt3 at work in the summer of 2005 and my first app, Hap2006, was deployed at the beginnng of the next Homestead cycle, in Jan of 2006. I wrote several others after that, until I retired on June 13th, 2008. QtCreator came out after that, and on a few occasions I have been asked to consult and I've used QtCreator to explore their requests and send code and advice.

      Well, I took a look at Qt and found interesting the way they use the signals and slots system to allow the gui communicate with the logic part of the app. I guess I barely understand that but hope to get better at this some day.... One of my first serious attempts to code with some Qt help would be a card game, similar to yet not a clone of Magic TG or some other trading card game.
      Signals and Slots are cool. A simple example is one where a drop down combo box is populated with a SqlQuery cursor of employee names. A "connect" statement connects an action (signal) that results when the contents of the combo box change (within the scope of "this", the form the combo box is a member of), to a slot, which is usually a function to which a parameter is passed:

      connect(ui.cboEmpName, SIGNAL(currentIndexChanged(int)), this, SLOT(displayData( int )));

      The action (changing contents of the combo box by selecting another employee) can be turned off with the disconnect command. Notice the scope and slot paramters are 0.

      disconnect(ui.cboEmpName, SIGNAL(currentIndexChanged(int)), 0, 0);

      That was a "one-to-one" example. You can wire them up to be one to many, many to one, or many to many.

      BTW, I remember someone told me that I could try to code it in C# but after I learned it belongs to MS and about how meticulous they are about what they would allow people to do with their language just because they want people to comply with their own weird standards... well, I just chickened out so to say.
      The Mono Gui Tool kits website discusses the options available to add GUI forms and dialogs to a C#/Mono app. All of them involve C# wrappers around other tool kits. All of them are klutzy except that one which was designed from the start to supply forms and dialogs to C#/.NET - Winforms. The problem is that, the last time I checked, Winforms is NOT part of the ECMA 334 & 335 standard available to Mono developers. I would assume that Novell can legally add Winforms to its Mono implementation, but no other distro can. Yet. Any other distro which adds Winforms to Mono is at risk of an MS IP lawsuit. The wrapper most Mono developers seem to have settled on is the GtkSharp (GTK#) collection of GTK APIs wrapped with C#, probably because it is the API for GNOME. The apps built with Mono and using GTK# appear to be well coded apps, but the problem one has is that Mono and GTK+ are separate projects, not part of a single project like Qt4. An upgrade in one may not be compatible with the other until they are synchronized, which adds time to their development cycles. But, a skilled coder can become about as proficient in building apps with C#/Mono/GTK# as almost any other tool. The better you know a tool (and the more you use it) the more proficient you will become with it. But, given the same coder with the same level of knowledge in both C++/Qt4 coding and C#/Mono/GTK# coding, and I'd wager that the coder would be faster with Qt4. I do know that the Qt4 signals and slots are so easy and proficient that the GTK+ API has adopted a similar coding strategy, except that doing objects in C is more difficult than in C++.


      So is Qt4 fast enough to help people code a whole app, like the trading card game I'm planning to develop if ever possible, in less time than with other tools and languages? Or should I look for a open source version of C$, I'm sorry, C# to make sure it won't take ages before I can show off my first demo? (Like it would happen if coded in plain C...)

      I hope all of these things made any sense at all.
      Sure. Here are a few videos which show various ways of coding in Qt4. Some require very little input from the coder, others are more complicated. First, an Intro:
      http://www.youtube.com/watch?v=ojZQF...eature=related
      and if you install the Qt Demo apps you get the source and executable, along with documentation on dozens of examples. Here's a video showing some of the examples that come with Qt4:
      http://www.youtube.com/watch?v=f2qBU...eature=related

      And now, some videos showing various examples of the Qt4 Designer in creating apps with a minimum of or no coding:
      http://www.youtube.com/watch?v=QLT7oEt6gLE
      http://www.youtube.com/watch?v=2AV9n...eature=related
      http://www.youtube.com/watch?v=9E2KOphwZMg&feature=fvw
      Here is a rather old one which shows how to make a browser:
      http://www.youtube.com/watch?v=SHEFvdxUFtk&NR=1

      There are a ton of videos on YouTube about Qt4. Only deal with those that use QtCreator, it will make your life a LOT simpler. (There was a reasonably good GUI-IDE called QDevelop, which an individual wrote a couple years before QtCreator came out. And then, there is Kate, which has a "form" of code-completion but only for previously entered words and it doesn't supply parameter lists to keywords like QtCreator does.) Wrappers to Qt4, like PyQt, or IDEs like Eclipse, are a waste of time. Don't bother with them. A good way to get started is to download the Qt4 SDK for Linux from the Nokia website (around 250Mb) and install it in a directory under your home account. If you need a database use the built in SQLight for small stuff, or install the Qt4 drivers for PostgreSQL for industrial strength needs.

      You want to write a card game using Qt4 ... Here are screen shots of PokerTH, a FOSS card game written with Qt. You can download the binary or source from here.
      "A nation that is afraid to let its people judge the truth and falsehood in an open market is a nation that is afraid of its people.”
      – John F. Kennedy, February 26, 1962.

      Comment


        #4
        Re: How does MS keep developers working on the plantation?

        Thanks for the info, GG. BTW Qt also offers an Eclipse integrated version of its framework (Qt Eclipse). What I really found a bit ridiculous but still normal so to say were the Java bindings named Qt Jambi... I don't think they're a Java relative of Bambi, OK, OK, that was a bad joke... but I couldn't miss the oportunity to mention it here hehehe.
        Multibooting: Kubuntu Noble 24.04
        Before: Jammy 22.04, Focal 20.04, Precise 12.04 Xenial 16.04 and Bionic 18.04
        Win XP, 7 & 10 sadly
        Using Linux since June, 2008

        Comment


          #5
          Re: How does MS keep developers working on the plantation?

          Originally posted by kyonides
          Thanks for the info, GG. BTW Qt also offers an Eclipse integrated version of its framework (Qt Eclipse). What I really found a bit ridiculous but still normal so to say were the Java bindings named Qt Jambi... I don't think they're a Java relative of Bambi, OK, OK, that was a bad joke... but I couldn't miss the oportunity to mention it here hehehe.
          Eclipse is the "Swiss Army Knife" of coding. It tries to be all things to all languages and as a result specific language add-ins tend to be less powerful than a devoted GUI-IDE like QtCreator. Personally, I tried Eclipse several times throughout its development cycle and never liked the approach.

          Qt-Designer is the tool used to create graphical forms and dialogs. You can let it create stubs for functions to cpp files and declarations to header files automatically if you wish, but I don't use it because it creates long klutzy names and adds menu actions which I may not want. I generally don't let it create my signals or slots, either, because I usually add that stuff in the object init function, which instantiates the object. I developed that habit when I used Kate to write the code and it gave me so much more control over the development process and the behavior of the application that I never went back to letting the Designer to most of the work.

          Qt-Assistant is the VERY COMPLETE API documentation, including examples, tutorials, etc. The most complete set of API and tool kit documentation that I've ever read. It has a detailed explanations of qmake, qdbus, uic, qtconfig, tr (i18n translator), and several other less know tools.

          Qt Jambi is Qt setting on top of Java instead of C++. IF you know how to code in Java then moving to Qt Jambi is an EXCELLENT way to add GUIs & DB connections to your Java script, along with i18n capabilities. IOW, the FULL power available in Qt4 for C++, but for Java instead.
          "A nation that is afraid to let its people judge the truth and falsehood in an open market is a nation that is afraid of its people.”
          – John F. Kennedy, February 26, 1962.

          Comment


            #6
            Re: How does MS keep developers working on the plantation?

            Thanks for the info, GG. I wonder if anyone knows which KDE games can be played using a joystick or gamepad or joypad if any...
            Multibooting: Kubuntu Noble 24.04
            Before: Jammy 22.04, Focal 20.04, Precise 12.04 Xenial 16.04 and Bionic 18.04
            Win XP, 7 & 10 sadly
            Using Linux since June, 2008

            Comment


              #7
              Re: How does MS keep developers working on the plantation?

              Update: QtSoftware has ceased development of their Java toolkit, Jambi. I suspect that they anticipated the sale of Sun, which owns Java, to Oracle. When it comes to lock-in and Embrace, Extend and Extinguish I suspect that Oracle doesn't stand in the shade of Microsoft.

              Most games in the repository, that I have played or looked at, have the capability of using the joystick instead of the mouse ...

              "A nation that is afraid to let its people judge the truth and falsehood in an open market is a nation that is afraid of its people.”
              – John F. Kennedy, February 26, 1962.

              Comment

              Working...
              X