Monday, February 9, 2015
pmarca - Marc Andreessen's blog as an ebook
Click image above to skip reading this post and go grab the book :)
Gotta like the Venn diagram on that page.
Saw this today:
Marc Andreessen, a.k.a. @pmarca on the internets, has made many of the good posts from his blog available as an ebook - which is free to download. You can get it here:
The Pmarca Blog Archive Is Back… as an Ebook
The title of the book (in the PDF) is:
The Pmarca Blog Archives
(select posts from 2007-2009)
Excerpt from Marc Andreessen's page on Wikipedia:
[ He is best known as coauthor of Mosaic, the first widely used Web browser; as cofounder of Netscape Communications Corporation;[3] and as cofounder and general partner of Silicon Valley venture capital firm Andreessen Horowitz. He founded and later sold the software company Opsware to Hewlett-Packard. Andreessen is also a cofounder of Ning, a company that provides a platform for social networking websites. ... Andreessen is one of only six inductees in the World Wide Web Hall of Fame announced at the first international conference on the World Wide Web in 1994 ]
Just downloaded the book and scanned the table of contents to get an idea of what it contains. I found that many of the post were ones which I had read on his blog some years earlier, when he was actively blogging. At the time I had thought that the posts were really good, and still do. They're probably worth reading - by downloading the book - for anyone who has not read them before, and even for people who have. I'm going to read the book myself in the next few days.
- Vasudev Ram - Dancing Bison Enterprises Signup to hear about my new products.Contact Page
Thursday, December 5, 2013
Added a Table of Contents feature to XMLtoPDFBook
XMLtoPDFBook is a publishing tool I created, that allows you to create simple PDF ebooks from text content in XML files.
I had blogged about XMLtoPDFBook earlier, here:
Create PDF books with XMLtoPDFBook
and here:
XMLtoPDFBook now supports chapter numbers and names
Today I added some support for a Table of Contents feature to XMLtoPDFBook. Here is the updated program:
# XMLtoPDFBook2.py
# A program to convert a book in XML text format to a PDF book.
# Uses xtopdf and ReportLab.
# Author: Vasudev Ram - http://www.dancingbison.com
# Version: v0.2
#--------------------------------------------------------------------
# imports
import sys
import os
import string
import time
from PDFWriter import PDFWriter
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
#--------------------------------------------------------------------
# global variables
sysargv = None
#--------------------------------------------------------------------
def debug(message):
sys.stderr.write(message + "\n")
#--------------------------------------------------------------------
def get_xml_filename(sysargv):
return sysargv[1]
#--------------------------------------------------------------------
def get_pdf_filename(sysargv):
return sysargv[2]
#--------------------------------------------------------------------
def XMLtoPDFBook():
debug("Entered XMLtoPDFBook()")
global sysargv
# Get command-line arguments.
xml_filename = get_xml_filename(sysargv)
debug("xml_filename: " + xml_filename)
pdf_filename = get_pdf_filename(sysargv)
debug("pdf_filename: " + pdf_filename)
# Parse the XML file.
try:
tree = ET.ElementTree(file=xml_filename)
debug("tree = " + repr(tree))
except Exception:
sys.stderr.write("Error: caught exception in ET.ElementTree(file)")
sys.exit(1)
# Get the tree root.
root = tree.getroot()
debug("root.tag = " + root.tag)
if root.tag != "book":
debug("Error: Root tag is not 'book'")
sys.exit(1)
# Initialize the table of contents list.
toc = []
# Initialize the chapters list.
chapters = []
# Traverse the tree, extracting needed data into variables.
debug("-" * 60)
for root_child in root:
if root_child.tag != "chapter":
debug("Error: root_child tag is not 'chapter'")
sys.exit(1)
chapter = root_child
#debug(chapter.text)
chapters.append(chapter.text)
try:
chapter_name = chapter.attrib['name']
except KeyError:
chapter_name = ""
toc.append(chapter_name)
debug("-" * 60)
# Create and set some fields of a PDFWriter.
pw = PDFWriter(pdf_filename)
pw.setFont("Courier", 12)
pw.setFooter("Generated by XMLtoPDFBook. Copyright 2013 Vasudev Ram")
# Write the TOC.
pw.setHeader("Table of Contents")
chapter_num = 0
debug("Chapter names")
for chapter_name in toc:
debug(chapter_name)
chapter_num += 1
pw.writeLine(str(chapter_num) + ": " + chapter_name)
pw.savePage()
# Write the chapters.
chapter_num = 0
for chapter in chapters:
chapter_num += 1
pw.setHeader("Chapter " + str(chapter_num) + ": " + toc[chapter_num - 1])
lines = chapter.split("\n")
for line in lines:
pw.writeLine(line)
pw.savePage()
pw.close()
debug("Exiting XMLtoPDFBook()")
def main():
debug("Entered main()")
global sysargv
sysargv = sys.argv
# Check for right number of arguments.
if len(sysargv) != 3:
sys.exit(1)
XMLtoPDFBook()
debug("Exiting main()")
#--------------------------------------------------------------------
if __name__ == "__main__":
try:
main()
except Exception, e:
sys.stderr.write("Error: caught Exception" + str(e))
sys.exit(1)
#--------------------------------------------------------------------
You can run it as follows:
python XMLtoPDFBook2.py vi_quickstart2.xml vi_quickstart2.pdfwhere I've used my vi quickstart tutorial, first written for Linux For You magazine, as the input XML file.
Here is a screenshot of the first page of the resulting PDF ebook - the Table of Contents:
And here is a screenshot Chapter 3 of the book:
I've pushed the code (as file XMLtoPDFBook2.py) to my xtopdf project on Bitbucket.
Enjoy.
- Vasudev Ram - Dancing Bison Enterprises
Contact Page
Sunday, November 17, 2013
Book review: Instant Flask Web Development
Flask is a Python micro-framework that is fairly popular.
I had first blogged about it a couple of years ago, here:
Flask, new Python microframework
Recently, I had been working on a commercial Flask project for some time, when Packt Publishing asked me if I would review one of their books, Instant Flask Web Development. I did it. The review is below.
Review of book "Instant Flask Web Development", author Ron DuPlain, publisher Packt Publishing:
The book seems to be meant for people who already have some experience with Python.
Some parts of it that cover using Twitter Bootstrap and CSS in Flask templates, will also need knowledge of those topics.
Starts with a simple Hello World Flask app and explains some of the concepts involved.
Some of the topics covered in the book are:
- making a simple Flask app
- mapping URLs to functions (a.k.a. routing)
- HTTP request and response handling
- using databases, static file handling, and form and file uploads
- database CRUD (Create / Read / Update / Delete) operations
- sessions and authentication
- error handling
- deploying Flask apps using nginx and gunicorn
Uses Flask-Script to create command line tools to manage the Flask apps created.
Flask-Script is a Flask extension that provides support for writing external scripts in Flask.
(Flask has an facility for writing extensions that add to the functionality of the base Flask package, and there are multiple such extensions available.)
The book then starts on a scheduling application, which is used as a tutorial to illustrate various Flask features. This app allows the user to Create, Read, Update, Delete (i.e. CRUD) and List appointment records.
It shows how the use the route decorator of the Flask app object, to map various URLs that the app supports, to functions of the app that implement the actions specified by those URLs.
I noticed what seems to be an error in this section; in the middle of the code that maps the URLs to functions, there is this line:
@app.route(...) and def appointment_edit(...).which is probably an inadvertent copy/paste from some of the text. But it would make the code fail to run, if copied as is from the ebook.
They do specify URLs (on the Packt site) from where you can download the source code for the program examples in book, though.
The use of the Flask url_for() function is described.
There appears to be an error in this section of code:
@app.route('/appointments/<int:appointment_id>/')
def appointment_detail(appointment_id):
edit_url = url_for('appointment_edit',
appointment_id=appointment_id)
# Return the URL string just for demonstration.
return edit_url
The function is called appointment_detail, but the url_for function is passed an argument 'appointment_edit'. In this case it would work, because it is just returning the URL string for display, not actually doing the appointment detail display.Then it moves on to talk about how to handle different HTTP methods in Flask, as defined by the HTTP protocol, including GET, POST, etc.
It also mentions that instead of using the Flask route decorator, you can use a method, app.add_url_rule, as an alternative.
The section on using Jinja templates requires knowledge of CSS and JavaScript, and also Twitter Bootstrap and jQuery. The book gets a bit into Jinja features like macros.
Simple, Intermediate and Advanced sections are interspersed through the book (except for the first few sections, which are all Simple).
The book shows how to use some of Flask's error handling techniques, including how to generate a custom error page.
It ends with describing how to deploy a Flask app to production using nginx and gunicorn.
Other posts about Flask on this blog.
Other posts about Python on this blog.
- Vasudev Ram - Consulting and training on Python, Linux, open source
Wednesday, October 30, 2013
The book, REMOTE, by 37signals, is out
By Vasudev Ram
The book titled REMOTE, by 37signals, is out.
I had read about it some time ago when they announced they were writing it.
Today I got an email from them announcing that the book is available (in hardcover, ebook and audio book formats, interestingly). The book is about the advantages of remote working / telecommuting, which 37signals uses.
I don't agree with all the statements that 37 Signals makes, but this book should be interesting.
This is the site for the REMOTE book.
There are a few sample chapters available for online reading:
Hey, Marissa Mayer, You’ve Got it Wrong: Telecommuting Isn’t A Bad Thing. It’s The Future. (by Jason Fried)
Why Face-To-Face Meetings Are Overrated. (by Jason Fried)
Cabin fever.
Reviews of the REMOTE book.
- Vasudev Ram - Dancing Bison Enterprises
Contact VR
Tuesday, October 1, 2013
Book: Invisible Engines - How Software Platforms Drive Innovation and Transform Industries
By Vasudev Ram
Book: Invisible Engines
Just saw the above book via a post by Ryan Sarver (ex-Director of
Platform at Twitter):
What is a platform
Saw his post via this post by "A VC" Fred Wilson (@fredwilson):
Lessons learned
Seems like Invisible Engines may be an interesting book. I've only read a few pages myself so far.
You can download the book here:
Invisible Engines book (PDF)
The Invisible Engines book is published by MIT Press.
Vasudev Ram
Dancing Bison Enterprises
Software consulting and training
(Python, Linux, PDF, open source, ...)
- Dancing Bison Enterprises
- Blog: jugad2
- Projects on Bitbucket
- Profile
Contact Dancing Bison Enterprises
Monday, June 17, 2013
XMLtoPDFBook now supports chapter numbers and names
By Vasudev Ram
I've added support for chapter numbers and names to XMLtoPDFBook, which I blogged about recently. XMLtoPDFBook enables you to create simple PDF ebooks from chapters stored as text in an XML file.
The chapter numbers and names are printed in the header of the PDF file created. Chapter numbers are added automatically, starting from 1, and incremented by 1 for each chapter. For chapter names, you have to change the chapter elements in the XML file from the earlier format, which had no attributes for the chapter element, to add an attribute called 'name', with its value being the chapter name.
Earlier format for the chapter element:
<chapter>
New format for the chapter element:
<chapter name="chapter_name">
where you replace "chapter_name" with the name of each chapter, as desired.
That is the only change needed. The (updated) XMLtoPDFBook program takes care of the rest.
Chapter names, though supported, are optional. If a chapter element has no name attribute, it is not an error. No chapter name will be printed in the header for that chapter.
You can run XMLtoPDFBook the same way as I said in my first post about it:
python XMLtoPDFBook.py vi_quickstart.xml vi_quickstart.pdf
For viewing the PDF file, you may want to try using either Foxit PDF Reader or NitroReader. I've used Foxit Reader a lot, and it is fairly good. Just started trying NitroReader (*).
Here is a screenshot of page 1 of the generated PDF file, vi_quickstart.pdf, in NitroReader (right-click to open in a new tab and view larger size):
And here is a screenshot of page 5 of the same PDF file, vi_quickstart.pdf, in Foxit PDF Reader (right-click to open in a new tab and view larger size):
I also added some more error handling to the program.
I've uploaded XMLtoPDF to my Bitbucket repository for xtopdf, since it is now a part of my xtopdf toolkit. You can download it from here.
Incidentally, I saw on the NitroReader site that it was PDF's birthday this month; the PDF format is now 20 years old.
(*) And finally, it was a bit interesting to me to remember that NitroPDF (from the same company as NitroReader) was one of the topics of my very second blog post on my earlier blog, jugad's Journal :-). I ran that blog for about 3 years before moving to this one (which you are reading now), on Blogger, due to the takeover of LiveJournal by some other company.
- Vasudev Ram - Dancing Bison Enterprises
Contact me
Saturday, June 15, 2013
Create PDF books with XMLtoPDFBook
XMLtoPDFBook is a program that lets you create simple PDF books from XML text content. It requires Python, ReportLab and my xtopdf toolkit for PDF creation.
(Use ReportLab v1.21, not the 2.x series; though 2.x has more features, xtopdf has not been tested with it; also, those additional features are not required for xtopdf.)
XMLtoPDFBook.py is released as open source software under the BSD license, and I'll be adding it to the tools in my xtopdf toolkit.
Here's how to use XMLtoPDFBook:
In a text editor, create a simple XML template for the book, like this:
<?xml version="1.0"?>
<book>
<chapter>
Chapter 1 content here.
</chapter>
<chapter>
Chapter 2 content here.
</chapter>
</book>
Add as many chapter elements as you need.Then write or paste the text of one chapter inside each chapter element, in sequence.
Now you can convert the book content to PDF using this program, XMLtoPDFBook:
#--------------------------------------------------
# XMLtoPDFBook.py
# A program to convert a book in XML text format to a PDF book.
# Uses xtopdf and ReportLab.
# Author: Vasudev Ram - http://www.dancingbison.com
# Version: v0.1
#--------------------------------------------------
# imports
import sys
import os
import string
import time
from PDFWriter import PDFWriter
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
#--------------------------------------------------
# global variables
sysargv = None
#--------------------------------------------------
def debug(message):
sys.stderr.write(message + "\n")
#--------------------------------------------------
def get_xml_filename(sysargv):
return sysargv[1]
#--------------------------------------------------
def get_pdf_filename(sysargv):
return sysargv[2]
#--------------------------------------------------
def XMLtoPDFBook():
debug("Entered XMLtoPDFBook()")
global sysargv
xml_filename = get_xml_filename(sysargv)
debug("xml_filename: " + xml_filename)
pdf_filename = get_pdf_filename(sysargv)
debug("pdf_filename: " + pdf_filename)
pw = PDFWriter(pdf_filename)
pw.setFont("Courier", 12)
pw.setHeader(xml_filename + " to " + pdf_filename)
pw.setFooter("Generated by ElementTree and xtopdf")
tree = ET.ElementTree(file=xml_filename)
debug("tree = " + repr(tree))
root = tree.getroot()
debug("root.tag = " + root.tag)
if root.tag != "book":
debug("Error: Root tag is not 'book'")
sys.exit(2)
debug("=" * 60)
for root_child in root:
if root_child.tag != "chapter":
debug("Error: root_child tag is not 'chapter'")
sys.exit(3)
debug(root_child.text)
lines = root_child.text.split("\n")
for line in lines:
pw.writeLine(line)
pw.savePage()
debug("-" * 60)
debug("=" * 60)
pw.close()
debug("Exiting XMLtoPDFBook()")
#--------------------------------------------------
def main():
debug("Entered main()")
global sysargv
sysargv = sys.argv
# Check for right number of arguments.
if len(sysargv) != 3:
sys.exit(1)
XMLtoPDFBook()
debug("Exiting main()")
#--------------------------------------------------
if __name__ == "__main__":
main()
#--------------------------------------------------
Here is an example run of XMLtoPDFBook, using my vi quickstart article earlier published in Linux For You magazine:
python XMLtoPDFBook.py vi_quickstart.xml vi_quickstart.pdf
This results in the contents of the article being published to PDF in the file vi_quickstart.pdf.
- Vasudev Ram - Dancing Bison Enterprises
Contact me
Wednesday, May 1, 2013
PDF in a Bottle - creating PDF using xtopdf, ReportLab, Bottle and Python
pdf_bottle.py is a program I wrote that allows you to create a PDF file from text, over the web, by entering your text into a form and submitting it.
Here is the program:
# pdf_bottle.py
# Description: Program to generate PDF from text, over the web,
# using xtopdf, ReportLab and the Bottle web framework.
# It can be used to create short, simple PDF e-books.
# Author: Vasudev Ram - http://dancingbison.com
# Copyright 2013 Vasudev Ram
# Tested with Python 2.7.
# Version: 0.1
# Dependencies:
# xtopdf - https://bitbucket.org/vasudevram/xtopdf
# bottle - http://bottlepy.org
# ReportLab - http://www.reportlab.com/ftp/reportlab-1.21.zip
# Python - http://python.org
from PDFWriter import PDFWriter
from bottle import route, request, run
@route('/edit_book')
def edit_book():
return '''
<form action="/save_book" method="post">
PDF file name: <input type="text" name="pdf_file_name" />
Header: <input type="text" name="header" />
Footer: <input type="text" name="footer" />
Content:
<textarea name="content" rows="15" cols="50"></textarea>
<input type="submit" value="Submit" />
</form>
'''
@route('/save_book', method='POST')
def save_book():
try:
pdf_file_name = request.forms.get('pdf_file_name')
header = request.forms.get('header')
footer = request.forms.get('footer')
content = request.forms.get('content')
pw = PDFWriter(pdf_file_name)
pw.setFont("Courier", 12)
pw.setHeader(header)
pw.setFooter(footer)
lines = content.split('\n')
for line in lines:
pw.writeLine(line)
pw.savePage()
pw.close()
return "Done"
except Exception:
return "Not done"
def main():
run(host='localhost', port=9999)
if __name__ == "__main__":
main()
To run it, you need to have Python, the open source version of ReportLab, my xtopdf toolkit and the Bottle Python web framework installed.
Here is a guide to installing and using xtopdf.
For help with installing the other products, consult their respective sites, linked above.
Then run the program with this command:
python pdf_bottle.py
Then, in a browser window, go to localhost:9999
Enter the details - PDF file name, header, footer and text content - in the form, then click Submit.
The PDF file will be generated in the same directory from where you ran the Python program.
This is the first version, and has been tested only a bit. It you find any issues, please mention them in the comments.
Various improvements are possible, including sending the generated PDF to the user's browser, or providing a link to download it (better), and I'll work on some of them over time.
P.S. Excerpt from the Bottle framework site:
[
Bottle is a fast, simple and lightweight WSGI micro web-framework for Python. It is distributed as a single file module and has no dependencies other than the Python Standard Library.
Routing: Requests to function-call mapping with support for clean and dynamic URLs.
Templates: Fast and pythonic built-in template engine and support for mako, jinja2 and cheetah templates.
Utilities: Convenient access to form data, file uploads, cookies, headers and other HTTP-related metadata.
Server: Built-in HTTP development server and support for paste, fapws3, bjoern, Google App Engine, cherrypy or any other WSGI capable HTTP server.
]
- Vasudev Ram - Dancing Bison Enterprises
Wednesday, November 28, 2012
PyBooklet, to create PDFs with 2 pages per sheet for printing
Interesting idea.
PyBooklet may be a useful complement to my PDFBook utility (a part of my xtopdf toolkit), which can create PDF books from a set of text file chapters, and other such tools, to create printed books from PDF files, with less use of paper, which is better for the environment.
- Vasudev Ram
www.dancingbison.com
Thursday, November 22, 2012
The Readium project: open source EPUB 3 reference implementation
Readium | Digital Publishing meets Open Web
One of their goals is to provide an open source reference implementation of an EPUB3 reader in the browser. They have a Chrome extension which does that.
Excerpt from the site:
(
Readium Open Source Initiative Launched to Accelerate
Adoption of EPUB 3: ACCESS, Adobe, Barnes & Noble, Copia,
Google, Kobo/Rakuten, O’Reilly, Samsung, Sony, others
support project to advance universal digital publishing
format
New York, NY, February 13, 2012 -The International Digital
Publishing Forum (IDPF) today announced the Readium Project,
a new open source initiative to develop a comprehensive
reference implementation of the IDPF EPUB® 3 standard. This
vision will be achieved by building on WebKit, the widely
adopted open source HTML5 rendering engine. A quote sheet
with quotes from the following is available at http://idpf.org/
readium-support : ACCESS, Adobe, Anobii, Apex CoVantage,
Assoc. American Publishers (AAP), Barnes & Noble, Bluefire
Productions, BISG, Copia, DAISY, EAST, EDItEUR, Evident Point,
Google, Incube Tech, Kobo/Rakuten, Monotype, O’Reilly,
Rakuten, Safari Books Online, Samsung, Sony, VitalSource,
Voyager Japan. For more information about the project,
including how to participate and links to downloads and source
code, visit http://readium.org .
)
Wednesday, October 24, 2012
epubmaker, Project Gutenberg tool to convert between HTML, ReST, to EPUB, Kindle, PDF
epubmaker is a Project Gutenberg tool to convert HTML or restructured text to EPUB, Kindle, PDF formats.
- Vasudev Ram - Dancing Bison Enterprises
Monday, October 15, 2012
O'Reilly Bookworm closed but other options exist
Inspired by nature.
- dancingbison.com | @vasudevram | jugad2.blogspot.com
Converting PDF to EPUB ...
Had a need recently to convert a PDF file to EPUB format to read it on my Android mobile (because I tend not to like heavyweight software such as that from Adobe, particularly for mobile, and I have FBReader on my mobile).
So googled for "PDF to EPUB" and found a few links:
http://www.2epub.com/
http://lifehacker.com/5509965/how-can-i-convert-pdfs-and-other-ebooks-to-the-epub-format
http://ebook.online-convert.com/convert-to-epub
Checking out some of those methods.
- Vasudev Ram - Dancing Bison Enterprises
Saturday, September 22, 2012
How to create an ebook with Pandoc, the swiss-army-knife conversion tool
Pandoc is a tool that lets you convert many document formats to many other document formats.
I had blogged or tweeted about Pandoc some time ago, but saw this feature only today:
Pandoc can be used to easily create EPUB format ebooks.
I was interested to see that the process of creating an EPUB ebook using Pandoc is similar (in one respect only, that is one book chapter per file or directory *) to the process of creating PDF ebooks with xtopdf, my PDF creation toolkit.
Of course, the Pandoc method supports many more features (including markup, metadata, etc.) than xtopdf does. But xtopdf is very easy if you just want a simple set of text chapters converted to a single PDF ebook.
* One chapter per file for xtopdf, one chapter per directory for Pandoc.
- Vasudev Ram - Dancing Bison Enterprises
Sunday, September 9, 2012
Leanpub, publish ebooks early/often, higher royalties
LeanPub.com lets you publish ebooks early and often (i.e. versions of an evolving book) and earn higher royalties.
Their tagline:
"Publish Early, Publish Often
Self-publish your book as you write it, and earn great royalties."
Interesting idea.
They give 90% royalties. They take a 10% cut plus 50 cents.
- Vasudev Ram - Dancing Bison Enterprises
Sunday, August 26, 2012
Lean publishing may be an idea ...
Decide for yourself.
Friday, July 27, 2012
The C Book - free book on the C language
Saw this via a Zed Shaw site.
The C Book
It's a free book to learn C programming. There is both an online HTML version and a downloadable PDF version. Scanned initial parts of the book briefly, it seems good, though it is a bit dated - won't cover the latest additions to the C standard.
Yes, I know C is old, and there are tons of other resources already about it, but it's still a great language and I'll always like it (it was one of the first languages I learnt, and I used it a lot, and owed my living a good amount to it), and there are still lots of people who will still be new to C and want to learn it, so I'm blogging about it. So there :)
- Vasudev Ram - Dancing Bison Enterprises
Monday, July 2, 2012
Why get it free when you can pay? :)
Why Louis CK and Amanda Palmer are the future of content | Tech News and Analysis
Nice one. I should mention that I like this approach, am not against it, as may seem from the title, to some people. Basically, I'm in favor of anything that works out well for all involved parties, and this is an innovative approach. Also see Paulo Coelho on more on the same - publicising pirated sites for his ebooks resulted in more sales. I blogged about that quite a while back, maybe on my earlier blog Jugad's Journal.
- Vasudev Ram
www.dancingbison.com
Saturday, April 21, 2012
Stimulating links on selling tech ebooks and pricing
Here they are, below:
The links are not all about the exact same topic, but do overlap some; the first is a story of a guy's experience selling his tech ebook (with moderate success), and I saw the other links in comments in the first link (a Hacker News thread).
http://news.ycombinator.com/item?id=3867463
http://sachagreif.com/lessons-learned-from-an-
ebook-launch/
http://blog.asmartbear.com/perfect-pricing.html
http://blog.asmartbear.com/higher-pricing.html
http://www.marketingquoteoftheday.com/pablo-
picasso-on-pricing-and-price-anchoring/
- Vasudev Ram
www.dancingbison.com
Monday, March 26, 2012
Rich-layout ebooks with EPUB3, HTML5 and CSS3
http://www.ibm.com/developerworks/library/x-richlayoutepub/index.html
The article is by Liza Daly, VP Engineering, Safari Books Online. It also links to an earlier EPUB tutorial by Liza, which uses Java and Python.
- Vasudev Ram
www.dancingbison.com
twitter.com/vasudevram





