[My image] [Text Version] blog013 Thu Aug 29 13:32:07 PDT 2013

Contents


    RJBottings Web Log -- 2013

      Current Edition

      [ blog.html ]

      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-08-21 Wed Aug 21 11:58 Something completely different -- French blog about soccer

      This just arrived in my inbox. I have little French but found the discussion of who is changing jerseys in the top soccer leagues intriguing ... [ http://maillotgirondinsdebordeaux.ethicalbase.com/ ]

      2013-08-20 Tue Aug 20 11:07 Case by Case Proofs

      10 days to retirement.

      One method of discovering proofs is the analyse the possible cases. I invented a notation for recording such proofs:

       	.Case case1
       		...
       		conclusion.
       	.Else case2
       		...
       		conclusion.
      and so on until
       	.Else caseN
       		...
       		conclusion.
       	.Close.Case
       	()|-result.

      This is rendered in HTML+CSS as a collection of ordered lists inside a blue box.

      In 2008 I grelaised that tables (HTML tables) work rather well and put some first examples in [ maths/tttt.html ]

      For more on this see [ maths/logic_25_Proofs.html#Proof by Cases ] (formal proofs...).

      2013-08-15 Thu Aug 15 06:15 Structured proofs

      I have 16 days to go before I retire...

      Even when I was doing a traditional applied Mathematics Bachelor's degree I was not happy with the style of the proofs. I felt there had to be an easier way. I have spent a lot of time collecting and documenting these techniques. They are an optional part of the MATHS language.

      One of the things I discovered in the 1970's -- from a book by Kalish and Montague was that many theorems could be proved by using the same block structure as all post-Algol60 programming languages. This letsyou introduce new variables, declare their types, and add some assumptions of hypotheses. Then you reason using the assumptions until you produce a conclusion. So to prove something like

    1. for all x:T, if P them Q. you would start a block like this
       .Let x:T,
       |- P.
      and derive Q using x and P. You close the proof like this
       .Close.Let
      and then assert
       ()|-for all x:T, if P them Q.

      There are several variations of this and they are listed in [ maths/logic_25_Proofs.html#Block Structure ] that also includes "Reducto ad Absurdum".

      The rendered HTML places the assumptions and proof in a box by the way.
      Let

      1. declaration.
      2. |- (hyp): hypothesis.
      3. ...
      4. (above)|-conclusion.

      (Close Let )

    2. (above)|-result.

      These can be nested or written out of line with hyperlinks... here [ samples/hours.html ] is a sample of a set of proofs that I needed to be sure that a particular script would kill the correct jobs on one of our servers some years ago.

      2013-07-31 Wed Jul 31 13:04 Hyperlinks and formulas

      Below I described how you can quote a formula in a MATHS document and how you can define a new term. Here I show how to create a name for a formula and so be able to link to it. I also show how you can distinguish between logical formulas that you assume to be true from those that you want to prove to follow from your assumptions. This turns out to lead to a very nice semi-formal way to prove things.

      Firts of all to label a formula you write

       (label): formula.
      The "(", "):", and "." are fixed. The label can be any identifier. Here is an example:
       (pythagoras): a*a + b*b = c*c.

      (pythagoras): a*a + b*b = c*c.

      But suppose I want to introduce an assumption, then I would use the "turnstyle" that I found in "Principia Mathematica":

       |- (label):formula.
      For example
       |- (rt): right_triangle(a,b,c).

    3. |- (rt): right_triangle(a,b,c).

      Finally, suppose that I think that a particular set of assumptions force a particular formula to be true then I write

       (assumptions)|- (label):formula.
      Technically we say that the formula is a theorem. The assumptions form a comma separated list of formulas that are needed to prove the result. These can include the standard labels of the many rules of inference that are listed in the MATHS definition.

      For example in [ maths/logic_25_Proofs.html#Valid Deductions ] you will find these two rules

    4. (MATHSSteps)|- (and1): If P and Q then P.
    5. (MATHSSteps)|- (or1): If (P or Q) and not P then Q.

      THe assumptions MATHSSteps are defined as

    6. MATHSSteps::= See http://cse.csusb.edu/dick/maths/logic_25_Proofs.html#Valid Deductions.

      In practice these steps don't need much justification and are taken without comment.

      For example

    7. (rt, euclid_geometry)|- (pythagoras): if right_triangle(a,b,c) then a*a + b*b = c*c.

      Now most theorems have proofs are pretty obvious once the hypotheses are listed. But you can allways provide a detailed proof to theorem labeled "T" by adding a heading for a section or paragraph that looks like this "Proof of T". The tools will link the theorem to the proof.

      More on proofs will follow... (above). Meanwhile you can check out [ maths/logic_2_Proofs.html ] which has links to advice and rules form proving things and a tremendous list of "proofs" that do not prove the desired result -- Enjoy.

      2013-07-22 Mon Jul 22 14:27 Hyperlinks in MATHS

      One of the key ideas in designing MATHS was to move a part of mathematics from the blackboard/paper format to an electronic and hyperlinked documen.

      For example, you can write a definition like this

       	term::=definition.
      The term will be highlighted and made into a hypertext anchor.
    8. for_example::="this is an example".

      In the same document you can just write

       	$term
      and it will become a link embedded in the text. Clicking on the link will make the browser jump to the definition, and then the "back-arrow" will get you back to the definition -- for_example.

      Indeed I wanted these links to be created automatically, but the prototype tools do not do this. Hence to extra dollar sign.

      To link to a term defined in a different document in the same directory then you can use

       		.See ./document.html#term

      To link to a nearby directory the UNIX .. can be used like these:

       		.See ../directory/document.html#term
       		.See ../document.html#term

      To link to a page on a different server

       		.See url#term
      can be used.

      Now, MATHS provides a way to bundle up a collection of definitions into a "net", and you can import them using the ".See" -- in theory, inpractice this is yet to be implemented feature. So we make it explicit link:

       		local_term::=url#term.
      and can assert all the definitions from that URL into your document.

      The idea is to be able to reuse previous definitions with out having to write them out again.... similarly it should not be necessary to spend a paragraph repeating the definition of a partially ordered set... all you need to do is link to it.

      [ maths/math_21_Order.html#POSET ]

      More about creating reusable packets/nets of definitions, axioms, and theorems, real soon.

      2013-07-18 Thu Jul 18 10:57 Indicating formulas in MATHS documents

      My office is almost empty -- but the desktop and laptop still function. I will be using them to prepare some labels, do this blog, tidy up this web site a little more, and so on. One thing I must do is take this series of postings and prepare a redacted and reversed set of sections for a "how-to" page in the maths directory.

      As I cleared my office I came upon a set of note books dated 1966-1967 which have a series of experiments defining the formal syntax of mathematical formulas. This was before Knuth's ΤΕΧ of course. But it makes it clear that I have been obsessed mathematical notation for 50 plus years. At the time, I was using astrological and alchemical symbols a lot to create definitions and equations. And included LISP like data.... But as time went on I simplified things a lot.

      In MATHS you indicate a formula by prefixing the line with a horizontal tab. For example:

    9. Δ = b*b-4*a*c

      There are very few rules that have to be followed in simple formulas -- and the mth2html tool does very little with them. It is however possible to be very precise and rigorous is you follow all the rules [ maths/intro_standard.html ] that I have documented...

      The above just mentions the formula. Later I added a directive to include a piece of ΤΕΧ:

       .Tex \Delta = b^2 - 4 a c

      Example: 
.Tex \Delta = b^2 - 4 a c

      It is also possible to indicate "astring in another language` inside a paragraph like this b*b-4*a*c by using reverse quotes

       	`formula`

      Often you want to refer to a formula. In MATHS you introduce a label

    10. (discriminant_definition): Δ = b*b-4*a*c.

      You can create a link to a labeled formula by using a dollar sign: discriminant_definition.

      Sometimes, you may even want to claim that a particular formula must be true because of previously named evidence. In this case you can use

       	(list_of_evidence)|-(name): well_formed_formula.
      More on this later...

      You also have a special but very well known notation for defining new terms

       	defined_term::=expression.
    11. discriminant::= b*b - 4 * a * c.

      Again you can link to any definition. The simplest way is to use the "$" prefix... like this discriminant for example.

      2013-07-16 Tue Jul 16 13:53 Showing code as is in MATHS

      I notice that in the entries below I haven't explained the primitive method that I place source code and examples of MATHS directives in a MATHS document. It should have followed the same pattern as sections, lists, and sets -- An open directive and a matching "Close" -- for example
       .Open heading
       ...
       .Close heading

      Because of the limited programming in my prototype tool (mth2html using bash scripts and sed and awk) the language lets you mark one line as "as is" or verbatum (as they say in ΤΕΧ). You type the line like this

       	.As_is for example
      and you get (in HTML):
       for example

      It is very useful when writing language reference manuals. You need to add some examples of every piece of syntax. See [ samples/small.html ] as a (small) sample of this in action.

      I never defined a formal meaning for such lines. I have always wanted to replace it by a way to include raw data in a document.

      I will be writing next (above) about how you indicate a formula in MATHS.

      2013-07-10 Wed Jul 10 15:22 Blogging in MATHS for Fun and little profit

      I have almost emptied my office. Given a large number of books to the School library in JBH360, and so on. Now need a large trash can to clear my faculty activity reports.

      When teaching I like to use the web to communicate changes of state and make announcements to the class. A very simple way to this is to make the index page for a class record all the changes and announcements with latest first and the oldest last. This is a web log format. It is the format of this page. It is simple to just type in the message at the start of the file, prefix it with a headline, and generate the HTML from it.

      The headline is highlighted and marked up as an anchor so that you link to it.

      However you want to date stamp each entry. So I tried some experiemnts with planting the date in the file. You can see the evolution of the format (in reverse) in [ blog001.html ] (the first archive dating back to 2001).

      I developed a bash script to create the headlines automatically. It is called d and it is my bin file on the lab machines. Here is the code

       	: Short sortable date for blog
       	: Usage: d before after
       	: Usage: d
       	if [ $# = 0 ]
       	then
       		date +"%F %a %b %e %H:%M"
       	else
       	  if [ $# = 1 ]
       	  then
       		date +"$1 %F %a %b %e %H:%M"
       	  else
       		date +"$1 %F %a %b %e %H:%M $2"
       	  fi
       	fi

      The typical way I start a blog is by using vi and typing

       !!d . "Blogging in MATHS for Fun and little profit"
      on a blank line. Then you can type in the entry using any of the conventions of a MATHS entry, see below.

      2013-07-03 Wed Jul 3 12:24 Creating a simple document like a syllabus in MATHS

      Suppose you want to create a document ( say a syllabus) using my tools. Then the easiest way would be to modify my generic syllabus. It forms a nice example of the mark up language I developed (MATHS) while at CSUSB. You can look at the marked up text in [ syllabus.mth ] (if your browser will display weirdo extensions) or [ syllabus.txt ] (an DOS TEXT file).

      If you look at the file you will see it uses a pre-SGML markup notation. Special directive lines start with a period and indicate special formats and meanings. For example the document starts with

       .Open Dr. Richard J. Botting's Generic Syllabus
      which opens a new section of text and gives it a name and headline. It is matched by a
       .Close
      directive at the end of the file. Here is identifies the whole document, but ".Open" ".Close" pairs can indicate and name a subsection of the document, or any other section.

      However, normally a section has no subsections and then you can use a single headline like this

       . Contact
      with a single "." And space at the start of the line. The rest of the line names the following section (down to the next headline). In this case I am introducing a section of the syllabus that students can use to contact me. It runs on until the "Disclaimer" section that follows.

      Now headlines are used to create the contents list for a document, they are formatted as and HTML headline, and are also declared in the HTML to be anchors so that you can refer to the section either inside the document or outside it.

      You can embedded links very easily and there is are examples on the 4th and 6th lines of the syllabus:

       .See http://cse.csusb.edu/dick/calendar.html
       .See http://cse.csusb.edu/dick/
      The first indicates a file using a full URL. These links have to have a known extension. The second refers to a directory. There are half a dozen other formats for the ".See" directive including internal hyperlinks:
       .See Contact

      This first paragraph in the "Contact" section also has a ".Key" directive. This indicates the key or most important thought in the paragraph. The rendered for will high-light rest of the line and also make it into an anchor so it can be referred to in URLS. I added this to the language when I read research to showed that people do not read web pages. They skim. Highlighting is an important service to the "reader". The format for this directive is:

       .Key a line of text

      You have now seen these directives:
      Table
      DirectivePurpose
      .OpenStart a section with subsections
      .CloseEnds a section
      . Headline
      .SeeIndicates a hypertext link
      .KeyIndicates an important thought in a paragraph.

      (Close Table)

      I hope you see the pattern.

      Now for something less obvious. Paragraphs are separated by blank lines. This means if you Type the file naturally then it will be formatted as a readable page.

      You can indicate a line break in a similar way by starting a line with a space character.

      By the way -- if a line starts with a tab character then it is presumed to be a mathematical formula or wff. However this feature was not needed in this example document.

      The next part of the document is a set bnd unordered, bullet pointed, list. It starts

       .Set
      and finishes
       .Close.Set
      Each element in the set is indicated by a line that starts with a space. If you want a numbered (ordered) list then use
       .List
      and finishes
       .Close.List

      And before you ask, yes sets, lists, and sections can all be placed as elements inside other sets, lists. And sections.

      And that is all you need to know to create a simple text document using MATHS. For more complex examples look in [ samples/ ] nd unordered, bullet pointed, list. It starts

       .Set
      and finishes
       .Close.Set
      Each element in the set is indicated by a line that starts with a space. If you want a numbered (ordered) list then use
       .List
      and finishes
       .Close.List

      And before you ask, yes sets, lists, and sections can all be placed as elements inside other sets, lists. And sections.

      And that is all you need to know to create a simple text document using MATHS. For more complex examples look in [ samples/ ]

      A final hint: do not use MS Word to prepare plain text files.

      2013-07-02 Tue Jul 2 15:03 The secrets of this website revealed

      Yesterday I filled a gigantic mobile trashcan with papers, notes, handouts, ... even disks. Today I am packing boxes of materials for three courses: CSE557, CSE558, and CSE320. I am using the same boxes as I used to move into this building many years ago... The desk is still functional but the "panda" cradle for palmtops is at home now.

      I plan to describe how this web site can be modified. The archives are listed below so you can download and get them. On our faculty server or a student account the tools are already installed. On a fresh system you will need the "bin" and "src" directories as well.

      If you look in any directory (cs557 for example) you will see that just about every HTML page has a parallel ".mth" file. I wrote a simple UNIX script to convert ".mth" to ".html". It is named mth2html and you call it like this

       	mth2html filename.mth
      and it will create a new page complete with contents list, navigation, etc. I will give a brief practical introduction to the mark up used (MATHS) later.

      You can easily change the ".mth" file, use mth2html to render it (and create) a txt version, and so publish it -- I us my pub command to publish a single file but after a series of edits and renderings the pubn command will list the changed files and scp them to the right place on the CSE web server.

      By the way, my Q script understands how .mth files work.... and I regularly work in vi and tap the letter q to generate and view the new page.

      The format and appearance are defined by various file all starting with the word "standard".

       standard.header.sh
       standard.include.html
       standard.include.html.text
       standard.include.mth
       standard.include.sh
       standard.include.txt
       standard.inherit.sh
       standard.style.css

      The last of these standard.style.css is a Cascading Style Sheet description of the appearance of all the pages in the directory. It is included in every HTML file that is created. You can use this file to make all the Sets or Lists look different in every HTML file in the directory.

      The file standard.header.sh generates the standard header section for the HTML page. This together with standard.include.sh describes the beginning of the page including the navigational links. They are Shell scripts that take the file name as an argument.

      The standard.inherit.sh file is used in subdirectories to share a common format and lay down a trail of breadcrumbs.

      The standard.include.mth file is processed after the file given in the parameter of mth2html. It lets you share a set of definitions etc. across all HTML files in a directory.

      The ".txt" and ".text" files are boilerplate HTML text included sometimes in files.

      2013-06-27 Thu Jun 27 09:28 Archives and tar balls of work done at CSUSB

      Just in case anyone needs to reconstruct any of the work I have done here in the last 30 years, I have created and published GZipped tar-balls of most of the directories listed below:

      2013-06-25 Tue Jun 25 11:24 Life cycle of new idea

      A favorite web site, Futility Closet, has just posted a favorite quote [ http://www.futilitycloset.com/2013/06/21/progress-5/ ] describing how a new idea starts out as being rejected, becomes overblown and over-hyped, and settles down to being mainstream and obvious... This fits with most of the ideas that have appeared in software developement as well.

      Meanwhile, back at the ranch, I have used my carry on luggage to bring home several published and unpublishedpapers/books/ scribblings. And I am having the usual problems in correcting an errors made with a bureurctacy. Sample:

      1. "record your message at the beep..."
      2. record messsage.
      3. "Press 2 to hear your message and 5 to rerecord."
      4. Press 2... and listen.
      5. "Press 2 to hear your message and 5 to rerecord."
      6. Think: how to say it is OK? Press 5 and rerecord.
      7. "Press 2 to hear your message and 5 to rerecord."
      8. Press 2 and listen.
      9. "Press 2 to hear your message and 5 to rerecord."
      10. Think: Who designed this %$^&# system?
      11. Hang up and hope the message was left.

      2013-06-19 Wed Jun 19 10:45 History of Programming Languages and Current Vulnerabilities

      Found this [ http://www.veracode.com/blog/2013/04/the-history-of-programming-languages-infographic/ ] infographic on Google+. You'll need a big screen to see it properly. It omits some seminal languages in the 1960's. But it has some accurate and fun tidbits of information. Enjoy.

      2013-06-18 Tue Jun 18 12:44 Programming Languages considered Harmful

      Fun article on the history of programming languages and the failure of computerized systems [BrooksM13] -- I don't agree with the details, and noted some major ommissions like BASIC and Prolog -- But whatever we do next with programming may have to be highly innovative and probably quite painful.

      One of the problems with language design is that is done by people who already know how to program. They are infected with the very delusions that caused the failures of systems and embed them in the new languages.

      The next step.... some thing to mull over in my retirement.

      2013-06-14 Fri Jun 14 09:26 My last Finals Week at CSUSB

      Briefly: my finals are done but now they have to be graded, and I also will be going to the Graduate and CNS commencements this week end. This blog should be back when this is over.

      2013-06-11 Tue Jun 11 13:54 Updated a broken link

      I got this in my Email
        I just discovered that you've previously linked to Blog Comparison chart from here: [ people.html ]

        However, it has been taken down (ojr.org/ojr/images/blog_software_comparison.cfm) and no longer exists. As a developer and blogger, I think it still is a great resource for beginners so I decided to make a new one (updated and with additional blog platforms). It's located here - [ blog-platform-comparison-chart ]

        If you find it useful, feel free to update link and help the bloggers community.

        Let me know if you have any additional questions or concerns.

        Mike


      This has been fixed...

      2013-06-05 Wed Jun 5 17:42 Forms Finals Fire Alarms

      THe headline describes my excuses for not posting a substantive entry today. A badly designed form for the Social Security Adminstration took most of the day. Preparing finals and posting grades took another wodge of time. Finally two fire alarms in JBH this afternoon.

      Yesterday attended a special Faculty Senate meeting to here a resolution read on my retirement. I'm posting the text to social media... when I get the chance.

      Tomorrow. The last two classes. A faculty candidate visits. A special party to celebrate my retirement.... see [ plan.html ] if you need to talk to me!

      2013-06-03 Mon Jun 3 15:57 Another step to retiring

      Spent a couple hours at the local social security office proving that I was born a long time ago and was allowed to work in the USA...

      But here is another straw in the wind that makes it easier to stop.

      Here is a brilliant polemic [ http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/ ] (sent to me by Andrew Brinker, CSE 320 Student) attacking the main language I have been using to write the scripts on this web sites. If I can use something this bad with only mild pain.... I have got too calloused and should stop.

      2013-05-30 Thu May 30 14:03 Agility 2013

      I am continuing to clear out my office. I have finally trashed a large number of old issues of the "Software Development" magazine. I've kept one of their Halloween Horror-themed articles. I also kept a 2003 article [Ambler03b] that tries to project the future of agile development to 2013. It is interesting to compare what Scott Ambler predicted with what has happened.

      For example he claims that a new feature in Microsoft Linux 23 allows hime to send EMail back 10 years -- making use of a slingshot orbit round the Sun.... But this is impossible -- that Microsft would adopt and co-opt Linux. He did not foresee the giant growth of Linux in the mobile market.

      He has a lot of fun with the labels we throw around -- he predicats that agile had to be renamed lithe and so on. Test-driven Development would be suplanted by Security-driven development [Geer10] after a virus causes havoc via a security hole in .Net. I think this is still possible shift. XP (eXtreme Programming) adds the word continous or continuouly to all its practices. Scrum is renamed Cricket... But he then translates the rest of the letter into our terminology.


        [...]agile methodology clearly domiate the landscape,[...some] projects foloow RUP or IEEE 12207[...] one process isn't right for every type of project. [...] good candidates include projects[...] to implement a system based on government legislation.

      Here he is seems to be on the target, for example [CusumanoMaccormackKemererCrandall09] used a survey to argue that one size does not fit all and processes must be chosen to fit the situation. But the UK Government (see next item) is testing the thought that agile works on big government projects.

      Scott Ambler goes on to predict that there would be published papers proving that iterative


        emergent or evolutionary development is quantively superior to traditional "big design up-front" approaches.

      I've been reading the relevant literature for the last 10 years [ newbib.html ] (Big file!). Some relevant papers: [CaoRamesh08] interviewed practitioners and list probelms but give no quatitive data, [CeschiEtal05] poll managers and most use icremental delivery, and those that are agile have more satisfied developers, [ChristosPoniPalaiolgou10] report on one successful project in banking, [CohnFord03] report on the risks of introducing Scrum in one organization, [ConboyCoyleWang11] and [ConboyFitzgerald11] report on more experiences, [DrobkaNoftzRaghu04] at Motorola claimed a 260% gain in productivity by using XP, [DybaDingsoyr09] carried out a literature survey and some evidence or increased productivity and customer satisfaction, [ErdogmusMorisioTorchiano05] carried out anexperiment show that test-first development raised productivity without loosing quality, [GermainRobillard05] experimented on code-first vs diagramming and discovered that coding handled new technology better, and so on...

      In summary we do not have solid quantitive data showing benefits of an agile process. Indeed some [CockburnHighsmith01] argue that People trump Process -- what matters is the quality, motivation, and resources in the project not the process that is applied.

      On another front Scott predicts that "Tablet PCs" would have a huge impact on modelling. Certainly, if we had a tablet that let us quickly sketch out a design and demo it to our clients then it could easily beat paper or PC based modelling. Whether people will abandon the use of models for analysing situations (as Scott) predicts.... I don't know. I still think that pencil+paper or Board+chalk is the best technology for thinking about problems and solutions.

      Scott predicts the irrelevance of the OMG's efforts (XMI, UML, MDA,...) and suggests that user-interface modelling and data-oriented modelling would not be added until 2009.... and in 2013 we still don't have a unified model for user-interfaces.

      He proposes that COBOL will again become fashionable but being used in an agile way -- this may still happen. COBOL is still around andtheir is no reason for not using TDD, pair programming, refactoring, etc. in combination.

      Scott's final prediction of the emergence of a smaller job-market by 2013 is way off the mark.

      His predicats that developers will become skilled "craftsmen who actively seek to learn new skills and act in a professional manner at all times". I am sure that developers feel this to be true in 2013. However I think we can still improve our skills, knowledge, and practice.

      2013-05-28 Tue May 28 15:36 Large UK Government Agile Software Development Project in Trouble

      Large government projects have a very long history of expensive failure -- mostly indepenedently of the methods and processes used. The British Governments "Universal Credit" is making an interesting experiment -- and as one of the accidental experimental animals (I have some UK Government run pensions) I am hoping that it will manage to deliver something of value. However one of the great things about parliamentary democracy is the continuous questioning of everything that the Government is doing. Add to this that the project has been trumpetted as an "Agile" project -- and that "Agile" will be what makes it succceed -- we have a number of pundits using it to defend more traditional processes and methods.

      I saw this [ 186577 ] on Slashdot the other morning. It contains the usually geeky discussion of several points around the central topic of software project -- was it .NET or Linux or "agile" that is poinsoning the project.

      This lead to a discussion [ http://cartesianproduct.wordpress.com/2013/05/25/universal-credit-government-closer-to-recognising-failure/ ] on the Cartesian Product blog which in turns leads to [ http://cartesianproduct.wordpress.com/2013/05/26/a-bit-more-on-universal-credit-and-agile/ ] and [ http://cartesianproduct.wordpress.com/2013/04/28/universal-credit-death-march-goes-on/ ] which exposes the (negative) view of the project and its use of what the government calls "agile".

      This lead to a useful (if less relevant) discussion [ ?p=906 ] on the Cutting Ledge blog of how you measure the agility of a project. And [ 5-things-that-will-make-your-agile-development-project-fail.html ] (Java Code Geeks) on how "agile" fails.

      But back to cooler reporting [ dwp-drops-agile-from-flagship.html ] where Computer Weekly makes clear that parts of the project will be manage using "waterfall" and parts (the user interface) via "agile".

      Another initiative in the UK is to keep a closer eye on the progress of Major Projects by the new MPA
      (Major Projects Authority): [ https://engage.cabinetoffice.gov.uk/major-projects-authority/ ]

      What is highly irritating to me is the absolute abscence of detail on what kind of "agile" we are talking here and the actual methods and technology in use.... and the people (Accenture and IBM have been mentioned) involved.

      2013-05-23 Thu May 23 13:32 Open Source Code for Scientific Research papers

      Software Engineers have been taught that code inspection is a vital tool for producing good code. This has been known and confirmed since Fagan's work [Fagan76] [Fagan99] at IBM in the 1970's upto and including pair programming in XP more recently. Being able to inspect the code in a project is a key driver in the Open Source movement.

      Fagan claimed to be adapting the techniques used in hardware to software.

      Science operates by providing access to experimental methods and results via Peer Review of published and presented work.

      SO I am glad to see that scientists [ 2013-05-ecologists-overreliance-unvetted-source-code.html ] are now arguing that the software that is used in a particular piece of work also needs to be reviewed ... that the source code must be open.

      I have felt this since the first claimed "computer proof" of a theorem. The famous Four color theorem of topology was "proved" by using a FORTRAN program to check a large number of cases. It was excepted, but I was sceptical and waiting a proper review and proof of the FORTRAN program itself...

      2013-05-22 Wed May 22 13:57 Another step -- Simplifying home page

      I have simplified [ index.html ] to only show current classes, blogs, and a link to the seminar page.

      This means I do not have to keep the archive of seminars upto date... the Google calendar [ seminar/ ] will do the job better and simpler.

      2013-05-21 Tue May 21 15:29 Another Mile Stone -- List of CSUSB keys to return

      As I expected I will have to pay for any CSUSB keys that I have lost..... but I just got a polite notice from the Keepers of Keys at CSUSB listing the 8 keys they think I got ... and it matches the actual keys attached to my belt.

      Phew!

      Started to chuck out old magazines -- "Software Development", "Dr. Dobbs", "Unix Review", ...

      Decided to keep "Goedel, Escher, Bach"!

      2013-05-20 Mon May 20 13:36 Closer to retirement

      Over the weekend applied for Social Security Retirement Benefits for September.

      Yesterday I deprecated my San Bernardino Symphony page... Don't go there, don't link there any more.

      Starting to move things I really want to keep, out of my office to home: Dilbert mugs, Mandelbrot's book, etc... But no hardware or software.

      The difficult question -- The draft monograph that IEEE never followed up on... Oh well, the text [ monograph/ ] is online. So what to do with the Ph. D. Thesis on Computer Graphics... My old university said it would be put online sometime but this is the only copy in the USA.

      Also what to do with the collection of obscure papers and books that document the history of software development methods and processes...

      2013-05-17 Fri May 17 10:19 Waiting for a hardware Fault to repeat

      My office machine is pretty old and got in a panic yesterday afternoon.
        Message from syslogd@jb339 at May 16 15:54:34 ...
      1. kernel:Uhhuh. NMI received for unknown reason b1 on CPU 0.

        Message from syslogd@jb339 at May 16 15:54:34 ...

      2. kernel:You have some hardware problem, likely on the PCI bus.

        Message from syslogd@jb339 at May 16 15:54:34 ...

      3. kernel:Dazed and confused, but trying to continue

      I use it to write blog entries, like this one. It seems a little slow. But no kernel panics yet....

      I may have to freeze this blog and replace it by one on Blogger earlier than I had planned.

      2013-05-16 Thu May 16 14:57 Do Not Teach Applets

      With neat irony, I found this well argued case [ http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/ ] just as I was preparing to cover Java in my current "Programming Language" course [ cs320/ ] and discovering that the new browsers are scared of all the example Applets I prepared to show the students... Self signed applets are apparently no longer safe enough.

      On the other side, the course includes writing a web site, and I wanted to include some dynamic stuff.... and when I planned the course that meant Java Applets. Especially some fun graphics.

      I am so glad that updating this course will not be my problem. But I guess HTML5 will be part of it in the future.

      2013-05-14 Tue May 14 14:24 Polyhedron Fun

      This [ http://levskaya.github.io/polyhedronisme/ ] is worth a visit... but I think you will waste a lot of time there.

      2013-05-09 Thu May 9 14:31 Rules for writing Use case scenarios

      This [YueBriandLabiche13] reports an experimental test of some rules for writing use case scenarios.

      They are interesting enough that I have transcribed them into [ samples/usecase.html#Rules ] for your admiration.

      One rule is very interesting and flies in the face of all the examples and templates I have seen. It proposes that each flow flow through a scenario needs its own post-condition. Whereas the normal advise is to have one post-condition per use case that is true when any flow is completed.

      2013-05-07 Tue May 7 14:30 Another model for a software Process

      Here [Nuseibeh13] is yet another model of the software process. Nether a waterfall or a fountain, but a pair of mountains -- Twin Peaks -- one representing the architecture (code) and the other the requirments. The process spirals down the moutains -- getting more detail on each iteration -- and both the architecture and the requirements can evolve...

      There are times when I think that the whole refinement concept was a snare and delusion that has confused people ever sive it was created.

      2013-05-02 Thu May 2 15:44 Seek alternatives to current technology

      At any time there has been a set of technologies that are the only way to do things. But I have said, for a very long time:
        If the solution involves a computer and software etc. etc. then what the h*** was the problem.

      So here is an example of my prefered solution to most problems -- if it isn't broke don't fix it.

      [ if_it_aint_broke_dont_fix_it_ancient_computers_in_use_today.html ]

      Which may account for my blogs about computers from my youth.... and the extreme age of the operating systems on the machines I use to do work... and the old-school look of all my web pages!

      2013-04-30 Tue Apr 30 15:45 Programming as a Career

      I was not really surprised to read in [ so-you-dont-want-to-be-a-programmer-after-all.html ] that people don't like being programmers...

      For 40 years I have taught and advised students that programming by itself is not a career but a dead end. You have to mix in other skills and expect, plan, and ambitiously aim higher than mere programming. Learn about people and what they need. Look for career steps where people-skills pay off.

      However one of the quoted emails: Quote


      1. [...] it's too frustrating. Stupidly complex stuff (that people consider "standard" even if it's extremely complicated!), fighting against the computer, dumb errors, configuration, and stuff that people even worse than me implemented and I have to take care of. New stuff which is supposed to be incredibly easy, and it's just one more framework.

      does make me ask -- why do we make programming so d*** difficult. Especially why is it a fight with the development system... Is this a essential property of software development -- is there a better way to develop software?

      Even after 40+ years of research on this topic -- I haven't seen one that has been properly incarnated in a tool set and become mainstream. Each new idea is either abandoned or made complex.

      Definitely time to retire....

      2013-04-25 Thu Apr 25 15:35 New company Software Prodigy added to samples

      Aaron has asked me to add Software Prodigy to my list of companies in [ samples/people.html ] , and it has been done.

      2013-04-23 Tue Apr 23 20:25 Another kind of education

      Computing is a field that changes all the time. Software developement in particular spawns new technologies, languages, tools, and even methods every half-a-dozen years. There have been many paradigm shifts during my career. This fits very well with this article [ http://www.benjaminasmith.com/blog/2013/04/12/continuing-education/ ] by Benjamin Alexander Smith on the "Hacker Lifecycle".

      2013-04-18 Thu Apr 18 14:47 Why do a PhD

      Do a Ph. D., not to get a job, but because you love the topic.

      If you love the wrong topic -- you may end up all bitter and twisted like this [ there_are_no_academic_jobs_and_getting_a_ph_d_will_make_you_into_a_horrible.single.html ] (Full Site) or [ there_are_no_academic_jobs_and_getting_a_ph_d_will_make_you_into_a_horrible.single.html ] (Mobile site).

      In the above case there are no academic posts for English Litereature professors.

      In Comp Sci -- there is usually are lots of jobs for Ph.D.s -- for example CSUSB, School of Comp Sci and Eng is already advertising for a replacement for a colleague who has had a job offer in a different state, and they should be recruiting my replacement for when I retire. Finally we have been a promised another faculty line to grow the Computer Engineering program.

      But before you rush into a CSci or CE Ph.D. study this posting [ http://www.futilitycloset.com/2013/04/13/higher-learning/ ] (Futility Closet).

      Then checkout [ comics.php ] (Piled Higher and Deeper Comic).

      So you need to have a topic that you really need to live with and be obsessed with for the rest of your life before you get into a doctoral program.

      And then, given your obsession is in a marketable discipline, you will have a pretty rewarding life ahead of you.

      2013-04-18 Thu Apr 18 09:19 Fixed the Contact and Submit Buttons

      When we installed a new web server recently my PHP script that sends me EMail form HTML forms ceased to work. I discovered this last night. And with the help of Birdie, Tong, and David.... it now works again. Please test!

      2013-04-16 Tue Apr 16 15:18 Free Book Centre

      Link [ samples/etc.html#Free Book Centre ] is from their web master Rakesh.

      2013-04-11 Thu Apr 11 14:44 Best Reviewed Publications in Computer Reviews

      CR has put together a page of best publications [ notableitems_2012.cfm ] as reccommended by reviewers and editors. Can you find the review that I wrote here?

      2013-04-09 Tue Apr 9 16:18 Nutshell books I will never forget -- and why

      I used the O'Reilly "vi in a Nutshell" book in one of my classes. It had a large-eyed furry beat of the cover that the class liked, but wanted know what it was. This was before Wikipedia and Google, BUT we did have EMail and so I wrote a message to `nuts@ora.uu.com" -- a charming quirky address that has probably died. Shortly I got a reply -- the animal was a tarsier. This was followed by copies of the catelog of "animal" books to share with my class and a coffee mug with the cover of the UUCP book. At the time I thought that this company would go far.

      You can found a short history at [ http://animals.oreilly.com/origin-of-species/ ] on their web site.

      By the way -- I still have that 1988 vi book within easy reach of my Linux keyboard in case I need a weird command line or command character.

      2013-04-04 Thu Apr 4 16:39 How to change the process in a big company

      Here [SagaesserJosephGrau13] ia an article that describes the process whereby Credit Suisse changed from a "waterfall" to an "iterative" process.

      Key lesson to learn -- change the process in a large IT organization shares properties with any other organizational change -- get ready for resistance, analyse it, and manage it.

      2013-04-02 Tue Apr 2 14:50 CSE550 BioInformatics Elective

      Check out the latest and newest CSE elective -- CSE550 BioInformatics -- that is running this Spring. Not just for BioInformatics majors!

      2013-03-26 Tue Mar 26 17:04 Spring Break

      I am off campus until April 2nd. This blog will therefore go on hiatus until the afternoon of april 2nd. Meanwhile [ plan.html ] for my schedule.

      2013-03-25 Mon Mar 25 10:35 Advice to young researchers

      If you beat your head against a brick wall for a long time -- say 30 years -- then you have a right to ask if the wall is a permanent feature that can not be damaged by bashing your head against it. Then you (I mean me of course) discover that this is an example of a theorem proved 70 year ago...

      The details -- In my MATHS language I strived to define the syntax and the semantics using the MATHS language. I was careful to separate the theory of types in the language from the rest of it.... but even so walked into a number of paradoxes and blockages. It turns out that Tarski's Undefinability theorem [ Tarski%27s_undefinability_theorem ] (Wikipedia) proves that a formal language of sufficient complexity can not define it's own semantics. In other words -- I was trying to do the impossible -- and failed.

      You might wonder how I could wander into formal semantics without the necessary training in formal logic. Basically, I went through a classical mathematics program -- a ton of calculus and analysis -- and taught myself some rudiments of logic using library books. Indeed my notes on the mathematics classes were taken down using symbolic logic. By the time I got to graduate work formal semantics was a fashionable topic at the time (1960s..) and I defined a language for graphics.... and discovered that I had to first define a model of what a graphic was.... So I came out of the Ph.D. with a thesis on graphic algorithms, a working tool, and the thought that most programming depended on first defining the client's world... domain and business modelling. A thought that has guided all my research and much of my teaching ever since.

      But -- here comes the advice to young researchers -- do not abandon your thesis topic. Do not get into more unknown areas where there may be monsters. But continue to push the same subject on its boundaries.

      2013-03-22 Fri Mar 22 08:07 GoF Patterns Evaluated

      It is very hard to get behind the hype to discover what ideas and tools are worth using in software development. The field is full of new ideas that have been given very little testing and yet are advocated strongly. One example is the explosion of Design Patterns since 1994. This starts with the "Gang of Four" object-oriented design patterns. Their book [Gammaetal94] was an impressive tour-de-force showing how polymorphism could be used in unobvious ways. Here [Budgen13] is a survey of the experimental or experiential data on using these patterns. Backed up with a poll of people in the area. Only 8 of the patterns have been evaluated. The paper lists them and describes wwhat is good and bad obout them. Food for thought. Perhaps it may lead to more experiments and experience papers.

      By the way, I have updated my samples/patterns page [ samples/patterns.html ] , enjoy.

      2013-03-20 Wed Mar 20 14:11 Death of Beta Testing

      Nice article [ ? ] in Dr. Dobbs notes that Beta Testing is more risky these days. You can get a lot of bad Twitters and Facebook mentions if the new piece of software does not work well! It discusses some alternatives: Dogfooding, Staged roll-out, Partial roll-out, Testing in Production (TiP), and the Dark Launch.

      Well worth reading.

      2013-03-18 Mon Mar 18 14:22 Dynamics of an Asteroid

      Prof. Moriarty in the Conan Doyle's Sherlock Holmes Canon has written a famous treatise on the Dynamics of an Asteroid. Here [ groups.htm ] you will find some examples of the more well known asteroids plus simulations of how they are going to move. The animations are beuatiful and relaxing. The images makes it clear how many planetoids there are -- a lot more than I expected.

      As an undergraduate Math major I was facinated with a simple problem -- but one that was not covered in any of the course I took. I had read Asimov's Foundation series (first three volumes) and was struck by the concept of "Psychohistory". This is a discipline within mathematics that allows accurate predictions of the probabilities of different changes in a large (and ignorant) population of humans. Clearly a variation of thermodynamics.

      Now, you would never have an exact picture of the state of a human society so the problem I wanted to solve was: You know the probability distribution of the initial state but you have a deterministic model of the dynamics of the state ... so what you want to find is what happens to the distribution of the states as time goes on.

      So, you do not know precisely where an asteroid is or how fast it is travelling, or its direction of movement. But you can (I guess) describe it as a probability distibution ... and an asteroid (if we ignore the other asteroids for the moment) follows Newton's Laws of motion in a highly deterministic way. OK -- so you need a 6 dimensional state space but this adds little to the problem.

      So, my problem fits the asteroid situation well.

      I'd worked out the solution, from first priciples, many years ago (in a coffee shop?). I returned to the problem years later and discovered that the problem had already beeen formulated, generalized, and solved as a Partial Differential Equation -- the Focker-Plank Equation and inded this has been used in predicting the dynamics of asteroid fields.

      My solution is a special case that is rather nice and easy to grasp... Let us suppose that the state of a system is symbolised by x an n dimensional vector, and at time t=0 that this has a PDF of p(x). At any time, t, the distribution of x is φ(x,t).

      The evolution of the state x is given by a classical Ordinary Differential equation:

    12. dx/dt = f(x), for some function f mapping state into the rate of change of the state with respect to time t.

      Then

      
.Tex \partial \phi / \partial t + \nabla( \phi f ) = 0

      The initial condition will be

    13. φ(x,0) = p(x).

      In other words the probabilty decreases as the field (f) diverges (∇).

      Thanks for listening.

      2013-03-15 Fri Mar 15 10:10 Seminars and an advert for a .Net iOS tool

      More seminars today and Monday.... and perhaps after that as well [ seminar/ ]

      Meanwhile in Dr. Dobbs an advert/article [ ?cid=DDJ_nl_upd_2013-03-12_h&elq=d627dd87a55645278040eef8fa18dc84 ] for a development tool that bridges the gaps between .Net/C# and iOS -- I wonder if it works for real -- at $999 I want a tool that does a lot of heavy lifting!

      2013-03-13 Wed Mar 13 16:00 Seminar -- Internship Report -- Kelly Space and Technology

      Bryann Amann will be reporting (in JBH359) of the work he did for Kelly Space and Technology at 3-3:30pm Thursday 14th of march -- tomorrow.

      Sorry for short notice.

      2013-03-11 Mon Mar 11 10:17 Special Seminar Disjunctive Languages Related to p-Primitive Words

      Dr. Alice Cao will be leaving the School of CSE and returning to her University in China on Thursday. She will be presenting a small part of her work here 2-3pm on Wednesday the 13th. All are invited to attend.

      Please check [ seminar/ ] for details.

      2013-03-08 Fri Mar 8 09:17 Perfect software may be Rocket Science -- How to program the Mars flight

      This is a lovely example of how rigorous attention to good standards, supported by tools can produce software that executes its tasks with no significant anomalies. NASA needed the Mars rover to land on Mars... under software control. And this [Holzmann13] explains how they did it.

      Long story short: standards + people + tools + automated formalisms can give high quality.

      2013-03-06 Wed Mar 6 15:35 Computers help some mathematicians prove things but others say no

      Back in 1976 a proof of the famous Four Color Theorem [ Four_color_theorem ] (Wikipedia) was published by running a FORTRAN program that tested a large but finite set of planar graphs. Many people excepted it. But I had doubts -- because there was no proof that the FORTRAN had been coded correctly...

      Nowadays it has got worse [Wolchover13] as mathematics has become more complex, computer power more available to mathematicians, and some mathematicians arguing that you don't learn anything by using a computer to calculate the truth of some formulae.

      2013-03-04 Mon Mar 4 14:40 Review on Governance Practice in Open Source Software

      My review of [MidhaBhattacherjee12] has been published on pages 177-178 of "Computer Reviews" Vol 54 No 3 (Mar 2013).

      2013-03-01 Fri Mar 1 08:32 The CSE Seminar Calendar Hots Up

      If you want to learn about current software development, in all it's rich diversity -- One Size Does Not Fit All -- then come to one of the Computer Science and Engineering seminars: [ seminar/ ] which are popping up all over the calendar at the end of the quarter.

      And many faculty offer extra credit to their students for atttending them. My students also have to send me EMail [ qr.html ] with a single short paragraph about the seminar.

      2013-02-27 Wed Feb 27 10:48 Books on JavaScript

      Here [ 240148421?cid=DDJ_nl_upd_2013-02-12_h&elq=5415a33d4b5d40b6a2f2bb89ff7e3aa5 ] is a slide show that describes some books to help you learn JavaScript...

      2013-02-25 Mon Feb 25 13:17 Diagnosing Performance Problems

      That was an exhausting weekend... culminating in an Oscars Celebration with food drink and fundraising for the San Bernardino Symphony [ symphony.html ]

      Meanwhile here is a readable and wise article [Gregg13] on finding performance bottle necks in complicated systems. Study this before you have to fix a system that performs badly.

      2013-02-22 Fri Feb 22 12:11 Gray Life -- An attempt at a continuous grid free Game of Life

      This is something I brainstormed a year or so ago with my colleague Dr. Gomez. We are both interested in cellular automata models of biological systems -- with Conway's original "Game of Life" providing inspiration. I wanted an alternate model that was not cellular but continuous, and had no predefined X><Y grid.

      Firstly I replaced the Boolean "alive" vs "dead" values of a cell by a continuous field of "aliveness" or "virility" -- For each point p in the surface S l(p) would represent how alive that point was. So l maps points in S to real values in range [0..1] -- the values can be called densities. So instead of Black and White we would have endless shades of gray.

      In Conways model and the family of cellular automata called "Totalizers" all that matters is the sum of the values in the neighborhood and the current value of the central cell. We have many experiments with different neighborhoods and different rules -- some of which look very realistic... But in Gray Life one replaces summation by integration. And without loss of generality we replace the neighborhood by a weighting function. This pattern of weights w is visualized as moving from point to point and controling the summation -- a convolution.

      Finally we need a rule R which takes the current aliveness of a point and the weighted total as aruments and returns the new aliveness value l':

      
.Tex l'(p) = R(l(p), \int\int_{q \in S} l(p+q) w(q) dS)

      It not difficult to sketch out rules that match up with Conway's rule for example.

      Now the simplest case is when w has a rotational symmetry about the origin so that

    14. if |q1| = |q2| then w(q1) = w(q2).

      (|p| is the magnitude of p in some metric).

      And with out loss of generallity we can express w in simpler terms

    15. w(q) = f(|q|).

      The obvious example would be a Gausian bell-shaped form. You can best visualise these systems if w forms a cylinder -- f is a step function.

      It is fairly clear that if there is a large area that is very alive (l(p)=1) next to an area of death then the value of the integral starts low (in the dead area) and then rises... and the rule should create a border arround the live area.

      Now simulating the evolution of a pattern on conventional computers leads to the introduction of a grid -- the x and y I have been avoiding above... So I may pick up the theory later after I retire from being a Computer Scientist and become a Recreational Mathematician.

      2013-02-21 Thu Feb 21 20:51 New web server

      Our 7 year old web server gave up the ghost yesterday ... and a new one was installed tonight.

      However I seem to have lost the work I uploaded since about 10am Wednsday -- like the following blog entry.

      2013-02-20 Wed Feb 20 12:46 Testing a new feature -- TeX in MATHS and Google formats it

      One of the weakest areas of my MATHS language is the integral calculus. And it so happened that to express a smooth approach to the Game of Life you need formulae like the following

       .Tex \int\int_{q \in S} l(p+q) w(q) dS

      It also happened that I discovered that an app I have been using for writing ΤΕΧ used the Google Charting API... and so I patched a ".Tex" directive into my "mth2html" tool... so that you can see the above in all its rendered beauty... Explanation to follow some advising...

      2013-02-18 Mon Feb 18 13:48 The Game of Life made smooth

      I found these links to a new Cellular Automata type model on Google+. The discussion was started by JohnBaez.

      [ 1111.1567 ] (short paper), [ watch?feature=player_embedded&v=KJe9H6qS82I ] (video), & [ playlist?list=PL69EDA11384365494 ] (YouTube).

      The system shows behavior that is similar to the traditional Game of Life described by J H Conway but with a continuous field of automata.

      I commented "I came up with a formulation like this in an attempt to create/invent a grid-free form of the GoL. In many biological systems you have a life/death situation but no grid. I assumed a continuous rotational symmetry in the rules and I could prove one or two results but any computer implementation involved reintroducing a grid."

      I'll try to post more on this next wednsday.

      2013-02-01 Fri Feb 1 14:26 Expressing Operation Contracts using Mathematics

      Every year, for the last 4 or 5 years I have come to the step in Larman's book [Larman02] where we can specify the effects that an systems operation (generated by a user action via the User Interface subsystem...) has on the system. And every time I think to myself that it would be easy to write the specifications using the kind of simple discrete mathematics I have been working on under the MATHS project for the last 25 years...

      And every year thinking mathematically opens up a can of worms... and when you open a can of worms it is difficult, if not impossible, to get them back in the can.

      In this case it is the inhenrent concurency of modern software is tripping me up.

      Let me write up an example losely based on Larman: we have a doamin/business where customers are sold things. All the items bought at one time are called a sale, but items are added to the sale one at a time. So the

    16. enterItem(cost:Money, description: Text, s:Sale)
    17. has as a precondition the fact that the item is not in the set of Item:
    18. For 0 i:Item( i.cost =cost and i.sale = sale and ...).

      Afterwards (just transcribing the English here...):

    19. For 1 i:Item( i.cost =cost and i.sale = sale and ...).

      Then I started to worry whether this was to loose. Typically a post-condition like this does not specify the implicit "framing" condition that nothing else changes.

      To do this then you need operations like Add form [ maths/logic_44_n-aryrelations.html#Dynamics for data bases and data structures ] or the ":op" operators from [ maths/math_14_Dynamics.html ] to be precise:

    20. Item.Add(the ITEM (cost, sale, ...))
    21. or
    22. Item:|{the ITEM(cost, sale, ...)}
    23. or
    24. Item' = Item | {the ITEM(cost, sale, ...)}.

      These implicitly force the other items to stay the same. Indeed they implicitly lock all the other sets in the whole system while this one item is added.

      Now, if it takes time for an item to be added.... then it is intolerable to stop the business operating while this one transaction to complete.... so perhaps this is actually the wrong thing to ask for.

      Again the Mathematics clarifies the options but does not make the choice easier.

      Here is another example. Larman mentions that in addition to creating new items we may need to specify changes to attributes, and making and break associations with other objects. One way to describe the adding a link in association A (linking set X to set Y:

    25. A: @(X,Y).
    26. between objects x and y (in X and Y respectively) is:
    27. (x,y) ∈ A', (A` is the new A after adding the (x,y) link).

      But this again misses the tradition framing and allows other changes to happen to the association while we are linking x to y.

      To stop other changes you need:

    28. A :| (x,y)
    29. or
    30. A' = A | {(x,y)}.

      Here, again we have a subtle choice that we might never notice if we only specify the operations in a natural language.

      As an exercise.... how do show the deletion of elements from a set or the breaking of an association -- with and without global locking.

      2013-01-30 Wed Jan 30 14:43 Sometimes computers make it better

      Studying software development tends to make you despondent -- there is such a large gap between what we have, what we need, and what we get. So as a bit of personal counter-programming here are a couple of nice computer mediated events in my life.

      On monday afternoon I had a blood test to see if any prostate cancer cells were hiding and active in my body. It used to take a couple of days. But before I got up on Tuesday I got an as-good-as-it-gets PSA score of "<0.1".

      And then I tested the new web page from Omnitrans (our local rapid transit agency) and was able to leave the house with just enough time to meet the bus as it arrived at my stop. This saves a 10 minute wait in case the bus is early. I had figured that it was possible to give real time bus information -- the busses clearly have a GPS and it only takes a simple gadget for them to report their position to the dispatcher. The data base of bus info is now available via [ http://www.omnitrans.org/nextrip/ ] and is checking out to be useful and accurate. I guess I can remove this form my list of projects I would like students to have a go at:-)

      2013-01-28 Mon Jan 28 15:15 How to state and validate requirements

      Here [CimattiRoveriSusiTonetta12] we have a case study applying a particular notation and method to validating the requirements for a new european train system. The questions are (1) are the requirements consistent -- does there exist a possible situation that fits all the requirements. (2) Are the requirements complete -- do they allow things to happen that would not be a good idea. The languages are a UML class diagram as a domain model (a very common choice these days) plus a natural language syntax for a linear time (modal) logic. The experts in train systems were able to work with the tools and the languages and said they helped. The authors developed a useful categorisation of requirements that might help just about any project:
    31. Requirements_classified::=Glossary | Relationship | Action | Configuration | Behavior | Scenario | Property | Annotation.

      2013-01-25 Fri Jan 25 11:06 How to improve coding and why to do more than coding

      First here is more from SlashDot [ ask-slashdot-how-to-convince-a-team-to-write-good-code ] on establishing Coding Standards , This follows up from questions about newbies and experienced practitioners arguing about coding.

      Meanwhile an article in Wired argues that everybody can now learn to write code cheaply using online resources and so professionals need to do more than just hack the code. If you take time to record the purpose and usage the code, then maintenance can be 10 times faster... at least in Leslie Lamport's experience... [ http://www.wired.com/opinion/2013/01/code-bugs-programming-why-we-need-specs/ ] You can check out Leslie's prize winning work in my bibliography by following this link: [ bibfull.php?search=Lamport ]

      2013-01-23 Wed Jan 23 15:19 Two ways to make reuse easier

      Here we have experiments testing to quite different tools for finding and reusing code. The first [HolmesWalker12] is called Gilligan and is based on how real projects reuse code. The other [PoshyvanykGethersMarcus12] uses some powerful mathematics to locate relavant bits of code. So we have pragmatic vs thoery -- and, as usual, the tools work and make the programmers life easier...

      2013-01-22 Tue Jan 22 15:15 Any method is better than no method

      Here [ 240144237?cid=DDJ_nl_upd_2012-12-11_h&elq=190bcb4144af40bdbdfd3120fc57c424 ] Andew Binstock (Dr. Dobb's Journal) argues that any method is better than none.

      It is worth noting that the article discusses what I would call process -- the way a team schedules and plans the work. For me a method (or worse a methodology) describes a set of loosely steps from problem to solution (examples in [ samples/methods.html ] ), Over the years this idea has decayed.

      2013-01-18 Fri Jan 18 11:13 Performance of Java vs CHash in a web server

      Found an interesting article [ http://slashdot.org/topic/cloud/java-vs-c-which-performs-better-in-the-real-world/ ] found via SlashDot. Jeff Cogswell programs a couple of simple web applications in two different run time systems: Java/JVM and C#/CLI and discovers some surprises -- Some Java classes slow down the response 100 times for non apparent reason.... but another test shows Java is fater than C#. Hmmmm....

      2013-01-16 Wed Jan 16 14:44 Comic of the week -- DoghouseDiaries

      This is an unusually relevant edition of a promising comic [ 4822 ] pointed out to me by an ex-student of mine -- Abigail.

      2013-01-15 Tue Jan 15 14:30 Lack of coding standards leads to programmer discord

      Here are two SLahDot discussions: [ ask-slashdot-how-can-i-explain-to-a-coworker-that-he-writes-bad-code ] [ ask-slashdot-how-to-react-to-coworker-who-says-my-code-is-bad ] that discuss the same problem from opposite sides... the fact is that it is upto the managers to make sure that newbies and experienced coders are working from the same play book.

      2013-01-14 Mon Jan 14 10:37 Posts delayed

      I am getting over a cold, starting the quarter, avoiding Java, and listening to a plumber.... more later in the week.

      2013-01-08 Tue Jan 8 14:23 The most popular programming language

      Here we have two different answers to the perrenial "Which language is most popular?" First we have the latest TIOBE index [ 5298-the-top-languages-of-2012.html ] which puts C on top.

      But PYPL uses Google stats [ PyPL-PopularitY-of-Programming-Language ] to put Java on top...

      2013-01-07 Mon Jan 7 10:31 Another home made language -- Ithkuil by John Quijada

      Here we have an attempt to create a logical language where each word has a root, a path thru an ontology, and the part it plays in the sentence... and an alphabet based on Klingon: [ index.htm ] [ 121224fa_fact_foer?mobify=0 ]

      Enjoy?

      By the way I have a cold ... stay away if you can!

      2013-01-04 Fri Jan 4 16:30 Mapping Relational Data to Data Structure

      This [HawkinsEtAl12] is a beautiful, if old idea.

      2013-01-03 Thu Jan 3 11:02 DevOps -- Integrating developers operations and testers

      I classify "DevOps" as another blinding glimpse of the obvious. According to [ 240009147?cid=DDJ_nl_upd_2012-12-26_h&elq=261c43cab0294855bb97197cd263f82d ] (Neil Gamichaud writing in Dr. Dobb's December 24th) and [ DevOps ] (Wikipedia) it pays for developers to work closely with the operations/System Administration/Quality Assurance Teams.

      I have always argued that developers must identify stake holders and that operations/administration/testing are always stakeholders. The claim is that when the teams work together operational and instalation problems are tackled and corrected before the product is released/updated. As a result the developers don't get called overnight as often as before DevOps.

      It also fits with my understanding of software development as having several parallel and interacting proceses: Operation, Analysis, Design, and Implementation are all happening all the time in real systems.

      2013-01-02 Wed Jan 2 10:56 Happy New Year -- Plans for 2013

      I will be retiring from CSUSB at the end of August 2013. My teaching load will be the same but the pressure to do research is low. So during the time leading up to my retirement I will be reducing my study of papers and articles and so my postings on them.

      I have already not renewed my IEEE Computer Society membership. I have the last issues of 2012 to read and report on when they arrive. Then I will loose an important stream of reliable information about software development. The flow from the ACM will also dry up in the next 6 months.

      At some time I will post a final item transfering my blog to a non-CSUSB but cloud based solution. I am a little tired of using vi and my own tools to maintain this blog and the bibliography behind it.

      Previous Archived Blog Entries


      (2012): [ blog012.html ]
      (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 ]

      Latest

      [ blog.html ]

      Glossary and Links

    32. above::=using the above statements....

    33. 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.

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

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

    37. 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.

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

    40. 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.

    41. 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.
    42. 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.

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

    45. 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).

    46. 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.

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

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

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

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

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

    56. 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.

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

    . . . . . . . . . ( end of section RJBottings Web Log -- 2013) <<Contents | End>>

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

( End of document ) <<Contents | Top