A scriptable future for the Web and home servers

I’m organizing papers today, and I keep finding dev-notes and plans for my big “home server” idea about being able to run all your “cloud services” on your own hardware with all the data protection this entails. But what is easy to imagine can be difficult to bring to reality. There are a lot of technological aspects to figure out (dyndns, mail, www, filesharing, apps?), but there is also the lack of interest in privacy matters of the general public.

The freedom of computing and the Internet is a question that depends on technology but also on public relations. I recently came up with a plan for one possible way to get FOSS into homes. PR is indicated in brackets.

  • Phase 0: Develop FOSS clones for most popular cloud software. [100% done]
  • Phase 1: Non-tech-savvy users learn to deploy “own server” in the cloud based on a FOSS software stack. [2015]
    (Run your own Google with just one click! Customize and automate everything. Don’t let anyone tell you what to do on the Internet.)
  • Phase 2: Non-tech-savvy users move their existing “own servers” to run on their “home server.” [2020]
    (The Internet is distributed; be the Internet. Who got ur logs? Protect your privacy and that of your family and friends. Political discussion is not a crime. Unlimited storage—just add USB drives to the RAID. )

I think the two-step process for the home server is much more likely, even realistic. Both phases involve transitions to better features. The transition to Phase 1 will be interesting for power users, but if everything is scripted, then even non-tech users could “run their own” thing. For it to happen, we need to get to “same thing as … but with more ….”  Only after we have a mature system of own apps can we then move to Phase 2 where we say: “same thing as own, but at home.”

I’m a big believer in humanity and our ability to learn adapt and advance so I think we will be able to “domesticate” the power of computing as we previously domesticated fire and electricity.

Linear algebra tutorial in four pages

I just pushed an update to the Linear algebra explained in four pages tutorial.

Linear algebra tutorial in four pages thumbnail

Anyone who has an exam with lots of $A\vec{x}=\vec{b}$ stuff on it coming up should check it out because it covers: vector operations, matrix operations, linear transformations(matrix-vector product, fundamental vector spaces, matrix representation), solving systems of linear equations (the RREF stuff), matrix inverse, eigenvalues.

UPDATE: I found another excellent tutorial which I think you should also read, especially if you are a visual person. A Geometric Review of Linear Algebra by Prof. Eero P. Simoncelli  (discuss on HN if you are a procrastinating person). If you’re a studious person, you’ll also go to en.wikibooks.org/wiki/Linear_Algebra and practice solving problems. To become a powerful person, don’t look at the solution until you’ve attempted the problem (with pen and paper) for at least five minutes.

UPDATE: I found some other useful short tutorials, like this short review of linear algebra from Stanford and another one from Boulder which both cover interesting details and bring a new perspective.

Open book writing and typo workflow

Open is better than closed because when you work in the open the whole world can help you (or at least the portion of the world that cares about what you are doing). For books in particular, readers can be tremendously helpful by submitting typo fixes to the book. But how can users submit typos? Surely there is something better than email…

Today I saw a very interesting workflow for reader contributions on the Advanced R programming book website by Hadley Wickham. The book  is being developed on github using the Jekyll static site generator. Each page has an “Edit this” link on the right side:


The url for that button is:


Clicking on that takes you to github and a special prompt to create a fork:

Next you can make the change:


And finally the UI offers you to do a pull request:

This is still a complicated process for the reader (3-steps, one feature branch, one pull request), but from the author side this is awesome! You just write and then manage incoming pull requests that improve your content.

Anyone writing their blog posts in the open on github should consider adding the /edit/ links.


Weekend project: find a way to automate this workflow process so readers don’t need to have github accounts. Maybe I could create a “shared” github account “ivans-readers,” allow for login-less-editing to happen on my own server and then see the pull requests coming from ivans-readers on the main repo.