Category Archives: Software

Coining the word “software”

softwaredefn

Computing pioneer Paul Niquette’s memoir begins with the tale of how he came to coin the term software in 1953 — to the ridicule of his colleagues — and how the idea of a computer whose code was separate from its machinery took hold and changed the way we think about computing forever.

When I first said `software’ out loud, people around me said, “Huh?” From the very beginning I found the word too informal to write and often embarrassing to say. Nevertheless, with smirking trepidation I did occasionally feature the word `software’ in speeches and lectures and media interviews throughout the fifties.

It was just a throw-away thing. The word `software’ was hardly my most notable invention, even back then. Nothing to write home about (I was only 19 years old and still living at home). The word `software’ did not belong in a technical paper (besides, an undergraduate is but a ghostwriter for principal researchers). Then too, I had a reputation at UCLA as a practical joker. Colleagues and friends simply shrugged, no doubt regarding each utterance as a tiresome prank or worse, another offbeat neologism, for which I was also becoming noted.

Nobody in 1953 would have guessed that the silly word would take hold, that within a few decades `software’ would enter the general vocabulary for products and for professions — that a worldwide industry would wear it as a solemn name. You can be sure that if my ego and I had harbored any such glorious visions, then…then, what?

 
(reblogged from Boing Boing)

Tagged , , ,

The Art of Programming

The best programs are written so that computing machines can perform them quickly and so that human beings can understand them clearly. A programmer is ideally an essayist who works with traditional aesthetic and literary forms as well as mathematical concepts, to communicate the way that an algorithm works and to convince a reader that the results will be correct.

Selected Papers on Computer Science (1996)
Donald Knuth

 

Tagged , ,

Solution: Create unhackable systems

 
Needless to say, this tweet prompted a number of subtle (and not so subtle) responses; it is just vague enough to not be 100% sure he is actually joking (because the software verification problem is trivial, right?).

Did North Korea hack Sony? I doubt it; perhaps it was from an unexpected agent.

N.B. high-profile cosmologists appear to be quite happy to make bold statements to the media on issues well outside of their expertise…

Tagged , , , , ,

It’s impossible to conduct research without software

No one knows how much software is used in research. Look around any lab and you’ll see software — both standard and bespoke — being used by all disciplines and seniorities of researchers. Software is clearly fundamental to research, but we can’t prove this without evidence. And this lack of evidence is the reason why we ran a survey of researchers at 15 Russell Group universities to find out about their software use and background.

 
The Software Sustainability Institute‘s recent survey of researchers at research-intensive UK universities is out. Headlines figures:

  • 92% of academics use research software;
  • 69% say that their research would not be practical without it;
  • 56% develop their own software (worryingly, 21% have no training in software development);
  • 70% of male researchers develop their own software, and only 30% of female researchers do.

For the full story, see the SSI blog post; the survey results described there are based on the responses of 417 researchers selected at random from 15 Russell Group universities, with good representation from across the disciplines, genders and career grades. It represents a statistically significant number of responses that can be used to represent, at the very least, the views of people in research-intensive universities in the UK (the data collected from the survey is available for download and is licensed under a Creative Commons by Attribution licence).

(you may also like to sign this petition and join the UK Community of Research Software Engineers)

Tagged , ,

I’m a teapot

Great to see Google adhering to standards and finally implementing RFC 7168: The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCPT-EA), published at the start of April this year.

From §2.3.3:

TEA-capable pots that are not provisioned to brew coffee may return either a status code of 503, indicating temporary unavailability of coffee, or a code of 418 as defined in the base HTCPCP specification to denote a more permanent indication that the pot is a teapot.

 

googleteapot

Tagged , ,

1994 Web Flashback

microsoftwww1994

Remember, this is pre-IE 1.0, viewed with (Mosaic) Netscape or Opera (well, or Lynx — see the web browser timeline).

…and it’s still alive and kicking!

Tagged , ,

2013 ACM Software System Award: Coq

Today, the 2013 ACM Software System Award has been awarded to Bruno Barras, Yves Bertot, Pierre Castéran, Thierry Coquand, Jean-Christophe Filliâtre, Hugo Herbelin, Gerard P. Huet, Chetan Murthy and Christine Paulin-Mohring:

For the Coq Proof Assistant System that provides interactive software for the development of formal proofs, using a powerful logic known as the Calculus of Inductive Constructions.

 
The Coq Proof Assistant System (full award citation), which has been under continuous development for nearly 30 years, is a formal proof management system that supports a rich higher-order logic with powerful inductive definitions. The programming language incorporates a rich dependent type system, applicable to a range of needs from compilers to models of foundational mathematics. Because it can be used to state mathematical theorems and software specifications alike, Coq is a key enabling technology for certified software and has played an influential role in several disciplines including formal methods, programming languages, program verification and formal mathematics. The system is open source, is supported by a substantial and useful library, and has attracted a large and active user community. Since the project started, more than 40 people have contributed various theoretical, implementational and pedagogical works leading to the Coq system as it is now (see Who did What in Coq?).

Some of the significant results that have been accomplished using Coq are: proofs for the four colour theorem, the development of CompCert (a fully verified compiler for C), the development of RockSalt (software-based fault isolation, as used in Google’s Native Client), and most recent, the fully specified and verified hypervisor OS kernel CertiKOS.

(also see: the 2012 recipients, as well as the full chronological listing of awards)

Tagged , , , ,

What Superman III teaches us about programming

I’ve always had a soft spot for Superman III (1983), the third film in the original franchise starring Christopher Reeve as Superman. While it’s generally regarded as being below the standard of the first two films, it has some great moments e.g. the scene where evil Superman fights Clark Kent.

In Superman III, Richard Pryor plays Gus Gorman, a man with no known computing skills whatsoever, who — when his social security is stopped — turns to programming out of desperation.

become_a_programmer

After completing a programming course (presumably in BASIC or COBOL), Gus soon lands a job at Webscoe Industries, unaware that he’s working for Evil Robert Vaughn. He stays back after work one night, to hack into the work computers and award himself a few extra expenses. But what possible lines of programming genius will it require? What would you need to type in to override all the ruthless security of the Webscoe Payroll Division?

give_me_all_the_money

Err…it’s a good job he did that course.

After receiving a cheque for $85,789.90 and turning up to work in a new Ferrari, it all goes rather downhill: Evil Robert Vaughn coerces him into hacking the Vulcan weather satellite, as well as manipulating the global financial system, damaging the world’s oil supplies by moving every tanker into roughly the same place and replicating kryptonite by tracking down unknown elements in outer space. With the programming educational element of the film done by this point, Gus proposes building a “supercomputer”, eventually leading to the creation of a Robocop prototype.

Read the full Den of Geek analysis of Superman III‘s contribution to the teaching of programming; and remember: all of this computer mayhem came from a man who answered an advert on the back of a book of matches.

Tagged , ,

FuckIt.py: The Python Error Steamroller

Having problems with your Python code? Try FuckIt.py by ajalt:

FuckIt.py uses state-of-the-art technology to make sure your Python code runs whether it has any right to or not. Some code has an error? Fuck it.

FuckIt.py uses a combination of dynamic compilation, Abstract Syntax Tree rewriting, live call stack modification and love to get rid of all those pesky errors that makes programming so hard. All functionality is provided through the fuckit module: add import fuckit to the top of your script, then you can use fuckit in a number of ways e.g. as a replacement for import when a module has errors — just change import some_shitty_module to fuckit('some_shitty_module'):

import fuckit
#import some_shitty_module
fuckit('some_shitty_module')
some_shitty_module.some_function()

Still getting errors? Chain fuckit calls. This module is like violence: if it doesn’t work, you just need more of it:

from fuckit import fuckit
fuckit(fuckit('some_shitty_module'))
# This is definitely going to run now.
some_shitty_module.some_function()

You can also use fuckit as a decorator and a context manager; plus check out its extremely permissive public license.

(also see: FuckItJS, the Javascript Error Steamroller)

Tagged ,

Using Google as a timer

googletimer

We know that Google has all kinds of clever search commands (as well as a rich set of developer features, for example Google Charts), but here’s another useful one: you can set a countdown by typing “set timer X min” into Google, with an alarm when it expires.

(if a countdown doesn’t do it for you, then you can also use the command “set timer X time“)

Tagged , ,

2012 ACM Software System Award: LLVM

Today, the 2012 ACM Software System Award has been awarded to Vikram Adve, Evan Cheng and Chris Lattner:

For designing and implementing LLVM, a persistent, language-independent program representation that enables code analysis and transformation, including compile time, link time and run time optimizations, for arbitrary languages. Since its open source release in 2003, LLVM has become widely used in both commercial products and for computer science research.

 
LLVM (full award citation) is a persistent, language-independent program representation based on static single assignment (SSA) form that enables code analysis and transformation, including compile time, link time and run time optimisations, for arbitrary programming languages.

Due to its open, clean and flexible design and easy to use architecture and programming interfaces, LLVM has replaced GCC as the infrastructure of choice for doing research on program translation, optimisation and analysis. Researchers have used it for projects as diverse as building link-time interprocedural optimisers, just-in-time compilers, secure browser extensions, language virtual machines, static analysis tools, automatic vectorisation, GPU programming, software verification, hardware synthesis tools, embedded code generators and numerous language implementations.

In the years since its release, LLVM has been incorporated into commercial products by Apple, Adobe, AMD, Arxan, AutoESL, Cray, Google, Intel, National Instruments, nVidia, REAL Software, XMOS and many more. LLVM has replaced GCC as the primary compiler in the latest OS X and iOS systems. LLVM has also had significant commercial impact by enabling the design and implementation of powerful graphics languages like OpenCL and Renderscript. Every commercial implementation of OpenCL (e.g. from AMD, Apple, Intel and nVidia) is based on LLVM. All recent Android devices ship with LLVM to compile graphics code written in Renderscript.

(also see: the 2011 recipients, as well as the full chronological listing of awards)

Tagged , , ,

Computing in education: Nellie the School Computer (1969)

A great clip from Tomorrow’s World, first broadcast in 1969, of Nellie: “a computer set to revolutionise the classroom“. In this clip, the boys of Forest Grammar School in Berkshire demonstrate how Nellie can be programmed to solve mathematical equations and play music, as well as the importance of computer maintenance…

Nellie was an Elliott 405, made by Elliott Brothers, one of the early UK computer companies (Tony Hoare worked there for eight years).

 

Tagged , ,

The Times: “Program or Be Programmed”

A lot of computer science in The Times today: a full-page article on page 3 entitled Play the game, but write the software too (£), a four-page pullout on learning how to code, as well as the following leader (£) on page 2:

Program or be Programmed

The best time to start learning the language of computer code is now

void draw() {
    background(255);
    stroke(0,0,0);
    line(0,0,60,hour());
    line(0,0,120,minute());
    stroke(255,0,0);
    line(0,0,180,second());
}

The world divides into a majority of people for whom the preceding four lines are meaningless and a minority for whom it is clear at once that, given the right breaks between them, these lines will create on your computer screen a simple clock.

For the majority, the world of software is a built world that, like a city, helps us to organise and to consume. But it has been built by others. For the minority, software is merely a curtain that can be pulled aside to reveal a wild world of confusion, trial and error, but also of potentially unlimited creative and commercial potential. It is time for Britain’s schoolchildren to be granted access to this world.

For a brief period in the 1980s, British schools and universities punched far above their weight in the production of graduates who spoke the language of computers. This was partly a legacy of Britain’s pioneering role in the fundamentals of computer science and partly thanks to the BBC Micro, which appeared in most schools in the country but required a basic understanding of code for even its most basic functions.

The Micro generation went on to dominate the creative side of the computer gaming industry, but mainly in other countries. Since then Britain’s top three universities for computer science — Oxford, Cambridge and Imperial College, London — have kept their rankings in a global top 20 predictably dominated by the United States. But for a wasted generation, computer science in schools has languished at the expense of something else entirely.

As Michael Gove lamented in a speech in January, the national curriculum’s vision of Information and Communications Technology (ICT) had atrophied to little more than a primer in the use of Microsoft Word and PowerPoint. What pupils got, if they could stay awake, were simple skills that conferred little competitive advantage and in most cases could anyway be self-taught. What they needed was a rigorous but rewarding grounding in code as a foreign language.

At the Education Secretary’s invitation, industry has produced a blueprint for a new computer science curriculum. It would start early. By the end of primary school, pupils would be able to build an app for a mobile phone. By 16 they would be able to write a program to solve a Sudoku puzzle. By 18, if they took computer science at A-Level, they would be able to write the code to guide a van along the shortest route between two points on a digitised map.

Under this scheme, coding would start at 7. Its advocates say this would produce, eventually, the number of computer-literate graduates that British employers need; equip all pupils with the ability to compartmentalise and sequence their thinking as coding requires; and reflect the new reality that no rounded education is complete without an introduction to programming.

It is a compelling case. Some schools may respond that they cannot possibly have enough qualified teachers ready for a curriculum by 2014, when the successor to ICT is due. That is no reason to push back the deadline. It is a reason to speed up the necessary training. That clock on your computer screen is ticking.

While it has been widely reported that industry have taken the lead on developing the new ICT Programme of Study in England, this is not quite correct. It has been coordinated by the BCS and the Royal Academy of Engineering on behalf of the Department for Education, with input from key stakeholders across education, academia, government and industry. They may have been indirectly referring to Computer Science: A Curriculum for Schools, the CAS curriculum which has been endorsed by industry and the examination boards.

N.B. The Times also cleverly demonstrated that programming is non-trivial, by inserting a couple of typos in the code fragment at the start of the article…

Tagged , , , , , ,

Useful methods in Android 4.2: isUserAGoat()

android.os.UserManager, a new class added in Android 4.2 (Jelly Bean) which manages users and user details on a multi-user system, has exposed a very useful public method:

isuseragoat()

(source and an explanation)

Tagged , , ,

NASA’s Magellan spacecraft and Perl’s pack function

I recently found this description of the origin of a number of the pack format specifiers in Perl’s pack function (which takes a list of values and converts it into a string using a specified rule template). Larry Wall recalls that they were added for processing data from NASA’s Magellan spacecraft (launched in 1989, also known as the Venus Radar Mapper):


+=begin comment
+
+Larry recalls that the hex and bit string formats (H, h, B, b) were added to
+pack for processing data from NASA's Magellan probe. Magellan was in an
+elliptical orbit, using the antenna for the radar mapping when close to
+Venus and for communicating data back to Earth for the rest of the orbit.
+There were two transmission units, but one of these failed, and then the
+other developed a fault whereby it would randomly flip the sense of all the
+bits. It was easy to automatically detect complete records with the correct
+sense, and complete records with all the bits flipped. However, this didn't
+recover the records where the sense flipped midway. A colleague of Larry's
+was able to pretty much eyeball where the records flipped, so they wrote an
+editor named kybble (a pun on the dog food Kibbles 'n Bits) to enable him to
+manually correct the records and recover the data. For this purpose pack
+gained the hex and bit string format specifiers.
+
+git shows that they were added to perl 3.0 in patch #44 (Jan 1991, commit
+27e2fb84680b9cc1), but the patch description makes no mention of their
+addition, let alone the story behind them.
+
+=end comment

N.B. I’m a big fan of Perl — this kind of ad hockery perfectly encapsulates why!

Tagged , , , , , ,

Microsoft’s 0xB16B00B5

Last week on the Linux Kernel Mailing List, a minor question was raised about the suitability of certain magic constants in the support code in the Linux kernel for Microsoft’s Hyper-V virtualisation environment. This was widely reported a week later. So how did a hexadecimal string cause so much offence? Well, it turns out that the constant passed through to the hypervisor was 0xB16B00B5, or in English, BIG BOOBS. And this was not an exception: when the code was originally submitted it also contained 0x0B00B135 (BOOBIES). While this looks to be a puerile joke, it could be potentially problematic because Azure (Microsoft’s cloud computing platform) may depend on this constant, so changing it could break things.

Even though the Linux kernel itself contains a fair amount of profanity, Microsoft swiftly apologised: “We thank the community for reporting this issue and apologize for the offensive string. We have submitted a patch to fix this issue and the change will be published in a future release of the kernel.” (in fact, the patch changed the string to its decimal representation: 2976579765). However, as Matthew Garrett notes on his blog, this can be easily attributed to straightforward childish humour (and the use of pseudo-English strings in magic hexadecimal constants is hardly uncommon; you can even generate hex poetry, if you so wish), but sniggering at breasts contributes to the continuing impression that software development is a boys club where girls are not welcome.

Tagged , , , , , , , , , , ,

Computer Terror! (from 1988)

The students were safe, their computers weren’t…

A scaremongering US news report from 1988 on a computer virus outbreak (in fact, it was the Morris worm, one of the first well-known programs exploiting buffer overflow vulnerabilities):


Has a Daily Mail feel to it…

(HT Retronaut)

Tagged , ,

So you need a typeface?

See, there is a time and a place for Comic Sans

Designer: Julian Hansen

Tagged , ,