Slashdot Mirror


Six Laws of the New Software

LordFoom writes "Still suffering from post-dotcom stress disorder, I keep my eye out for gentle balm to sooth my ravaged psyche. The manifestos at ChangeThis are not it. The most popular manifestos range from irritating to enlightening, with none of them particularly comforting. In particular the recent Six Laws of the New Software have done my dreams of writing lucrative code no good - although it has changed my idea of what money-making code is."

36 of 313 comments (clear)

  1. In a nutshell by winkydink · · Score: 5, Informative

    Keep it simple
    Keep it small
    You're not gonna be the next Microsoft
    Do many releases
    Comply with relevant standards

    --

    "I'd rather be a lightning rod than a seismometer." -Ken Kesey

    1. Re:In a nutshell by cyber_rigger · · Score: 5, Funny

      7. Don't post a link on /. to your development machine.

    2. Re:In a nutshell by jsprat · · Score: 4, Funny

      1. Keep it simple
      2. Keep it small
      3. You're not gonna be the next Microsoft
      4. Do many releases
      5. Comply with relevant standards

      That's 5 laws... What's the sixth?

      Profit?
    3. Re:In a nutshell by winkydink · · Score: 3, Funny

      Simple covers 2. I simplified. :)

      --

      "I'd rather be a lightning rod than a seismometer." -Ken Kesey

    4. Re:In a nutshell by darkpixel2k · · Score: 5, Funny

      The sixth rule of the new software is: you do not talk about the new software!

      --
      There's no place like ::1 (I've completed my transition to IPv6)
    5. Re:In a nutshell by Doomdark · · Score: 3, Interesting
      Or maybe there just will never be another Microsoft; as in no company will duplicate the (early) life-span of Microsoft. That's entirely possible -- perhaps time for mega-corporations based on standard expensive shrink-wrapped applications is over?

      This is not to say there couldn't be other mega-corps in software, just that they would probably become such using different kinds of products, strategies and so on.

      What I don't understand, however, is the last part ("play to win, or give it up now"): are you implying there is no other way to succeed than the Microsoft way? I'd think that's bit short-sighted. Besides, Microsoft didn't exactly get started on great unstoppable visions, but with rather simple ideas of building basic interpreters (etc) to sell for hobbyists. The vision part only came when they grew big, and made founder(s) think they need to have visions; bit like how George Lucas keeps on reinventing the history of Star Wars.

      --
      I like paying taxes. With them I buy civilization -- Oliver Wendell Holmes
  2. In the end of last century... by melted · · Score: 5, Insightful

    There was a widespread belief among physicists that there's nothing more to discover in physics. They were wrong. This guy is also wrong.

    1. Re:In the end of last century... by Brian+Brian · · Score: 5, Insightful

      Anyone proclaiming the end of anything has just demonstrated the limits of their mind.

  3. Here's another law to add by Dancin_Santa · · Score: 5, Insightful

    When developing a web browser, if a plug-in needs to be launched, don't let the plug-in's loading cause all other instances of the browser to lock up.

    I'm looking at you, Firefox.

    What's the deal with the PDF-format anyway? The document is 17 pages of Powerpoint-like slides. I'm sure some nice, simple HTML could have displayed that much more quickly. And not locked up Firefox for a minute.

    1. Re:Here's another law to add by cmowire · · Score: 4, Insightful

      Disable the acrobat plugin.

      Not only does this prevent Firefox from freezing up obnoxiously, but it also means that you don't see the file until it's actually done loading. Progressive PDF's suck.

    2. Re:Here's another law to add by sglider · · Score: 3, Informative

      This link from the Firfox FAQ answers why that happens. It isn't Firefox's fault, but it is adobe's fault. If you follow that link, you'll see adobe pages load (on a broadband connection) in mere seconds.

      --
      War isn't about who's right. It's about who's left.
    3. Re:Here's another law to add by ytpete · · Score: 3, Informative

      An even better option: PDF SpeedUp. A coworker clued me in to this great little utility. It basically disables all the extra junk in Acrobat Reader, cutting the load time down to 1-2 sec tops.

    4. Re:Here's another law to add by Leo+McGarry · · Score: 5, Informative

      This old saw needs to die, now. It's completely false to say that "the whole graphics subsystem is built on PDF." That simply isn't so. Let me explain where that came from.

      Back in the olden days, there was this thing called QuickDraw. QuickDraw was pretty incredible. It consisted of a full-featured set of routines for drawing on the screen, and the whole business fit inside something like 32 KB of ROM.

      QuickDraw was based on the idea of pixels. Everything was a pixel. Drawing with QuickDraw was based entirely around pixels.

      Quartz abandoned the idea of pixels in order to give programmers a device- and resolution-independent graphics toolbox. Quartz consists of two parts: a drawing library called Quartz 2D, and a windowing and real-time compositing system originally called Quartz Compositor. A couple years back, Quartz Compositor was re-implemented in GPU code and re-christened Quartz Extreme. (Quartz Compositor still runs on Macs without programmable GPUs.)

      The imaging model used for Quartz 2D was inspired by both Display PostScript and PDF, but it's not the same as either of them. Unlike QuickDraw, where everything was about pixels, in Quartz 2D it's all about paint. Quartz 2D establishes a floating-point coordinate system called a context, and the programmer draws on the context by defining regions and filling them with paint. Internally, everything is represented as a display list, as opposed to a bitmap like in the old days. The display list gets rendered to the screen by Quartz Extreme.

      Because Quartz 2D uses a similar imaging model to PDF's, Quartz 2D display lists can be translated to PDF trivially. The whole business is handled for you. All you have to do is request a Core Graphics PDF context instead of a regular Core Graphics context and draw to it just like you were drawing to a window. Core Graphics is responsible for translating your Quartz 2D display list into PDF.

      So let's be totally clear here: None of the graphics on your Mac are represented internally in PDF format until your program explicitly requests that a display list be saved in PDF format. Internally, everything is a Quartz 2D display list. The computer converts to and from Quartz 2D quickly and easily through the use of some highly optimized Core Graphics code.

      Now, you wanna know why Acrobat is so much slower than Preview? Because Acrobat uses its own PDF interpreter to go from PDF to QuickDraw. This takes a ton of CPU time, compared to going from PDF to a Quartz 2D display list. So Acrobat is both much bigger (because it includes a whole PDF interpreter) and much slower than Preview.

      On Windows or Linux or whatever other incredibly lame operating system you want to consider, a PDF reader is necessarily going to be big and slow, because it's gonna have to translate from PDF into some bitmap format. Old operating systems don't have the advantage of having an internal display-list graphics format that's conceptually similar to PDF, or a hardware-accelerated compositor that's responsible for turning those display lists into pixels. But that still doesn't change the fact that the PDF specification is wide open, and anybody who wants to should be able to write his or her own PDF reader for those old operating systems.

      Incidentally, Quartz 2D used to be notably slower than QuickDraw for doing lots of basic tasks. If you take antialiasing and transparency off the table and just deal with drawing lines, QuickDraw used to kick Quartz 2D's ass. No more, though, because Quartz 2D has recently been rewritten to take advantage of programmable GPUs, just like Quartz Compositor was rewritten and became Quartz Extreme. Now, depending on the kind of GPU you have, Quartz 2D can be anywhere up to 40 times faster than QuickDraw ...and that's with antialiasing and transparency. It's pretty amazing.

      Frankly, it kinda makes me wonder why more people aren't raving about Quartz. I guess it's probably because most people don't unde

  4. The first law of new software... by neuro.slug · · Score: 4, Funny

    The first law of new software is you do NOT talk about new software.

    The second law of new software is...

    C'mon, somebody had to say it.

  5. Direct link by Dancin_Santa · · Score: 4, Informative

    Link to article

    Be careful, it locks up Firefox until it loads.

  6. Next time I'll check the link better. by Anonymous Coward · · Score: 5, Informative
  7. Hope I'm not trolling too hard... by Anonymous Coward · · Score: 3, Insightful

    But seriously, I thought the dot com bust was actually a *good* thing for real programmers. It weeded out all those retards with a geology degree who were in it just for the cash. Granted, those who were actually good at coding made a lot more back in those days. But if you're actually talented then there is no reason you can't make what you want to make. Doesn't matter what the profession is.

    Anyways, what's the deal with the .pdf download? First off it's /.ed, second... isn't that what the webpage is there for in the first place?

    1. Re:Hope I'm not trolling too hard... by russellh · · Score: 3, Insightful

      The geology, etc., majors I knew were awesome programmers. The morons I knew were computer science majors who were just in it for the money. I remember them in class. Most of my CS classes seemed to be full of them (1990-1994 - before the boom). I was shocked by this since I became a CS major out of a pure love of programming. the liberal arts and science people that I knew who were programmers had the true hacker ethic.

      --
      must... stay... awake...
  8. Respect your users by MarkSwanson · · Score: 3, Insightful

    By and large there is no need to demand your users trust you with full write access to their home directory, their ethernet device, and more. Consider writing your software in the Java Web Start sandbox.

    --
    Schedule your world with ScheduleWorld.com http://www.ScheduleWorld.com/ (Java Web Startable)
  9. Law 7 by DrKyle · · Score: 5, Insightful

    All the good stuff has already been thought of, but not everyone knows they exist. Try to find really good ideas by looking back at least 10 years for a piece of software that never took off and has been abandoned and remarket it as the next big thing. Remember: Marketing people could sell blood to a turnip.

  10. Writing vs Coding by kiwidefunkt · · Score: 4, Insightful

    It seems like some of these people spend more time writing about software than actually writing software...

    --
    www.kiwilyrics.com - a wiki for lyrics
  11. pdftotext by flossie · · Score: 4, Informative

    The SIX LAWS of the NEW SOFTWARE
    GO AHEAD AND PRINT THIS. This manifesto

    continued

    is toner-friendly: the backgrounds wont print on paper and are only visible on-screen to aid readability. We recommend printing a test page as some older printers do not support this Acrobat feature.

    by Dror Eyal
    NEXT

    Not using Adobe Acrobat? Please go to http://changethis.com/content/reader

    The first wave of software is over, it is doubtful that any one company will capture the market like Microsoft or SAP did. Not because the software they write isn't better or has less functionality, they've simply arrived too late. Most home consumers have all the software they will ever need, and most companies out there already have all the basic technologies they need to successfully compete right now.
    I can hear their objections all the way down here, and I agree, your software is better designed, faster, has more features, is more user-friendly and can indeed make seven flavours of coffee. We have something similar, it isnt well designed, it doesnt have half of the features that yours has and no, it doesnt run on Service Orientated Architecture. We did however pay a small fortune for the per-seat licences, we have learnt to use it quite comfortably over the last five years and this is the system that our business runs on. This view isnt limited to us -- Northwestern University economist Robert Gordon, in a 2000 article published in the Journal of Economic Perspectives, argued that "the most important GO AHEAD AND PRINT uses of THIS. This manifesto computers were developed more than a decade into the past, not currently."

    is toner-friendly: the Its a fairly bleak view to be sure, but one that isnt unique to Mr Gordon. Many business backgrounds wont executives print on paper and are are turning away from purchasing new technologies and looking for new ways to use their only visible on-screen existing technologies effectively. Not because the new software entering the market to aid readability. We recommend printing a test page as some older printers do not support this Acrobat feature.

    isnt better, but because the functionality that they need already exists in software that was bought years ago. Budgets for software expenditure are dropping and the accountants are starting to question why the software that was essential last year needs an upgrade this year. What this means to the average software developer is that the window of opportunity for selling into the corporate market and to some the degree the home market is getting smaller than ever before. So does this mean that this is the end for the software industry? Obviously not, we will continue to develop better products, occasionally new technology will get developed and or a new idea will start a trend and software will get developed around it. Software that meets a new need will always be welcome. Who knew that we needed file sharing software before Napster turned the music industry on its ear? Or that social software and bloging tools were essential if your company was to be seen to be on the cutting edge? No, it isnt the end, but for every tool that revolutionizes the industry and strikes a path into a new territory there are several hundred software companies out there trying to build a better CRM or CMS -- the software industry equivalent of the mousetrap. Obviously it would be better if we all developed software that met a new need and created new markets, but just as obviously we cant all develop revolutionary new software. Most of the software being developed right now in studios around the world is trying to find a niche in existing and saturated markets. So how do you build software that stands out and can compete in this new environGO AHEAD AND PRINT ment? You build a tool based on new generation software laws. THIS. This manifesto
    is toner-friendly: the backgrounds wont print on paper and are only visible on-screen to aid readability. We recommend printing a test page as some older printers do not support this Acrob

    1. Re:pdftotext by complete+loony · · Score: 4, Funny

      That article didn't affect me whatsoever.
      Right I'm off to print a test page.

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
    2. Re:pdftotext by coopaq · · Score: 5, Funny

      Would everyone just GO AHEAD AND PRINT this already!!!

  12. The REAL 6 laws of code writing.... by Hobadee · · Score: 3, Funny

    1. Make sure it's impossible to use.
    2. Make sure it's buggy.
    3. Make sure it's unsecure.
    4. Market the hell out of it. (Making sure to state how great and secure it is.)
    5. ???
    6. Profit!

    --
    ...Had this been an actual emergency, we would have fled in terror, and you would not have been informed.
    1. Re:The REAL 6 laws of code writing.... by michaeldot · · Score: 4, Funny

      1. Make sure it's impossible to use.
      2. Make sure it's buggy.
      3. Make sure it's unsecure.
      4. Market the hell out of it. (Making sure to state how great and secure it is.)
      5. ???
      6. Profit!

      Very interesting, but you've clearly cut & pasted that from Microsoft's employees manual, in violation of your NDA.

      Prepare for a visit from the lawyers.

  13. Hint: How to avoid PDF lock-up in Firefox by QuestionsNotAnswers · · Score: 5, Informative

    Tools | Options | Downloads | Plugins

    Untick PDF.

    Now whenever you click on a PDF link you are prompted if you want to view it in Adobe PDF viewer.

    Works for me!

    --
    Happy moony
  14. The "Collaborate" Suggestion and Unix by Zergwyn · · Score: 5, Interesting
    Most of these suggestions are common sense to anyone who has a couple of serious software projects under their belt, which isn't to say that they aren't worthwhile to look through. However, one in particular made me think of an old question of mine, having to do with the way unix works vs the modern GUI. On page 6, the pdf discusses the "Collaborate Law". It says:

    "Forget enterprise systems that do everything possible within your field. They're too large, clumsy and require too much development time. Instead, create small discrete software that can collaborate seamlessly with the technology that the end users are currently using."

    This, in a nutshell, seems to be the core philosophy behind much of the original Unix. Most Unix apps (and in particular, all the 'commands' which are small applications) have the concept of standard in (stdin), standard out (stdout), and standard error (stderr). Because most commands can operate to accept stdin, do its purpose, and then send to stdout, it is both possible, intuitive, and very practical to chain together many small commands to accomplish a single task very easily. I suspect there is some terminology for this process, but as I don't know what it is I generally think of it as being a "stream centered" approach. You have many discrete components operating on a stream of information. However, I know of no similar functionality in most modern GUIs, which are all basically application-centered approaches (though Windows tends to present itself as being document-centered). Each application is a single thing that you open up, and has its own self contained operations, usage, etc. I would like to see this more object-oriented stream approach exist in more GUIs today, because it is really a very useful paradigm for many tasks. It allows developers to concentrate on doing a single task extremely well, and then allows users to chain that task in as many ways as they can imagine, which is always more then what the original developer could think of. In Mac OS X 10.4, the Automator feature sounds like it might very well be close to what I have in mind, though a lot will depend on how easily and powerfully developers can make new 'Actions' (Apple's terminology for single task apps/commands). However, these days I really think that is an old concept that is time tested and very useful and just waiting for the right re-implementation to become critical for a new generation.
    1. Re:The "Collaborate" Suggestion and Unix by starfishsystems · · Score: 3, Insightful
      to chain together many small commands to accomplish a single task very easily. I suspect there is some terminology for this process, but as I don't know what it is

      You're on to something here. The essential design principle is composability. Take Lego for example. You can make complex artifacts by assembling many existing elements together.

      A similar, but distinct, principle is extensibility. To continue with the Lego example, it allows you to invent a completely new element that extends the behavior of existing elements, a slider piece for example.

      Not to get totally pedantic, but let's have one more. The principle of modularity enables both of the above. Originally, it meant that you could replace any piece with a functionally identical substitute. But what makes it such an interesting principle is that there are different aspects of identity. Two 1x8 Legos might be replaced by a 2x4 and two 2x2s, and so on, and perhaps the substitution has different and desirable properties.

      The source of all modularity is the enabling principle of standardization. And here, if you care, is where open source comes into the picture. Because it's very hard for multiple parties to ever agree on a common standard if the candidate designs are all secret!

      So your intuition is right. There is something about Unix that gives it a fundamental advantage over proprietary alternatives. However, to debate between command line and GUI, or likewise to compare statistics on security incidents, is to focus on emergent symptoms. I get frustrated with these debates because they never really seem to converge on a clear answer.

      A clear answer does emerge when we look to deeper principles. These aren't just a matter of subjective preference, they are fundamental to the design of any complex artifact. Designs which express these principles are objectively superior to designs which don't. And I think that's worth remembering.

      --
      Parity: What to do when the weekend comes.
  15. HOWTO: Subscribe to parent's newsletter by SlimFastForYou · · Score: 3, Funny

    Step 1: Get rope
    Step 2: Tie it in a noose
    Step 3: Get a chair and stand on it
    Step 4: Tie other end of rope to ceiling fan
    Step 5: Put noose over head, snugly over neck
    Step 6: Kick chair out from under yourself
    Step 7: ???
    Step 8: Newsletter!

    *Poster does not endorce subscriptions to this newsletter.

  16. Re:HOWTO: Subscribe to parent's newsletter by Radio+Shack+Robot · · Score: 3, Funny

    Your ideas sound intriguing. How can I subscribe to your newsletter?

    --

    Beep. Boop. Beep. You have questions. I have answers and your home address.
  17. People are dumb by Anonymous Coward · · Score: 3, Insightful

    One good rule when writing software would be to assume people are profoundly retarded, thus maximising the possible market share of your software by making it really easy to use.

  18. Subliminal humor? by Anonymous Coward · · Score: 3, Funny

    I can't helpGO AHEAD AND PRINT THISfeeling that some kind of backgrounds wont print on paper subliminal message are only visible on-screen to aid readability is embedded in this This manifesto this post.

  19. manifesto? by convolvatron · · Score: 3, Insightful

    do the machinists create manifestos about their work? get over it, programming is mildly creative, but whole notion of paradigm-changing products is grossly overinflated. try doing something that has some obvious utility and dont try to ream people for it.

  20. Six Laws of Perpetual Software Contracts by saddino · · Score: 4, Funny

    /* todo: add six laws here */

  21. Breaks his own laws by Captain+Kirk · · Score: 4, Insightful

    He says, correctly, that HTML is the standard for documents on the Web.

    He says stick to these standards.

    His own article is in a crappy PDF - possibly the lamest format possible for web articles.

    A case of "do as I say not as I do"