[My image] [Text Version] blog012 Mon Mar 4 14:38:48 PST 2013
Opening the PDF files on this page may require you to download Adobe Reader or an equivalent viewer (GhostScript).

Opening Microsoft files (winzip, word, excel, powerpoint) on this page may require you to download a special viewer. Or you can download and save the files and use your preferred office applications to view and edit them.


    RJBottings Web Log -- A Long View of Software Development -- 2012

      Current Edition

      [ blog.html ]

      If you don't like these entries see the [ Invitation to Contribute ] below.

      If you have an idea to improve any of my web pages use the [ Invitation to Contribute ] below to send me email .. like the famous contributors below.

      This blog contains news and short reviews of recent publications on software development. Plus some personal comments on life and death and such. This is a personal view of the most practical theories and most reliable experiences. CSUSB, CNS, and CSE deny all responsibility for it.

      2013-02-15 Fri Feb 15 13:40 mathematical model of engineering not scientific

      This [HallRapanotti13] is a mildly irritating article that proposes a mathematical/logical model of engineering. It has enough home truths (the world is aggresive and not amenable to formalization) to make it worth noticing.

      But it is a piece of mathematics not science... as defined [ 542.html ] by a recent "Spiked Math" page.

      2013-02-13 Wed Feb 13 09:30 Note on Local Seminars

      I am posting seminars as soon as I hear about them at [ seminar/ ] and have just added the first of this years crop of MS Project presentations. By the end of the quarter we usually have seminars on at least the last two Mondays and Fridays of the quarter plus other times in finals week (March 19-22).

      All the CSE Seminars are open to the public. The link above lets you search for topics that interest you.. both past and present.

      The link above leads to a calendar plus a link to request a slot for a presentation. If you are finishing up an internship, senior project, independent study, or MS degree this is an easy way to get the process started.

      2013-02-11 Mon Feb 11 13:38 Something light for Monday -- XKCD

      A rapid census of my colleagues and have agreed that today has to be a Monday. So I want a easy posting. And here it is.

      This is an advertisement for the XKCD comic that so often hits the nail correctly. For example: [ http://xkcd.com/1172/ ] which shows that any change you make to a system is going to foul up somebodies workflow. Or [ http://xkcd.com/1168/ ] which claims that nobody can type a UNIX tar command correctly the first time. This I rediscovered when making archives of parts of this web site.

      However -- tar did not get the ultimate accolade for bad CLI design. The UNIX find command used to list "the syntax" as a known bug. I submit this as an example of horrible UI design.

      2013-02-08 Fri Feb 8 12:55 Sometimes people prefer a manual system

      Here [ technology-21195765 ] from the BBC, is a nice example of computer technology being rejected.

      2013-02-06 Wed Feb 6 08:14 Modularity considered harmful

      It has been a software engineering doctrine that software is better when it is split up into loosely connected modules. Here is an article [ the_787s_problems_run_deeper_t.html ] that argues that when when a project has novel technology then modularity, components, and out-sourcing leads to problems -- and sites the recent problems with the Boeing 787. If this applies to software as well as hardware then it implies the need for throw-away prototypes to tackle novelty and generate the knowledge that allows the development of truly maintainable and adaptable iterations. I would see this as splitting a research phase from a later development phase.

      2013-02-04 Mon Feb 4 10:40 Why projects are late

      Phillip Armour [Armour13] has a short article explaining why projects are always 90% complete. Firstly people tend to assume (and are trained to assume) that projects get the same ammount done in the same ammount of time. A linear relationship. So 50% through the estimated time 50% of the project will be done. In nearly all projects this is not true because we don't know all the answers... we discover these by doing the project. So a typical project has a preparation phase where it picks up speed, are production phase when work proceeds rapidly and then slows down into the proving phase where work proceeds slowly and carefully for a long tail of time.

      And in the long tail we discover not just the answers to our questions ... we discover the questions we should have asked (Armour's 2nd Order Ignorance)!

      This certainly matches my experience. It fits with the Spirit of RUP [KrollKruchten05] where you deliberately schedule the problematic (=novel) features up front. And also the agile principle that you only schedule precisely the next iteration of the project.

      2012-12-12 Wed Dec 12 15:06 Bonus -- Google circa 1960

      [ http://www.masswerk.at/google60/ ]

      2012-12-12 Wed Dec 12 10:06 Hype for SEMAT -- Software Engineering Method and Theory

      This [JacobsonEtAl12] is an advert for "SEMAT" -- in particular for the text or hand book described below.

      I have added SEMAT to my samples/methods page [ samples/methods.html#SEMAT ] and may even create a page for it -- given time and energy.

      Now the problem. It looks like a plausible description of how software is developed -- as a nonlinear network of processes and enitities -- rather like the one I proposed a long way in the past [ monograph/ ] (which never got published -- IEEE lost it, and I lost faith in it).

      To evaluate it properly would take several year of expensive experiements, polls of users, the discovery and fixing of bugs, and so on. And I don't have the time left to this. What I do know is that I would love to use the SEMAT kernel to organize a Software Engineering course...

      2012-12-11 Tue Dec 11 14:39 SEMAT -- the etext book

    1. SEMAT::acronym="Software Engineering Method and Theory".

      SEMAT is from the same person who gave us Use Cases -- but has a much wider backing. I was reminded about it from an "advertisement" article in Comm ACM (above, later) but digging into it found that Safari books has a free copy of a text book [JacobsonEtAl13] which will be published on paper next year.

      2012-12-10 Mon Dec 10 11:11 History of PHP -- If you love your code -- set it free

      Another interesting study [Severance12c] by Charles Severance of modern programming and other languages -- in this case the history of PHP by its author in the IEEE Computer Magazine. You may be able to find the interview on line when it is posted....

      2012-12-07 Fri Dec 7 07:30 Emprical research into value of GoF Patterns

      There has been a lot of advertizing for patterns... you can search for the term in my bibliography or on this sight to see what I mean. This [ZhangBudgen12] paper surveys 600+ papers and articles and finds only a dozen experimental evalutaions, and half-a-dozen exprience papers. Their conclusion -- their is no evidence for many of the claims for the Gang-of-Four patterns. However they may just speed up maintenance. They think we need more research. I would like to see less hype and band wagon jumping.

      2012-12-06 Thu Dec 6 11:01 Quick Question -- is LESS a Better CSS

      [ http://lesscss.org/ ]

      2012-12-05 Wed Dec 5 12:43 Empirical OSS Statistics process management maintenance 300 SourceForge projects

      Here [MidhaBhattacherjee12] is a study of 300+ SourceForge projects aiming to find out how the management and organization of the project effects the rate at which work is done. Does it matter if you are told to work on a perticular thing, or will you work faster if you have a free choice? It turns out it may depend whether you are concerned with fixing a bug or with adding a feature/improvement.

      2012-12-04 Tue Dec 4 10:51 Updates

      Adding somme reviews and comments to existing items.

      [JacksonD06a] has a revised edition.

      [SharTan12] , [Allman12] , and [Helland12] have all been reviewed in CR.

      David Lorge Parnas in a letter (V55n11(Nov 2012)p9) [ 2366316.2366318 ] critiques [ChaudhuriGalwaniLublierman12] on several levels.

      2012-12-03 Mon Dec 3 08:50 Designing social systems as games -- listen to the users

      Coding Horror [ the-organism-will-do-what-it-damn-well-pleases.html ] has another meditation on the design of social systems including the history of Lucafilm's Habitat (1985), a citation to a book on Web Reputation Systems (O'Reilly), and a conversation with the author. I love the following statement by Jeff Attwood
        people are the source of, and solution to, all the problems you'll run into when building social software.

      I would edit this -- delete the word "social". But "MJ" has already posted this comment on the page.

      2012-11-30 Fri Nov 30 09:34 Requirements problems are still with us

      According to [ 240012797?cid=DDJ_nl_upd_2012-11-27_h&elq=2f3471aaa1894223bce3873c8991ad67 ] (Dr. Dobbs editorial by Capers Jones, November 26, 2012) projects still have problems -- the same problems -- with requirements.


      1. Many requirements are dangerous or toxic and should be eliminated.
      2. Some clients insist on stuffing extra, superfluous features into software.
      3. Requirements are never complete and grow at rates greater than 1% per calendar month.

      This article is well worth studying and thinking about.

      2012-11-29 Thu Nov 29 09:53 Combining formal specifications with inspections to find defects

      I bet this [LiuChenNagoyaMcDermid12] describes a quality assurance technique for code that is just not going to catch on. It points out that we need to be sure that the code does all the things permitted in the specification -- and good OO design based on use cases does this well. It also notes that there must not be any paths thru the code that are outside the specification. And this is just about impossible in an OO system...

      2012-11-28 Wed Nov 28 14:47 Why open source instals easier than proprietary software

      Here [ http://slashdot.org/topic/bi/a-gentle-rant-about-software-development-and-installers/ ] we have someone sharing a lot of pain.... we know what he means and share the pain... enjoy!

      2012-11-27 Tue Nov 27 10:05 Coping with existing systems

      Research in Software Engineering has tended to ignore the existing systems and focussed almost entirely on creating new software -- however it did start to pay attention to maintenance and hence reuse. Now I have found a rare but almost unreadable case study [ZickertBeck12] in the IEEE Transaction on Software Engineering of 3 projects in a company in the finance business. It is about the decision making and fact finding processes that must proceed software development. In particular the interactions between "Business analysts" who work out whatn is required, and "Technical analysts" who understand what is possible. The existing system, in this paper, seems to be a major contributor to the problems -- not an oportunity. They have one understandable idea -- when analysing an existing system, work bottom up, for what is, to what it is for.

      At no time is there any mention of the tools, methods, diagrams, developed over the years to help people analyse existing systems and develop improved ones.

      2012-11-26 Mon Nov 26 15:39 Talking of old computers

      [ index.htm ]

      2012-11-21 Wed Nov 21 15:13 Happy Thanksgiving and an old WITCH

      Back on Monday.... meanwhile a lovely old computer

      Back on Monday.... meanwhile a lovely old computer [ technology-20395212 ] (WITCH).

      2012-11-20 Tue Nov 20 10:30 Lots more seminars being scheduled

      [ seminar/ ] (There will be additions, subtractions, and changes...)

      2012-11-19 Mon Nov 19 13:15 Cancelled Seminar Rescheduled Monday Dec 3rd

      [ seminar/20121203NikhilKasireddy.txt ]

      2012-11-16 Fri Nov 16 04:49 Tidied up my list of software tools

      [ samples/tools.html ]

      2012-11-15 Thu Nov 15 11:53 Translations copies and copyright for my pages here

      I just got this
        My name is Dimitar Teykiyski and I am a blogger in Bulgaria.

        I have accidentally found your page which is located at [ python.html ] and found it very interesting! It is a shame but many people in my country don't understand english well so I thought why not to translate it by myself to my blog.

        So i'm asking for you, if you dont mind, to give me written permission to do that as well as link back to my translation So that Irealized that my work would not go unnoticed. Thank you anyway!

      I responded

        No problem -- as long as you include a pointer back to the pages you translate.

        If you send me a link to any pages based on my pages I can place links to them in my site.

      For a long time now I have had the same copyright for most of the pages on this site:

        In the absence of any other copyright statement you may copy the document in which the link to this page appeared and use that document as you wish and at your own risk. However you must include the link to [ signature.html ] as its source, disclaimer, and copyright.

      A slightly tougher "copyleft" statement is used in my MATHS language pages

        These MATHS pages are owned by Dr. Richard J. Botting in the School of Computer Science and Engineering, CSUSB.

        Please make links and references to this material. As a rule each section heading, declaration, definition, axiom and labeled formula is an anchor that you are invited to link to.

      1. These files can copied in part or whole and distributed freely for any non-profit purpose.

      2. If you want to make a profit out of the copy please contact me by email so we can negotiate a small contribution to the upkeep of this web site.

      3. All copies must include a copy of this notice, in its entirety.

      4. Up to date copies of the original can be got free from [ http://cse.csusb.edu/dick/maths/ ]

        2012-11-14 Wed Nov 14 15:58 Writing Proofs -- Leslie Lamport in 1994

        I found this online report [Lamport94c] that gives easy access to a later publication on a clever way to construct formal proofs that leads to fewer errors, and more readable proofs.

        From these publications I got the idea of separating theorems from their proofs in MATHS. A theorem called TTTT for example might appear like this

         		(evidence) |- (TTTT) formula.
        and elsewhere in the same page must appear
         		. Proof of TTTT
        and the page is rendered with a link from the "(TTTT)" to the start of the proof.

        Examples on this site include [ samples/project.html ] [ samples/fish.html ] [ samples/hours.html ] [ samples/syllogisms.html#03 ]

        2012-11-13 Tue Nov 13 14:12 Think on your sins

        I have been overdosing on 007 for the last month or so.... But while exploring Wired recently I recognized something that I had a hand in, way back in the 1970's. I was a young, newly married, lecturer and so needed money. I got hired as a computer consultant by a nearby movie studio -- Pinewood -- west of London. They wanted to make a thriller "The Human Factor" that had realistic computers in it. I dismissed all the fake ones in the gigantic warehouse of props... and took the props man to see the real computers in my University. He said: "These look like my wife's washing machine" -- but he built boxes that had the same proportions and a nicer color scheme... and I helped fake the computer input-output on the screens using video tape...

        I was shocked to se these same boxes in a comedy a year or so later...

        And now, horribly, they are part of one of the Most wonderfully ridiculous movie computers of all time [ ?utm_source=Contextly&utm_medium=RelatedLinks&utm_campaign=Previous&pid=310 ] on Wired magazine.

        I guess that is karma for you.

        2012-11-09 Fri Nov 9 13:45 Good list of resources for design for the web

        My thanks to Tom Coner and his students


          My name is Tom Coner and I'm contacting you about your page:

          [ samples/javascript.html ] I've bookmarked it and wanted to let you know it's been a big help! As a retired IT director, I've included some of the links you've listed on that page in my syllabus. (I work with my local library in Vermont to teach computer & design classes on the weekend!)

          I thought I'd share another resource we've been referencing. It was actually my group who brought it to my attention...I figured it fit in well with the content of your page. Can you include it somewhere?:

          [ website-design-101 ]

          From one teacher to another, I hope I could help! Let me know if you update so I can show my group their efforts are reaching outside of our circle. Keep up the good work!

          Sincerely, Tom

        I have added to my samples/etc web page [ samples/etc.html#Web Design ]

        2012-11-08 Thu Nov 8 23:30 Technical debt noted

        Technical Debt is a neat metaphor for a common form of decision making when developing software. Often the pressure to complete the project or an increment quickly forces you to compromise other qualities -- for example the style of the code, the testing, the care taken in design, or the analysis of requirments and points of variabillity to come up with a stable architecture -- any and all of these can be sacraficed to ship the code. Then you start to pay for the choice -- the interest becomes due. And you then need to find time to pay down the debt by redoing the work before the interest kills the project...

        Technical debt is the subject of the current (Nov/Dec 2012) edition of the IEEE Software Magazine. I have selected to articles (below) as the best of the 4 or 5 in the magazine.

        I first noticed technical debt in 2009. In February I added this [ paying-down-your-technical-debt.html ] link to the Coding Horror blog to my notes on CSE375 Requirements ENgineering. It was mention in a conference on Agile Formal Methods [BlackEtAl09].

        In 2011 Forrest Shull [Shull11] editorialized on technical debt and stresses the need to track where the scrimping has occured...

        In 2012 [Allman12] surveyed the literature and came to the idea of a 4 way tradeoff between quality, time, resources, and debt. This paper noted what the Coding Horror blog noted: all projects tend to get into technical debt.

        I had hoped to also link in a model of software development I have been working on for some time but it needs a lot of work... [ papers/rjb12.design.html ] which describes software development as a series of changes made to a system that make it (hopefully) more useful and have better qualities... but does not handle elapsed time well and points to inherent conflicts in all realistic projects.

        2012-11-08 Thu Nov 8 10:15 Technical Debt Observed

        Here [LimTaksandeSeaman12] is a report on 34 interviews with practitioners on whether they know about technical debt... and they do, even if they do not know the word.

        2012-11-07 Wed Nov 7 11:01 Technical Debt -- Introduced

        Here [KruchtenNordOzkaya12] is a history and an attempt at the theory of technical debt. My spin on it is that under the pressure to complete projects (or iterations) on time we often take technical short cuts .... and then repeatedly pay (in terms of time) for taking them... for example: scrimping design may make the software very hard to change... So this is like borrowing money (the debt) and paying interest on it until you pay off the debt.

        This is the first of two postings on technical debt. The next one will appear above this, of course.

        2012-11-06 Tue Nov 6 10:50 Evidence based software engineering -- ESE 2.0

        Forrest Shull [Shull12a] editor of the IEEE Software Magazine has written an interesting editorial on the rise of evidence based software engineering and the still highly popular hype cycle. As an example of hype see the next item in this blog. And several more before that... Or you can search my bibliography for special tags like "=EXPERIMENT", "=EMPIRICAL" or "=EXPERIENCE" to see some articles and papers with more than just advertising and opinion.

        2012-11-05 Mon Nov 5 09:28 Better inspections by using OSS techniques perhaps

        Here [RigbyEtAl12] is a nice article that compares the original peer review or inspection process developed by [Fagan76] [Fagan99] and AT&T in the 1970s and 1980s with that which has evolved in open source communities -- and makes some proposals to transplant ideas. For example a Fagin inspection is of a complete artifact at a particular mile stone in the project -- and every body (author or inspector) dreads it. In OSS each tiny change is reviewed and improved before it joins the release. The review process (like in eXtreme Programming) is continuous and starts with the very first piece of code.

        Useful thought provoking and possible profitable ideas. Someone should look for direct evidence that moving the traditional inspections in this agile direction leads to improvement.

        2012-11-02 Fri Nov 2 08:34 History of methods with errors

        The earlier (below) rant was about [Reinicke12] and I still don't like it.

        2012-11-01 Thu Nov 1 11:55 Reducing Risk by Remaking Computer Systems as a Clean Slate

        Here [Markoff12] is an article that is about Peter G. Neumann whose work on the risks of high technology for decades... and describing why he thinks we have to start affresh, from the silicon up. Worth reading and thinking about. But whether project "Clean Slate" will ever be available to me, I don't know.

        2012-10-31 Wed Oct 31 10:13 Rant on SDLC and UML and RUP in the Literature

        I am delaying posting a new bibliographic item because it is making me very angry.

        I am used to articles and papers that draw UML diagrams incorrectly.

        I am used to people misunderstanding the RUP -- it should be tailored to be as agile as you need, for example. It is also explicitly counter "waterfall".

        But I'm staring at an article that defines the SDLC as the "System Development Life Cycle" and then presentas a table where the SDLC is the "Software Development Life Cycel". And here is some news for coders -- there is more to developing a system than programming. Software development is a part of the SDLC. And "System" development has much wider concerns than "Software" Development -- like budgets, hardware, people, politics, etc..

        Now RUP is a software process and so only covers part of the system development life cycle...

        I'll post more when I have more time and the steam stops coming out of my ears.

        2012-10-30 Tue Oct 30 11:33 Dynamic Software Product Lines -- DSPL

        The latest issue of IEEE "Computer" magazine has dedicated 50 pages in its October issue (V45n10) to articles on ways to allow software to vary while it runs.

        The idea of software that is assembled out of modules when loaded was common in the 1970s for operating systems. The authors are right it takes design and architecture for this to work well. We are all familiar with "dll hell".

        The papers advertise techniques for software to change the modules to meet changing demands, as it runs. If a component fails to respond quickly then a more expensive but faster one replaces the slow one. But here again Craig Larman spend several chapters on the use of polymorphism to provide "Protected Variation"... in his [Larman98] book.

        These articles seem to be making a mountain out several gopher mounds.

        2012-10-29 Mon Oct 29 11:29 Planning to retire

        I will be leaving CSUSB at the end of the academic year -- September 2013. However I will not be renewing my membership of the IEEE Computer Society this year -- so an excellent source of papers and articles is going to dry up in December 2012. And without this blog will loose its purpose... I plan therefore to reduce the publication rate from 5 times a week sometime soon.

        However I will be maintaining a more personal but sporadic series of blog entries until I retire in September 2013.

        2012-10-26 Fri Oct 26 13:25 Markup vs Markdown -- the pragmatics of language development

        Coding Horror [ the-future-of-markdown.html ] describes a simple markup system called Markdown (sic). It looks very much the kind of informal notation that we used when sending Email in the 1980s and 1990s. For example you put emphasis on a word like this "*word*".

        I like simple markup systems like [ samples/languages.html#YAML ] (YAML Ain't a Markup Language) and [ samples/languages.html#JSON ] (Javascript object notation).

        I also rather dislike the baroque family spawned by IBM's SGML and Knuth's ΤΕΧ [ samples/languages.html#Markup Languages ] (which also has links for rtf and PostScript ).

        To say nothing of my own language -- MATHS.

        But to return to Jeff Attwood's article. He notes that "Markdown" doesn't have a specification... and the implementations have drifted apart and created gotchas for the innocent user. This is precisely what happened with the early FORTRANs and motivated Jim Bachus to suggest using Chomsky grammars to define Algol 60 ... which leads to Bachus-Naur-Form to specify the syntax of Algol 60.

        So here is the first two ways to develop a language

        1. No specification leads to use, exploration, and incompatible dialects.
        2. Specification first -- does not guarantee use -- consider Algol 60, Algol68, Ada, ..., MATHS, ...

        So how about starting with a small well specified langauge and growing it? Then you have HTML as a model with an unreadable form SGML specification... but still with different implementations but a lot of users.

        It looks like Markdown will be following the FORTRAN and BASIC model of implementation first, specification second.

        2012-10-25 Thu Oct 25 11:31 Bugged PIN Pads

        Just posted this to the CSUSB Campus mailing list...
          Ok, so I am paranoid... but after reading .Se http://www.barnesandnobleinc.com/press_releases/10_23_12_Important_Customer_Notice.html and checking my own debit card for misuse (do that every month any way) I got to thinking about
        1. "Why Barnes and Noble?"

          Now I figure that the thieves were able to plant the bug in the PIN Pad and eaves drop on the information using a laptop while pretending to have a coffee in the in-store coffee shop with WiFi.

          So, a good place to target has people sitting down with laptops within a 100 feet or so of a bugged PIN pad.

          Star Bucks and MacDonalds come to mind...

          And Colleges like CSUSB.

          I hope some one is checking our PIN pads in the Commons, SMSU, and Library!

          "Keep Calm and Carry On"

        2012-10-24 Wed Oct 24 10:49 Thank you Erik -- XHTML link repaired

        An alert reader who calls himself "Erik" has pointed out a broken link in my XML description... [ samples/xml.html#XHTML ] and provided a correction.

        2012-10-23 Tue Oct 23 14:47 Interview about the successful open source Apache web server

        How a very popular web server was developed by a nontraditional process [Severance12b] and a lack of hierarchy!

        2012-10-22 Mon Oct 22 13:35 On the Quality of Open Source Code

        Frustrated by the 12 hour compilations and intertwingled complexities of installing FireFox in FreeBSD [Kamp12] blasts the lack of architectural work and knowledge in the FreeBSD open source development community.

        2012-10-19 Fri Oct 19 10:13 Cross-platform development for smartphones

        Here [OhrtTurau12] we have a useful survey and comparison of different tools and development environments when you want the program to execute on many types of smartphones. It includes several tables comparing what is on offer, how much space a typical app takes, and how fast it loads.

        2012-10-18 Thu Oct 18 15:05 Switching components on the fly to improve performance

        This does not explain how a system can switch components or discover poor performance [CalinescoGhezziKwiatowskaMirandola12] -- but given this is true than it shows how calculate with the requirements are being met. Pity the authors don't know how draw activity diagrams correctly. But this is a common failure of authors and editors in Academe.

        2012-10-17 Wed Oct 17 15:03 Prep for presentations on Friday -- Grace Hopper

        [ hopper.html ]

        2012-10-17 Wed Oct 17 08:04 Advert for using features to organise requirements

        If we can trust this [RudorferStenzelGerold12] article then it pays to organize requirements into features and develop tools and methods that integratethem into existing processes -- in this case Scrum.

        2012-10-16 Tue Oct 16 11:26 Even in Lean processes pay attention to architecture early

        Here [NordOzkayaSangwan12] we have an irritating article. It starts out with an experience that teaches an important lesson: Ignoring architecture at the start of the project can lead to a complete rebuild later. Hence include architecturally significant work items in your lean kanban based process.

        The above is very close to the RUP tenet that you should tackle the risks early, and often. And hence the focus on evolving an architecture during the elaboration phase: you take a requirement that has architectural significance and expand the code base to match the requirement when tested. And yet the article lists the RUP as a traditional, non-iterative SDLC.... more on RUP misunderstanding later. Meanwhile here is a local description

      5. RUP::process= See http://cse.csusb.edu/dick/samples/methods.html#RUP.

        2012-10-15 Mon Oct 15 13:35 Lean Proposals for solving common software product management problems

        Continuing this season of lean, here [MagiyasNikulSmolander12] is the result of studying 13 software development companies which isolates five common problems that might be fixed by using lean principles.

        2012-10-12 Fri Oct 12 13:27 Improving over Scrum by Using Lean Ideas

        Not withstanding my doubts in the provenance of lean (below) [SjobergJohnsonSolberg12] claim that switching from Scrum-based sprints and time-boxes to using Kanban ideas leads to improvements in quality, lead time, and the ammount of work done at one company.

        2012-10-11 Thu Oct 11 15:04 Evidence for Lean Manufacturing

        According to [DybaSharp12] the evidence for lean manufacturing is not as strong as has been claimed. A beautiful example of teasing out the evidence and sumarising it. However, lean has become a new model with inventories lower etc.

        2012-10-10 Wed Oct 10 10:48 Lean software development -- a tutorial

        IEEE Software Magazine has an issue dedicated to "lean development" and KANBAN. Here is the first article introducing the history [PoppendieckCusumano12]

        Notice: I am very suspicious of any process for developing software that borrows ideas from a production line environment. But the fact is that you can produce an improved process on completely false assumptions.

        More to follow...

        2012-10-09 Tue Oct 9 12:40 False assumptions about data flows

        The best thing about [Helland12] is its title and the fact that it argues that you have to allow for for things going wrong when data is transmitted over a network.

        2012-10-08 Mon Oct 8 10:23 Another ASCII notation for Math on the Web

        I developed MATHS as a language that could be used by software developers to do mathematics and logic as part of their work. It turned into a way to produce web pages....

        It looks that I am not the only person to think that a web-friendly notation for mathematics might be a good idea. See [ mrwmath.htm ] (Apronus). and try not to get sidetracked into playing the piano there.

        2012-09-28 Fri Sep 28 13:59 Disturbed week

        I've found it difficult to maintain a daily schedule this week. Several unscheduled events have happened. For example, a retired colleague, Dennis Ikenberry, died. He with Drs. Liu and Mantei started teaching computer programming at CSUSB long before I arrived and they had had the curriculum all laid out for a good BS in CSci as well. Dennis was essential to the running of the department (he had a genius for scheduling) when I was chair. He also taught a nasty class -- Assembler Language programming for many years....

        Back to the stated plan for this blog. Here is evidence [HarterKemererSlaughter12] of the value of the CMM in reducing severe defects in a 20 real ogranizations of the last 7 years. However, the effect happens most when the project is clearly defined, large, and complex.

        2012-10-05 Fri Oct 5 12:30 ACM Unveils New Classification System -- CCS 2012

        The Association for Computing Machinary has one of the biggest repositories of articles, papers, presentations in the world on computer science. These are catelogged using the CCS. ANd they have completely renovated it. This page [ ccs.cfm?id=0&lid=0&CFID=123158191&CFTOKEN=35667488 ] is worth a visit. And some of the items in the digital library now show an elegant tree structure showing where and how the item fits into the CCS.

        2012-10-04 Thu Oct 4 13:48 Managing Quality Requirements in Practice

        According to [SvenssonEtAl12] quality requirements in 11 businesses seem to be handled informally with usability and security being most important. These requirements are key for determining the architecture of software.... but in these case 1/5 are dismissed when the software is being developed. The other interesting facts are that only two interactions between qualities seems to be worth tracking... AN interesting read of a useful poll of real businesses.

        2012-10-03 Wed Oct 3 14:19 The Noun Project -- another iconic international language

        I reported on Iconji in 2010 [ blog010.html#2010-05-25 Tue May 25 19:25 A new constructed language -- iConji ] and here is a brand new variation [ http://thenounproject.com/ ] which is revisitting the territory explored by [ Bliss Symbols in blog009 ] in 1942... Indeed the sample Icons even share a roof symbol from Bliss but with a diffferent meaning. In Bliss Symbols the roof is a symbol of protection and family but in the noun project it indicates a building (Bliss used a box).

        If you are interested -- do not invent another artificial language but read [Okrent09] instead.

        2012-10-02 Tue Oct 2 11:41 Teams People and Us vs Them

        Here [Rising12] Linda Rising writes a short essay on the evolution of human psychology and hence socialogy, and links the result to some case studies of project retrospectives. There are some god example of the kind of problems that arise from very simple management errors.

        2012-10-01 Mon Oct 1 16:02 Theories for Software Engineering

        Here [JohnsonEckstedtJacobson12] is an advert for a project ( ,.Key Semat ) to develop a theory of software engineering and a book ( GUTSE ) proposing a Grand unified theory of software engineering.

        I have a couple of caveats about these two endeavors -- first, Much software is developed without engineering. Much the same way that I set up the coffee maker at home without applying any form of engineering. Second, It is had to see how these ideas can cross the chasm and become mainstream -- even with the OMG getting involved.

        2012-09-26 Wed Sep 26 10:01 Yesterdays post is late -- making MATHS more powerful and algebraic

        [ maths/logic_25_Proofs.html#More Algebra ] with a tip of the mortarboard(sp?) to Futility Closet.

        2012-09-24 Mon Sep 24 13:08 Fun mathematics

        This [EastawayWyndham98] is the kind of book that I devoured as a child. It dives into lots of topics and exposes the mathematics behind them:
        1. Why are four leaved clovers so hard to find?
        2. Which is the best way to go?
        3. Can I trust these statistics?
        4. Intelligence and experience can mislead... do the math!
        5. What is the best bet?
        6. Why are there coincidences?
        7. Geometry of rugby and statue viewing.
        8. Codes.
        9. ...

        My only criticism is the abscence of real proofs...

        2012-09-21 Fri Sep 21 14:15 Trust inside a software process

        This blog is about software development and this week has been a review of literatur on trust. In this post I want to look at the need for trust inside the development process.

        [Ambler07] includes trust as part of the value of documentation. [AniRedmiles09] points out the importance of trust when software development is distributed.. and argues that continuous communication, leadership, and time are needed to build trust, but diversity, large and special projects tend to have less trust. [Arango95] argued that reuse of code requires trust as the internet makes code more available. [BhatGuptaMurthy06] found that trust is an important success factor with offshore outsourcing. [BoyleReslerWinter99] talks about the need for programmers to trust their compiler. [DavanbuStubblebine02] gets into trust between components in a software system. [Elfatatry07] defines components vs services and argues that services are less trustworthy than components. [Kamp11a] argues that we can not trust software until we have effective liabillity law for software. [MoeDingsoyrDyba09] stress the need to develop trust and comitment within the team developing sofware and makes some sound sugestions for fostering it. [OConnellSaiedian00] notes the problems with detecting problems in contractors processes. [RameshCaoMohanXu06] again note the need to develop trust to get an agile distributed process -- and the nedd for verification. [Sabherwal99] notes cycles of trust and distrust in outsourced software development. [Spinellis03c] returns to Thompson's 1984 Turing price lecture which argues that you have to to trust programmers and their tools. [TaylorH06] describes the ned of trust in outsourced development. [ThomasBostromGouge07] write about problems with virtual teams including loss of trust.

        In summary -- trust is critical to developing software when the process is outsource, opensourced, or distributed.

        2012-09-20 Thu Sep 20 15:14 Older items on trustworthy systems

        There AniRedmiles09has been a lot published on making systems that are trustworthy. Here is a brief rough survey of the litereature as found in my bibliography.... enjoy.

        Back in 2001 [Nissenbaum01] shows how computer systems embody values -- including trust.

        In 2003 [Denning03] and [DenningDunham03] describes the "Language-Action-Perspective" which describes how a series of actions can lead to trust -- if they follow a particular protocol. Also see [Weigand06] for more on the language-action-perspective.

        In 2004 [Capra04] published a formal model of trust relations: their formation, dissemination, and evolution.

        In 2006 [BekkeringShim06] did some experiments and noted that the normal setup for videoconference means that people do not look at the camera and so appear to be avoiding eye-contact which discourages trust.

        In 2007 [LiMukesh07] describe trust management in distributed systems and whether trust is a transitive relationship.

        In 2008 [OfuonyeEtAl08] carry out a thourough survey of the literature on building trust into e-commerce sites.

        In 2009 [IriberriLeroy09] describe life cycles in various social networks and how they can fail to establish a trusted and stable system. Also [NuseibehHaleyFoster09] describe how trustworthy requirements are developed to handle untrustworthy components -- for example terrorists on a plan...

        In 2012 [SharTan12] an unfortunate feature of web site -- cross-site scripting -- that makes it hard to trust user input.

        2012-09-19 Wed Sep 19 15:05 Trust lifecycle in voting

        This [NestasHole12] is an article based on a survey of people involved in electronic voting that describes the cycle by which trust is lost and regained.

        2012-09-18 Tue Sep 18 15:01 Cybercrime means winning trust by good acting

        Having noted (below) the link between trust and cybercrime.... here is a fun article [Berghel12] arguing that an actor has the same methods for winning trust and belief as a cyber-criminal.

        2012-09-17 Mon Sep 17 13:36 Trust

        I have collected several articles and papers discussing aspects of trust in our networked world. I will start with a couple from the New Scientist [Schneier12] (Sociology and psychology of cheating-- the opposite of trust) and [Norenzayan12] (Why monotheism leads to trust and so civilization).

        Later postings in this blog (above!) will cover the link between thespians and cyber-crime and how trust is lost and rebuilt in electronic voting systems.

        2012-09-13 Thu Sep 13 16:06 Bonus post -- many programs are continuous

        Because I am a day or two early with my preparation, and have a day, tomorrow, full of horrible meetings.... You get tomorrow's post today!

        The motto for this blog is

      6. The long view of software development.

        This [ChaudhuriGalwaniLublierman12] may be the most extreme version yet. Looking back nearly 50 years to when I was writing scientific software for ICI in the Wilton Works, Yorkshire, I was asked to do a lot of different, short projects -- I was an intern/sandwich student. One of the best times of my life. Good beer (Newcastle), lodgings by the sea, folk music, and tons of math/programming fun at work...

        One of the miniprojects was to test out the accuracy of a program for calculating stresses in a large pressure vessel. This was important because every now and then one of these vessels would explode and you could see the mushroom cloud for miles.... So the thought of errors in the program was worrying. My job was to see if the method used failed when the function was defined with code something like this...
        (I will do an ad hoc translation into FORTRAN from k-code):

         subroutine f(x)
         100   if(x)110,120,120
         110   f=expression1
               goto 199
         120   f=expression2
         199   return

        The first expression, above, described the low cylindrical part of the pressure vessel and expression2 describe the hemi-spherical cap on top of the cylinder...

        Now, I had been programming in Algol 60 for more than 12 months, and had also met LISP.... both of which had conditional expressions. It was clear to me that the above code was equivalent to:

      7. f := if x>=0 then expression2 else expression1;

        More, I had, in a pub or two, with fellow minded geeks, worked on the formal calculus of if-then-else expressions. We found out how to simulate conditionals using Heaviside step functions...

        So, I was pretty sure that it didn't matter what form the code took as long as the defined function was (1) continuous and (2) smooth. And from the geometry of the situation we were talking about a smooth transition. And you could even check that f(x) as x tended towards 0 became close to f(0). Just the continuity requirement needed.

        But, to make sure, I ran a lot of tests and submitted an Analysis of Variance showing no effects beyond rounding errors ...

        Coming back to now. This paper shows how to define continuity for any kind of program and how to prove that a piece of a program is continuous. The examples show that many famous algorithms are continuous...

        My guess is that [ChaudhuriGalwaniLublierman12] may have formalized a key instinct of programmers everywhere that small changes to inputs usually lead to small changes of out ... and so tests provide more information than we thought they did.

        2012-09-13 Thu Sep 13 15:46 How metrics fail to improve software

        This [BouwersVisserDeursen12] is a recent description of expriences with failing metrics programs.

        But then [Binstock11b] and [Bednarz11] in 2011 made a similar case...

        2012-09-12 Wed Sep 12 12:57 Behavioral Programming

        Harel [HarelMarronWeiss12] continues to develop and advocate programing by expressing parallel scenarios that an engine executes by finding events that meet all the next steps in al the scenarios and none of the currently forbidden ones. Another example of how designing programs as many parallel processes gives simpler programs...

        2012-09-11 Tue Sep 11 14:10 Eclipse Plugin adds dynamic runtime information and supports maintainance

        Here [RothlisbergerEtAl12] is the report of a pretty sound experiment designed to test a special plugin senseo to the Eclipse platform that adds extra information extracted by running the program to the normal static information. It appears that developers make fewer mistakes and work quicker -- and like the information.

        2012-09-10 Mon Sep 10 13:38 Starting the 2012-2013 Academic year

        Had a good trip to San Luis Obispo last week... now at work organizing field trips, visitting speakers, schedule, equipment etc.

        But I have had time to archive the old items in [ blog012.html ] and to post another interesting articlae/essay by Phillip Armour [Armour12] on the merits of measuring processes when they are unstable as well as when they are predictable.

        2012-08-30 Thu Aug 30 13:08 The quality of software is strained

        Ok, lets start this rant with the observation that is very difficult or impossible to simply change a profile thumbnail on Face Book, or delete a photo completely after it is uploaded! Add to this that most of the apps and software on my iPod crash. So software quality is not good. And it never has been good... (with the exception of a few tightly focussed tools I use each day, that I wrote...).

        Here is Andrew Binstock [ es.aspx?s=2150&e=79326&elq=ead3488f018741578b66f6728f19422d ] expressing his longing for correct code... and suggesting that some languages and toolsets are better than others to avoid defects.

        Then we have the glitches [ http://m.spectrum.ieee.org/riskfactor/computing/it/technical-glitches-hit-tokyo-and-madrid-market-exchanges/ ] hitting markets because of faulty algorithmic trading software. This leads upto the Knight catestrophe: [ knight-survives-another-day-with-short-term-financing.html ] [ algorithmic-trading-glitch-costs-firm-440-million ] [ knight-software.html ] [ wall-street-and-the-mismanagement-of-software ] -- all which seem to imply that more testing and better configuration managment would have helped avoid the glitches.

        Then this article [ http://www.theatlantic.com/business/archive/2012/08/software-runs-the-world-how-scared-should-we-be-that-so-much-is-bad/260846/ ] in the Atlantic Monthly which asks "Software Runs the World: How Scared Should We Be That So Much of It Is So Bad?".

        The key problem is that you can not test for every possibility -- in many cases you don't know some of the weird things that are going on the environment -- or the weird things your users are likely to try.

        Now I have been fighting for better code for most of my career. And one phrase summarizes my belief: Test but verify. In other words, you have to test your code, but you have to do more than test it. You need to know why it is going to work, and the environment that permits it to work... and show why the software plus the environment leads to a good result. But formal methods are not enough. You need to get your work inspected by others. The same way that a piece of mathematics is not accepted until published and reviewed by peers.... so software needs to be reviewed if you want to be sure it works.

        So I was pleased to see [WilkersonNunamakerMerser12] in the IEEE Transactions on Software Engineering experiementing with the effects of Test-Driven Development (the fun way to do code) and Fagan Inspections... and concluding that Inspections may cost mre, but they remove more defects from code than TDD does.

        Will software quality improve -- not until we have some kind of liabillity to make it worth paying for it.

        2012-08-29 Wed Aug 29 14:37 Pair Programming in the Wall Street Journal

        This just in via SlashDot [Walker12] which makes it clear that Pair Programming has appeared on the managerial/financial radar screen. The comments at the Wall Street Journal are somewhat uninformed so I've included a link to the SlashDot discussion which has comments by people who have actually done it -- both effectively and horribly.

        2012-08-27 Mon Aug 27 15:39 Tidied office and started prep for Fall 2012

        My Google Calendar now reflects classes and office hours for Sep-Dec.

        I am working on syllabi and schedules -- but I think the dates may be right even if what we will do on them is wildly different.

        Now for something light, crisp, and entertaining [ http://www.futilitycloset.com/2012/08/24/teamwork-2/ ] which quotes a favorite author and debunks the use of logic and mathematics in everyday life. Enjoy!

        2012-08-06 Mon Aug 6 19:33 Lessons learned from a scientific development project

        Fascinating [MorrisSegal12] have discovered -- from experience -- what I teach in [ cs557 ] and other classes.

        2012-08-03 Fri Aug 3 15:24 Requirements Analysis is Learning and Learning can improve the process

        Nothing too controversial in Neil Maiden's latest [Maiden12] article in IEEE Software.

        This item will be posted with a mindmap to Google+.

        2012-07-31 Tue Jul 31 13:59 Successful management of large ammounts of code

        Here [ 240003694 ] is an interview on the Dr. Dobbs site about how you manage a project with 80,000 plus files of code. Interesting insights: Automation was essential plus good version control. You do not need a large team to manage a lot of code. You and use the version control system to be agile -- a small team experimenets with a new feature to evaluate it. The product evolves. There are special versions of the software biult for testing and analysis.

        2012-07-26 Thu Jul 26 12:27 Arguing that your software and process meets a standard

        According to [GradonEtAl12] (which is not an easy read) it is hard to explain clearly why you think a complex piece of software or a process meets its standards. And so we need a structure way to do this... an extension in some cases of arguments for the safety and/or security concerns being meet.

        OMG! They are trying to unify the structures of arguments.

        2012-07-26 Thu Jul 26 07:44 Local LDAP failure -- No posts

        Try FaceBook [ rjbotting ] or Google, Calendar [ plan.html ] or Google+.

        2012-07-16 Mon Jul 16 09:59 Git Github and gollum for revision control

        At long last I have added an entry on Git to my [ samples/tools.html ] page and added [Spinellis12a] on these tools to my bibliography.

        2012-07-12 Thu Jul 12 09:25 Process Police or Quality Assurance

        Back in the the late 1970's Software Quality Assurance was a hot topic. We had a dozen manual review techniques for making sure that requirements were OK and code fitted the requirements. We also had some pretty rigorous methods. Then people started talking about software processes and there followed manuals defining the best practices that must be used to produce software that worked... Now it appears [Shull12] that some people in Software Assurance in NASA are starting to reassert the original image -- not policing the process but the product (code).

        2012-07-06 Fri Jul 6 06:46 Info Pages Removed -- list below

        2012-06-29 Fri Jun 29 07:29 Pages about to be deleted

        Some time in the next seven days I plan to remove the pages linked below. They date back 16 years. They are full of broken links. Please remove any links you have to these pages. I may put the images and icons into a garage sale... Contact me [ contact.html ] if there is anything you think I should preserve.
        1. infobahn.html
        2. info1.html
        3. info2.html
        4. info3.html
        5. info4.html
        6. info5.html
        7. info6.html

        2012-06-28 Thu Jun 28 07:32 Removing an old Page of links

        12 years ago my colleague and friend Rich McGhee sent me an EMail with some URLs for some useful sites. I converted it to HTML by using MATHS quite easily but I have never maintained the page and links decay. So I have cleaned it out.

        2012-06-21 Thu Jun 21 16:10 Another new super language -- Scala

        Noticed this new language in Comm. ACM.... and decided to document it [ samples/languages.html#Scala ]

        2012-06-19 Tue Jun 19 13:10 Ruby Clojure Ceylon -- Different forms of simplicity

        Got this link [ ruby-clojure-and-ceylon-same-goal-three-very-different-results-195473 ] from Slash Dot's [ ruby-clojure-ceylon-same-goal-different-results ] on how different language designers have different models of simplicity. And here is an author of Clojure [ Simple-Made-Easy ] talking about the distinction between "simple" and "easy"... and the importance of not getting things entangled in our code/languages/tools. Indeed the idea of modules only interactting through interfaces and each being concerned with one decision is as old as [Parnas72b] in 1972.

        Which makes me aware of the problem of defining qualities (what do you mean simple?) in any set of requirements.

        2012-06-14 Thu Jun 14 14:33 Busy 4 days ahead and then Summer

        I doubt if I will have time to post anything until Tuesday next week and then I will shift to a reduced schedule -- for example once a week.

        2012-06-14 Thu Jun 14 09:22 Fixing GET and POST in PHP

        As always, security depends on paranoia. It turns out that most of my PHP scripts on this site used to give an error message if called directly from the URL box with a field missing. I didn't worry about this enough to fix it until our excellent ( = paranoid) security people pointed out that the error message gave the path through the file system on the server. This is the equivalent of giving an evil magician a scroll with detailed map of part of a dungeon...

        So I spent yesterday replacing

         	if (array_key_exists('search',$_GET))
        in 16 scripts called "lookup.php" in 16 different parts of the site...

        I woke up this morning worrying about other scripts that might have this problem.... and uncovered half-a-dozen more. Three of these extracted 4 or 5 different inputs and so it was worth creating a function to replace missing data by an empty string. Here is the example using $_POST

         	function get($key)
         		if (array_key_exists($key,$_POST))
         			return $_POST[$key];
         			 return "";

        I'm expecting to find other problems.... and I am worrying about refactoring my scripts to share some common functions... What started out as a simple idea is starting to look like something that needs re-engineering... A nice example of technical debt.

        2012-06-13 Wed Jun 13 10:13 Modelling Continuous Systems -- Now and Then

        This all started with an advertisment from Wolfram
          SystemModeler represents a fresh approach to scalable system modeling, making use of unique symbolic methods, as well as the emerging Modelica system description language. Our CEO, Stephen Wolfram, recently wrote a blog post giving some more details: [ announcing-wolfram-systemmodeler ]

          There's also an extensive product website at: [ system-modeler ]

        I've been fascinated by the promise of easy models of continuous systems since the 1970's (see below). Today I would justify its presence, here, in this blog, because software has to interact with continuous domains -- hydraulics, electrics, mechanical devices... and even people and movements. I will say nothing about the movement of objects in games.

        The Wolfram advert lead me to a language that I have never heard of Modellica [ index.php?title=Modelica ] (Wikipedia desktop) [ Modelica#section_8 ] (mobile)

        And thence to the Open Modellica project
        (Open Modelica): [ http://www.openmodelica.org/ ] and a UML profile and tools: [ 134 ] (open modelicaML -- UML profile).

        Here is an example model from the Wikipedia

         model FirstOrder
           parameter Real c=1 "Time constant";
           Real x "An unknown";
           der(x) = -c*x "A first order differential equation";
         end FirstOrder;

        In my language MATHS we might write

      8. FirstOrderODE::=following,
        1. c::Real=1, time constant
        2. x::Time->Real.
        3. D x = -c * x.

        (End of Net)

        [ Differential_Calculus in math_94_Calculus ]

        Back in 1972 I was interested in modeling continuous systems. I was wanted to model societies -- this interest has lead me to Cliodynamics [ http://cliodynamics.info/ ] in this century...

        But in the 1970's I had researched DYNAMO but (1) couldn't get a copy, and (2) did not like its use of the Euler method.

      9. DYNAMO::= See http://en.wikipedia.org/wiki/DYNAMO_(programming_language).

        I got my hands on an extension of FORTRAN (called SYSTRAN) that has been lost to history... the models were punched on cards and compiled and run on the mainframe.

        At that time I kept a detailed log of every compilation and test that I did. I call this my Bug Log. Typically, a compilation (with or without a run) took 24 hours. Mostly waiting for other more important work to be done on the mainframe...

        Looking back I see that most of the errors were typing errors that FORTRAN accepted as correct... for example names of common blocks, mis-spelled variables.

        I hope that Modellica and the graphic tools will make it easier to make models and solve them. I must see If I can get a version of the Open Modellica tools for the UNIX we run here. Or might I might hack an ODE solver in JavaScript on Google Docs!

        2012-06-12 Tue Jun 12 09:14 It seemed like a good idea at the time

        According to this short essay [ 240000813?cid=DDJ_nl_upd_2012-05-22_h&elq=85d07fc400a54c73be19fd172521b473 ] by James Hague, May 22, 2012, in Dr. Dobbs Journal... creeping featuritis has caused a lot of hardware and software to be incomprehensible. Each unnecesary option adds to the technical debt that has to be paid off sometime.

        2012-06-11 Mon Jun 11 09:53 Comparing Programming Languagesm -- Sociology and Logic

        Slashdot [ why-do-programming-languages-succeed-or-fail ] gave me this link [ index.html ] which has taken a massive quantity of opinions about programming languages and analysed using the tools in a sociological statistices. The visual are well worth a visit.

        Some years ago I was interested in the formal analysis of concepts [ Calculating_Concepts_of_Programming_Languages in logic_42_Properties_of_Relation ] and calculated the following image that represents my personal opinions at that time

        [Red languages and blue concepts]

        2012-06-07 Thu Jun 7 15:56 Seminars -- Early Post -- it seemed like a good idea at the time

        First tomorrow we have half-a-dozen seminars ( [ seminar/20120608Schedule.txt ] , Details: [ seminar/20120608CollinWymer.txt ] [ seminar/20120608DarinTruckenmiller.txt ] [ seminar/20120608InwoKim.txt ] [ seminar/20120608MacChou.txt ] [ seminar/20120608ReggieNorman.txt ] [ seminar/20120608WesleyRockwood.txt ] [ seminar/20120608YinChen.txt ] ) and I, as chair of the seminar committee will be going to them all... so no time to post this [ 240000813?cid=DDJ_nl_upd_2012-05-22_h&elq=85d07fc400a54c73be19fd172521b473 ] from Dr. Dobb's tomorrow -- it argues that we who value simplicity have grown systems that are too complex to be useful.

        2012-06-07 Thu Jun 7 07:54 Apology to people with nonASCII names

        I am sorry but I have removed the umlautes and other diacritical symbols from half a dozen names in my bibliography because the new version of wc doesn't just count words but also lists any character that is outside the original ASCII set. Not a bug but a feature?

        By the way, if every you need to do this on UNIX then this filter [ tools/purify.c ] will make characters with code > DEL with <<.>> which makes it possible to search for them.

        2012-06-06 Wed Jun 6 08:28 So you want to be a programmer

        Jeff attwood is (again) talking sense in his Coding Horror blog [ so-you-want-to-be-a-programmer.html ] which is his thoughtful response to the screaming and shouting about a previous rant poo-pooing the Mayor of New York's plan to learn to code.

        I think I agree with his conclusions: not everybody is born to program. And I don't know how to teach programming to someone who doesn't have the "spark". I've only been trying for 40 years. Until I came to America I had never met someone who couldn't learn to program. They weird mixture of creativity, discipline, and gumption that lets you force a stupid computer to do what you want -- overcoming your own stupidities on the way... this is a gift that many people have but not all.

        And many of the people who have the gift never want to program ever again. The process is just too painful.

        But what I have always thought is that everybody has to have played at programming, in much the same way that I played with radio circuits and made sand castles. But I also spent several hours as a child working through a complex and useless algorithm that I had written by hand... Hence we need more systems like Logo, Scratch, and even BASIC for children to play at programming and discover whether they have the gift/curse of programming.

        2012-06-05 Tue Jun 5 07:54 Addition to notes on JavaScript

        Just added [ http://zero.milosz.ca/ ] to my incomplete description [ samples/javascript.html ] of JavaScript.... and in the process tidied up and modernized the page a little.

        2012-06-04 Mon Jun 4 07:31 Technical debt

        Here [Allman12] is a good introduction to the idea of technical debt and how to manage it.

        This web site is full of technical debt -- even though there is very little of it is executable code. Any formal language is a technical Loan Shark.

        2012-06-01 Fri Jun 1 12:35 It is alive

        Birdie just told me that our "NFS" file server is up... and this test seems to be working...

        2012-05-31 Thu May 31 19:34 CSE Emergency System Maintenance -- No Blog etc on Friday

          CSE will be performing emergency system maintenance tomorrow (06/01/2012) at 8am, which will cause jbh3-1 and labs temporary out-of-service.

          Estimated time for maintenace is 5 hours.

          We will resume the services ASAP once finished.

          If you have any questions or concerns about this matter, please contact: Birdy Wang bwang@csusb.edu 909-537-5430

        2012-05-31 Thu May 31 08:48 Seminar on software engineering

        This local presentation [ seminar//20120608InwoKim.txt ] has this abstract
          Software quality is the one of most important factors in software development. IEEE defines software quality as the degree to which a system, component, or process meets specified requirements. Speed, resource usage, network usage, stability, security, power consumption, test coverage, thread-safeness, maintainability and documentation are the example of requirements for software. In my independent study, I examined several areas in which Java-based software development can be improved. In my talk, I will present my work in one area: the use of memcache to reduce the cost of deploying a wiki application to the Google App Engine cloud-based computing environment. This wiki is an application that Dr. Turner has students construct as a part of his server programming course.

        2012-05-30 Wed May 30 06:35 The dark side of software Engineering

        I'll have to get my hands on [RostGlass12] which is advertised as
          Betrayal! Corruption! Software engineering?

          Industry experts Johann Rost and Robert L. Glass explore the seamy underbelly of software engineering in this timely report on and analysis of the prevalence of subversion, lying, hacking, and espionage on every level of software project management. Based on the authors' original research and augmented by frank discussion and insights from other well-respected figures, The Dark Side of Software Engineering goes where other management studies fear to tread -- a corporate environment where schedules are fabricated, trust is betrayed, millions of dollars are lost, and there is a serious need for the kind of corrective action that this book ultimately proposes.

        If you have read it, you can send me a short review...

        2012-05-29 Tue May 29 09:10 Memorial Day -- Late Start to Week -- DaniWeb questions Answers

        Yesterday the USA celebrated Memorial day and memory of those fallen I wore a poppy in my hat. May They Rest In Peace.

        Today I just have time to take note of another web site (cf Stack overflow and slashdot) for people with questions and answers about software development. The link is [ http://www.daniweb.com/ ]

        and I post as "Dumbledor" one rare and random occasions.

        2012-05-25 Fri May 25 07:36 CSE Seminars today in JBH391

          Time: 10:30am

          Time 11-12 Lunch

          Time 12-12:30

          Time 12:30pm-1pm

          • Title A Proton Simulator for Testing Implementations of Proton CT Reconstruction Algorithms on GPGPU Clusters
          • Student Micah Witt [ seminar/20120525MicahWitt.txt ]

          Time 1:30 PM

        2012-05-24 Thu May 24 06:58 The undiscovered country -- open source requirements

        Here [VlasRobinson11] we have a conference paper and technical report showing that you can search for and find requirements in open source projects. It appears that open source is not just code...

        2012-05-23 Wed May 23 07:03 14 UML diagrams

        My notes refer to "13 UML diagrams". An alert student found that the Wikipedia has 14 diagrams. It shows a new type of diagram called the Profile Diagram [ Profile_diagram ] which was added in the UML 2.2 standard in February 2009. It's purpose is to define new stereotypes, tags, constrains, and enumerations and put them in a kind of package called a profile. The classic example is a profile for "Enterprise Java Beans". But there have been profiles for data bases and for business modelling. The nicest thing about Profile Diagrams is that you can attach a graphic icon to the description of the stereotype. There is a new type of arrow with a black triangle that connects a stereotype to the metaclass that it extends.

        Next step... scan all my notes and documents and replace 13 by 14....

        2012-05-22 Tue May 22 10:28 Catching up with mathematics -- statistics

        When I was in secondary school I invented a way of approximating π that was better done by Archimedes, 2k years ago. Then I went to college and took a degree in Applicable Mathematics -- and I was taught by people who had used math to win world war 2. With the exception of one course it was all half-a century behind... This weekend I tripped over a nice family of 2><2 matrices that were easy to calculate with because they only had at most one non-zero entry .... and it was 1. It was easy to prove I have a semigrouo and invent a neat notation for the elements. I started to get suspicious that I wasn't the first person to play with this semigroup and posted a question on Stack Overflow/Mathematics. with in three hours I had a detailed answer spelling out Brandt semigroups from the 1900s. I was only 112 years behind:-)

        Yesterday I revisitted a favorite subject -- statistics. Most of my industrial experiences in England involved stats. I had a need to calculate a correlation coeficient and regression equation. I thought I would have to take the data back to the little Casio I have at home. Then I recalled Dr. Gomez suggesting that he used Scheme when he needs to calculate something. I had just finished teaching LISP and had a file of functions that calculate means and standard deviations... With in an hour I had translated the code from XLISP (a Common LISP) to Scheme and used it with "guile" to do the calculations. And I thought

      10. "I will need these again"
      11. "Why not share them"

        You will find them at [ tools/stats.scm ] , enjoy!

        Then I thought -- perhaps there is a free app in Apples iStore for my iPod... and there wasn't.

        This morning I realised that I should check the web for pages with statistical calculators: [ statistics.php ] [ http://statpages.org/ ]

        And then I thought how much easier it is to express these functions in my MATHS language and added [ maths/math_85_Statistics.html ] to my notes on mathematics.

        I've just added a couple of Unix Shell scripts for stats to my tools: [ tools/mean.sh.txt ] [ tools/histogram.sh.txt ] (4:04 Tuesday afternoon) and [ tools/stats.sh.txt ] (5:10 Tuesday afternoon).

        Tomorrow I will reinvent the wheel.

        Correction (10:50 Wednsday morning) -- [ tools/correlation.sh.txt ] (awk calculates correlation of first and second field of input).

        2012-05-21 Mon May 21 07:41 Random testing

        It turns out [ArcuriZohaibBrand12] that is both theoretical and practical evidence for random testing to be at least as good as "partition" testing. The paper is a very good survey of the field of testing and the relevant probability theory.

        2012-05-18 Fri May 18 06:50 Web Design -- Do not discuss -- test -- A/B testing

        Continuing the discussion of the importance of "design" in software and the risk of "Big Design Up Front", there is a solution for web sites -- simulate biological evolution:
        1. Create some small mutations.
        2. Some users get the mutated versions.
        3. Analyse which worked best.
        4. Repeat.

        Here are some links to the Wired hype:
          "The rise of A/B testing online began around the turn of the millennium with internet titans like Google and Amazon, and in recent years it has been slowly seeping into ever-greater swaths of modern life, having become, now, more or less standard practice from the leanest startups to the biggest political campaigns."
        1. A/B testing at Google [ http://www.wired.com/epicenter/2012/04/ff_abtesting/ ]
        2. The A/B Test Results Are In [ http://www.wired.com/epicenter/2012/05/the-ab-test-results-are-in/ ] (Game site tweaking)
        3. Test Everything: Notes on the A/B Revolution [ http://www.wired.com/epicenter/2012/05/test-everything-notes-on-the-ab-revolution/ ]

        Now one of the results of my research in 2002 was that it is vital to have a population of competing designs being evaluated in parallel. In this context -- you need many users with different versions at one time.

          A Solvable Stochastic Model of Debugging, Abstract: [ rjb02a.hack.html ]

          Some Stochastic Models of Software Evolution, AVs prepared for presentation at SCI'2002 [ rjb02bEvolve.pdf ] [ rjb02b.evolve.txt ]

        2012-05-17 Thu May 17 07:10 Design is still important -- USER INTERACTION AESTHETICS PSYCHOLOGY FUNCTIONS SELFEXPRESSION

        Looks like "design" is a hot topic. And this sems to be more about the user experience rather than the internal structure of the software. THis is a persistant ambiguity that has always bothered me -- what does an author mean by "software design". The question went away a little with agile refactoring discovering the design as the project evolved -- and I guess they mean the internals -- what classes call which -- but they asssume that this design is "the design". However, here [ software-design-cannot-be-neglected-62304732.htm ] we have people arguing that design the user experience is vital and this [ 59634 ] which argues for balancing self-expression and functionallity... and another paper (found on the Google research blog below) compares beauty and usability.

        2012-05-16 Wed May 16 06:50 Another research blog -- google blog

        Just started to look at this [ ?m=1 ] which lists a series of adverts for research at Google with links to [ index.html ] , Caveat emptor! As an example consider [ is-beautiful-usable-what-is-influence.html ] which reports on test to see how the beauty and the usability of a web site effects what people think of the site. Answer -- a bad user experience makes the site seem less beautiful. An ugly site is just as usable. Of course -- sites should be both beautiful and usable. By the way -- I can see half-a-dozen ways to question this research without even trying... But they have a link to a published PDF which looks like a classic psychological study, and makes me trust the result more...

        2012-05-15 Tue May 15 10:05 Getters and Setters -- OO Programming HARMFUL

        I've just been thinking about getters and setters in OO programming. I did a lecture on them in C++ [ cs201/13.html ] yesterday. Then in the lab they meet something different and a bit weird.

        First here are some pointers to definitions and examples --(skip if you know what a getter and setters are): [ index?qid=20100528064110AAysHqa ] (What are getters and setters) [ Mutator_method ] (Wikipedia -- many languages) ANd here [ why-use-getters-and-setters ] is the classic newbie response "Why not make it public".

        Now for the weird example in the lab. It was a class called Circle. Circle has a private variable radius and I provide double getRadius()const and void setRadius(double r) that do the obvious thing. But I also added an accessors double circumference()const and double area(). But then I added a void setCircumference(double c) which should have changed the radius... The is no circumference member/data field. Instead this invariant is enforced:

      12. x.getRadius()*2*PI == x.circumference()

        But I added a setter function that should mutate the object to change the circumference property. In fact this function is miswritten and the lab is about spotting the fact that the setter is written as a getter. Most of the students fixed it...

        Some years ago, when I was building a formal model of documentation, I came up with the idea of a "Net" of variables connected by constraints. These define a type of object. Here [ maths/intro_structure.html#POINT ] is a object with redundant variables that have both the Cartesian and polar coordinates of a point. In C++, perhaps I might store two of them (x and y) and write getters and setters for them and the two that are not stored (arg and abs). So you can easily rotate a point about the origin, and shift it vertically and horizontally.

        As a third example, in the realm of data bases, last night I was checking out local property values and discovered that there are two keys -- the Tract+Lot composite key and the Parcel Number key. THere is some redundancy -- the Lot number is part of the Parcel Number. SO again one might have a setter for the Parcel Number that also changes the Tract+Lot value.

        So we have a pattern of getters and setters changing the wrong variables and sometimes faking getting/setting non-existing variables. Fun, but how to teach it.

        For more examples see the following links: [ http://ejohn.org/blog/javascript-getters-and-setters/ ] (Javascript) [ 1377-OOP-Getters-And-Setters-A-New-Programmer-s-Frustration.htm ] (ColdFusion) [ index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fref-dialog-gettersetter.htm ] (Eclipse wizards) And here is a debate on thoughtless and getters/setters being harmful: [ jw-0905-toolbox.html ] (Evil in Java) [ getters-and-setters-are-not ] (not evil in Java) [ ?p=23 ] (Doing it wrong)

      13. 13:22:30 Further thought lead to some changes in [ maths/blog.html#2012-05-15%20Tue%20May%2015%2013:20%20Improved%20partly%20baked%20operations%20in%20Nets ]

        2012-05-14 Mon May 14 14:37 Corrected spilling mistooks in archive

        [ blog012.html ]

        2012-05-13 Sun May 13 11:33 Early post -- Languages for safety critical infrastructure embedded systems

        I'm expecting Monday to be rather full so I am posting tomorrows entry on Sunday.

        I've seen several interesting online article discussing the place of C and C++ in software development. Most go for the one size does not fit all philosophy.

      14. One earlier example is Bjarne Stroustrup's recent article [ mco2012010047.html ] [Stroustrup12] in the IEEE Magazine. He defines a particular class of software development where high reliability, high availability, and high performace combine. He calls this infrastructure and argues that strong type checking, generic programming, high level but efficient algorithms and data structures are needed. He goes on to demonstrate how the new standard for C++ (C++11) meets the need.

        Then we have [ Struggle-continues-to-plug-embedded-programming-gap ] (EE Times) that argues that computer science programs that have moved to Java and away form C and C++ have created a shortage of students for embedded software -- which also has to be highly reliable, fast, and available 24/7.

        Stack Overflow [ which-languages-are-used-for-safety-critical-software ] has had an intersting discussion of the best languages for safety critical software.

        Finally Dr. Dobbs has recently described four new langauges that fit somewhere between C and C++: [ 232901652?cid=DDJ_nl_upd_2012-05-08_h&elq=c5528d2568e744d583659c291918147d ] which covers D, Go, Vala, and Rust.

        2012-05-11 Fri May 11 10:34 Advice for people presenting and publishing

        [ seminar.advice.html ]

        2012-05-10 Thu May 10 08:31 Computing -- the inhuman experience

        In opposition to the tales found in the next blog entry, here [ http://developers.facebook.com/docs/reference/api/realtime/ ] is page my wife found exploring Face Book. You need 4 quarters of CSci to understand it.

        This server is running very slowly because it is being backed up.

        Tomorrow Friday the systems will be reorganized... there will be no blog entry.

        2012-05-09 Wed May 9 10:24 Grady Booch -- Computing -- The Human Experience

        I do not know what to make of [ http://computingthehumanexperience.com/ ] a project linked by one of the Three Amigoes who created the UML. It is dedicated to collecting and presenting the human story of computing. I like the little YouTube videos recorded and submitted by people... but don't have time to play the long interviews... The Twitter feed seems to be connected to the same sources that I monitor for this blog. And they clearly have some powerful audio/visual tools as well. And a cool sense of color.

        But is it going to surprise me? Will it be useful in my teaching?

        Let me know what you think.

        2012-05-08 Tue May 8 08:50 Sketchy data structures

        Once upon a time the goal of a data structure was to efficiently provide precise answers to problems. Now we have "sketches" that provide more efficient approximate answers to problems: [CormodeMuthukrishnan12] , enjoy.

        2012-05-07 Mon May 7 10:07 Maslow -- Hierarchy of Needs and Social Networks -- PEOPLE

        Got this link [ http://www.flickr.com/photos/77813293@N00/4926795330/sizes/z/in/set-72157624805150480/ ] from the Coding Horror blog. It is a nice picture of the complexity of humans... Something that I tag "PEOPLE" in my bibliography because it is shorter than "PSYCHOLOGY" and important for understanding programming and programming teams...

        2012-05-04 Fri May 4 09:13 When tasks replace objects

        I find Andrew Binstock's editorial [ 232700402?cid=DDJ_nl_upd_2012-03-28_h&elq=4e457d4ea3444c64babd3ca938e46b3a ] confusing. It reads as if we have no technology for a parallel architecture. Whereas I have been happily decomposing problems into a collection of simple parallel tasks and connecting them with either UNIX pipes [McIlroy86] or semi-coroutine calls [ bibfull.php?search=corout ] for more than 30 years... Inspired by Michael A Jackson's Data-Directed Design [Botting87b] and Parnas's classic papers [Parnas72a] [Parnas72b] [Parnas77]

        However -- what is not clear to me is how to make this family of architectures map on to high performance computing -- multi-core, GPGPU, MPI, etc, etc..

        2012-05-03 Thu May 3 08:27 Software Process Improvement Research needs improving

        According to a survey [UnterkalmsteinerEtAl12] of 148 papers written evaluating SPI of Software Process Improvement research there is little to conclude because of deficiencies in the research. This was after they started with thousands of papers and discarded a lot of useless ones. On the other hand we can conclude CMM is a popular framework. Also it is easier to measure an improvement in the process than it is to measure whether it made a difference to the stakeholders.

        2012-05-02 Wed May 2 06:37 Noting design decisions as you code

        Andrew Binstock, editor of Dr. Dobb's Journal, has written a fascinating if anecdotal report [ http://m.drdobbs.com/144530/show/54aaa4cc0ed0a9d714d988f59496bded/ ] on a recent burst of coding where he wrote down -- in a spreadsheet -- every design choice he made. It is a short and readable report. Most instructive. It turns out that it is difficult to be consistent about what decisions are important. Hmmmm....

        Another thought -- recording the road not taken is something that can not be made executable! So it is a counter example to the "clean code" concept that everything should be executable code -- no comments, no documentation.

        Back in the 70's I kept a special journal that I called "Bug Log". I recorded every run, every bug, and how I found it and fixed it. This was on several small programming projects. I learned a lot and improved my programming. Later, when I was interested in the performance of algorithms I wrote up every experiment as if It was a Physics or Chemistry. Again it taught me several things -- most of which are boringly obvious after they were rediscovered -- like the value of the Big-O notation introduced by Donald Knuth.

        I think that a journal is a tool that helps you do things better -- even programming.

        2012-05-01 Tue May 1 07:05 Predicting Performance -- PEPA Markov ODEs

        Here [TribastoneGilmoreHilston12] is another step in the continuing research into the PEPA [ samples/PEPA.html ] technique for predicting the performance of a system made of many interacting parts by using differential equations. It is highly mathematical but the proofs and pudding proofs -- demonstrating that the computer simulations converge towards the numerical solutions of the equations.

        2012-04-30 Mon Apr 30 08:55 Read the Source Luke

        Once again [ learn-to-read-the-source-luke.html ] the Coding Horror Blog of Jeff Atwood has said something that I have preached for a very long time better than ever I could. Back in 1999, I tried to get [ rjb99f.open.html ] published as a short opinion piece in the Communications of the ACM. It vanished. It argues that all code should be open to review by those that suffer from it. In particular, government code must be open to review by the governed, if you want a true democracy.

        2012-04-27 Fri Apr 27 07:43 Evidence of software evolution -- Agility Iteration Wikipedia TOOLS BOTS CYBORGS

        Last night while waiting to grade some lab work and at the bus I used the search engine on my bibliography (up to 3500+ entries now) looking for :Agile" and got a slew of papers and articles all describing believable successes with iterative evolution of software -- including some things I wrote in the 1980s... Here is another example of software evolution [HalfakerRiedl12] in the domain of tools used in maintaining the Wikipedia.

        By the way --- a week or two I started thinking about adding a tags feature to entries in the blog. Having concluded that a tag would have to link to heading of the section (or subsection) I thought some more and started to just add tags to the headings themselves. Just as an experimental mutation... let us see what evolves.

        Also by the way I have been working on some pages for my samples of MATHS [ samples/JSON.html ] , [ samples/PEPA.html ] , and [ samples/LOTOS.html ] -- enjoy.

        2012-04-26 Thu Apr 26 12:55 What agile teams think about agile principles

        This [Williams12] is a nice history plus a poll that validates the principles promulgated by the Agile Alliance...

        2012-04-25 Wed Apr 25 09:50 Another Advert for Microsoft LINQ

        Watching IBM in the 1960's attempt to replace FORTRAN, COBOL, and Algol 60 by a language so complex that only IBM would be able to compile it... has made me deeply suspicious when a dominant company keeps publishing articles on the advantage os their own technology.

        The problem is that the technology may be useful enough to join the "evil empire". It is also a challenge to theories of data processing.

        This [Beckman12] hypes the power and value of Language INtegrated Query or LINQ. There have been previous articles on the same topic... but you can get a good survey at [ LINQ ] on the Wikipedia that includes a list of the SQOs -- Standard Query Operators.

        Briefly these operators are very similar to those I put into MATHS and those in the Object Constraint Language of the UML. Indeed some of them (GroupBy) may have been first seen as a "Glumping function" in Information Algebra [BosakEtAl62] in the 1960's.

        2012-04-24 Tue Apr 24 10:47 Importance of analysis

        There is something delightfully ironic about [MayhewMGouHaaseHartemink12] describing the importance of meeting and talking with users/stakeholders and developing a common language.... This has been something I have been practicing and teaching for 40 years. Apparently it is still important when the domain in biology rather then accounting say.

        2012-04-23 Mon Apr 23 07:01 Spiked Math -- citations

        Here [ 502.html ] is a good algorithm for choosing when to cite someone elses's work in a math paper or thesis. It doesn't include the sycophantic branches -- always cite your supervisor and any one you want to butter up...

        It applies in Computer Science as well. You need to cite sources for algorithms. If you are going to publish or reuse someone else's code you also better explain where it came from... or face charges of plagiarism.

        2012-04-20 Fri Apr 20 10:59 More on JSON

        I added a UML diagram of JSON data [ samples/JSON.html ] on Thursday and woke up today convinced that it was incorrect -- the model of a JSON object need to explicitly model the mapping from key to value. The other observation is that all though MATHS has been evolving for more than 20 years and has been used to describe a lot of languages -- there are still surprises and things that need tweaking in MATHS. For example... JSON syntax defines "true" and "false" as lexemes and so they override the standard MATHS lexemes (used for a similar purpose. But luckily I did include a technique for refering to hidden/overridden variables.

        On the other hand -- JSON has zero-based arrays and MATHS has (by default) one-based arrays. I will have to delve into my own documentation [ maths/ ] to figure out the neatest way to map one to the other. Similarly for the semantics of numbers...

        2012-04-19 Thu Apr 19 07:16 An Answer about JSON Hex Codes

        Steven Parker commented on my FaceBook wall
          Unicode escape sequences must of the form "\uXXXX". The deeper answer is the ECMAengine v4 that you're likely using in your browser accepts hex entries as case insensitive (ECMA-362 3rd edition, pg 18). 0xAAA == 0xaaa returns true.

        I'm slowly growing the semantics -- nice denotational and compositional semantics -- and mostly intuitive -- but I must map a zero-based JSON array into my MATHS array that is one-based.

        2012-04-18 Wed Apr 18 06:49 JSON hex codes

        In my [ samples/javascript.html#Unicode_escape_sequence ] it is clear that \u0A2 is OK but \u0a2 is not in JavaScript. JSON is supposed to be a subset of JavaScript so I assume that hex-digits are decimal or uppercase only.

        Just updated [ maths/types.html ] to include the set of Unicode characters as a predefined type in MATHS... this will need some thought...

        2012-04-17 Tue Apr 17 17:31 JSON Arrays are Heterogeneous

        With thanks to Laurent! And Stephen Parker on Facebook...

        2012-04-17 Tue Apr 17 07:24 JSON -- JavaScript Object Notation -- data XML YAML JS

        iI've just read [Severance12a] in the IEEE Computer magazine. It inspired me to dig into JSON and that lead to documenting the syntax of JSON in [ samples/JSON.html ] yesterday. I'd like to add some notes on semantics -- it should be interesting to map JSON into my MATHS language... and possible add JSON as a special format...

        However first I hove resolve some questions -- and languages with informal definitions often have holes in them. There are some interesting context dependencies I'd like to clarify.

        I can not find out whether "a" is a hex-digit or not... I think it is but can't find any evidence. Can you help? If so go to [ mailme.html ] and let me know.

        Similarly I think that the elements of an array don't have to be the same type:

         		[1,"2", true, null, {"answer":42}]
        which Crockford's page allows. But all the examples show arrays with elements that are of the same type. Again, JavaScript is weakly and dynamically typed so I am pretty sure that an element can change apparent type independently of the others... Again [ mailme.html ] lets you rant and rave at me...

        2012-04-16 Mon Apr 16 07:27 Defending against xss -- security cross-sight scripting

        A short while ago I was told to change the script that send EMail to me from my pages so that it properly sanitized the user input. There was a risk that a script might be echoed back invisibly to the person who put it in the message. The campus checks all scripts for possible attacks and found this one. I fixed it. Here [SharTan12] is an article that describes the techniques and some tools that help spot code that has problems.

        2012-04-13 Fri Apr 13 07:58 Turing discussed -- philosophy

        This is outside the usual orbit of this blog -- software development.

        England is making some amends for the loss of Alan Turing. The question of whether there are more powerful machines than the Turing Machine has long been discussed by computer scientists... but a recent article describes a recent symposium that illustrates why Turing's precise, analytical, creative, and logical thought is needed.


        1. S Barry Cooper
        2. Turing's Titanic Machine?
        3. Commun ACM V55n3(Mar 2012)pp74-83 [ 2093548.2093569 ]

        2012-04-12 Thu Apr 12 09:12 How to license your open source code -- Apache or GPL

        Once all software was free... but you had to buy a mainframe to run it. Then various people wrote software for minicomputers and shared it, free and open, with their colleagues, friends, and people on the other side of the world. This is how UNIX got from New Jersey to Berkeley California (on magnetic tape I believe). And it was good. Smart young programmers wrote tools -- "vi" and "emacs" for example and shared it so that they became part of the source code. And this was good too.

        Then some company to "emacs" and started selling it -- and suing anybody else who had a free copy. Similarly a company claims to own UNIX...

        And so the GPL was born. To allow people to share their code and to change it. But it requires you to share your changes with the community. And this make companies nervous about GPL protected free software. So we have the license worked out for a patchy web server -- Apache...

        This [ http://m.wired.com/wiredenterprise/2012/02/cloudera-and-apache/ ] argues that Apache is winning.

        By the way -- everything I put on the web site is copyrighted but you copy it, link to it, abuse it, edit it, republish it, ... as long as you make it quite clear where you got it.

        2012-04-11 Wed Apr 11 08:14 Advice on gathering nonfunctional requirements -- Qualities

        Here [SongHwongRos12] is a nice article reporting on how good requirements were gathered for a large and difficult project at Siemens. It has a horrible "flowchart" but some interesting advice. For example, you should not show stakeholders samples of requirements that have been previously collected -- they will copy them rather than think. But even more interesting is the idea that qualities should be expressed in measurable (testable) quantities with normalized units with ranges of lowest and highest required values. This idea goes back to Tom Gilb's pioneering work on "infotecture". But when you have many stakeholders you can record the limits in a spreadsheet and automatically calculate the range that will satisfy all the stakeholders. The table should link the numbers back to the original stated requirements and be feed back to stakeholders. The article has more tested ideas than this...

        2012-04-10 Tue Apr 10 08:23 Tagging artifacts in a collaborative software process

        Here [TreudeStorey12] is an empirical study of people using IBM's Jazz tool to manage a large collaborative software process (or two). It turns out that letting people add a set of informal tags to work items is helpful -- and not difficult to set up. The suggestion is that all artifacts need ways to add informal personal and shared tags. This seems to be eminently reasonable. The paper has statistics and interviews to back up there conclusions.

        I have spent time thinking about adding tags to my MATHS language. At the moment all headings, definitions, and labels on formulas are used to index the documents. The search engines on the site search these indexes. They seem to work pretty well. There is a full text search on one file (the bibliography "newbib"). Some years ago I added the idea of of "Key terms". These could be any word or phrase in a paragraph. They would be high-lighted to help the reader skim the page. But The implicit assumption was that each key phrase would appear only once in a document. Hence it could also be used a anchor for a hypertext link into the paragraph. I've found this feature useful.

        Tags on the other hand are not unique and so I'm not sure how to index them. But I may add

         .Tag example feature tagging
        in the future. Your comments are welcome.

        2012-04-09 Mon Apr 9 07:00 Data Races are Evil

        Here [BoehmAdve12] we have an article arguing something that I have always believed -- when two parallel processes share data and one at least is a write and they can access the data at the same time then you have problem. All I've ever wanted is something like McIlroy/Unix Pipes or Jackson's Semi-co-routines or some other safe way to split a problem into parallel but simpler parts. Threads do not do it. In fact no programming language has ever supported them.

        2012-04-06 Fri Apr 6 13:33 Refactoring and smells

        Here are a couple of research papers on refactoring -- the incremental improvement of code by seeking smells and fixing them.... The first paper [Murphy-HillParninBlack12] is the result of collecting data and polling people on how they use refactoring and what tools they use. The results are not always what you might expect.

        This paper [LiuEtAl12] in contrast is theoretical and list a set of 10 smells and proposes an effiecient sequence for looking for and resolving them.

        The idea of refactoring started in an Ph. D. Thesis but has becoming on of the best practices in all code-centric methods/processes. Now we see it re-enter academic research.

        2012-04-05 Thu Apr 5 13:46 My Dad and the Biggest Analog Computer in the World

        I've only just discovered that my dad used to work on th biggest analog computer in the world. I new it was the size of a building and some of the components -- the resolvers -- were the size of a large washing machine... but it wasn't till saw a review of the book cited below that It was "The mighty TRIDAC, which, with its 8,000 thermionic valves (vacuum tubes) and extensive hydraulic systems, may claim to be the world's largest analog computer":


        1. Simon Lavington
        2. Moving targets: Elliott-Automation and the dawn of the computer Age in Britain, 1947-67
        3. Springer Pub Comp Inc., London (2011) ISBN 1848829329 $100?!
        I will have to get it on loan and see my favorite machine -- the Elliott 803 -- is mentioned.

        2012-04-04 Wed Apr 4 11:02 Corrected error in Generic Syllabus

        The exam for CSE302 is on a Thursday [ syllabus.html ] not a Wednesday.

        2012-04-04 Wed Apr 4 09:10 Microsoft on security of web apps

        If you are planning to do a project using Microsoft's ASP.NET then I expect you to follow [ ff648032.aspx ] and if you are using PHP you had better sanitize all the incoming data properly...

        2012-04-03 Tue Apr 3 16:19 Bonus -- Software driven by Principles

        Here [ 36579366 ] (Vimeo.com) is a 58 min video where Bret Victor [ http://worrydream.com/ ] demonstrates a truly amazing way to develop software and explains the principle that drives him to such tools. He ends up illustrating other technologists who have been driven by a principle to develop technologies that have changed to world.

        I'm going to have to think a lot about what he said. But in one respect I am know he is right. When you are teaching programming you need the fastest possible feedback when you write code. My "fred" editor in the 1980's was modeless, needed no more than a glass teletype... and could be learned by a typical freshman in 30 minutes. My "Q" script for UNIX enables you to move in one key stroke from your code (in vi) to what the code does, and back again. But What Bret is demonstrating something that is a lot more direct... it is worth watching.

        Another thought -- his interface means you don't have to imagine what the computer will do as the code is executed.... you can see what it does. And this may devalue the need for big design up front ( BDUF ).

        As I said food for thought...

        2012-04-03 Tue Apr 3 10:17 Code Metrics considered harmful

        Just clearing this op/ed piece from Infoworld last Nov+ember out of my backlog: [McAllister11] which critiques the process described in [Bednarz11] with good reason. I've been collecting information on code metrics for 40 years and grown steadily more disenchanted with them. There is this seductive feeling that counting things written by people will tell you about their quality. But I do not think this is true.... Most metrics are correlated with lines of code....

        So how do you find how good a piece of code is: Peer review.... eyeballs looking at the code and critiqueing it. Doesn't matter if we are talking XP or Open Source, humans can tell you how good some code is... and will probably tell you what they think of the person or team that produced it.

        2012-04-02 Mon Apr 2 10:56 Spring -- What makes a standard minimal software development environment

        Intriguing discussion on SlashDot [ 1650246 ] about what the minimum set of tools for the professional software development should be. It contains some good advice for anyone thinking of changing any system. It also praises many of the processes and tools (version control, unit testing, automatic regression tests, continuous integration, ...).

        2012-03-26 Mon Mar 26 13:08 Spring Break

        I don't plan to post anything to this blog until April 2nd when CSUSB starts its Spring Quarter for 2012.

        But to waste your time here [ http://www.futilitycloset.com/ ] is a blog full of mathematical and cultural fun...

        2012-03-23 Fri Mar 23 11:51 Why programming languages fail -- or succeed

        Here are two theories. One quite serious [ why-new-programing-languages-succeed-or-fail-188648 ] by Neil McAllister of InfoWorld. His ideas spring from the observation made a couple of months go tha langaueg don't come from acadmeic research but from practical need. He notes that successful languages are somewhat familiar, open source, have a niche, and are lucky.

        But according to Tamir Khason [ http://khason.net/blog/computer-languages-and-facial-hair-%E2%80%93-take-two/ ] what is really needed is facial hair on the pictures of the authors:-)

        2012-03-22 Thu Mar 22 13:54 No amount of testing or formal methods can prove that sudden acceleration can not happen

        This is reported in Dr. Dobb's Magazine [ http://m.drdobbs.com/144530/show/5103e17ec24b5af959a5dc790f84638f/ ] and is no surprise.... since I had an Fiat 127 which exhibit acceleration after the foot came off the peddle back in the 1970's. Before software. No amount of testing. No formal proof could allow for what was happening. The clue -- it only happened when my wife was driving. She is shorter than I am -- and a better driver. So I looked at the peddle. It could slide half an inch either way. For me to one side and for her the other side... and into a hole torn in padding.... a few minutes with a sharp knife fixed the problem.

        We have to think outside the box. In other words, the physical, real world, environment and its connections with the hardware and the software limits what we can prove about the whole system. Software can be shown to fit its specification and specification can appear to fit the client's understanding of the requirements, and the result can still do damage....

        2012-03-21 Wed Mar 21 14:50 Samples of LISP typography through the decades

        Ben Shoemaker has just sent me this link [ few-examples-of-lisp-code-typography.html ] which has left me pleasantly stunned. My main concern is that I seem to be the ONLY person to line up open and closed brackets vertically. Except AutoCAD 2000. Enjoy!

        2012-03-20 Tue Mar 20 10:23 Rise of the Information Appliance

        Way back [Norman98] in the 1990's Donald A Norman pointed out that nobody really want a general purpose computer. We want to know the time, see the news, read a story, watch a movie, ... and do one thing at a time. He imagined a clock-like device on a wall that shows the weather forecast, or the news. But the device is not a PC. It does nothing else. But what it does it does very well. And it does not take ten minutes to explain how to work it! And no systems admin!

        His book is called "The Invisible computer: Why good products can fail, the PC is so complex, and Information appliances are the solution" and is well worth reading... and I thought that people were ignoring it.

        Fast forward to [ welcome-to-the-post-pc-era.html ] at Coding Horror. Which concludes that we are finally getting there -- Apple's Pod/Pad devices are designed to not be programmable but to do a dozen or so things well. He points out that everybody has a PC/iMac or two but the appliances (as Norman called them) are now more useful. It is worth reading the article... if you can ignore the ranting and raving about the resolution of the new iPad.

        2012-03-19 Mon Mar 19 10:06 Correction to Algol 60 Syntax

        I am indebted to Martin van der Burgt for his corrections to [ samples/algol60.syntax.html ] this morning. A couple of typos in the syntax of arithmetic expressions -- one of which would have been disastrous if the syntax definition was used to automatically generate a parser... This lead me to add [BackusEtAl63] (The Algol 60 revised report) to my bibliography.

        2012-03-16 Fri Mar 16 09:38 Top Prize to Inventor of Bayesian Networks

        This years Turing Prize from the ACM (Association for Computing) is going to Judea Pearl. Here [ 295428-acm-awards-judea-pearl-the-turing-award-for-work-on-artificial-intelligence ] is an article in PC Magazine by Michael Miller describing the work and the person.

        I've found this area fascinating but difficult. Here [Pearl86] [Pearl88] are two or three relevant links in my bibliography.

        2012-03-15 Thu Mar 15 19:50 Past and future of JavaScript

        This [Severance12] shows how a rapidly prototyped language from the 1990's -- JavaScript -- may become a main stream language in the future. As if it wasn't already ubiquitous on the Web2.0!

        2012-03-14 Wed Mar 14 13:52 Problem solving by Writing

        Here [ rubber-duck-problem-solving.html ] is another nice article by Jeff Attwood on a brilliant way of getting people to solve their problems -- ask them to explain the problem, in detail, to a rubber duck! I read a story, in my child hood, of a young boy in India who was having a bad day and explained his problems to some apes who listened to him, but said nothing... and it gave his problems perspective and helped him survive them... And then we have George Polya (Brilliant and famous mathematician) who's first step in "How to solve it" is to "Understand the problem" and express in text, pictures, and mathematics. [ cs372/c1.html#Polya ] Similarly the CoRT project has a "PISCO" framework [ cs372/c1.html#Problem_solving ] where the first step (P) is to think about your purpose/goal of your thinking...

        2012-03-13 Tue Mar 13 18:00 Pair programming vs solitary genius

        On of the few solid results to come out of my 40 year study of software development is that one size does not fit all. TechCrunch published a nice short piece [ http://techcrunch.com/2012/03/03/pair-programming-considered-harmful/ ] by Jon Evans that argues it is wrong to require all programming to be pair programming. Some parts of a project need solitary experimentation in a quite place... perhaps review by a peer before installing and carrying out a smoke test... So a mixture of cowboy and team work gets a good piece of code out of the door...

        2012-03-12 Mon Mar 12 12:18 More on software liability

        Lawrence C Paulson argues for draconian laws to make sellers liable for bugs in software in a letter replying to [Kamp11a] which starred in an earlier posting here. Kamp replies that he would like harder laws but was merely proposing something that might become law.

        2012-03-11 Sun Mar 11 09:24 Creating and rescheduling seminars

        [ seminar/ ]

        2012-03-09 Fri Mar 9 13:12 Is Language design a science

        Crista Videira Lopes [Lopes12] has observed that for the last 20 years new languages have come from outside Academe and were not found in Ph. D. Theses. It is hard not to agree with this. Also the observation that true computer science work is not what the NSF funds.... computing is a tool in STEM grant funded work, not an objective. Indeed much software development does not follow the "scientific method" -- but does have a hefty experimental component -- "Let's see how well this works" and us the failures to add to our knowledge of the problem and its domain.

        The article is long and the discussions longer but it is worth study and thought.

        2012-03-08 Thu Mar 8 09:36 How to find an example of source code on the web

        Here [SimEtAl12] is a serious bit of research on the best search engine to find a sample of code on the web. It notes the two different purposes: as a replacement for the old manual, and to find code to cut/paste/include in your code. The first of these is easier. If you want to know the best engine for for code snippets -- see the citation above. But no real surprise.

        2012-03-07 Wed Mar 7 12:19 Is Java Sick

        The new owners of an empty house near us poisoned their fig tree. The poison spread to the beautiful Star Jasmine plant the lines the fence between our house the House at the back of us. It is now looking very sick and may not survive.

        Something similar is reported in [Lyon12] about Java... and he has a nice comic as well.

        2012-03-06 Tue Mar 6 12:20 How to hire a programmer

        First, [ how-to-hire-a-programmer.html ] says check the candidate can write "Hello WOrld!"....

        2012-03-05 Mon Mar 5 12:29 Infrastructure needs better quality work

        Bjarne Stroustup [Stroustrup12] is again pushing for using statically checked, type-safe, library based, generic coding as a way to get efficient, correct and easy to understand code. The examples are interesting C++11 examples demonstrating what a real expert in C++ and its Standard (Template) Library can achieve,

        2012-03-02 Fri Mar 2 12:29 Racket is a LISP extension

        This [Flatt12] is a demonstration of how an extension of LISP (called Racket) creates a programming language that lets you write a classic adventure text style game. It looks to provide a short cut.... Practical LISP programming always started with putting some extra structures on top of the LISP core.

        2012-03-01 Thu Mar 1 12:44 Unix tools and refactoring

        Here [Spinellis12] we have a very good introduction the use of regular expressions and Unix tools to help with refactoring. He demonstrates making a change thruout a file and in all the relevant files. And for once the commands should work....

        And if you need more than regular expressions then you can use some new tools developed at Dartmouth: [ usenix-dartmouth-expanding-diff-grep-unix-tools ]

        2012-02-29 Wed Feb 29 13:16 Design and architecture

        Grady Booch [Booch12] has a nice little meditation on the design of things and the architecture of software -- starting from realizing he was being slid into a medical scanner programmed by a team he had advised as a consultant. He describes the delicious dance between the forces of technology and user needs. That balance needed between discovery, invention, and implementation.

        2012-02-28 Tue Feb 28 14:23 Design Collaboration Observed

        As I noted when reviewing [DuJingLiu12] , there is little use in developing formal systems that nobody will use. But in the Jan/Feb issue of IEEE Software Magazine there is a report of how real designers work together to solve software problems. It turns out they use white boards.... There is lots of interesting suggestions on how to collaborate better and how we design here [BakerHoekOssherPetre12] (Introduction and history of research) [NakakojiYamamotoMatsubaraShirai12] (tool records collaboration) [DimaghaniDibble12] (good things to do) [Shaw12] (Design spaces) and [RooksbyIkeya12] (Teams observed).

        2012-02-27 Mon Feb 27 12:52 Why projects are late discussed

        As I expected [ blog012.html#Tom De Marco ] has stirred up some discussion. The article, an interview, and some responses are on line at [ lateprojects ] and the latest issue of IEEE Software (V29n1(Jan/Feb 2012)pp8-11) trots out more of the usual suspects. But nobody has any solid data. By this I mean a survey of projects that where late or done ontime and where some had enough time vs those that were rushed:
        -LateOn time
        Not Rushedcd

        (Close Table)
        Now Tom De Marco's thesis is only that
      15. Late projects were rushed or
      16. c=0.

        A project that was successful and not rushed (d) does not provide a counter example, niether does items counted as b -- on time but rushed.

        We can strengthen Tom's thesis to

      17. Being late is associated with being rushed.

        And we have a standard statistical test (χ ^2 on a 2*2 contingency table) that can be applied... but has any one got the data. [click here [socket symbol] LateProjects if you can fill this hole]

        2012-02-24 Fri Feb 24 09:33 Deja vu proving low level code

        The is something very familiar about [YangHawblitzel11] which shows how Floyd-Hoare methods work well at verifying low level routines. They add some modern wrinkles (automation, type checking, C#, etc.) to methods that I used effectively in 1970 to develop a graphics system for my PhD.

        2012-02-23 Thu Feb 23 19:14 Answer Sets and Logic Programs

        Here [BrewkaEiterTruszczynski11] is a new set of semantics for simple statements like
         		if the button is pushed and the door is not open then the door will open.
        that lets problems to be specified and solutions found in a reasonable time. May even form a way to model and check complex requirements.

        2012-02-22 Wed Feb 22 13:30 Incoming Mail

          I am Diane Turner, CEO of [ http://www.onlinejobapplications.com ]

          I am writing with regards to your directory of career and job search sites for students located on your website here: [ etc.html ]

          I am writing on our behalf to request that we be added to your list under "Job Searches on the Web".

          Just as our website name suggests, we are a free online resource for helping students and graduates find specific information and advice on how to apply online and offline to every major national company in America. Students coming to our site can search a database of over 1500 articles each tailored to a specific company they may be interested in. We have several pages dedicated specifically to companies hiring in the computer science field.

          If they are looking for a specific job for instance, they can easily resource information about those companies of interest. Instead of just searching job openings, our resources allow the more aggressive job seeker to find information and advice about the specific company they want to target.

          All of our resource material is written by different experts in that particular field and all of it is free to use. We are currently developing over 2500 pages of brand new content as we expand our site.

          Currently there are dozens of colleges and universities linking to our site including The University of Michigan, The University of Tennessee, The University Of North Carolina, Arizona State University, and San Diego State University, as well government sites in California, Michigan, Florida and New Hampshire.

          If you would like any additional information about our company and our on going development, please do not hesitate to ask.

          While reviewing your site we also noticed that you had a few broken links. We thought you might like to know.


        2012-02-22 Wed Feb 22 07:17 Late posting on coding style

        Henry Ledgard has done a lot of good work. Here [GreenLedgard11] are some excellent guidelines to laying out source code. The key observation is that code is not a natural language and so should be laid out like mathematics and tables. Well worth reading and thinking about.

        2012-02-20 Mon Feb 20 17:13 Structuring arguments -- Again

        Peter Denning [Denning11] has an interesting appeal for IT professionals to back up their claims with the grounds that warrant the truth of the claim. Also he argues or developing the habit of assessing the nature and strength of the grounds for claims. This is a simplification of the ideas developed by Toulmin that I discussed in this blog 3 years ago in [ blog008.html#2008-06-20%20Fri%20Jun%2020%2014:06%20Toulmin%20Arguments%20Rebuttals ] and [ bibfull.php?from=blog&search=Toulmin ] methods.

        Meanwhile I am writing a review of [DuJingLiu12] which uses a different way of structuring ideas about design -- similar to one tried years ago in Compendium [Shum07] for example.

        It is tempting to over-formalize this kind of approach -- ending up with something like medieval logic [ samples/syllogisms.html ] or modern logic [ maths/ ] and mathematics. IN my MATHS language a grounded claim would appear like this

        for example.

        MATHS also provides the ability to rebut arguments:

         		.But rebuttal
        and set up alternatives (If...Else...End.If) and cases (.Case...)

        2012-02-17 Fri Feb 17 13:38 Fixed an error from 2007

        Usage cleans data -- and trying to recall something I had read long ago which was very like a paper I am currently reviewing lead me to five citations in my bibliography and in the archive of the blog for 2007 [ blog007.html#Hirschi07 ] where I had cited them as in IEEE's Computer Magazine, when it was actually in IEEE's Software magazine.

        2012-02-16 Thu Feb 16 18:37 Bugs like company

        It appears that the more often a class or method is fixed then the more likely it will be fixed again... At least according to [ConcasEtAl11] this model fits the bug tracking on the Eclipse IDE written in Java.

        2012-02-15 Wed Feb 15 14:43 Meetings considered harmful

        I endorse this [ meetings-where-work-goes-to-die.html ] message. I have spent a lot of time thinking about how to set up meetings so that work gets done. I am chair of the "seminar" committee and the only meetings we have are "stand up meetings", and we only need these when there is a big break in the established work-flows. The fact is that most work is moving onto EMail and a few blogs (like this one). For example, in one committee I ran the minutes were posted to a blog, along with the documents we were working on....

        2012-02-14 Tue Feb 14 15:29 Buffer overflows considered harmful

        This [PadmanabhuniTan11] article describes several nasty ways a malicious (or curious) user can break into a program by supplying bad input. This is a wide spread problem. The paper discusses solutions. It surprises me that people are still using constructs that are not reliable -- I and my interns wrote a secure and friendly shell for Unix in the 1980s that had no vulnerable buffers... and was in use for for many years with out being broken into... but 20 years later people are still committing the same errors...

        2012-02-13 Mon Feb 13 13:24 LISP Prolog and Python go into a bar etc

        Dao and Dinpi are two new languages/systems announced on the Python Google Group: [ 388ca778cc3fc9e9?hl=en&pli=1 ]

        2012-02-10 Fri Feb 10 14:10 Reviewing code using architectural patterns

        I have never been a fan of software architecture. It seems a fuzzy discipline. But it is undeniable that you can make bad design decisions early in a software project that mean the project will never meet all of its requirements. And the discipline of architecture is all about looking for designs that will have the required qualities. However here [HarrisonAvgeriou11] is a report that architectural reviews can be done cheaply even in the absence of any architectural documentation.

        2012-02-09 Thu Feb 9 15:27 Research on spotting modules that have defects

        This [HallEtAl11] is a short and readable report on 200+ papers all about statistical models that are designed to tell you which parts of a program are most likely to be defective. It points out some good models (and bad ones) and estimates 70% accuracy. A good starting point for practitioners interested in triage.

        2012-02-08 Wed Feb 8 12:24 Advert for the functional language OCaml

        A nice article [MinskyY11] giving examples that demonstrates the advantages of OCaml.

        2012-02-07 Tue Feb 7 08:24 Jeff Attwood bids farewell to Stack Exchange

        I have been following Jeff's blog [ farewell-stack-exchange.html ] and today found out that one of his brain-children is old enough for him to set it free. I have never had time to explore [ http://stackexchange.com/ ] and it's sub-site [ http://stackoverflow.com/ ] for programmers. They have an interesting "gamey" approach to gathering and organizing questions and answers.

        Perhaps I will find time to build a persona and a reputation when I retire.

        2012-02-03 Fri Feb 3 12:30 Why projects are late -- it is not the programmer

        Tom De Marco has been observing, thinking, and writing about software development for a very long time. His latest conclusion [DeMarco11] is worth reading -- only two pages. The claim is interesting. He claims that projects finish late because they started too late. Perhaps the project is a hurried response to a rival company, when looking ahead would give the project time to be completed and beat the competition. Or -- and this is common -- people delay projects and give schedules that are impossibly short -- in the hope of saving money.

        As I said -- it is worth reading the original article.

        2012-02-02 Thu Feb 2 15:43 types of users

        Whenever we make a change some people have to be dragged screaming and complaining into the new way of doing things -- and some these have to use it a lot against their wishes. On the other hand their are people who don't use the system but think it is a good idea... [SeoBoonstraOffenbeek11] have a case study (Netherlands Healthcare) on the kinds of users and how to improve the users responses.

        Pity they don't talk about how an unhappy user is an opportunity to improve the system!

        2012-02-02 Thu Feb 2 13:52 Advising for CSE Majors

        I have posted my signup sheets on my door. Also see [ calendar.html ] for the available times. Make sure you pick up your PAWS report before PAWS shuts down and bring it with you.

        Also we have some seminars coming up and [ seminar/ ] should give an up to date listing.

        2012-02-01 Wed Feb 1 14:11 Good analysts are like three year old children

        Neil Maiden has another light, easy to read, but wise essay [Maiden11c] on a necessary skill -- indeed obsession -- with asking dumb questions... like "why" and "WHat happened before that?".

        2012-01-31 Tue Jan 31 20:53 Polite systems

        Kai Olsen has written a nice essay [Olsen11] on the kinds of impolite behavior we have to put up with when using software that we don;t expect with humans. Worth comparing with the the Language-Action Perspective [Dennning03] that argues that systems are only trusted after they deliver on their promises to the their users.

        2012-01-30 Mon Jan 30 14:57 Software engineering vs engineering

        This is an old and continuing debate as to whether "software engineering" is "engineering" and [DavisM11] has some interesting evidence ... the "Software Engineering Body of Knowledge" clearly omits things that are taught in "real" engineering. But Davis suggests that this may change if engineering degrees continue to remove some of these extra topics.

        Notice -- in my humble opinion -- most software development is not engineering... not even software engineering. The vast amount of software has no visible design, no verification (but tests), and makes the client quiet happy, thank you. And then there is all the software that causes more trouble than it is worth because it is badly "engineered" -- For example a calendar program that has started freezing when a new event is added -- perhaps because I has too many calendars. This is more like some of the Victorian engineers work -- boilers exploding, bridges falling down, trains colliding, ....

        2012-01-27 Fri Jan 27 14:13 Errors and liability

        It seems [ programming-mistakes-to-avoid ] that programmers are still making elementary mistake. I have often thought that we need some form of liability law for software. Perhaps then my new iPod touch's "Calendar" is starting to misbehave when creating events close to leap year's day...

        Any way [Kamp11a] proposes a possible structure for the law: First copy criminal liability, second limit non-criminal liability for open source software to the cost, and third, full damages if you code causes it and the user could not read it.

        2012-01-26 Thu Jan 26 15:38 For reference a list of executable UML tools

        Found this on the UML Google Groups [ http://modeling-languages.com/list-of-executable-uml-tools/ ] and it lists 15 tools that execute or simulate UML models.

        2012-01-25 Wed Jan 25 13:39 Predicting performance with bursty users

        It is fairly easy to predict how a system will perform if we know enough about it and if the rate at which event happen is constant -- even if they occur at random. However real users tend to be "Bursty" -- there are times when there is a burst of activity that then dies down. This is difficult to predict using mathematics. Here [KrishnamurthyRoliaXu11] we have a combination of real data on what users are doing, simulation, and mathematics that gives a pretty good fit to the observed performance.

        2012-01-24 Tue Jan 24 15:42 Tables and Tests

        David Lorge Parnas has long experimented with and advocated the use of table to express complex specification -- tabular expressions. This [FengEtAl11] paper explores there use in deriving tests -- and includes nice demonstrations of Tabular Expression describing rules for a calendar on pages 628-629.

        2012-01-23 Mon Jan 23 13:56 Program or be Programmed -- Why you must lean to code

        Again this is a long time concern. If you don't learn to program then you are at the mercy of those of us that can code. And more... [ index.html?c=&page=1 ] coding will help you get a job. And according to other reports you will be earning more with some degrees than others. So what if your love is basket weaving? Then get a degree in basket weaving with a minor computer science...

        Or do what my nephew did -- get an English degree and then a masters in Computer Science.

        2012-01-19 Thu Jan 19 15:01 Hypercard and Hypertalk

        Hypercard was a program on the old Apple Macintosh. It was one of the easiest programming systems ever produced. I wrote [ samples/hypertalk.html ] when I needed a ready reference ... and as an experiment in defining the syntax and semantics of a proramming language -- Hypertalk.

        The system was the product of Bill Atkinson and so brilliant. He also allowed Apple to use it, as long as they did not charge for it. This is one reason that demotivated Apple to keep alive and well on the iMac... But those who used it will not forget and so it came up recently [ why-was-hypercard-killed?utm_source=newsletter&utm_medium=email#commentlisting ] Slashdot. And this gave me some cool links that I record below

          [ ?p=568 ] [ HyperCard ] [ hypercard-gone-for-good ] [ wherefore-art-thou-hypercard ] [ hypercard-what-could-have-been ] [ trying-to-save-hypercard-for-mac-os-x ] [ aboutTheArtist.html ]

        2012-01-18 Wed Jan 18 14:02 Software estimation

        Magne Jorgensen [JorgensenGrimsted11] continues his research into estimating the time to complete software. In this paper he and a colleague show that estimations done in the lab are more likely to be distorted by irrelevant or misleading requirements than when you ask real software (outsourcing) professionals.

        BY the way... this blog, bibliography, and whole web site depends on me not worrying about people blocking the cse.csusb.edu domain for probably no good reason -- my quotations and links are consciously "fair use" under copyright. However the US government is considering some laws to ruin the freedom of the internet.

        2012-01-17 Tue Jan 17 15:18 Beautiful 3D models of code

        I have always thought that we needed a good graphic way to look at software. For the last 15 or so years I've been convinced we need 3 dimensions to make a good model. Now the is a report [ http://www.forbes.com/sites/andygreenberg/2012/01/12/researchers-tool-maps-malware-in-beautiful-3d-models/ ] of a tool to study malware that does use 3D.

        2012-01-12 Thu Jan 12 19:40 How confident are you that this system works most of the time

        I wonder if this theory will catch on -- it is highly adapted to situations where correct behavior is very important -- for example atomic energy... Any way [BishopLittlewoodPovyakaloWright11] propose a theory for measuring and estimating the confidence an expert will have that there safety/correctness estimates are correct. This is subtle because the estimates are of the form: 90% of the time the system works -- a statement of probability. Confidence is a degree of belief -- and so another kind of probability... this is subtle and their math interesting.

        2012-01-10 Tue Jan 10 15:03 New Standard for the programming language C

        We have a new International Standard [ catalogue_detail.htm?csnumber=57853 ] ISO/IEC 9899:2011 defining the C program language. Amazing that they are still updating the source for C++...

        2012-01-06 Fri Jan 6 11:37 Couple of Festschifts -- Jackson and Wienberg

        Here we have a couple of collections of research papers and articles that are based on the seminal work of Michael A Jackson [NuseibehZave10] and GerryWeinberg [Charles08] , that I have had not had time to study. Only just spotted them in a reference list of a review in Computer Reviews. If you have seen these either of these books I would like to get your thoughts-- [ mailme.html ]

        2012-01-04 Wed Jan 4 11:36 10 Programming Languages That Could Shake Up IT

        From the ACM Newsletter... [ 10-programming-languages-could-shake-it-181548?page=0,4 ] (InfoWorld (01/03/12) Neil McAllister )

        2012-01-03 Tue Jan 3 09:24 Happy New Year

        I don't know when will be in today (Tuesday...) since I have things to do at home I am telecommuting.

        This will probably be the last year for this blog since I expect to retire in 2013. Here is a posting from Jeff Attwood [ building-social-software-for-the-anti-social.html ] about his more successful blog on software development.

        Invitation to Contribute

        If you have read something about software development that you think was worth reading you can share it and earn a small piece of fame merely by following this link [ mailme.html ] and filling in the form. I will review and post it if it fits with the goals of this blog: The most practical theories and the most sound practices associated with software development.

        Contributors to this site -- 2012

        Diane Turner, Martin van der Burgt, Ben Shoemaker, etc.

        Previous Archived Blog Entries

        (2011): [ blog011.html ]
        (2010): [ blog010.html ]
        (Blog to December 2009): [ blog009.html ]
        (Blog to December 2008): [ blog008.html ]
        (Blog to December 2007): [ blog007.html ]
        (Blog December 2006): [ blog006.html ]
        (Blog December 2005): [ blog005.html ]
        (Blog December 2004): [ blog004.html ]
        (Blog December 2003): [ blog003.html ]
        (Blog July 2003): [ blog002.html ]
        (Blog June 2003 and before): [ blog001.html ]


        [ blog.html ]

        Glossary and Links

      18. above::=using the above statements....

      19. bibliography::= See http://cse.csusb.edu/dick/newbib.html, (source [ newbib.mth ] ) a large collection of publications on software development. a place to search for data on my site. Now recovered from damage done in the latter half of 2003.

      20. dick::=indicates my own opinion in and of a bibliographic item.

      21. given::=the data and input into a proof, construction or other thinking.
      22. goal::=the current conclusion, target or unknown of the thinking, construction, or proof.

      23. Haiku::poem="A 19 syllable Japanese poem that captures one moment but implies the universal", All Haiku are supposed to indicate the season of the year and Japanese has many words and phrase that are used for these purposes. Most Haiku also have a caesura (pause) that is counted as a single syllable. Writing Haiku in English is like trying to clap with one hand.

      24. languages::= See http://cse.csusb.edu/dick/samples/languages.html, information on computer languages.
      25. latest::= See http://csci.csusb.edu/dick/blog.html,

      26. MATHS::= See http://csci.csusb.edu/dick/maths/, a language for semiformal documentation including ontologies, logics, conceptual models, specifications, and algorithms that I also use for weblogs, essays, lecture notes, etc. etc.

      27. methods::= See http://cse.csusb.edu/dick/samples/methods.html, links and definitions about software development methods and processes, plus some jokes. Also see [ methods.glossary.html ] instead.
      28. monograph::= See http://cse.csusb.edu/dick/monograph, a study of software development methods 1940-1990 attempting to show how simple mathematics can avoid common errors.

      29. papers::= See http://cse.csusb.edu/dick/papers, pre-publication drafts, local seminars, unpublished essays, etc..
      30. people::= See http://cse.csusb.edu/dick/samples/people.html,

      31. prostate::gland=`a walnut sized gland found in human males that has cells that have a tendency to turn cancerous as the male gets older`, see PSA. [ http://www.healthopedia.com/prostate-cancer/ ] (not checked for accuracy, includes adverts).

      32. PSA::blood test=Prostate Specific Antigen, the cells in the prostate generate a particular chemical in the blood and this test measures how much. High values (40+) show rapidly growing cancer. From my experience -- values like 5, 6, and 7 are a cause for concern .. but it all depends on age and whether heart disease or some other problem will get you first. To get a score of zero (undetectable <0.01) the cells must be gone or not growing.

      33. samples::= See http://cse.csusb.edu/dick/samples/, samples of documents prepared using MATHS.
      34. se::= See http://cse.csusb.edu/dick/samples/se.html, links to things about software engineering and software development.
      35. source::= See http://cse.csusb.edu/dick/blog.mth, I use my own MATHS language to write these blogs.

      36. standards::= See http://cse.csusb.edu/dick/samples/standards.html,
      37. STANDARD::= See http://cse.csusb.edu/dick/maths/math_11_STANDARD.html, my personal standard definitions for MATHS.
      38. subjects::= See http://cse.csusb.edu/dick/samples/subjects.html,

      39. tools::= See http://cse.csusb.edu/dick/samples/tools.html,

      40. UML::= See http://cse.csusb.edu/dick/samples/uml.html,

      41. vita::= See http://cse.csusb.edu/dick/VITAble.html, [ short.vita ] (plain text).

      42. XBNF::=eXtreme Bachus Naur Form, a metalanguage based on EBNF that can handle some forms of context dependency in an intuitive way, as part of the MATHS language.

      43. Z::= See http://cse.csusb.edu/dick/samples/z.html, specification language.

      . . . . . . . . . ( end of section RJBottings Web Log -- A Long View of Software Development -- 2012) <<Contents | End>>

    2. CR::="Computer Reviews", [ http://www.reviews.com/ ]

    ( End of document ) <<Contents | Top