Angel \”Java\” Lopez on Blog

April 27, 2015

Computer History: Links And Resources (9)

Filed under: Computer History, Links — ajlopez @ 7:18 pm

Previous Post

Doug Engelbart and the vision thing: Is Silicon Valley suffering from a failure of imagination? — Tech News and Analysis
http://gigaom.com/2013/07/05/doug-engelbart-and-the-vision-thing-is-silicon-valley-suffering-from-a-failure-of-imagination/

A few words on Doug Engelbart
http://worrydream.com/Engelbart/

Computer Visionary Who Invented the Mouse – NYTimes.com
http://www.nytimes.com/2013/07/04/technology/douglas-c-engelbart-inventor-of-the-computer-mouse-dies-at-88.html?pagewanted=all&_r=0

Douglas Engelbart, Developer of the Early Computer Mouse, Dead at 88
http://paleofuture.gizmodo.com/douglas-engelbart-developer-of-the-early-computer-mous-659855829

Douglas Engelbart : The Mother of All Demos (1/9) – YouTube
http://www.youtube.com/watch?v=JfIgzSoTMOs

Doug Engelbart, American inventor and computing legend, has passed away — Tech News and Analysis
http://gigaom.com/2013/07/03/doug-engelbart-american-inventor-computing-legend-passes-away/

Douglas Engelbart – Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Douglas_Engelbart

Programming on Early Microcomputers: A Retrospective
http://blog.smartbear.com/programming/programming-on-early-microcomputers-a-retrospective/

PC History
http://www.pc-history.org/

Tektronix Smalltalk Document Archive
http://www.wirfs-brock.com/allen/things/smalltalk-things/tektronix-smalltalk-document-archive

A short history of structured flowcharts
http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/

WordPress › Ten Good Years
http://wordpress.org/news/2013/05/ten-good-years/

id-Software (id Software)
https://github.com/id-Software

Your Code May Work, But It Still Might Suck
http://blog.smartbear.com/process/your-code-may-work-but-it-still-might-suck/

Infographic: The History of Programming Languages
http://blog.newrelic.com/2013/06/03/the-history-of-programming-languages-infographic-from-veracode/

The One-Person Product – Marco.org
http://www.marco.org/2013/05/20/one-person-product

Trygve 1975
http://heim.ifi.uio.no/trygver/www-documents-overview.html

La primera web de la historia cumple 20 años
http://alt1040.com/2013/04/la-primera-web-de-la-historia

BCPL – Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/BCPL

Chistory
http://cm.bell-labs.com/cm/cs/who/dmr/chist.html

39 Unforgettable Moments in Tech Startup History
http://mashable.com/2013/04/11/epic-startup-moments/

CensorZilla
http://www.jwz.org/doc/censorzilla.html

Tech Time Warp of the Week: Arthur C. Clarke Predicts the Internet, 1974 | Wired Enterprise | Wired.com
http://www.wired.com/wiredenterprise/2013/03/tech-time-warp-arthur-c-clarke/

Vim After 11 Years – Ian Langworth’s Things of Variable Interest
http://statico.github.com/vim.html

A visual history of Linux – InfoWorld
http://www.infoworld.com/slideshow/91193/visual-history-of-linux-214578

Really Simple Social Syndication | Boris Smus
http://smus.com/really-simple-social-syndication/

The history of Hadoop: From 4 nodes to the future of data — Tech News and Analysis
http://gigaom.com/2013/03/04/the-history-of-hadoop-from-4-nodes-to-the-future-of-data/

The 1952 Paper Chess Computer of Alan Turing
http://antheacarson.hubpages.com/hub/The-1952-Paper-Chess-Computer-of-Alan-Turing

Remembering COM — The Endeavour
http://www.johndcook.com/blog/2012/11/12/remembering-com/

My Links
http://delicious.com/ajlopez/computerhistory

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

April 25, 2015

Liqueed Project (6)

Filed under: Express, JavaScript, Liqueed, NodeJs, Test-Driven Development — ajlopez @ 4:26 pm

Previous Post

Let review another tests from test/personapi.js in project:

https://github.com/liquid-co-ops/liqueed

There are API entrypoints that are called using PUT or POST. They receive data in the body of the sent message. Using Express middleware, that message (formatted as JSON) is analized, parsed and converted into a JavaScript object. That object resides in the body property of the received request parameter. As the API uses that field, we should provide it in the test. An example:

exports['login person'] = function (test) {
    test.async();
    
    var request = {
        body: {
            username: persons[1].username,
            password: persons[1].username
        }
    };

    var response = {
        send: function (model) {
            test.ok(model);
            test.equal(model.id, persons[1].id);
            test.equal(model.name, persons[1].name);
            test.equal(model.username, persons[1].username);
            
            test.done();
        }
    };
    
    controller.loginPerson(request, response);
};

As in the previous example, we use the send function in the response object, to check the result.

Another example, sending not only the body but also sending parameters:

exports['change password first person'] = function (test) {
    test.async();
    
    var request = {
		params : {
			id : persons[0].id.toString()
		},
        body: {
            password: 'new' + persons[0].username
        }
    };

    async()
    .then(function (data, next) {
        var response = {
            send: function (model) {
                test.ok(model);
                test.strictEqual(model, true);
                
                next(null, null);
            }
        };
        
        controller.updatePassword(request, response);
    })
    .then(function (data, next) {
        var request = {
            body: {
                username: persons[0].username,
                password: 'new' + persons[0].username
            }
        };

        var response = {
            send: function (model) {
                test.ok(model);
                test.equal(model.id, persons[0].id);
                test.equal(model.name, persons[0].name);
                test.equal(model.username, persons[0].username);
                
                test.done();
            }
        };
        
        controller.loginPerson(request, response);
    })
    .run();
};
 

Next posts: MVC controller actions tests, tests launching the HTTP server, tests using a DSL (Domain-Specific Language)

Stay tuned!

Angel “Java” Lopez

http://www.ajlopez.com

http://twitter.com/ajlopez

April 20, 2015

Liqueed Project (5)

Filed under: Express, Liqueed, NodeJs, Test-Driven Development — ajlopez @ 5:38 pm

Previous Post  
Next Post

Let review two more tests from test/personapi.js. The second test is actually:

exports['get persons'] = function (test) {
    test.async();
    
    var request = {};
    var response = {
        send: function (model) {
            test.ok(model);
            test.ok(Array.isArray(model));
            test.ok(model.length);
            test.ok(model[0].id);
            test.ok(model[0].name);
            test.done();
        }
    };
    
    controller.list(request, response);
};

After building the domain model in memory (the first test taks), now we can test a controller action method, named getPersons. It requires to receive two arguments, request and response object. In the above code, two stubs were built and used. The response object has a send function that  it should be invoked to pass the tests. It receives the model to send to the client, as a JavaScript object (in the real environment, the object is serialized to JSON via Express response send method).

The third test is:

exports['get first person'] = function (test) {
    test.async();
    
    var request = {
        params: {
            id: persons[0].id.toString()
        }
    };

    var response = {
        send: function (model) {
            test.ok(model);
            test.equal(model.id, persons[0].id);
            test.equal(model.name, persons[0].name);
            test.done();
        }
    };
    
    controller.get(request, response);
};

The action needs something from request object, an aditional argument having the person primary key to be retrieved. There is a send method in request object, to test the result.

The tests are not using HTTP nor GET method. They are directly testing the controller code. Indeed, that code was written AFTER the tests, and its first execution was from test launch, without the need of launch a web server.

Next posts: other tests for API methods, sending objects, and tests for MVC controllers

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

April 16, 2015

Computer History: Links and Resources (8)

Filed under: Computer History, Links — ajlopez @ 6:18 pm

Previous Post
Next Post

Symbian – a post mortem – Google Docs
https://docs.google.com/document/d/1r04yjaQoL1c_vuwQr-CdbDQ8EjGVGOL_1V6BNVWaR1c/preview

Generation Gap
http://www.mikealrogers.com/posts/generation-gap.html

Computer History Museum | @CHM : The APL Programming Language Source Code
http://www.computerhistory.org/atchm/the-apl-programming-language-source-code/

An Interview with Brian Kernighan on C and The C Programming Language | | InformIT
http://www.informit.com/articles/article.aspx?p=1960359

La historia de Javascript | fernetjs
http://fernetjs.com/la-historia-de-javascript/

Simon Peyton Jones – Haskell is useless – YouTube
http://www.youtube.com/watch?v=iSmkqocn0oQ&feature=related

The TTY demystified
http://www.linusakesson.net/programming/tty/

HTML5 Web Storage – Cookies Are So 1994! | New Relic blog
http://blog.newrelic.com/2012/09/18/html5-web-storage-cookies-are-so-1994/

How Ruby Borrowed a Decades Old Idea From Lisp – Pat Shaughnessy
http://patshaughnessy.net/2012/9/18/how-ruby-borrowed-a-decades-old-idea-from-lisp

10 programadores que cambiaron la historia – Gen 2.0 ADN Digital
http://www.genadndigital.com/softwares/item/112-10-programadores-que-cambiaron-la-historia

research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/history.pdf
http://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/history.pdf

Monitors: An Operating System Structuring Concept
https://dl.dropbox.com/u/14031931/Papers/Monitors.pdf

The Alan Turing Legacy | Instituto de Ciencias Matemáticas
http://www.icmat.es/events/conferences/alanturing

2048 bits on a CRT
http://www.computer50.org/mark1/ip-mm1.crt2048.html

Tom Kilburn
http://www.computer50.org/mark1/kilburn.html

50th Anniversary of the Manchester Baby computer
http://www.computer50.org/

Herbert Kroemer – Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Herbert_Kroemer

The History of the Floppy Disk – Input Output
http://h30565.www3.hp.com/t5/Feature-Articles/The-History-of-the-Floppy-Disk/ba-p/6434

What Killed the Linux Desktop – Miguel de Icaza
http://tirania.org/blog/archive/2012/Aug-29.html

BYTE Vol 06-08 1981-08 Smalltalk.pdf – Google Docs
https://docs.google.com/file/d/0Bzn23kCE_aNlRG5xaGpIaEZXWEk/edit

Agosto 2012: 25 años de la primera Revista Telenews | Facebook
https://www.facebook.com/photo.php?fbid=10151064198838999&set=a.10151064197868999.431171.45765228998&type=1&theater

Coding Horror: I Was a Teenage Hacker
http://www.codinghorror.com/blog/2012/08/i-was-a-teenage-hacker.html

Russell A. Kirsch – Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Russell_A._Kirsch

Russell A. Kirsch : SEAC and the Start of Image Processing at the National Bureau of Standards – National Institute of Standards and Technology Virtual Museum
http://museum.nist.gov/panels/seac/KIRSCH.HTM

An Unexpected Ass Kicking | Blog Of Impossible Things
http://joelrunyon.com/two3/an-unexpected-ass-kicking/

My Links
http://delicious.com/ajlopez/computerhistory

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

April 15, 2015

Liqueed Project (4)

Filed under: Express, JavaScript, Liqueed, NodeJs, Test-Driven Development — ajlopez @ 8:42 pm

Previous Post
Next Post

The project:

https://github.com/liquid-co-ops/liqueed

was built using TDD (Test-Driven Development) worflow. In the previous post I showed a logic service example, implemented using tests. Today, I want to show that the MVC controllers was also coded using TDD. The controllers are JavaScript modules that expose functions as actions to be routed by Express. The actions receive and return JSON objects. They are the basis for the exposed API, to be consumed by the clients (actually, only one client, a simple single page application). For example, controllers\personapi.js starts declaring:

'use strict';

var service = require('../services/person');

It consumes the person service module.

There are associated test at test\personapi.js, its initial imports:

'use strict';

var controller = require('../controllers/personapi');

var loaddata = require('../utils/loaddata');
var db = require('../utils/db');
var async = require('simpleasync');

In the previous post, I mentioned that the test granularity I prefer for JavaScript is the module, not the function. So, all the tests in the module are execute, in declaration order. The first test is in charge of inicialization the domain model:

var persons;

exports['clear and load data'] = function (test) {
    var personService = require('../services/person');

    test.async();
    
    async()
    .then(function (data, next) { db.clear(next); })
    .then(function (data, next) { loaddata(next); })
    .then(function (data, next) { personService.getPersons(next); })
    .then(function (data, next) {
        persons = data;
        test.ok(persons);
        test.ok(persons.length);
        test.done();
    })
    .run();
};

The new thing to understand is the use of the module simpleasync, pointed by the async variable. I wrote the module to chain  functions. Each function receives two arguments: data, the success result of the previous executed function in chain, or the initial value triggered in the run chain function. And next, a callback to be invoked by the function, to execute the rest of the chain. The callback receives two arguments: err and data. So it can be used as the callback of other functions. If err is not null, the next functions in chain is not executed and the function defined in the chain fail method is run (this option is not used in the above code). In the above example  personService.getPersons(next) invokes the retrieve of the person list, using next as callback. The next chained function receives the person list in the data argument, and then, it saves it in a module variable, ready to be used by the rest of the tests.

It is not using a database. It using an in-memory domain model. That is the default “persistence”, and it is used in many of the defined tests. The initial domain model is loaded from testdata.json using the loaddata function:

{
    "projects": [
        {
            "name": "FaceHub",
            "periods": [
                { 
                    "name": "January 2014", 
                    "date": "2014-01-31", 
                    "amount": 100,
                    "assignments": [
                        { "from": "Alice", 
                            "to": "Bob", 
                            "amount": 50, 
                            "note": "Arrive earlier" },
                        { "from": "Alice", 
                            "to": "Charlie", 
                            "amount": 50 , 
                            "note": "Arrive earlier" },
                        { "from": "Bob", 
                            "to": "Alice", 
                            "amount": 60 , 
                            "note": "Arrive earlier" },
                        { "from": "Bob", 
                            "to": "Charlie", 
                            "amount": 40 , 
                            "note": "Arrive earlier" },
                        { "from": "Charlie", 
                            "to": "Alice", 
                            "amount": 35 , 
                            "note": "Arrive earlier" },
                        { "from": "Charlie", 
                            "to": "Bob", 
                            "amount": 65 , 
                            "note": "Arrive earlier" }
                    ]
                },
                { "name": "February 2014", 
                    "date": "2014-02-28", 
                    "amount": 100 }
            ],
            "team": [ "Alice", "Bob", "Charlie" ],
//....

The module personapi.js exports some functions to be used as actions:

module.exports = {
    list: list,
    get: get,
    getProjects: getProjects,
    loginPerson: loginPerson,
    getPendingShareProjects:getPendingShareProjects,
    updatePassword: updatePassword
}

Topics for the next posts: more API tests, routing of actions, persistence, etc.

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

April 8, 2015

New Month’s Resolutions: April 2015

Filed under: C Sharp, JavaScript, NodeJs, Open Source Projects — ajlopez @ 8:33 pm

It’s the time for review my March’s resolutions and write the new ones:

– Improve ClojSharp [complete] see repo
– Improve ScalaSharp [complete] see repo
– Write posts about JavaScript and Artificial Intelligence [pending]
– First published version of ClojJS [partial] see repo
– Add npm modules support to ClojJS [pending]
– First published version of BScript [partial] see repo
– Improve Chip8 emulator [pending]
– Give a full-day course on NodeJS [complete]

Additionally, I worked on:

– Update SimpleAsync, removing setImmediate [complete] see repo
– Update SimpleBus to use SimpleUnit [complete] see repo
– Improve AcquarellaJS detecting comments [complete] see repo
– Improve SimpleArgs using flags [complete] see repo
– Improve DValues [complete] see repo
– Update Complexo tests to use SimpleUnit [complete] see repo
– Project Liqueed [complete] see repo

My resolutions for the new month:

– Write posts about JavaScript and Artificial Intelligence
– Improve ClojJS
– Add npm modules support to ClojJS
– Improve Chip8 emulator
– Improve BScript

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

April 6, 2015

Material Design, Links and Resources (1)

Filed under: Android, Links, Material Design, Mobile, We, Web Development — ajlopez @ 6:26 pm

Google Design
http://www.google.com/design/

callemall/material-ui
https://github.com/callemall/material-ui

Material Design
https://material.angularjs.org/#/

Material UI – Material Design React Components
http://callemall.github.io/material-ui/#/

7 Material Design Web UI Frameworks
http://superdevresources.com/material-design-web-ui-frameworks/

Material design with Polymer – Polymer
https://www.polymer-project.org/0.5/docs/elements/material.html

Paper Elements Sampler
https://www.polymer-project.org/0.5/components/paper-elements/demo.html#paper-checkbox

Quiz App
https://polymer-topeka.appspot.com/

Welcome – Polymer
https://www.polymer-project.org/0.5/

Documentation – Materialize
http://materializecss.com/

My Links
https://delicious.com/ajlopez/materialdesign

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

April 1, 2015

Polymer: Links and Resources (1)

Filed under: Links, Polymer, Web Development — ajlopez @ 8:09 pm

Browser Compatibility – Polymer
https://www.polymer-project.org/0.5/resources/compatibility.html

Anyone have any opinion on React vs Polymer? It’s something i’ve been strugglin… | Hacker News
https://news.ycombinator.com/item?id=8050649

Riot vs React vs Polymer
https://muut.com/riotjs/compare.html

Component Interop With React And Custom Elements
http://addyosmani.com/blog/component-interop-with-react-and-custom-elements/

html – Is it possible to use Polymer inside of React? – Stack Overflow
http://stackoverflow.com/questions/26365545/is-it-possible-to-use-polymer-inside-of-react

javascript – Pros and Cons of Facebook’s React vs. Web Components (Polymer) – Programmers Stack Exchange
http://programmers.stackexchange.com/questions/225400/pros-and-cons-of-facebooks-react-vs-web-components-polymer

Paper Elements Sampler
https://www.polymer-project.org/0.5/components/paper-elements/demo.html#paper-checkbox

Quiz App
https://polymer-topeka.appspot.com/

generator-polymer
https://www.npmjs.com/package/generator-polymer

JavaScript Application Architecture On The Road To 2015 — Medium
https://medium.com/@addyosmani/javascript-application-architecture-on-the-road-to-2015-d8125811101b

Join the Web Components revolution with Polymer
https://www.ibm.com/developerworks/library/wa-polymer/

Google I/O 2014 – Polymer and the Web Components revolution – YouTube
https://www.youtube.com/watch?v=yRbOSdAe_JU

Google I/O 2014 – Unlock the next era of UI development with Polymer – YouTube
https://www.youtube.com/watch?v=HKrYfrAzqFA

Google I/O 2014 – Polymer and Web Components change everything you know about Web development – YouTube
https://www.youtube.com/watch?v=8OJ7ih8EE7s

Welcome – Polymer
http://www.polymer-project.org/

Flexible, high-strength polymer aerogels deliver "super-insulation" properties
http://www.gizmag.com/polymer-aerogel-stronger-flexible-nasa/23955/

My Links
https://delicious.com/ajlopez/polymer

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

March 27, 2015

Deep Learning: Links, News And Resources (3)

Filed under: Artificial Intelligence, Deep Learning, Links — ajlopez @ 10:43 am

Previous Post

Deep Learning Portal | NVIDIA Developer
https://developer.nvidia.com/deep-learning

static.googleusercontent.com/media/research.google.com/en//people/jeff/CIKM-keynote-Nov2014.pdf
http://static.googleusercontent.com/media/research.google.com/en//people/jeff/CIKM-keynote-Nov2014.pdf

Unsupervised Feature Learning and Deep Learning Tutorial
http://deeplearning.stanford.edu/tutorial/

11-785 DEEP LEARNING
http://deeplearning.cs.cmu.edu/

research.microsoft.com/pubs/209355/DeepLearning-NowPublishing-Vol7-SIG-039.pdf
http://research.microsoft.com/pubs/209355/DeepLearning-NowPublishing-Vol7-SIG-039.pdf

Facebook’s latest deep learning tech can quickly interpret text and video | VentureBeat | Big Data | by Jordan Novet
http://venturebeat.com/2015/03/26/facebooks-latest-deep-learning-tech-can-quickly-interpret-text-and-video/

Deep Learning, NLP, and Representations – colah’s blog
http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/

Neural networks and deep learning
http://neuralnetworksanddeeplearning.com/chap1.html

Intel’s Deep Learning Play: Next-Gen Xeon Phi Could Challenge NVIDIA GPUs – Forbes
http://www.forbes.com/sites/kurtmarko/2015/03/25/intels-deep-learning-play/

Deep Learning Tutorials — DeepLearning 0.1 documentation
http://deeplearning.net/tutorial/

Deep Learning Relies on Renormalization, Physicists Find | Quanta Magazine
http://www.quantamagazine.org/20141204-a-common-logic-to-seeing-cats-and-cosmos/

My Links
https://delicious.com/ajlopez/deeplearning

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

March 25, 2015

Computer History: Links And Resources (7)

Filed under: Computer History, Links — ajlopez @ 5:30 pm

Previous Post
Next Post

(16) Remy Sharp – Google+ – Where polyfill came from / on coining the term It was when…
https://plus.google.com/u/0/109330852418236875528/posts/3YMEPcAGBny

The History of HTML5 Mashable The History of HTML5 | The top source for social and digital news
http://mashable.com/2012/07/17/history-html5/

Larry Page’s Google Business Card, 1998 | Retronaut
http://www.retronaut.co/2010/10/larry-pages-google-business-card-c-1998/

Keynote: How the 10 Key Lessons from Java and C++History Inform the Cloud
http://www.infoq.com/presentations/Keynote-Lessons-Java-CPlusPlus-History-Cloud

Steve Wozniak’s Reaction To Surface Tablet: ‘Steve Jobs Was Reincarnated At Microsoft’
http://www.huffingtonpost.com/2012/07/10/steve-wozniak-surface-tablet-microsoft_n_1661902.html

The Evolution of the Web
http://www.evolutionoftheweb.com/

The Good Soldier LMeyerov: Socio-PLT: Principles for Programming Language Adoption
http://lmeyerov.blogspot.com.ar/2012/04/socio-plt-principles-for-programming.html

command center: Less is exponentially more
http://commandcenter.blogspot.co.uk/2012/06/less-is-exponentially-more.html

Watch Steve Wozniak Talk About the Good Old Times at Apple—Because He’s Just Awesome
http://gizmodo.com/5921081/watch-steve-wozniak-talk-about-the-good-old-times-at-apple++because-hes-just-awesome

introduction to smalltalk
http://www.cosc.canterbury.ac.nz/wolfgang.kreutzer/cosc205/smalltalk1.html

Computer History Museum | Exhibits | This Day in History: June 15
http://www.computerhistory.org/tdih/June/15/

Classical Computer Science Texts
http://e7l3.org/classics.html

Kim Scheinberg’s answer to Apple Inc.: How does Apple keep secrets so well? – Quora
http://www.quora.com/Apple-Inc-2/How-does-Apple-keep-secrets-so-well/answer/Kim-Scheinberg?srid=i1

Tektronix 4404 Smalltalk Demo – YouTube
http://www.youtube.com/watch?v=8yxCJfayW-8&feature=youtu.be

InfoQ: Interview with Simon Baker, Author of No Bull
http://www.infoq.com/articles/simon-baker-no-bull

What’s the oldest computer you’ve worked on? – Giant Bomb
http://www.giantbomb.com/forums/off-topic/31/whats-the-oldest-computer-youve-worked-on/264530/

Quotes about programming languages
http://www.scriptol.com/programming/quotes.php

Make mainframes, not war: how Mad Men sold computers in the 1960s and 1970s | Ars Technica
http://arstechnica.com/business/2012/05/make-mainframes-not-war-how-mad-men-sold-computers-in-the-1960s-and-1970s/

maxwell’s equations of software — wingolog
http://wingolog.org/archives/2009/12/11/maxwells-equations-of-software

My Links
http://delicious.com/ajlopez/computerhistory

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Older Posts »

The Shocking Blue Green Theme. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

Join 69 other followers