Safari Books Online's company blog publishes developer tutorials on JavaScript frameworks, D3.js, Node.js, Haskell, Rust, and Arduino.
HN links it for its technical tutorials, such as the D3.js visualizations, Backbone pub/sub, and Rust serialization posts, and for announcements about the redesigned Safari.
For me combing the best parts of bash and ipython is the way to go. Up to now this seems more comfortable to me than using subprocess in python or this haskell aproach which needs to be aware of every programme output to give what it promises. You can easily copy big parts of existing bash scripts and e.g. add error handling in the python way :) Even I think for loops/list comprehensions are betten than the strange bash syntax.
And here a short example::
#!/usr/bin/env ipython3
#
# 1. echo "#!/usr/bin/env ipython3" > scriptname.ipy # creates new ipy-file
#
# 2. chmod +x scriptname.ipy # make it executable
#
# 3. starting with line 2, write normal python or do some of
# the ! magic of ipython, so that you can use shell commands
# within python and even assign their output to a variable via
# var = !cmd1 | cmd2 | cmd3 # enjoy ;)
#
# 4. run via ./scriptname.ipy - if it fails with recognizing % and !
# but parses raw python fine, please check again for the .ipy suffix which must be there!
#
# ugly example, please go and find more in the wild
files = !ls *.* | grep "y"
for file in files:
!echo $file | grep "p"
# sorry for this nonsense example ;)
# it's even possible to access the output of a command by outputvariable.s, .p or .n
# see file:///usr/share/doc/ipython-doc/html/interactive/reference.html#system-shell-access
Better take a look here, it's more…
A counter-example is Safari To Go - Safari Book Online's iPad app, which they withdrew due to bad review: http://blog.safaribooksonline.com/2010/11/24/ipad-app-safari-to-go-update-november-24-2010/
Most people agreed that PhoneGap was the wrong framework. It's not that PhoneGap is intrinsically bad - it is not - but that it is not for every task, and more likely, it is not good for most tasks that are more than a short load-lookup-leave cycle.
The interface is being redone. I don't know how they are planning to cut-over though: https://www.safaribooksonline.com/
Edited: They just announced how the cutover will work: http://blog.safaribooksonline.com/2014/07/08/new-safari/
I think JavaScript might be most successful on Arduino for the same reason - it's a platform with which most tinkerers are familiar.
http://blog.safaribooksonline.com/2013/07/16/javascript-powered-arduino-with-johnny-five/
Here's a follow-up article by the same author on Network Communication and Serialization in Rust: http://blog.safaribooksonline.com/2014/01/28/network-communication-serialization-rust/
This tutorial is not bad at all: Building Responsive Visualizations with D3.js [1]
[1]: https://blog.safaribooksonline.com/2014/02/17/building-responsible-visualizations-d3-js/