Recent Journalist-Programmer reads

O’Reilly Radar: Mike Loukides: “What is Data Science?”

Media Shift: Marc Glaser: “Why Journalists Should Learn Computer Programming”

Rafe Colburn: “Why journalists should learn to program” – with a suggestion on what really to be digging into – and I agree.

Resource: Hacks/Hackers

Recent reads on API Design

ACM Queue: Ken Arnold: “Programmers are People, Too”

Communications of the ACM: “API Design Matters”

JavaWorld: “Joshua Bloch: A conversation about design”

InfoQ: Joshua Bloch: “Joshua Bloch: Bumper-Sticker API Design”

InfoQ: Video: Joshua Bloch: “How to Design a Good API & Why it Matters” (and a good thread on Hacker News).

Possible Resource: APIDesign Wiki

Making Emacs with emacs-starter-kit a little more friendly

Hopefully you’ve read the docs and know that you can override settings and implement your own extensions rather easily:

Create a Lisp file under ~/.emacs.d/ specific to your username ($USER-NAME.el) or system ($SYSTEM-NAME.el) that Emacs with emacs-starter-kit will load automatically at startup.

I’ve created mine specific to my user name – ~/.emacs.d/kmarti05.el. You can determine the value of your user-name in emacs by issuing C-h-v user-login-name.

Here is the contents of my ~/.emacs.d/kmarti05.el file:

;; visible bell
(setq visible-bell nil)
;; allow selection deletion
(delete-selection-mode t)
;; make sure delete key is delete key
(global-set-key [delete] 'delete-char)
;; turn on the menu bar
(menu-bar-mode 1)
;; have emacs scroll line-by-line
(setq scroll-step 1)
;; set color-theme
(color-theme-zenburn)
(defun my-zoom (n)
"Increase or decrease font size based upon argument"
(set-face-attribute 'default (selected-frame) :height
(+ (face-attribute 'default :height) (* (if (> n 0) 1 -1) 10))))
(global-set-key (kbd "C-+")      '(lambda nil (interactive) (my-zoom 1)))
(global-set-key [C-kp-add]       '(lambda nil (interactive) (my-zoom 1)))
(global-set-key (kbd "C-_")      '(lambda nil (interactive) (my-zoom -1)))
(global-set-key [C-kp-subtract]  '(lambda nil (interactive) (my-zoom -1)))
(message "All done!")

Reads: E.W. Dijkstra: “The Humble Programmer”

E.W. Dijkstra ACM Turing Lecture 1972: “The Humble Programmer”:

Automatic computers have now been with us for a quarter of a century. They have had a great impact on our society in their capacity of tools, but in that capacity their influence will be but a ripple on the surface of our culture, compared with the much more profound influence they will have in their capacity of intellectual challenge without precedent in the cultural history of mankind. Hierarchical systems seem to have the property that something considered as an undivided entity on one level, is considered as a composite object on the next lower level of greater detail; as a result the natural grain of space or time that is applicable at each level decreases by an order of magnitude when we shift our attention from one level to the next lower one. We understand walls in terms of bricks, bricks in terms of crystals, crystals in terms of molecules etc. As a result the number of levels that can be distinguished meaningfully in a hierarchical system is kind of proportional to the logarithm of the ratio between the largest and the smallest grain, and therefore, unless this ratio is very large, we cannot expect many levels. In computer programming our basic building block has an associated time grain of less than a microsecond, but our program may take hours of computation time. I do not know of any other technology covering a ratio of 1010 or more: the computer, by virtue of its fantastic speed, seems to be the first to provide us with an environment where highly hierarchical artefacts are both possible and necessary. This challenge, viz. the confrontation with the programming task, is so unique that this novel experience can teach us a lot about ourselves. It should deepen our understanding of the processes of design and creation, it should give us better control over the task of organizing our thoughts. If it did not do so, to my taste we should not deserve the computer at all!

It has already taught us a few lessons, and the one I have chosen to stress in this talk is the following. We shall do a much better programming job, provided that we approach the task with a full appreciation of its tremendous difficulty, provided that we stick to modest and elegant programming languages, provided that we respect the intrinsic limitations of the human mind and approach the task as Very Humble Programmers.

Great Spring and Maven tutorials

TheServerSide.com: Cameron McKenzie: “The Easiest Way to Get Started with Spring” – good toe-dip to the Spring container, dependency injection and inversion control.

java.net: Will Iverson: “Building Web Applications with Maven 2” – great intro to Maven, building a small web-app, and running it with Jetty.

JavaWorld: John Ferguson Smart: “An introduction to Maven 2” – a bit more detailed then the previously mentioned Maven tutorial, but does not include Jetty unfortunately.

If I could find one tutorial that brings these elements together, with a little Eclipse IDE configuration and usage thrown in, it would be great.

Comcast releases open source software

Comcast Voices: “Comcast Labs and ISC donate IPv6 Open Source software to open Source Community”. Conversation at Hacker News.

And check out Arpit’s post about his work on Comcast’s Xfinity Remote Prototype, “Have you seen the XFinity Social Remote app?”.

Sean Blanda on Remixing the News

eMedia: Remix the News: “Remix the News: what news can learn from Last.fm and Pandora”: “there is no service that adequately customizes content to my tastes based on previous reading”

A good read with some important ideas. The only thing close I can think of is Google Reader’s recommendations which are based upon my clicking activity in Google Reader.

One of the commenters in Sean’s post added some thoughts about ‘intelligent serendipity’. ‘Intelligent Serendipity’ will be all important if we intend to help people get the news they need to hear, but might not be aware of it.

Some links on ‘intelligent serendipity’:

Jeff Jarvis: “Serendipity is unexpected relevance”

Chis Anderson: “What would it take to build a true “serendipity-maker”?”

Mathew Ingram: “In defence of newspapers and serendipity”

Inside Guardian.com: “The Random Guardian”

Somewhere in here is the news experience of the future. Helping people connect with what they are interested in, and helping them connect with what they would (should?) be interested in, but just aren’t aware of it yet. Isn’t that the essence of ‘news’?