[Text Version] blog011 Fri Jan 25 13:28:30 PST 2013

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

See [ Invitation to Contribute ] below.

This blog archive 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. Newer items may be found at [ blog.html ] which was archived here throughout 2011.

## 2011-12-19 Mon Dec 19 13:22 Bonus -- Contribution from Sara Washington

Sara Washington Emailed me a couple of good links for [ samples/etc.html ] on Artificial Intelligence and the history of Microsoft. Thank You!

## 2011-12-15 Thu Dec 15 17:18 Iterationless Development

Here we have another software development process -- one that seems to fit start ups and firefighting projects. I am deeply suspicious of it in general because it uses Kanban and the factory analogy as a control metaphor.... and software development often has a research component that resists pre=planned procedures. On the other hand we have the use of tools and continuous integration to keep the quality up, and a prototyping concept -- write and test something and see how stakeholders react to it.

So this [ iterationless-development-latest-new.html ] blog item by Jim Bird is quit interesting -- but one size does not fit all!

I expect this to be the last posting on this blog until the new year.

Merry Christmas!

## 2011-12-13 Tue Dec 13 17:37 Classifying Component Models

Here [CrnkovicSentillesVulgarakisChaudron11] we have a survey of component models - like JavaBeans, COM, and so on. If you need to know about the shared properties and differences between 20 or 30 ways of defining and using components thisis a good place to look.

## 2011-12-08 Thu Dec 8 17:45 Hints for getting better estimates

This [BastenSunyaev11] short paper reports on 32 factors that influenced the accuracy of estimates in 50 empirical studies. It gives a list of hints -- which I have translated..

## 2011-12-06 Tue Dec 6 19:30 Software engineering meets --

The November issue of IEEE Computing had a series of articles [ChangWeissHinchey11] furth discussed in previous blog items below. It includes an article [Parnas11b] by a wise engineer who has spent his career trying to improve software development. He claims that we have failed to create a true engineering discipline for software and mounts some evidence for this case.

This blog is not about "Software Engineering". I noticed in the mid-1980's that not all projects demanded and engineering approach and more most software that I bought, used, read about, did no more than pay lip service to the approaches that are labelled "Software Engineering". So I widened the area of my research to "Software Development". Hence the mission of this blog to record the best results from practice and the most useful theories for the development of software.

## 2011-12-02 Fri Dec 2 10:43 Updated hypertalk and methods sample pages

[ samples/index.html#December 2011 ]

## 2011-12-01 Thu Dec 1 17:25 Evolving software vs Software Engineering

This survey paper [Harman11] sells the idea that evolutionary computation can be used to evolve good tests and good software as a part of software engineering. It argues that the generic genetic algorithm can search out good solutions to a set of constraints by starting with a set of possible solutions (the population) and repetedly recombining, mutaqting, evaluating, and selecting the best until we either achieve the goal hit some stopping rule. It presumes that there is a fitness function that tells us how good a solution is. It also presumes we have a meaningful way to recombine and mutate the individuals in the population.

Now many years I studied the kind of "evolution" where a single individual attempts to change a copmplex, system that is not understood. I showed in [Botting02] that this lead to a bad system unless you are very good at diagnosis and fixing code. Having many individuals seem to work very much better...

However, do you want to fly on a plane where the control system has evolved rather than been designed?

1. "constructively and sympathetically coevolve collaborating subsolutions"

## 2011-12-01 Thu Dec 1 11:14 Wind in San Bernardino

At 6pm last night, suddenly, the wind started. It was noisy all night. At CSUSB the peak was 57mph. And at 3am we lost power at our house and so the computers and internet died... Amazing how much time I had to clean coffee pots and pick up trash -- blowin' in the wind.... but the campus is alive, and busy and has power and coffee and internet...

Official news 1:50pm CSUSB

Wind conditions around the Cal State San Bernardino area are decreasing, although a high wind warning remains in effect as strong gusty winds continue throughout Southern California.CSUSB remains open as of 11 a.m. Thursday, Dec. 1. Updates will be provided periodically throughout the day as needed at [ http://news.csusb.edu/ ] and at the CSUSB hotline at (909) 537-5999

I'll try to post another minireview of an article in the IEEE COmputer Magazine later today...

## 2011-11-29 Tue Nov 29 14:18 Software engineering and Theory

I'm posting this early in the afternoon rather at night to make time for another task -- working on a final for a class.

Manfred Broy [Broy11] has written a rambling but interesting essay of the gap between theory and practice in software engineering. He argues that theoreticians should pay attention to practicitioners to discover new theories that can be tested scientifically, and also to develop theories that have a pragmatic value in practice.

What we need, perhaps, is a hero like Euclid or Babbage who can put together a teachable theory that helps people develop better software.

## 2011-11-22 Tue Nov 22 15:24 Early posting on what OSS can teach SE

Happy Thanksgiving.... I'm posting this early, in my office, ... and there will be NO posting on Thursday 24th... the next one will be Tuesday 19th, with luck. We have a series of articles on the relations between Software Engineering and Other disciplines, all in the IEEE Computer magazine...

For example, [Fitzgerald11] argues that the success of Open Source Software provides evidence for a suite of classic software engineering techniques -- for example peer review, modularity, and configuration management.

## 2011-11-17 Thu Nov 17 18:51 Bug and Issue Tracking

Here [AnvikMurphy11] we have an argument that tracking issues and guiding debugging is a time consuming task -- which issues brought up by users are duplicates? Which are invalid? Which have already been allocated to somebody to work on? Which have already been fixed? And since this triage process takes time -- why can't we automaye it by using some AI techniques? The answer is that for a moderate investment of time one can predict the life cycle of a issue/bug with about 75% accuracy.

It is worth noting that the idea of a back log of unresolved bugs was not part of software engineering or the Software Development Life Cycle. Bug trackingbecame vital as part of the open source development process [KazmanChen90] and enables iteraative methods... that also work well in the mass-marketted sector. So it should not be surprising that we have 70 or more tools [SerranoCiordia05] available.

## 2011-11-16 Wed Nov 16 15:40 Uncovered and fixed a couple of bad links from 2010

The links on "Go" and "Scratch" programming languages have been repaired [Go] [Scratch] , enjoy:-)

## 2011-11-15 Tue Nov 15 19:09 Data Provenance

It seems clear that scientists need to keep track of the experimental dat that they collect and the various transformations applied to it. There are so many things that a researcher may try to do a data set that there has to be a way of tracking what happened and where the results came from -- this is data provenence. This paper, [MIlesGrothMunroeMoreau11] proposes and demonstrates a step by step process for adding provence tracking to existing applications. The paper is marred by a data-flow-diagrm/flowchart using a non-standard notation.

## 2011-11-10 Thu Nov 10 10:35 Equations we should all know

I guess if you read this, then you are a geek. In that case you should know (or in some cases, forgotten) these: [ http://www.wired.com/wiredscience/2011/11/equations-for-geeks-2/ ]
2. 9Equations::=following,
Net
1. N= R^* * f[p] * n[e] * f[l] * f[i] * f[c] * L -- -- --(Drake)
2. E = m * c**2 -- -- --(Einstein)
3. G[μ, ν] + g[μ, ν] * Λ = 8*π*G*T[μ, ν]/c**4 -- -- --(General relativity)
4. C = B * log[2](1+S/N) -- -- --(Shannon-Hartley)
5. c^2 = a^2+b^2 -- -- --(Pythagoras)
6. P(A/B)=P(B/A)*P(A)/P(B) -- -- --(Bayes)
7. V = i * R -- -- --(Ohm)
8. F=m * a -- -- --(Newton)
9. P*V = n*R*T -- -- --(Ideal Gas law)

(End of Net)

Thank you, I feel better for sharing that.

## 2011-11-08 Tue Nov 8 19:08 LINQ as a common language for manipulating data

I am not too happy with the style of this [Meijer11] paper that tries to describe and demonstrate a generalization of relational data bases and SQL to handle any data source. I suspect the idea behind LINQ is sound but the mathematics is suspect (writing {S} to mean ℘ S) and abstruse (monads).

## 2011-11-05 Sat Nov 5 08:18 Bonus -- the Golomb Costas Perfect Ping

I have two hobbies -- music and mathematics -- and here we have the ultimate piece of "modern" "serial" music [ TEDxMIAMI-Scott-Rickard-The-Wor ] (Scott Rickard's TEDxMIA. via Slashdot). This is designed to have no patterns in either rhythm or pitch and to play every note on the piano once.... Perfectly serial and totally ugly. Calculated using Galois Field Theory via Solomon Golomb ...

The speaker claims that the notes are not random.... but the algorithm he uses is a Multiplicative Congrentual Pseudo-Random Number Generator ... as used by any body who wants random numbers....

Which goes to show that everybody needs to study Computer Science these days!

## 2011-11-03 Thu Nov 3 19:09 Text book on the UPEDU process

I like the the stories and examples in [RobillardKruchtenAstous03] but I do not like the detailed description of the UPEDU process -- and the UML diagrams are UML1.0 and so out of date.

## 2011-11-01 Tue Nov 1 18:31 Problems with storing data

Kode Vicious has just dispensed some wisdom on data storage. First [Neville-Neal11] he points out the problem of storing binary data in archives -- especially in proprietary formats. Then he [Neville-Neal11a] discusses ways to control the generation and storage of temporary files used to transmit data from one process to another. We have a classic "Tragedy of the Commons" situation when we impose quotas or need to pursuade people to delete files they had no use for but might just want again.

I have implemented a simple and efficients solution to this problem. When the CS Department at CSUSB was given it's first (indeed only) mini-computer disk space was short and there was no funds to buy more storage. We were running BSD UNIX and when we created new users we gave them a directory called TRASHCAN. We told people that if the put files in their TRASHCAN they would be copied to magnetic tape and deleted from disk each Friday afternoon, before the weekly backup. We provided a command trash which moved files into the TRASHCAN. We also provided a command to request that a file be restored -- it basically sent email to root.

The result was that we never ran of disk space... and we cleared out lots of data each week .... and nobody ever asked for any trash back.

## 2011-10-31 Mon Oct 31 10:27 Bonus -- Perl vs a random language

Just posted this i [ StefikPlateau2011.pdf ] to my Programming Languages blog... [ cs320 ] but it seems to good to miss here...

## 2011-10-27 Thu Oct 27 19:17 Empirical Software Engineering

Here [WilsonAranda11] is a nice description of some recent research into real software engineering... published in the SigmaXi monthly magazine. It quotes half-a-dozen results that have been found in real projects...

## 2011-10-25 Tue Oct 25 14:28 Microsofts formal methods tool

For a long time now we have known that you can improve the quality of code by recording the contracts associated with function calls and constructing proofs that they fit together correctly -- however doing it against a deadline with large quantity of code is considered a waste of time.... leading to some key parts of the infra structure being fragile and open to abuse. For example [ science-fiction-style-sabotage-fear-hacks-14795954 ] shows how easy it is to break vital code...

So could a tool help? A tool that hides the proofs but checks for correctness? How about letting you see the contract when you mouse over the function call? How about knowing which pointers can never be NULL? How about mismatched functions being reported as if it was a syntax error... for example calling sqrt(x) when x can be negative?

This sounds like it is (1) a useful tool (2) impossible.... but not according to Microsoft! See [BarnettEtAl11] for a report on the Spec# language and its tools. Also see [ blog009.html#Spec# ] for a previous blog on Spec#.

## 2011-10-20 Thu Oct 20 19:02 Priced Timed Automata

Here [BouyerFahrenbergLarsenMarkey11] is a new mathematical tool for modelling the behaviors of systems. This includes prices, timing, performance, energy costs, and uncertainty.

## 2011-10-18 Tue Oct 18 19:16 Proving things is getting easier

According to [DeMouraBjorner11] the technology of SMT provers is ready to be used in practice. This extends the range of problems that have useful tools from SAT solvers [MalikZhang09] [JacksonD00] to prblems that contain simple forms of arithmetic like rules like
3. x - y <= 20.

## 2011-10-17 Mon Oct 17 14:46 Grace Hopper on Friday

[ hopper.html ]

## 2011-10-13 Thu Oct 13 19:13 A New way to prove a program terminates

Proving that a program is guaranteed to halt is clearly difficult because the Halting problem can not be solved by a program or algorithm. But in practice programs can be constructed that can be proved to halt because in each loop some value decreases and there is a bottom limit on the value. This has been a standard approach for a long time. Now in [CookPodelskiRybalchenko11] we have a more sophisticated approach where each step round a loop different well founded relations can be used. The paperis quite deep but omits proofs. It also refers to a way to use the assert statement to track the decreasing values. They claim that tools can then verify the invariants...

## 2011-10-11 Tue Oct 11 13:58 On the validity of Proofs

This should be read with the previous item(below) about the length of proofs. I spent the weekend studying the simpler proof of St. Anselm's Ontological proof of the existence of God as the conceivable being that no conveiable being was greater than. The proof is summarized in papers by Paul Oppenheimer and Edward Zalta and makes interesting reading if you are a student of logic.

If you attempted to recast their (simpler) proof in the MATHS system then it is clearly not following the rules for introducing definite descriptions. These are the difficulties I was wrestling with 20 months ago [ maths/blog.html#2010-03-04 Thu Mar 4 07:27 Struggling with non-unique definite descriptions ] and decided you couldn't trust the expression

4. the(x:X. W(x)) until you had proved
5. for one x:X (W(x)).

As far as I can see the simplified proof allows the proof that there is a unique maximum element in a set when there are clearly either none or multiple maxima. See [ maths/logic_11_Equality_etc.html#definite_description ] for my notes and examples.

## 2011-10-06 Thu Oct 6 19:37 On the Lengths of Proofs

I have just read [Krakovsky11] editorial article on a new and simpler proof of St. Anselm's Ontological Proof of the existence of God... with the new prrof discovered by using the PROVER9 tool.

Now this is a very common experience in mathematics classes as shown in these two comics [ 230 ] (Abstruse Goose) and [ 429.html ] (Spiked Math).

But I met an example of a computer proof being shorter than the original proof back in the 1960's. The theorem is early in Euclid's books on geometry -- showing that the angles at the bottom of an isoceles triangle are equal... and Euclid (and all following teachers) prove the result by adding a line that bisects the isoceles into two provably congruent triangles. The computer proof was direct, it noted that the triangle is congruent to itself with the corners permuted and so the angles are equal.

## 2011-10-04 Tue Oct 4 18:43 Ten Commandments of Formal Methods

A return to a previous pair of papers: [BowenHinchey11] giving rules guiding those who use "formal methods".

## 2011-09-30 Fri Sep 30 12:12 Bonus -- 9 Hot IT Skills for 2012

This just in on the ACM Tech News list. (09/26/11) Rick Saia
1. Nine information technology (IT) skills will be in high demand over the next two years, according to the most recent Computerworld Forecast survey. Programming and application development skills are in greatest demand, as 61 percent of survey respondents said they plan to hire employees with this skill set in the next year. Forty-four percent of respondents plan to hire employees with project management skills, while 35 percent of respondents will look for technical support and networking skills. Twenty-three percent of respondents plan to hire business intelligence specialists, up from 13 percent in the 2010 survey. The increased demand indicates a shift from focusing on cost savings to investing in technology that provides access to real-time data. Data center skills will be sought by 18 percent of the respondents as organizations move more services to the cloud. Web 2.0, security, and telecommunications skills are needed by 18 percent, 17 percent, and 9 percent of respondents respectively. Although there may be some concerns about the resiliency of the U.S. economy over the next year, the three-year trend in hiring plans highlighted in Computerworld's survey indicates that IT hiring budgets are expanding.

## 2011-09-29 Thu Sep 29 19:50 A Body of Knowledge Defined

This paper [BowenReeves11] describes how practitionaers can put together a domain model and shows how one in particular can be expressed in the Z notation. I have taken the liberty of transcribing the Z into my own notation MATHS. [ samples/BoK.html ] This usually introduces errors. Let me know.

## 2011-09-27 Tue Sep 27 14:52 Code metrics considered Harmful

I could not agree more: [Binstock11b]

## 2011-09-22 Thu Sep 22 20:01 Tiobe Index of popular Programming languages

Here is the annual listing of the 20 most popular languages [ index.html ] in the Tiobe Community. The biggest changes are 11 place jump by Lua and the 10 place jump of D.

Here is a quick list of the top twenty from most popular to least popular: Java, C, C++, C#, PHP, Objective-C, Visiual-Basic, Python, Perl, Javascript, Lua, LISP, Transact-SQL, Pascal, PL.SQL, Ada, RPG, D, ...

Summary [ 172587 ] (Infoworld)

## 2011-09-20 Tue Sep 20 18:48 News about Java and James Gosling

It seeems that Java 7 is going to have Lambdas! and it will, joy, oh joy, have a totally different syntax to C++... more like C#. [ 231601075?cid=DDJ_nl_upd_2011-09-13_h ]

Meanwhile... James Gosling was close to the plane crash in Reno but survived and posted a series of insightful comments on his blog [ http://nighthacks.com/roller/jag/ ]

## 2011-09-19 Mon Sep 19 15:39 Bonus -- Math and Logic Puzzles

Mrs. Morgan Suzie pointed out a broken link in my [ infor4.html ] page and suggested a replacement: [ http://www.mastersdegree.net/resources/master-math-logic-online/ ] (A list of logic and math puzzles) -- Enjoy.

## 2011-09-13 Tue Sep 13 16:15 Out of Town

I will be out of town until next week...

## 2011-09-13 Tue Sep 13 15:55 Language News -- Javascript Waterbear ParaSail Clarity HOS

Javascript to go -- jsFiddle See [ http://jsfiddle.net/ ] allows users to post code and share it with others.

WaterBear -- Visual Programming "Waterbear is a toolkit for creating drag-and-drop programming languages, with some example languages you can play around with and learn from. The goal is to make it easy to wrap other existing languages with Waterbear blocks to create draggable, snappable syntaxes for them." [ http://waterbearlang.com/ ] [ 2389-waterbear-a-visual-language-for-javacript.html ]

Clarity -- Functional Graphic Programming Another example [ index.html ] of a structured or functional graphical notation for programming. This should be compared with a previous and stronger attempt: HOS -- Higher Order Software [HamiltonZeldin76 ] =DEMO METHOD HOS APOLLO CORRECTNESS FUNCTIONAL DECOMPOSITION . . . [HamiltonHackler08 ] =HISTORY CORRECT DESIGN EVOLUTION HOS USL FUNCTIONAL DECOMPOSITION . . . [Martin85 ] =ADVERT HOS DATA Algebraic Specifications of AXES FORMAL METHODS FD . . . that let you develop programs that are guaranteed to work.

## 2011-09-08 Thu Sep 8 19:43 Learning Python

So here is one way to learn Python [ http://learnpythonthehardway.org/ ] that involves typing in (not copying and pasting) examples... and learning from the typographical errors. This may work. Lots of us did learn by typing examples that were printed on paper. But I think if I ran a course on this basis I would not get good evaluations...

Then we have the popular "Google it" "Just in time" approach where you search the web for pages answering your question -- for example, what is super and why? [ http://rhettinger.wordpress.com/2011/05/26/super-considered-super/ ]

But my favorite internet way to learn a language is to hang out with people discussing the langugae in question and ask the occasional dumb question or provide a dumb answer (I was called "PAAAAAR" then). Once there was a vast network of mailing lists -- Usenet -- but it is now alive and well as "Google Groups". For example the following song [ 5f1abf38506dacb3?hl=en ] ( Python Wizard ). Here [ http://groups.google.com/group/comp.lang.python/ ] is a link to the most recent postings. And just like in the 1980s you get a daily digiest delivered to your e-mailbox. And I may have become "RJB" but I'm still learning by asking dumb questions and giving du,b answers ( [ 45d0d5bdec81e05c?hl=en ] ).

Of course you should also try to use Python -- or what ever language you need to learn, see next posting.

## 2011-09-06 Tue Sep 6 16:12 Python

I have been watching Python for some time. It is a pre-eminent tool for glue-code (connecting other applications and tools together and scripting) and so pretty ubiquitous. For example iMac OSX comes with Python available in the terminal...as does all our Linuxen on campus. And of course Code Pad [ http://codepad.org/ ] lets you edit, copy, paste and run Python. Further, recently announced on Slash Dot [ http://pythonfiddle.com/ ] lets you fiddle with Python "Fully in the browser".

Did I say that it is a fun language to play with and I provide online reference materials? [ samples/python.html ] Expect more on this blog in the near future.

## 2011-09-01 Thu Sep 1 16:51 A New Standard for Cplusplus

On the 16th of August Slash dot reported [ C0x-Finally-Becomes-a-Standard?utm_source=newsletter&utm_medium=email#commentlisting ] and included the following useful references:- [ http://herbsutter.com/2011/08/12/we-have-an-international-standard-c0x-is-unanimously-approved/ ] [ http://www.open-std.org/jtc1/sc22/wg21/ ] [ http://blog.operationreality.org/2011/08/15/c-0x-aka-c-11-now-an-international-standard-with-unanimous-approval/ ] [ IEC_14882#Language_standard ] [ C%2B%2B0x#Core_language_usability_enhancements ] [ http://software.intel.com/en-us/blogs/2009/08/03/hello-lambdas-c-0x-a-quick-guide-to-lambdas-in-c/ ]

The standard version of the λ (lambda) notation in C++11 tackles the issue of variable capture. If a variable is free in a lambda but the lambda expression is invoked inside a context that declares that variable what does it mean. C++11 lets you specify capture as a reference or as a constant. But it reminds me of some of the more entertaining bugs that happen with C (and C++) macros.

Personally, I dislike having to handle this...and in MATHS [ maths/notn_12_Expressions.html#Free Variables ] and [ /maths/notn_11_Names.html#name ] I ran out of energy trying to state the rules usually found in the Lower Predicate Calculus and so on.

The trouble is that I can see how this feature is going to be used....

## 2011-08-30 Tue Aug 30 15:59 Rosetta Stone of Code

I'm delaying this weeks archive so I can go to a musical evening...

Here is a list of sites, on an site that compare code samples, [ Help:Similar_Sites ] that compare programming languages -- enjoy.

## 2011-08-25 Thu Aug 25 16:10 File Extensions and null-terminated strings onsidered harmful

I have a pet peeve that I keep arround the house -- it moans and has black and white stripes... There was a time when files did not all end with ".xyz" - children. For a long time, indeed, UNIX just treated the last four characters as if they where just the last four characters. And some one wrote a clever program that wouls tell you what kind of data you had in a file:
 file bin/br
 bin/br: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

Today I discovered that 90% of the plain text files (mostly Email listsings) in my "doc" directory can not be rendered by Apple Safari with out a ".txt" on them. So it took about 30 minutes of UNIX wizardy to attach ".txt" and update the index file... See [ doc/ ] to check it out. This probably breaks a dozen links elsewhere in this site. But as I said extensions are harmful.

But according to one blogger, extensions are nothing compared with the cost of C choosing NULL-terminated string format: [ detail.cfm?id=2010365 ] -- I/m not sure that this is true. The alternatives have there own problems -- have you ever had a string of 260 characters in BASIC? Hove you ever tried to pass a 6 character packed array to an 8 ccharacter packed array in Pascal?

## 2011-08-24 Wed Aug 24 20:13 Bonus Posting -- Cellular Automata

I'm noting these two books (expensive but in good university libraries averywhere...) becuase I have lunch with some colleagues who are heavily into celluar automata and astrobiology and so a little outside the normal content of this blog...

## HoekstraKrocSloot10

1. Alfons G Hoekstra & Jiri Kroc & Peter M Sloot (Eds)
2. Simulating Complex Systems by cellular automats
3. Springer NY NY (2010) ISBN 3642122027 CR 1107-0694
4. =PAPERS CA Cellular Automata Complexity

2. Game of Life cellular automats
3. Springer NY NY (2010) ISBN 1849962162 CR 1108-0789
4. =PAPERS =HISTORY CA Cellular Automata Conway Game of Life 2D 3D

## 2011-08-23 Tue Aug 23 16:41 Managing Open Source Projects

Continuing with the "Code" theme ... Dirk Riehle [Riehle11] analyses the kinds of projects that fit with open source development and how you go about managing them.

## 2011-08-18 Thu Aug 18 16:28 Open source -- YAWL Yet another workflow language

Here [AdamsEtAl11] is the history of another open source project -- a tool/language for describing and designing ways of getting things done. For a survesy of the possible structures check out [Havey05] as well.

## 2011-08-16 Tue Aug 16 17:08 Choosing open source components

These days open source is a popular option. It forms a very good example of the power of peer review and code inspection -- "all bugs are shallow to a thousand eye-balls". But how to select a set of components for the project you are working in? Diomidis Spinellis [Spinellis11a] has preapred an excellent checklist -- including the thought that you are marrying into the open source's project family.

## 2011-08-11 Thu Aug 11 15:55 Coding Skills and Techniques

First [Dern11] lists some of the lost skills of retiring coders. And how some of them are still important even if the technology has completely changed.

Second, continuing the theme of coding is [BrolundElnestam11] which is the tale of trying to save a large lump of legacy code... the ultimate maintenance nightmare. They discuss things that failed and things that work... of which the most important part is to use a source code control system to experiment safely with changes.

## 2011-08-09 Tue Aug 9 16:35 Clueless Coders

Having (see archive) remarked on the cluelessness of some managers about coding, it seems only fair to rant about the cluelessness of certain (famous) coders. This starts with an article on Slashdot [Soulskill11] quoting the developers of UNIX as thinking that their code did not need review -- but then Den and Ken are clearly at the top end of the coding skill curve -- nothing else accounts for the way that C gives great programmers the features that can use to advantage and offers endless traps for the unwary. In reply, there is [Chu-Carroll11] arguing that code review is something we should all do.

I agree. I researched ways to improve the quality of code when I worked for the Brittish Civil Service. Peer review and walkthroughs scored high.

But the proof of the pudding is when some unreviewed code is distributed and studied by an expert [McKensie11] and found to be full of elementary and nasty security holes.

## 2011-08-04 Thu Aug 4 19:41 Coding and the Clueless Manager

Normally I enjoy and agree with "Kode Vicious" of the ACM but this article [Neville-Neil11] answers the question "Is there such a thing as coder's block" asked by a manager who is freaked out by a maintenace programmer staring at their screen for a long time (days?) before they produce a code. Clearly the manager does not understand that coding is thinking [Armour11a]

So what can a programmer do when a manager does not recognise the value of thought? Well one thing is to do something. Writing notes on scrap paper at least gives the semblance of activity and should be destroyed after you've got the thinking done. The notes may even help you remember what you were thinking when the manager interupted you. And according to the "Coding Horror" blog writing [ nobodys-going-to-help-you-and-thats-awesome.html ] is helpful -- when talking isn't.

Of course you can also draw diagrams and jot down formulas.... They don't have to be standard and can be thrown away when you have got the answer you need.

By the way the next posting will be on clueless coders...

## 2011-08-02 Tue Aug 2 15:56 Book advocating the Shlaer-Mellor Method

It is so tempting to claim that I practice the Schartz-Metterklume method of programming (go on -- look it up... it is a short story by HH Munro and has even made it on to You Tube...) but all I can say is that I am a trained consultant in the Jackson methods and the SSADM in the brittish civil service. But I must admit that the Shlaer-Mellor" method has a similar ring to it. More it contains my favorite ingredients -- static and dynamic domain modelling (see [Botting86a] for Dynamic Analysis and Design).

Now we have a book that describes this method in great detail: [Lahman11] Model-Based Development: applications by HS Lahman (who make detailed and wise comment on the UML Google Newsgroup). The UML is loose but the writing is good.

## 2011-08-01 Mon Aug 1 13:32 Good but old Brit Joke

You can find pieces of old "Goon Shows" on You Tube. One classic is a debate on how to find out the time... Neil Maiden [Maiden11b] quotes it in detail and uses it as an analogy for using old techniques when new ones will work better.

## 2011-07-29 Fri Jul 29 08:37 Why and how to be agile

Large organisations and even governments are starting to adopt agile methods and processes. [Spinellis11b] explains how the technology and the people have changed to make agile methods a lot more attractive. It includes a list of a dozen or more reasons. But [ConboyCoyleWang11] have studied two dozen real projects to findout what goes wrong when agile methods are implemented... and what different enterprises have done about it. They list 9 different problems and some ways to manage them.

When I read the second of these it lead me to reopen the file on management that I started in the late 1970's. At that time there was a very interesting observation that there were two opposed theories adopted by managers. In TheoryX employees are assume to hate work and need direction and controli, etc. But TheoryY postulates that people like doing work and want to do it well, etc.. Check out [ Theory_X_and_theory_Y ] on the Wikipedia for the details. One thing I believe is that different people have different motivations. There is a hierarchy of need [ samples/reference.html#Maslow ] that determines which theory fits you best -- if you or your family are hungary on a regular basis work is just a way to survive and so you will cheat, skive, steal, etc. and behave in a way that fits TheoryX. But when you and your family is well fed and housed you (mostly) shift into TheoryY. I would argue that agile methods have a lot of TheoryY in them and the fragile methods a lot of TheoryX.

At the same time I was trained in another view of management where managers were classifies by their commitment to the task in hand on a scale from 1 to 9, and also by their commitment to the people being managed. This gives a matrix model that I later documented as [ samples/reference.html#8 management types ] and this model, again, gives an interpretation of the agile movement as going from a (0,9) position to a (9,9) or (5,5) position. But the thing I also learned is that it we all have our own position and it is very hard to shift. For example -- my position is strong on the people and weak on the task. The classic "democrat". I instinctively tackle problems by calling a meeting. And under stress -- as the model suggests I become a "missionary" leading prayer meetings:-)

Again notice how these old 1970s ideas have re-emerged in this millenium in software development.

## 2011-07-29 Fri Jul 29 07:56 Cancer

In 2005 I was diagnosed with Prostate Cancer and had my prostate cut out. But the standard PSA test showed that some of the cancer cells were left behind, somewhere... I get an injection every 3 to 4 months that controls most cancer cells... but one day some of them usually decide to ignore it and start growing.

The XKCD web comic [ http://xkcd.com/931/ ] shows what it is like for Breast Cancer... and this is how I feel about my cancer.

## 2011-07-28 Thu Jul 28 07:35 Requirements -- aesthetics and elicitation

First, Neil Maiden [Maiden11] has written an essay pointing out the importance of aesthetics. These hard to express ideas of how an application should be are Quality Requirements that lead to users enjoying and getting excited about the app. They promote pride and meaning. That is when you get the lightning into the bottle.

Meanwhile, [DiesteJuristo11] have done a thorough literature search for scientific evidence on the best ways to elicit requirements. It turns out that interviews beats the other techniques like "laddering", "introspection" , and "sorting". No scientific data on whether function lists, user stories, or use cases are the way to go, however.

## 2011-07-27 Wed Jul 27 12:50 Parnas on premature terminations

One of my favorite methodologists, David L Parnas, has published a little essay encouraging developers to do a better job: [Parnas11] by not stopping to soon. Requirements are risky if they have any ambiguities or unknowns, programs need more testing and quality assurance...

As an independent example see [ software-exoskeletons ] where the difference between software developed by a scientist to be used by themselves is woefully incomplete as a "finished" product as developed by a professional programmer. These two situations illustrate, again, that one size does not fit all.

## 2011-07-20 Wed Jul 20 13:03 Data model duality -- SQL complements coSQL

Here is something interesting -- there are many rival noSQL data bases that have been hyped to be better than SQL normalized data bases. Here we have some [MeijerBierman11a] neat arguments and abstruse theorems arguing that the two models are dual not opposite. I first commented on this ealier this year [ blog011.html#2011-06-03 Fri Jun 3 09:46 SQL equals the dual of noSQL ] but I don't think it will have little effect in the absence of a user-level semantics. But then I didn't expect relational "SQL" data bases to become important either when they were first hyped in the 1970's.

By the way this article was incubated or evolved in the ACM Queue online mag [MeijerBierman11] before appearing in the Communications of the ACM.

## 2011-07-14 Thu Jul 14 16:04 Reading on reverse engineering and software liability

We are into this Summer's project -- this time repainting the house.... and today we are waiting for responses, shutters, etc. . SO I have a chance to note that I wrote a review of [CanforaPentaCerulo11] on Reverse engineering, which I praised for its table of tools and damned for its UML diagram.

Meanwhile, he is a pair of papers on assigning liability for events in a complex software system to the parties and components involved using formal logic and model checking tools -- [Berry11] (one page introduction) and [MetayerEtAl11] (paper).

THinking about whether to simplify my life by abandonning this blog or shifting to a system like Google Blogger as a platform.

Also worrrying about my Faculty Activity Report or FAR that is due in September and must summarize everything I have done since september 2006. The good news is that it I have been reducing my activities as I get closer to retirement... [ index.html#Personal ] so it will be shorter... and so less to be proud of.

## 2011-07-11 Mon Jul 11 09:03 Unix Wizards and Jaberwocky and USA on FaceBook

Here is some summer browsing:-)

First a couple of Unix Wizards: [ 00239.html ] (verse) [ unix-magic-overacre-poster.jpg ] (large graphic).

And now a verse called "C Wocky": [ cwocky.html ] taken from [ index.html ] (thank you to Abigail Farrier)

Finally what if the USA had been on FaceBook? [ 20110704_OPART.htm ] (Slashdot -> NY Time on July 4th)

Enjoy!

## 2011-07-05 Tue Jul 5 13:43 Bayes revisitted

Recovering for a noisy Fourth of July at the Pomona Fairplex and discovered Yudkowsky's explanation of Bayes theorem [ maths/math_81_Probabillity.html#Bayes ]

## 2011-06-22 Wed Jun 22 17:11 Updated my SHort Vita

[ shortVita.txt ] -- depressing lack of innovation:-(

## 2011-06-21 Tue Jun 21 08:05 Review of paper on the CZT project

I've just submitted a review to Computer Reviews of [Malik11] which describes the open source development of a set of integrated tools for developing and using specification using the Z notation. If your development platform is Java based and you need absolutely clear specification and programs that have to fit this specifications then you should find [ Community_Z_Tools ] on the Wikipedia.

## 2011-06-20 Mon Jun 20 14:16 Winding down Spring and planning fall

[ syllabus.html ]

## 2011-06-16 Thu Jun 16 16:24 Bonus -- free books list

Contributed by Jane Curnutt [ freeBooks.html ] and will be updated sometimes.

## 2011-06-14 Tue Jun 14 15:06 Hiatus -- Finals and Summer -- Back some day

It is Finals week at CSUSB. Lots of events, lots of stress, lots of grading, and a dynamic schedule.

This blog is on hiatus until I get through the next 7 days.

## 2011-06-14 Tue Jun 14 08:41 Small worlds make prosperous open source projects

According to Param Vir Singh [Singh10] it is wise to make connections between people working on an open source project a "small world". You can review the literature on this topic by selecting [ bibfull.php?from=blog&search=small world ] from my bibliography.

## 2011-06-13 Mon Jun 13 10:52 Engineering electronic societies

One of my peripheral concerns has been how electroically mediated groups work and how to make them work better. It is the social problems that made me kill off the development of a Wiki/Open blog on this site. Spam and Junk Email are almost as old as internet EMail. I have a real problem on two news groups on topics that interest me, but where I am not a true member. I lurk and have to control a desire to be a troll. In both the python [ samples/python.html ] and Z google groups I want to know what is going on and learn. But to me Python is just another language. And Z a rival to my own approach to formal specifications (MATHS). So I have to control a desire to be sarcastic and post disinformation and in total oposition to netiquete, to post messages about other languages on these groups.

Jeff Attwood has blogged on what to do with trouble makers [ suspension-ban-or-hellban.html ] and his experiences thoughts and the following discussion is interesting.

## 2011-06-10 Fri Jun 10 07:01 Semantic markup in web pages -- Schema vs RDFa

When I read the headline "Schema.org -- Google, Microsoft and Yahoo! Agree On Markup Vocabulary" in the "executive-decision dept" of SlashDot [ Schemaorg-mdash-Google-Microsoft-and-Yahoo-Agree-On-Markup-Vocabulary?utm_source=newsletter&utm_medium=email ] (posted by Soulskill on Monday June 06, @20:25 (Google)) I could hear the "Evil Empire" theme from "Star Wars" (the movie) playing in the background.

It is easy for me to impose a narative on the choice of markup methods to add meaning to web pages: in this case W3C vs the Big Search Engines.

I choose to document the versions in [ samples/comp.html.syntax.html ] and the debate here [ introducing-schemaorg-search-engines.html ] [ Schema-org ] [ http://manu.sporny.org/2011/false-choice/ ]

Having looked at both methods.... I think I will leave these pages with out so called semantics.

## 2011-06-09 Thu Jun 9 08:00 Mathematical Jokes -- an existence proof

I believe in the power of jokes to educate. I use them in my teaching. A long while ago I remember a college survival manual included thee advice:
6. "Take note of the teacher's jokes -- they will help you recall the boring stuff."

SO, for the record we have [ do-good-math-jokes-exist ] and [RentelnDundes05] that include a lovely list of proofs that are not really proofs. I've add these to [ maths/logic_2_Proofs.html ] in the more formal part of this web site.

You can also search for "Jokes" using the "Search" box at the top of this page... and find some of the archives of jokes I have seen in Email and other sources.

 <song> A spoonfull of sugar helps the medicine go down.
 </song>

## 2011-06-07 Tue Jun 7 09:07 Question for debuggers

One of the fascinating and persistant problems in technology is that of diagnosis. How do you find out why something did not work as expected. A fair ammount of debugging is diagnosing the problem. One my most useful tools is making a very precise summary of what the problem is and what it is not. I don't use tradition break point debuggers. Mostly because I write moderately good code and know how to insert and remove temporary debugging output statements when lost. But here [KoMyers10] is an interesting debugging tool for Java. The authors claim more successful and faster debugging when experiemented with. When the program is halted with a bad reslt output, it will analyze the trace and express it as a collection of questions that can be answered about the internal state and outputs. The programmer selects relevant questions for their problem and the tool traces the details. In the paper's example it can ask questions including "Why is the line drawn in black?" which is precisely the symptom the programmer is trying to fix.

## 2011-06-06 Mon Jun 6 10:13 Doing a good language tutorial

I enjoy reading Dr. Dobb's updates. Here [Binstock11] is a nice comparison of some classic language tutorials (including Kernighan and Richies delightful classic [KernighanRitchie] that describes C). He describes what makes a good tutorial. It should start with runable simple examples and only after these get into all the deets.

I couldn't aggree more. I would add.... it helps if the language/system you are teaching supports lots of simple but useful examples and not too many peculiar special cases.

## 2011-06-03 Fri Jun 3 09:46 SQL equals the dual of noSQL

Here [MeijerBierman11] is a nice piece of theory demonstrating that an SQL databas and a noSQL database a duals of each other.... some of the arrows are reversed... Hence coSQL is the correct name for the noSQL data base.

## 2011-06-02 Thu Jun 2 09:25 Content-Focused iPad Apps Value Form Over Function

Casey Johnstone has written a nice article [Johnston11] on the usability of applications on the iPad. Perssonally I'm tired of apps (on my iPod Touch) that are dumbed down and prefer the companies full web site. This article shows that good interface design is still hard to achieve, and the new ways we have of failing with a "touch" interface.

## 2011-05-30 Mon May 30 08:37 Filling the Memorial Day holiday with stars

Today is is a holiday and so I didn't plan to post a blog entry. And tomorrow I exoect to teach vectors in the morning [ cs201/17.html ] so I don't expect to post anything then..... but this came in from slashdot [ time-lapse-video-very-large-telescope-work-coolest-thing-youll-see-today ] and is a knockout. See you Thursday-ish.

## 2011-05-27 Fri May 27 07:40 Discorso for flexible business processes

I am not sure whether service oriented and service-based systems are going to be as prevalent as hyped. But any technique that introduces some flexibility into business processes should payoff. However I can see problems with security, quality assurance, and reliability if the market for services is open to all -- who do you trust? and why? In any case, [ArdagnaEtAl11] have described their language/tool Discorso in IEEE Software magazine... based on experiments carried out 4 or 5 years ago. If it works it may be a game changer.

Now, what I want is for the "Business process" people to get locked in a lab with the "Software process" people and we may end up with a flexible software process that people choose to use rather than avoid.

## 2011-05-26 Thu May 26 07:25 Homily or Sermon on code style

Diomidis Spinellis [Spinellis11] has written a short (two pages) exhortation to people to write stylish code. No new ideas but some good reasons why code style matters. I have been committed to good style since the 1970s but it is still easier to listen to the temptation -- "It won't matter on this little bit of code".

## 2011-05-24 Tue May 24 08:27 Agile model-driven development process in Motorola

In [ZhangPatel11] Yuefeng Zhang & Shailesh Patel describe the Scrum based process used in Motorola. Motorola has matched up agile practices with model driven development. Tools translate models to code and help verify designs. Architecture, design and code all iterate. In place of pair programming Motoral uses Pair Modeling etc. Interesting. I wonder how much hardware development encourages a process-ready culture. Also when compared with previous posts on process you can see the shift from "heroic" development (relying on individual passion and skill) to a "repeatable" process(we don't need another hero....).

## 2011-05-23 Mon May 23 06:30 We interupt this process for an update

OK it was a fun shopping trip.... but why must I be forced to download a new shirt when there is a hole in the trowsers?

## 2011-05-20 Fri May 20 07:40 Process kills Passion

Here [Turner11] is a classic rant plus dicussion based on a well observed effect:
Net
1. Bad work -> More Process
2. Process -> Reduced Passion
3. Reduced Passion -> More Bad Code

(End of Net)

Much of the agile movement is a reaction to the attempt to improve software by managers imposing a process.... that reduces the energy of the people doing the work.

Let it be noted:
Net

1. Software is not manufactured, it is developed.
2. Factory methods to do not work well with development.

(End of Net)

## 2011-05-19 Thu May 19 09:19 Software Process Management Tools

Here [GarciaVizcainoEbery11] is a survey of software tools that help managers manage the development of software... making sure that the right things are done in the right sequence within estimates... If you are in the market for tools for herding cats this survey may help. But you need to know that process kills passion. The next post explains the problem with focussing on process.

## 2011-05-17 Tue May 17 07:38 Code not reused

Poul-Henning Kamp writes these quirky articles for ACM Queue and so to the Communications of the Association for Computing. His latest [Kamp11] reports on a scan of a Unix source code distribution for certain strings that appear in cryptographic algorithms. Apparnently there are more than 1,300 examples of coders writing their own version of an algorithm rather than using and existing routine. Now nobody would think of coding there own sin or sqrt, they just reuse the code in <cmath> (or <math.h>). So we need a sandard libray of crypto graphic functions in C/C++. He proposes an example of what is needed...

## 2011-05-16 Mon May 16 18:24 Integrating rival internal systems

Sometimes, especially after a merger or aquisition you have two rival pieces of software to do a a set of functions. Here [LandCrnkovic11] is a report of experiences tabulating the options, the factors, the risks, and so on. Interesting if unsurprising, and few insights. But still some useful clues on how to do the best thing for a particular version of the problem.

## 2011-05-13 Fri May 13 11:36 Success is making a million with Facebook Apps

When I heard of this report I wondered why none of my students have ever followed my teachings to make an easy million dollars... and felt jealous. But [Helft11] explains two things. Firstly a market was just about to open up and the class taught a process that perfectly matched that market... and has been adapted by others since then.

The market niche: Social apps, mainly on Facebook. Apps given away. Revenue from adverts.

The process: ship a very simple but minimally functional prototype, distribute quickly over the web, and add functions and frills as people ask for them.

Oddly this is not to disimilar to what I have encouraged my students to do on the quiet in the 80's and 90's but only offically as an Agile Process in the last 10 years.

## 2011-05-12 Thu May 12 08:04 Success is expanding the same software for 20 years

Here [TomitaIto11] is another classic success story. It shows how a well designed architecture developed for a special train route (Tokio's Shinkansen) evolved to handle more and more of the Tokio train system.

Note: my thesis is that all good pieces of software continue evolving for ever. Nothing -- not even the destruction of their infrastructure and hardware -- can stop them. There are tails, from Cambridge University, of EDSAC 1 software being heard running years after it was dismantled... It had been ported to EDSAC 2. One of my students has just discovered a version of Eliza at the University of Birmingham... And my own tools like 'br' (break text by word wrapping) and 'Q' (quickly compile and run simple program) have been going since the 1980's.

## 2011-05-10 Tue May 10 11:27 Success is overcoming user apposition and fear

I think we will have a season of success stories, starting with [Lobur11] which describes a classic project that involved conquering the users dislike of change.... in this case using COTS in state government. Here sucess is defined in getting the system into use even if it took 4 times the allocated time because when in use it made the organization work better. A very intersting case study.

## 2011-05-09 Mon May 9 07:41 Requirements Analysis -- the next Generation

Anja Wever and Neil Maiden [WeverMaiden11] have written a nice article about the future of requirements analysis -- 20 years from now... when it is common place to download apps to instal or update functions and features, all coordinated and choreographed by a service-oriented architecture. The predict that requirements work will be focus on details and it will be hard to split design-time from run-time.

As I said..... interesting and thought provoking even if all predictions tend to be wrong. Looking back over 50 years,,,, I've never made a prediction that became true what ever techniques I used.... looking back further.... I've had more sucess with the I Ching and playing cards than with complex causal models and trends...

## 2011-05-06 Fri May 6 09:59 Scrapheap software development -- Junk yard wars

As a fan of Junk Yard Wars also known as [ Scrapheap_Challenge ] (Wikipedia) I am delighted to report that Lancaster University in the UK has used the same format to study the reuse of components in software engineering. The reference [KotonyaLockeMariani11] has some key lessons learned (and how true they are) and a pointer to the paper in IEEE Software Engineering Magazine. I wonder was it submitted on April 1st?

## 2011-05-05 Thu May 5 07:06 Lunch

Here [ 28.html ] is Joel Spolsky writing about the importance of software development teams eating lunch together. What he says makes sense to me. I don't think anybody has tried a scientific experiment comparing the performance of teams that eat together from those that don't and I don't have the resources or time to set it up. Have I missed such a study? If so let me know.

## 2011-05-03 Tue May 3 10:37 Estimate performance using UML Petrie nets and probabilities

Here is a simple paper (given a background) [DistefanoScarpaPuliafito11] in the IEEE Transactions on Software Engineering that demonstrates a method for predicting the performance of a complex application using the UML with Probalistic Non-Markovian Petrie Nets. Very much a fashionable approach -- but I was not inspired by it. But it may help some preactical people get a deployment and architecture that doesn't drive its users wild with impatience. As I've noted before -- Bad Performance can kill a feature. Or As Prof. N Parkinson put it:
7. Delay is the deadliest form of Denial.

## 2011-05-02 Mon May 2 10:47 Debugging -- Diagnosis leads unwarranted confidence

As a penance I feel the need to eat some humble pie before my arrogance is exposed.

On Friday, after much cudgelling of my brain, it came up with the obvious explanation for a wierd problemm in one of my class's laboratories. The causal chain was not perfect -- it could explain a lot of the particular circumstances -- when/where/what/how the problem was vs what it wasn't. But I couldn't do the final test from home (the bug only happens within a login through XWindows to Linux). So I felt very confident I had it right, worked out a fix, and sent it to the Sys Admin team and my colleague in the lab....

On Sunday, I wandered into Martin Gardner's little book of "Mathematical Diversions" and reread this quote from Solomon Golomb (pages 136 and 139): Quote

1. There is a lesson in plausible reasoning to be learned from these problems [in Pentominoes]. Given certain basic data, we labor long and hard to fit them into a pattern. Having succeeded, we believe the pattern to be the only one that "fits the facts"; indeed, that the data are merely manifestations of the beautiful, comprehensive whole. Such reasoning has been used repeatedly in religion, in politics, even in science. The pentominoes illustrate that many different patterns may be possible from the same "data," all equally valid, and the nature of the pattern we end up with is determined more by the shape we are looking for than by the data at hand. It is also possible that for certain data, no pattern of the type we are conditioned to seek may exist.

In Edward De Bono's catalog of common mistakes -- this is the Village Venus. Because the idea is the only one we have thought of, it is the most beautiful one possible....

Any way, just because it all fits together.... the diagnosis can still be wrong, and the cure worse than the disease.

I can but hope that this time -- for once -- I got it right.

By the way, the Wikipedia has an introduction to
(Pentominoes): [ Pentomino ] , but beware you can waste a lot of time on these generalized dominoes.

## 2011-04-29 Fri Apr 29 17:05 Technical debts observed in the wild

Forest Shull has a nice, short article [Shull11] describing how different projects accumulate different technical debts, the tools that search out problem (debt laden) areas, and what can do about it. Key observation: It pays a project team to define the qualities that they can afford to downplay and pay off later. Some projects need adherence to standards most and others need reliabillity...

## 2011-04-28 Thu Apr 28 08:54 Model checking using probabilities

This paper [KwonAgha11] describes a tool that uses a new modal logic to model the evolution of a system. It includes qualities on the transitions and hence expected values on paths. It then goes on to extend LTL (Linear Time Logic) to verify the possible/probable values. I personally don't like LTL style logics -- I've had more experience with Computational Tree Logic (CTL).

Historically, Dijkstra was a powerful advocate against probabilities... he thought that computer software was about certain properties. It is good to see a lot of research about probabilities. On the other hand this paper uses a Markovian model of the evolution of the system. I rejected this approach in my Ph. D. work.... and I was struck that one of the examples used was working out a medication regime to achieve a safe and efective level of a particular drug in the patient. I think that finding a similar model that fits real software will be difficult.

## 2011-04-26 Tue Apr 26 09:19 Benefitting from Chaos

It is a truism that software evolves to fit its environment. The latest Coding Horror posting [ working-with-the-chaos-monkey.html ] shows that we should deliberately introduce random failures into complex distributed systesm as we develop the code... THus we are forced to produce code that is robust and degrades well when parts of the network cease to operate or misbehave. This is especially true when doing service oriented systems and using the cloud. The articlae is the usual well written and though provoking discussion.

## 2011-04-25 Mon Apr 25 07:58 Update to a classic mathematical reference

I've been a fan of [AbramowitzStegun6465] since it gave me the methods and formulas needed to finish my final year project. For example:
8. erf(x) = 1-(a[1]*t+a[2]*t^2+a[3]*t^3)*exp(-x^2)+ε(x) where t:= 1/(1+p*x), p:=0.47047, a:=(0.3480242, -0.0958798, 0.7478556), for all x, abs(ε(x)) <= 2.5*10^-5. [Abramowiz and Stegun, page 299, formula 7.1.25].

My battered old Dover paperback is still with me.... and I still refer to it when I need to know something about a mathematical function. In Computer Reviews (CR) I discovered the new revision and that lead me to the Wikipedia and the online version. The old book has it's own Wikipedia [ Abramowitz_and_stegun ] entry, so you can find out what I am talking about.... if you are not in a University library where a copy is almost certainly in the reference section. I other words this is a standard and a classic.

The Wikipedia lead me to the replacements [ http://dlmf.nist.gov/ ] (digital form) and [OlverEtal10] (hardcopy).

From a brief sampling of the digital version, I thought it would not be as useful as the original, because the rational approximations to the error function that I needed are referenced but not quoted. But, on the other hand it, explains that erf is available in most modern high level languages so today's programmer won't need the approximations. Even my iMac Graphing Calculator at home has erf but not a pocket spread sheet (I needed it for approximate mean field formulas for Celular Automata last year [ samples/ProbabilityCA.html ] ).

One thought. The original handbook continued Babbage's project of printing directly from the computer output, tables of function values. As a result the figures where highly reliable. The tables are gone. But have the formulas been checked? Has human error crept in? Is it possible the check them? And if possible.... is it feasible?

## 2011-04-22 Fri Apr 22 08:30 Monty Python and the Software Industry

I've always found Monty Python too obvious to make me laugh -- with the exception of Terry Guilliam.... Your milage may differ! Here [Schlesinger11] is a collection of pieces of advice and some recent examples of the advice being blatantly ignored as illustrated by things like the dead parrot sketch.

## 2011-04-21 Thu Apr 21 09:02 Testing or proving -- do both

Tsing Yueh Chen & T H Tse & Zhi Quan Zhou have published an extension of the 2002 papers [ChenTseZhou02] that showed that a compbination of powerful mathematical methods and tests helps ensure correctnesss and also uncover bugs. The Key idea is a Metamorphic relation is an equivalence relation on the inputs to a program where equivalent inputs are required to produce equal outputs.

This is a powerful idea. Not exactly new, but synthesized into a useful tool.

Example: median must be invariant under permutations of the input sample. Demonstrates how to prove it using theory of groups.

Demonstrates if a program has a property that is invariant over a set of inputs then a test on one input value can prove property for all equivalent inputs.

Debugging aided by seeking equivalent inputs that produce different outputs by symbolic execution. Tool helps.

Handle loops by limiting number of repetitions. (rather like Alloy).

Different form of the idea that a finite set of tests can establish a theorem was published in a math magazine in the 1970s.

The idea of equivalent inputs and partitioning the input dates back to testing theory in the 1980s.

If the program is not many-to-one then the inputs will form a simplicial complex not a partition. See my notes [ maths/logic_31_Families_of_Sets.html#Simplicial Complexes ] if you want more.

Group theory used to derive finite state systems that fit given requirements in input and output by Hartmannis and Stearns in the 1970s.

Perhaps we may yet get a mix of mathematical power and software tools to help make software work better.

## 2011-04-19 Tue Apr 19 09:14 Policy on Postings

This blog and web site is about software development. So I do not say much about hardware, I also try to avoid blatant advertising -- I allow job sites and adverts for tools and research but not much more. So when a representative of a company that sends me an advertisment every day for their hardware, and suggests I put a link to it, I responded negatively.

You will find some companies included but almost entirely when they sell software, apps, tools, and methods.

We have quite enough hype in the methodology, languages, and tools market for sofware development already.

This might change if I sell out to retire, or if CSU closes down.

## 2011-04-18 Mon Apr 18 10:31 Gosu the super LISPy Java

If Gosu lives up to its hype [ http://gosu-lang.org/ ] then it will lead to a gigantic jump in productivity.

What is not to like in a language that reads like Smalltalk but seems to use the ASCII backslash as a λ!

Here are some more links from SlashDot: [ api.htm?&context=gosu&src=intro&topic=Welcome_to_Gosu ] [ comparison.shtml ] [ api.htm?&context=gosu&src=intro&topic=Notable_Differences_Between_Gosu_and_Java ]

But perhaps you are lazy, like I am.... so go to [ http://lazygosu.org/ ] and enjoy.

Any commnets? Send them to me and I'll publish the clean ones.

## 2011-04-15 Fri Apr 15 09:30 Three Hundred Models with UML graphics at AtlanMod

I stumbled across this gigantic zoo of models and meta-models using the UML: [ Raster ] (PNGs generated from) [ UML ] (XMI models).

Now because the graphics are automatically generated there are ton of simple improvements that are needed to be make the graphics more readable. Abstract classes are indicated like this

	/QueryExp/
, rather than the traditional italics:
9. QueryExp

It includes links to models of [ HTML.png?root=atlantic-zoos ] (HTML) [ Pascal.png?root=atlantic-zoos ] (Pascal) [ COBOL.png?root=atlantic-zoos ] (COBOL) [ AWKPrograms.png?root=atlantic-zoos ] (AWK), [ C.png?root=atlantic-zoos ] (Data in C), etc..

These are very much the kind of information I collect in [ samples/ ] on this web site...

## 2011-04-14 Thu Apr 14 15:44 Updates to Samples of MATHS

My MATHS language was designed to include and extend Backus-Naur Form to the point where it was about to snap. To test it I started, with help from my students, a set of sample language definitions. Recently I've been working on [ samples/python.html ] and am proud to announce that this page has been translated into Belorussian....

I've also updated [ samples/z.html ] (Z language) and [ etc.html ] (the Spiked Math Comic) and added a link to a page of links for computer science.

## 2011-04-12 Tue Apr 12 11:24 Another Example of this Century doing something better -- Evolving Formulas

Back in the 1970's my colleague and friend was working on a program that would evolve programs to fit a given requirement.... Just recently I've noticed the hipe for Michael Schmidt and Hod Lipson's software Eureqa which promisses to find invaraint formulas -- laws -- given the data. Here is an article [Mullins11] describing some successes. But the important thing is that you can download it and try it out -- and it is open source as well.

## 2011-04-11 Mon Apr 11 08:32 A Better Algorithm for Optimisation

I recall, back in the 1960's I was completing my "Final Year Project" for my "Mathematics with Technological Applications" Bachelors degree which contained the problem of finding the maximum value of a complicated mathematical function. I was seriously out of my depth but enjoying the challenge.... None of the algorithms I tried worked and I was able to show that the general optimisation problem was not computable. Chatting with a colleague we agreeed that life was all an optimisation problem. My task involved finding the maximum of a bounded continuous non-linear function of 5 variables. It was formula was full of Gausian distribution functions like 'erf'.

A year or two later, another undergraduate tackled the same problem with a different algorithm and had a key insight: the function was symmetrical and the hill climbing algorithms were going up one "hump" and then being distracted by the othe "hump". By adding a penalty the symmetry was removed and the maximum could be found using Fletcher-Powell searching.

In January this yere [Anthes11] I spotted an article promoting a new way of understanding nonlinear systems -- the same problem I discussed here last week. When I dug deeper it is based on a better optimization algorithm for polynomial functions. Pity it can't handle the kind of functions I wrestled with in the 1960's.

## 2011-04-08 Fri Apr 8 17:25 Mathematical Comic Puzzle and Tool

First a couple of lite hearted bits.

Here [ http://spikedmath.com/ ] is an irregular but analytical comic for the mathematically inclined.

Second, a simple puzzle. In conversation recently we wrote this formula on the board, what does it mean and what law is it part of?

10. Corruption(x) = lim[n -> oo](abs(pow(x,n)).

Third, this advert on the comp.specification.z Google Group [ 571904e76a39d7d1?hl=en ] for the "Z Word Tools" that now support ISO Standard Z.

## 2011-04-07 Thu Apr 7 11:20 Catestrophe Theory Revisitted

This continues the [ Chicken Little Department ] series of posting about the mathematics of disasters, crashes, tipping points, and other cheerful topics.

Back in the 1970's one of my hobbies was [ Catastrophe_theory ] (on the Wikipedia). Catestrophe theory is excllent because of the pictures -- the best example of which is a comic written by Samuel Delany -- which I borrowed and returned.

I recall that there was a very clear description of how markets behave in the 11th paper (pp361-371) in [Zeeman77] that argues that the qualitive behavior of a market can be described in terms of the number of investors using the fundamentals and research vs the number of chartists who use the the price and its trends to guide their investment decisions. It argues that this shows the Rene Thom Cusp Catestrophe.... and shows how a cycle of Bull and Bear markets occurs. It was nodel that others also derived. However it doesn't help you invest! I wonder how many of the quants on Wall Street have studied the paper. It might lead them to be a little more cautious in the future!

This is quite consistent with the previous post, below, that argues that a market is about to crash people start to behave coherently and more and more ignore the fundamentals.

## 2011-04-05 Tue Apr 5 10:14 Symptoms of Economic market crises

Here [Harmon11] is another attempt at predicting when things are about to change. I found the link in [ http://www.wired.com/wiredscience/2011/03/market-panic-signs/ ] in Wired Online.

In this case the symptom is when the people in the market start to mimic each other rather than looking outside the market. This makes sense, catestrophe theory in the 1970's showed how a market that puts too much weight on the rate of change of the price of a good rather than it's price can easily crash.

Notice that your beautiful new computer system can also become unusable if it encourages a herd mentality in its users. I can recal an operting system that froze up because it loaded more programs whenever the CPU load was low. WHich makes sense. But when the CPU was free because the disks were working flat out it made for a sudden unexpected but obvious afterwards disaster.

## 2011-04-04 Mon Apr 4 08:01 Spring taxes and mathemetical catestrophes

I teach my first class today in the new quarter, and San Bernadino hit 96F on my patio as I did the taxes ... and so the new schedule for this blog (MTuWTh) and a change of topic from requirements ( see the arvhive below).

Doing the taxes reawakened my inner mathematician -- lots of calculations. I rediscovered that I enjoyed calculating -- tho' it was as error prone and itterative as everything else humans do. So I'm planning a series of mathematical posts culled from the literature and Google groups.

First something from the Chicken Little Department -- How do you spot that a complex system -- a bank, an economy, an ecology, or part of the Internet -- is about to change it's behavior catestrophically? (more on Catestrophy Theory late...)

Here is a new theory/observation -- a system close to the tipping point or a phase change tends to develop a pattern of reacting slowly to disturbances long before the crash occurs. This [Buchanan11] article advertises some examples in ecology and dynamic systems and Ordinary Differential Equations. Interestin.... but there are other sysmptoms that I will write up next.

## 2011-03-29 Tue Mar 29 07:46 Requirements Engineering needs many approaches

In [Alexander11] Ian Alexander argues that no one method does everything you need to do when analysing requirements. He gives an example and shows how any one of the well known approaches will fail to miss some key observation. I think he is right -- you need to be pretty expert at several approaches and to mix-and-match them to the situation in hand -- sometimes the context and data flows must be studied, some times the stakeholders and the goals, sometimes the scenarios, and so on. Worth reading.

THis blog is going on hiatus for a week. I will have a new shedule and hope to post entries 4 mornings a week.

Have a great spring break and see you, inshallah, April 4th.

## 2011-03-25 Fri Mar 25 18:22 Working from real requirements back to specifications

This paper [SeaterJacksonGheyi07] applies Michael Jackson's Problem Frame approach to analysing requirements to get verifiably correct specifications for software and hardware. But the real value is pointing out the kind of questions that a computer professional should ask the stakeholders.

Notice the approach -- leap to assumptions and arguments, and then verify. Also use informal statements and arguments before going formal and using a tool.

## 2011-03-24 Thu Mar 24 13:00 istar notation criticised

The previous item (below) is a good reference on i* and similar research. And I noted my own dislike of the notation. Here [MoodyHeymansMatulevivius10] is a constructive analysis of the faults in the notation with some proposals to improve it. I particularly lik the idea that an agent is shown as wearing dark glasses and carrying a gun:-)

More on requirements to come...

## 2011-03-23 Wed Mar 23 16:33 istar GRL TROPOS etc and Requirements

I have just finished reviewing [YuGiorginiMaiden11] for Computer Reviews (CR). I am impressed by the original idea of modelling dependencies between actors -- people, systems, machiness, etc. -- but not by all the reaerch that has tried to formalize, extend, redefine, map into code, expresss in UML, and so on. More on the notation later.

## 2011-03-22 Tue Mar 22 14:30 WARNING -- Schedule change

It is end of quarter and so I will have a new schedule starting in April. I'll probably take a break in the last week of March.

## 2011-03-22 Tue Mar 22 14:20 Requirements Revisitted

In the Rationale Unified Process (RUP) there is no "Requirements Engineering" phase. "Requirements" is a "discipline" that can/will be used in any phase. However, one spends more time doing "Requirements" in the early iteration of the project and less at the ends. However, the RUP doesn't tackle the "Maintenance" phase of a product life cycle.

I was tipped off to something like the RUP structure back in the middle to late 1980s when I was modelling software development using a state of the art analysis tool based on Data Flow Diagrams (DFDs). I started with three processes:

11. Analysis --> Design --> Implementation.

I then tried to analyse "Maintenance" and saw that it had the same three processes in it -- you needed to analyse what was wrong, design a fix, and carry it out. In other words the "Analysis" process was restartable. Indeed it would need to recall previous conclusions about the system and change them in view of new needs, technology, or complaints from the stakeholder.

So I concluded that Analysis, and so Design and Implementation were parallel, restartable, communicating processes.

So, for me, since the 1980's "Requirements" is not a phase but an ongoing part of continuous software development.

And this handles changing requirements well. It allows error correcting feedback from early iterations.

But the tools have changed. In the 1960's I would be given a document called the requirements and write code to fit the document. Luckily I could do test runs and learned that software has to handle data which the requirements imply will never happen. On the other hand my bosses kept junior programmers well away from stakeholders and clientelle.... Not what we would reccommend in the 2010s! If I had a requirements engineering tool it was the flow chart and that is really a design tool.

In my Ph.D. (Computer Graphics) I spent time studying graphic arts -- books on technical drawing (already familiar to me from school and my father), graphic design, even Paul Kee's "Pedagogical Notebook" whihc inspired me when stuck programming a graphic terminal for the British Computer Arts Society's Event One.

But there was no tool to focus my attention when starting. Few if any were appearing in computer science courses in the 1970's (I've just checked a final exam from that period on my book shelves). We did have "System Flow Charts". And down the road in the Technical College I taught "Data Processing" and learned about "Organization and Methods" -- with tools for analysing document flows.

In the Brittish Civil Service we were initally focussed on better programming techniques -- "Structured Programming" -- but these exposed the problems with "Systems Analysis" and we researched better ways of looking at existing systems to uncover problems and oportunities and propose new systems to improve things. This lead to the use of Data Flow Diagrams to represent older solutions and proposals. But we also had Domain Modelling (in the form of conceptual data models -- Entity Relationship diagrams ) and Life History Diagrams all capturing different requirements and leading to system designs.

During the 1980's the Software Cost Reduction project introduced the us of table and logic... leading to Parnas's approach. Jackson started work on the "Problem Frame" approach which proposed modelling, in elementary logic, the worlds surraounding the computer on the way to specifying the requirements. These lead to another concetual break-through for me, when I relaized that the logic flows deductively from the speification and the environment to the required behavior:

12. if NAT and SPEC then REQ

In other words you can not deduce the SPEC from the REQuired...

The 190's saw the spread of objects and use cases. Use cases are written descriptions of how the user gets what they need from a system. The focus on the user and their goals is a vital tool. The use of textual scenarios opens up the ideas to stakeholders. There are even moderately rational methods for deriving an OO Design (with its own requirements for maintainabillity) from these use case scenarios and domain models.

WHich brings back to where I came in -- the Requirements discipline, as supported by Domain/Business models and using Use Cases to organize what the user needs into a form that can be programmed.

I hope to describe processes that help to discover requirements next (above).

## 2011-03-21 Mon Mar 21 11:32 Bonus post -- bug fixing

Just fixed a stupid bug in one of my PHP scripts for displaying grading. The script tries not to expose the person's key word on the screen or on the internet by replacing it with three asterisks. In the 2.1 version of the script (still in use in some directories/classes) it replaces all occurences in all lines.... which seemed like a good thing to do... until you hit a line that has a legitimate word -- for example "testing" and the key is "tes" ... in which "***ting" appears on the screen. Which (1) looks rude, and (2) actually exposes the key word. In the 3.0 version the substitution only occurs in lines where the key occurs first.... and this was a good fix for lines like
 	Test	testing testing testing
but fails on lines like
 	tes	testing testing testing
which becomes
 	***	***ting ***ting ***ting
So, the specification for version 4.0 reads, (
1. if the first characters in the line do not match the key do nothing.
2. if the first characters in a line matches the key then replace them and no others.
)
    if( substr($buffer,0,$len) == $key ) $row=$protect . substr($row,\$len);

By the way -- replace function documented in php.net has an extra parameter count that doesn't seem to work in my PHP...

Notice the typical frustrations and challenges here

1. You do not get the correct requirements -- ever.
2. You do not get the documented features in your language.
3. Version control and repeated code.

The problem is not that we are stuck between a rock and a hard place, the problem is that we standing on marshland and reaching for clouds. Sadly this image is not my own ... it is a drawing in "Towards a Magical Technology"

By the way -- I'm planning a week of requirements on the blog.

## 2011-03-18 Fri Mar 18 20:24 Special use cases and interfaces for systems administrators

Craig Larman's book notes that there are a number of use cases that turn up in all systems: start up, back up, recover, shut down, etc. These are best designed after the other use cases even though they are critical for the systems functioning.

Now Thomas A Limoncelli has written up a round table discussion of the ten do's and don'ts when you design such interactions. In [Limoncelli11] he argues tht sysadmins need very special requirements -- command line interfaces not GUIs for example.... THe article is a pleasure to read and should be part of all computer proffessional's training.

## 2011-03-17 Thu Mar 17 20:31 Frederick Brooks -- again

The focus of this blog is on the long view of current research and practice. For 30+ year Frederick Brooks has been publishing thought provoking essay on software development, science, engineering, and design. His destruction of the "man-month" as a myth in software development is based on practice and full of a fundamental insight:
13. Adding people to a late software project put it further behind. [Brooks82] and [Brooks95] (updated)

Here [Brooks10] is his latest. It got an very positive review in CR by Phillip Laplante.

I'd like to know what you think of it if you get to it before I do.

For more checkout: [Brooks77] , [Brooks87] , and [Brooks96]

## 2011-03-16 Wed Mar 16 16:32 We need revenue not ideas

Phillip Armour's little articles are always provocative. This one [Armour11] explains that a good idea is not what sells systems to executives, neither does cost reduction. What sells a system is when it opens up new revenue streams.

I must remember to mention this in my [ cs372/ ] course in the fall.

## 2011-03-15 Tue Mar 15 19:40 iPod Calendar Snafu on Daylight Savings Day

I didn't plan for this blog to be a long string of complaints about my iPod Touch -- last year I commented on unwanted options and performance ( [ blog010.html#2010-08-04 Wed Aug 4 07:23 Analogy -- IT now is like driving 90 years ago ] [ blog010.html#2010-07-12%20Mon%20Jul%2012%2009:54%20Fear%20and%20loathing%20of%20updates ] [ blog010.html#2010-10-19%20Tue%20Oct%2019%2019:03%20Why%20performance%20is%20important ] ) and yet the following pair of bugs are entertaining enough to mention. They provide a troubling insight into the thought processes of the people working on the iPod Calendar application.

THe clocks in my California went forward on Sunday night and I had a mild fever caused by a cold. So I was disconcerted to observe that short events all appeared to be one hour long. I could see the algorithm in my head:

14. If the clocks go forward then all events finish one hour later.

And all "all-day events" suddenly became two day events.

Luckily this dumb behavior ceased on Monday.

Well perhaps the iCalendar people will read this and fix it -- It is a 6.84 GB iPod Touch 3 with iOS4.2.1.

## 2011-03-11 Fri Mar 11 15:54 Object considered harmful discussed

As I predicted on September 30th of last year (in [ blog010.html ] ) Mardechai Ben-Ari's thoughts on Object-Oriented Programming [Ben-Ari10a] have attracted discussion -- mosstly polite... complete with a nice 5 or 6 line version of quicksort in Ruby (using a built in partition function) and the claim that non-OO languages make this impossible. But give me a lever like partition and I can write it in something like C or even Pascal... in fact Hoare's Treesort, in Pascal is functionally the same as Quicksort and quite short. But I may be forgetting the details from when I did this in 1983...

Of course my own MATHS language is neither OO or a PL, and has had a lot of APL and LISP put into it, so by using [ maths/math_62_Strings.html#Filters and Decorators ] to define [ maths/math_62_Strings.html#Projection ] as, for a number of items a and subset A then

15. a /& A = the result of selecting items from a in A and concatentating them,
16. quicksort(a)::= if(len(a)<2,a, quicksort( a /& (_ <= a[1] ) ! a[1] ! quicksort( a /& (_ > a[1] ).

Another thought -- should I hide this article from a student team whose OO design is effectively a 1980's style ADT design?

## 2011-03-10 Thu Mar 10 18:52 Tailoring XP

I much prefer processes that can be tailored to fit the project and organisation -- an example of a process that claims this is the Rational Unified Process or RUP. On the other hand XP (eXtreme Programmimg) has 12 practices (in its original form) and all are required .... So I doubted the premise of this [ConboyFitzgerald11] piece of research. What it shows, however, is that most of those who adopted XP did not use more than 4 of the 12 practices. It also gives some advice to researchers studying methods and advice for those putting in a new process. So it was worth studying.

## 2011-03-09 Wed Mar 9 14:26 Fighting Trolls

Here [ 909.html ] is a nice plan for dealing with annoying posters on mailing lists, google groups, and wikis. I can remember the early days before the internet was everywhere and we had Unix NewsGroups. I'm not sure when and what was the topic but one person had a three page rant on some topic or other and an experienced poster replied: "Thank you for sharing."

I noticed a polemic [Kamp10a] last December in the Comm of the ACM. Nicely written. It seems like the same issue of ASCII symbol congestion has boiled up in the Python community [ ffba3b61cd0a821e?hl=en ] (Google Group comp.land.python).

Before I am willing to shift I'll need a new keybowrd and editor. And a lot more consistency between browsers and file utilities. However why not be able to write

17. Σ [i:1..10] (1.0/i!) in place of
 for(sum=0, i=1; i<=10;i++)sum+= 1.0/factorial(i);

This kind of trivia and the technological restrictions have bugged me for most of my career. I have to remind myself that "what we need is notions, not notations".

## 2011-03-04 Fri Mar 4 17:10 Doing the Impossible

The [BowmanBriandLabiche10] comes close to Cold Fusion in my list of impossible tasks -- automatically converting requirements into a good design. It shows that a particular genetic algorithm can repair a deliberately damaged Design Class Diagram back to the expert solution. Ever since some one marketed a tool as "The Last One" because it would be the last software you would ever buy I've been a little suspicious of similar claims for automatic programming. However I have yet to find a rigorous proof that programs can not be automatically produced from a specification.

## 2011-03-03 Thu Mar 3 20:39 Mobile platforms

Except that [GavalasEconomou11] fails to mention the up-and-coming Object-C and iP* from Apple this is a good short review of different ways of developing mobile apps.

## 2011-03-02 Wed Mar 2 16:38 Getting the best out of the web

Here [Osbourn11] is some excellent advice on how a developer can useful information from the web plus encouragement to share what you learn.

## 2011-03-01 Tue Mar 1 19:13 End of a dream

Back in my first sabbatical -- 1980's -- I designed a logical language that was modular ... admittedly I stole from Z and stretched BNF to the point of breaking. But I included the idea that once a document was published it could be referred in any other document that used the same language. My idea was that it would be possible to reuse logic between projects and applications. When the Web came along the linking mechanism and anchors became a central part of the logical langugae. I had a vision web of logistic systems. By this time I had a proof of concept in two directories [ maths/ ] and [ samples/ ] and the first defined the language and the common sharable definitions -- groups, numbers, posets, and so on. Basically transcribed from notes I took during my graduate work. The plan was that others would refer to these definitions and results elsewhere in the web.

I thought that it would be possible to fix the pages for as long as people used them.... deprecating some logics and waiting for people to switch. Experience has proven me wrong. When I documented the temporal model logics in [ maths/logic_9_Modalities.html ] I made a mistake in defining the SIMPLE_TEMPORAL_LOGIC. I've finally fixed it. I hope that nobody needed the replaced system where the future starts after the present because it is gone from the site.

Since everything changes -- and even my most rigorous work needs revision .. the whole idea of a web of formal logic is now doubtful to me.

## 2011-02-25 Fri Feb 25 17:26 Is PDF good for people with bad vision

My campus assumes that the best way to present information is as PDF documents because a screeen reader can read them. I've had my doubts, but covered my bases in most of this sight by providing a DOS .txt rendering of all the HTML pages I generate from my MATHS language. I've tested this out when I distant friend of my wife went suddenly blind and we wished to continue using EMail.

Hi folks, A search in Google returned a few papers on the subject and no more. Is LTL supported in Z and if so, where would one find a reference manual? BTW, my access to PDFs is somewhat limited owing to my visual impairment. PDF and screen readers just don't get on. :) Much obliged, Paul - Tues, Feb 22 2011 12:34 pm

[ ed5199f35de12d72?hl=en ] (Google groups newsgroup).

This also lead me to rediscover a hole in my notes on Modal Logics [ maths/logic_9_Modalities.html ] and since nobody has filled it.... I've replaced the place holder with a link to the Wikipedia entry which seems to be both comprehensive and fairly correct.

## 2011-02-24 Thu Feb 24 19:50 Small correction to previous item below

I was wrong aabout the iPod+Safari handling of the ProofWiki LaTeX. With more patience you can see it render the fomula, one symbol at a time -- all the "x"s, all the "y"s, and then all the "z"s and so on. But the result is as good as the other browsers and pltaforms. It is probable that the later, faster iPods don't show this effect...

I wrote a short rant [ blog009.html#2009-02-25 Wed Feb 25 20:02 TeX MathML MATHS -- Mathematics on the web ] in response to [Hayes09] a couple of years ago.

## 2011-02-23 Wed Feb 23 16:59 Proofs and Mathematics on the Web

I've just discovered [ Main_Page ] (the ProofWiki) while reading a discussion on the Python Newsgroup of why
18. x * (y + z)

and

19. x * y + x * z

do not always give the same value in Python.... or any language that uses a finite length implementation of the real numbers.

ProofWiki is a lovely site dedicated to recording axioms, definitions and proofs of theorems in mathematics. This is very close to my own goals over the last 40 years.

However I got distracted from the content by the technology ( Javascript + ?? ) used to render the LaTeX code into traditional mathematical notations. LaTeX is a combination of Donald Knuth's ΤΕΧ with Leslie Lamport's extensions that is used to express mathematical formula. For example

 		\alpha * x + \gamma
is rendered like this
20. α * x + γ

but better. The above is translated into plan old HTML by my mth2html script from MATHS.

Anyhow, their LaTeX did not render well on my iPod using Safari. So I tried my suite of browsers and platforms with these results -- your milage may differ

1. Internet Exploder did not render LaTeX at all.
2. Chrome and Firefox on Windoze rendered LaTeX correctly.
3. Safari on Windows and iMac renders LaTeX correctly.
4. Safari on iPod touch iOS4.1 renders LaTeX mostly as whitespace.
5. Firefox on Linux -- OK as well.

I plan to say more about my approach to mathematics on the web later(above).

## 2011-02-22 Tue Feb 22 14:23 Resources on Programming languages

Cate Newton, Content Manager, SR Education Group has sent me a link to a page of language resources for beginners... [ programming-languages-basics ] and you can find tons more in [ samples/languages.html ] , enjoy!

## 2011-02-20 Sun Feb 20 10:42 Late post on probabilistic requirements

A server was dead on Friday night so this post is late. I've been looking into using the language of probability in describing requirements. There has been quite a bit of work on using tools to check that a design meets requirements stated like this. Here [ samples/Grunske08.html ] is a translation of a table in [Grunske08] that I'm studying. I'm really intersted in applying Bayesian methods (see next below) with requirements analysis. More on this later.

## 2011-02-17 Thu Feb 17 20:11 Causallity and Bayesian Networks

The New Scientist has a blatant bit of advertising [Ananthaswamy11] for the use of probabilities and networks as reinvigorating Artificial Intelligence. Meanwhile the ACM Comunications has a more informative article [Darwiche10] on BBN as well. Both refer back to [Pearl88] which I have been studying in some detail -- it is is studious, mathematical and very precise.

My interest in this goes back to my inabillity to formulate in classical logic a model of security flaws in software [Stoneburner06] where I could easily express the model syntactically but not give a meaning to statements like

It is clearly not the propositional "if defect then flaw" because some defects do not have consequent flaws... I am now convinced that a better semantics would be given in terms of probabilities, with each leads_to indicating a set of conditional probabilities

22. Pr[flaw | defect] > Pr[flaw| not defect].

This will need more thought and perhaps some rewriting in my notes on Bayes Theorem, Probabilities, and the expression of Natural Language in Formal MATHS.

## 2011-02-16 Wed Feb 16 17:43 A Unit Testing Framework In 44 Lines Of Ruby

Alan Skorkin has a nice piece of code.... illustrating the elegance of Ruby: [ http://www.skorks.com/2011/02/a-unit-testing-framework-in-44-lines-of-ruby/ ] but I guess I'll have to go back to using cassert in C++:-(

## 2011-02-16 Wed Feb 16 14:19 What is the use of numbers

If this research [Grossman11] stands up to review and replication then we need the words we use for counting to be able to distinguish 7 sheep from 6 sheep. So perhaps elementary arithmetic is useful... I wonder what other fundamental concepts we can not use because we don't have the words yet.

## 2011-02-15 Tue Feb 15 19:36 Debating agility in Dr Dobbs

I've been entertained by the discussion of Agile methods in Dr. Dobbs recently. The last two messages illustrate a pattern in software development methodology. An expert defines a method M with procedures A+B+C. Someone else tries A+B (but no C) which fails. They claim that M was no good. Or perhaps they try A+B and it is no better than what they did before - and claim M is a waste of time. Surely is is more correct to cast doubt on not doing C.

On the other hand when A+B is a great success in a project, then we may have grounds for doubting the contribution of C to method M!

Here is the series of editorials and commentary in Dr. Dobbs [ MailView?ms=MzYyMTIzNDIS1&r=MjIxNTUzNzc4NAS2&j=OTMwMTU4MTkS1&mt=1&rt=0 ] (Jan 25 2011 Agile in the News) [ MailView?ms=MzYyNTkwNzAS1&r=MjIxNTUzNzc4NAS2&j=OTQwNzY4NDES1&mt=1&rt=0 ] (Feb 8 2011 Agile at 10) [ MailView?ms=MzYyNzA3NzIS1&r=MjIxNTUzNzc4NAS2&j=OTQyNjAzMTkS1&mt=1&rt=0 ] (Feb 10 2011 Agile as Hokum) [ MailView?ms=MzYyODU5NDgS1&r=MjIxNTUzNzc4NAS2&j=OTQ2MjQ3NzAS1&mt=1&rt=0 ] (Feb 15th 2011 TDD is about design not testing),...

I suspect that the debates will continue.

## 2011-02-11 Fri Feb 11 15:45 Special Seminar Coming

The school of Computer Science and Engineering has been researching the use of GPUs (Graphic Processor Units) in high speed computation for a year or two. We have now won a grant to support Faculty+Student research that uses GPUs. This includes special hardware and software. We are putting on a special seminar on Friday the 18th [ seminar/20110218Schedule.txt ] that will describe GPUs and why the are important. Students and alumni will describe their experiences programming them.

I will be giving extraa credit to my students that attend these presentatons and send me the usual brief report on them.

23. 2011-02-14 Mon Feb 14 11:15 Corrected Bayes Theorem [Bayes1763]

## 2011-02-10 Thu Feb 10 18:48 Revised my list of projects

I have a number of projects for MS and BA students. They are listed in [ projects.html ] which has just been updated. THese a things that are possible to do but I don't have time to tackle them myself.

## 2011-02-09 Wed Feb 9 19:35 Just in time learning doubted

In OOPSLA 2000 there was a session for educators where some comitted agilists did a funny skit showing that it was better to learn things when you need them rather than learning lots of usefless things before you start. The analogy was feeding a baby -- when the baby is hungry or do all the feeding first? If this philosophy was correct then my vocation, career, and job was wrong. And it would be all to likely that a lot of knowledge would be lost because it was not needed so there was nobody to teach it when it was needed. But I kept quiet and tried not to worry about it.

Foast forward to [Skorkin11] which argues my worries so much better than I could... Enjoy.

## 2011-02-08 Tue Feb 8 18:47 Coding Horror Fraud

Here [ how-to-write-without-writing.html ] is my favorite blog exposing his motives in setting up "Stack Overflow" and encouraging programmers to write because better programmers can write well. More metablogging.

## 2011-02-04 Fri Feb 4 17:22 Metablogging

From Christopher F Stroudl, CR 1102-0146 (Feb 2011)pp85-86 Review of [Morrill09] that includes this list of tips:

1. Be unique of have a unique voice
2. Be open to the community
3. Have an issue
5. Write what you know
6. Make sure it is safe for work
7. Write well -- search engines use text
8. Expose something you believe in

## 2011-02-04 Fri Feb 4 15:34 Open for Contacts again

Looks like the transfer has worked.... it has also been hardened to reject HTML "script" tags.

## 2011-02-04 Fri Feb 4 14:23 Testing new Contact Form and PHP script

This should be a transparent shift of servers.... and I should be able to undo it if it fails.... meanwhile please wait a few minutes.

## 2011-02-03 Thu Feb 3 19:01 The Netscape Process

"Coding Horror" nearly always has some interesting pointers. In this case [ lived-fast-died-young-left-a-tired-corpse.html ] describes the last software boom. One pointer is to a 58 minute video documentary shot inside Netscape as they struggled to ship Mozilla as an open-sourced product. It is interesting to watch but reinforces all the stereotypes of geek culture and software development. For a studies of Netscape before the movie was short see [CusumanoYoffie98] "Competing on Internet Time" and [MooreG95] "Inside the Tornado". Then ask yourself is there some way we can combine high quality software with rapid development. And here the qualities must include reliability, maintainability, and usefulness.

## 2011-02-02 Wed Feb 2 16:57 Math to Code by way of ADTs

Reading this book [StepanovMcJones09] was like stepping back to a more innocent age when software had not escaped into the wild and code had not become king. It is not that they are not demonstrating ideas that do not work. It is just that people did not listen to them the first time around. Hey Ho.

## 2011-02-01 Tue Feb 1 19:45 Proofs Reborn

Continuing the math/logic thread, here [Shao10] is an article suggesting how 21st century components, technologies, and techniques can help to produce certified software -- the dream of programs that have been proven to work since the 1960's onward. But can it handle changing requirements and specifications elegantly?

## 2011-01-28 Fri Jan 28 16:48 Proofs in History

Google has a new service -- it will search a massive collection of English publications and count the number of occurences of a word or phrase. I tried the words "Proof" and "proof" [ graph?content=Proof%2Cproof&year_start=1800&year_end=2008&corpus=0&smoothing=3 ] and discovered a long decline in their frequency (never high) for the last 200 hundred years. However there is a slight uptick from 2007-2008 so perhaps we may end up with proven software.

## 2011-01-27 Thu Jan 27 19:23 What is mathematics

Here [LewisR11] is a citation and link for fascinating essay on the difference between mathematical training and mathemtical understanding. I find it a lot easier to teach the "scaffolding" as he puts it in any topic. Tring to teach "understanding" defeats me both in practice and philosophically. I don't know how to recognize "understanding" in another person. But on the other hand he is right -- teaching the formalism can lead to a loss of the very understanding that we actually want.

## 2011-01-26 Wed Jan 26 17:20 Use cases and Z

It seems completely natural to try using Z (Zed [ samples/index.html#Z ] ) to formalize steps in a use case scenario -- that is if you know Z. I found it interesting to use my own notation [ samples/class_managers_assistent1.html ] -- MATHS.

While researching Z and Use cases I uncovered a couple of papers on subtly different topics. First [SenguptaBhattacharya09] construct a Z+ERD model of a set of use cases in a use case diagram. Pity it is not normalized. On the other hand [GreiskampLepper00] Show how use case can be specified and tested using an executable version of Z.

## 2011-01-25 Tue Jan 25 18:59 UML everywhere and in Process Modelling

Time to review [Spinellis10a] the advantages of every one using the same notation -- in this case the Unified Modelling Language. Also [BendraouEtAl10] on some older software process modelling languages based on the UML.

## 2011-01-24 Mon Jan 24 09:58 Unable to post from home all weekend

I was not able to contact the server that I use to post blog entries starting on Friday evening. I'm now in my office -- the office system was also down when I got here and needed a reboot. So I hope to catch up with Friday's blog item later today.

## 2011-01-20 Thu Jan 20 20:07 Is this the FaceBook Process

I've always been interested in the different ways that enterprises develop software. There have been a couple of good books on the Microsoft process for example. Now we have a blog article plus discussion of "How FaceBook shipd code" [Lee11] which I rate as interesting but not trustworthy...

## 2011-01-19 Wed Jan 19 16:54 To Live and die in CA -- Cellular Automata

This department has been a hot bed of research into cellular automata in the last year or so.... published papers and presenttions. Jane Curnutt has completed her master's thesis ( [ seminar/20101110JaneCurnutt.gif ] [ seminar/20101110JaneCurnutt.txt ] ) on this topic and here [ watch?v=47zn4yOdfIk&feature=related ] is the YouTube of the start of her defence with links to the rest of it. Enjoy!

## 2011-01-18 Tue Jan 18 18:49 First seminar in quarter describes an Android Mobile App

I'm please to announce the start of the Winter Quarter Seminar series for CSE at CSUSB.

Check out [ seminar/20110120KalaivaniNellaiappan.txt ] to see the data on the first CSE Seminar -- a project presentation.

## 2011-01-14 Fri Jan 14 18:27 Epic Failure by feedback and mouse traps

I guess I had better explain the cybernetic pattern I mentioned below that leads to unexpected epic failures like the recent Skype failure and the long time famous phone system shut down in New York. All you need is a network with lots of nodes and a mechanism that off loads work from one node to another on failure. So if a node fails then its work is transfered to working nodes. This works marvelously under most circumstances. But add to it a bug that crashes a node when it gets overloaded and you have a recipe for a completely destructive chain reaction that wipes out the whole system. All you have to do is wait for a heavy load to hit the whole system and for a single node to fail. It's load is transfered to other nodes and one or two of those hit the bug and die. And so one. I remember a simulation of an atomic chain reaction where a room was full of mouse traps. Each one was set and had a couple of ping pong balls sitting on it. If the trap went off it fired two balls into the air and they almost certainly hit two other mouse traps and set them off. In the movie I saw as a kid the room is quite stable until someone throws in a single ping-pong ball and closes the door. Ten in seconds the room is full of flying balls and flying mousetraps until all of them were fired. Cool! But an unforgettable image of a classic epic fail.

You will find a dozen versions of this on YouTube -- Enjoy!

## 2011-01-13 Thu Jan 13 20:26 Blow ups happen -- Skype and before

Here [ Lessons-from-Skype-Outage ] is Abel Avram's analysis (in InfoQ) of the Skype outage over the xmas Holiday. This analysis reminds me of the telephone exchanges that started failing in the New York Garment district one morning -- each failure overloaded other machines that triggered their failure. In that case it was a simple misunderstanding of how a "break" in C (or C++) can be used to terminate loop or a case in a switch. As for the general theory -- I guess Robert Heinlein's "Blow Ups Happen" is as good as any...Or perhaps Eward De Bono's description of why an upset punt full of the drunkest people was inevitable as a result of the feeback loops.

## 2011-01-12 Wed Jan 12 14:49 What do you mean be good code

When I joined the Civil Service in England at the end of the 1970's I was taught this acronymic description of good code.

24. CREATE::acronym=following,

I have found no reason to change this and still require my students to adopt styles that meet these properties. However, there is more here than you might expect at a quick glance -- for example there are 6 qualities and they may clash. Here are some brief notes on them.

(Clear): Clear code is readable and leaves no doubt that it works. It is what we nowadays call "Clean code". But notice that clarity means using a meaningful vocabulary -- so we need to use words that mean something to both the reaser and in the domain. Hence we need methods that generate code structures that reflect the reality of the world outside the software.

(Reliable): This means it always works. The old concern with "correctness". But more than that it means code that does not contain any of the classic stupidities like buffer over-runs. It also means supllying code that handles all the idiotic and malicious input that real users (and robots) can throw at the software. However achieving high reliability code is expensive and so collides with the next quality.

(Economical): This was once called "Efficient" until the falling cost of hardware and the rising speed of processors made the programmer's time the most expensive item. Spending a day recoding a program to save 2kb made sense in the old days, but not with RAM and disk becoming cheap. So we need the total life time cost of the software as the key driving factor.

(Amendable): This sounds so easy until you realise that some changes in requirements are easy to accommodate and others take a lot of work. All we can ask for is a sort of continuity -- as the requirements change more wildly, the code will need bigger changes -- and the price will go up! Here again amendabillity comes from code that reflects the real world in which the software executes.

(Testable): Once upon a time we broke a problem down into independent processes and tested them by using a mixture of acceptance tests (black box) and all-path-tests (whitebox). In other words the structure of each process was used to derive a set of tests that made sure that every piece of code was executed in some test. These days we have objects and unit tests. But the message is the same: it may be clear and correct but it needs testing.

(Elegant): This is the prime quality -- and oddly we can not define it. But we can tell elegant code from kludges.

Thank you for listening.... the next post gives the inspiration for this rant.

## 2011-01-11 Tue Jan 11 17:53 How to produce good code

The XKCD webcomic (Jan 10th) is always worth looking at and sometimes [ http://xkcd.com/844/ ] very relevant to my interests - developing good software.

In this case it is also deeply depressing because of one part of the comic:-

I have spent my life trying to replace that question make. This blog and its background bibliography is all about the query.

Worse I know some answers -- most of them have been available and ignored 20 or more years... Check out this web site for details.

## 2011-01-05 Wed Jan 5 10:55 Happy new year and versions of Python

I've just added a spreadsheet of versions and features to [ samples/python.html ] , enjoy.

## Contributors to this site

Jenna Hill [ people.html#Women in CSci ] (Sep 21 2011), Mrs. Morgan Suzie (Sep 19th 2011), Sarah Washington [ etc.html#AI Artificial Intelligence ] [ etc.html#Microsoft QR Codes HCCB WIndows Xbox Bing ] (Dec 19th 2011) , ...

Lisa Lamphear contributed a link to the Mentor Graphics Careers web site.

Sarah Wahlberg gave us a link to GoStats on programming Languages Tue June 8th 2010 and on JavaScript Wed July 7th 2010.

Sandra White advertized a career web site Tue Mar 30

Tiffany of CSUSB redefined three terms Tue Mar 23 2010

David Siegel of BrainTrack [ info2.html ] Mar 4 2010

Heather [ sports2.html ] Tue Feb 16 2010

Dr. Christopher Landauer [ samples/ada.syntax.html ] Wednesday, November the 18th, 2009.

Katie Kline [ info4.html ] Monday October 12th 2009.

Jeff Hewitt [ samples/people.html#Computer Science Associations ]

Joanna, Emily Kovak [ blog008.html#2008-12-22 Mon Dec 22 09:12 Contributions ]

Etc.

## Previous Archived Blog Entries

(To December 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 ]

25. above::=using the above statements....

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

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

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

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

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

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

34. 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.
35. 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.

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

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

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

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

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

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

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

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

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

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

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

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