Picasaweb / Plus Instant Upload images are stored seperately from Drive. This is unfortunate because it means you can’t use Drive APIs and tools with synced images. In particular, Drive exposes public files via well known URLs while the situation with Picasaweb is much less rosy.
XML Pretty Print is useful, since
?alt=json doesn’t seem to work on all endpoints.
This post comprises my working notes for extracting a reusable Github Pages starter site from the repo for this blog. The template site is here.
Spin off a minimal reusable starter repo prose + Jekyll/Github Pages sites.
- clean wc
Split commits that touch both content and reusable.
PATHS=_config.yml _layouts/ links.json index.html js css .gitignore css/ fonts/
# in three windows:
git log --stat --reverse --topo-order --full-diff $PATHS
git log -u --reverse --topo-order --full-diff $PATHS
rebase -i --root
In another pass, put reusable commits together at the beginning (leave content commits in place)
Clean reusable history by reorder/squash/edit
- Remove unused asset files
- Make sure initial commits don’t have any personal info in layouts
reusable-jekyll-site branch and push to Github.
git remote add
git push -u HEAD reusable:master
Make a README
I’m coding this site using Jekyll, a static site compiler written in Ruby. It’s not my first trip to the static site rodeo (ikiwiki e, Frank e1, e2), so this project might not look too exciting at first glance. What is exciting is some new workflow tools I am using which make the process of building static sites simpler and potentially more accessible to non-developers.
The first tool is Github’s Pages hosting service, which features automatic site builds using Jekyll. Whenever I push new content, it is instantly built and published to my site. This is really cool.
The second tool is prose.io an online text content editor that connects directly to your Github repos. It offers a focused content editing experience with power features such image insert/upload and linking to an existing page.
Both of these tools live “in the cloud”, and together they completely remove the need for a workstation for editing static sites. I can author new posts on my mobile phone, or on a borrowed web browser. Also, because it is built on top of the collaborative features of Github, multiple people can edit a site simultaneously.
All of which is to say, this workflow can compete directly with traditional CMSes such as Wordpress.
… with their complex code, user sessions, and database backends,
those bohemoths under whose tyranical reign web developers have
toiled for the past two decades.
Viva la revolución!
- Next: Why compile sites?
- Content collaboration over Github
- Replacing the Github’s builtin site compiler (Jekyll) with something else, and why you would want to do that besides being a masochist
- Using Prose.io with a self hosted Gitlab server. Not currently possible due to API differences between GH and GL.
Update: After the success of the first, there will be a second Washougal trip this Sunday July 28th, leaving from my house a 1pm!
You, as a reader of my blog and generally standup person, are cordially invited hereby and heretofore without further futzing about to:
a Picnic on the beautiful Washougal River
this Wednesday the 17th of July
Short pants and floaty toys recommended but not required
Eric’s house (msg me for address)
Leaving 3:00pm sharp
We have one car, msg me if you can drive
This is a follow-up to Jekyll, Pages, and Prose.io.
Why are tools like Jekyll in vogue with coders? Largely it is in response to two decades of tearony under the despotic rule of “CMSes” like Wordpress: dynamic, database-backed site interpreters with complex features such as user sessions. Most developers consider CMSes as massively overbuilt behemoths providing clunky, unnatural abstractions over what are essentially two straightforward problems: editing content and transforming that content into a website.
Compilers, rather than running on every page request like an interpreter, run once each time a change is made to the underlying content, which The raw, unprocessed content is stored and edited independently
Static site generator take the act of website creation to its bare bones, providing the minimal abstractions needed to create a site: preprocessor languages like markdown (for content) and mustache (for HTML templates). As a developer, it is a joy to use such simple tools after contending with complex dynamic behemoths such as Wordpress or Ruby on Rails. Rather than have to interact with a clunky web based CMS For a non-programmer, however, the coding tools required to edit a text-only site (text editor, VCS.
Cool Workflow for Non-programmers
The normal way to edit a static site like this is the same way you would edit any code project: using a workstation, with a text editor, a directory version controlled with Git, and a Unix terminal with Ruby. Any non-developers left in the room? Right. These tools are overkill for building static sites, and they are too complex to setup and use for mere mortals.
That’s why I’m using two workflow tools: Github Pages’ builtin Jekyll support, and prose.io, a content editor that interacts directly with your Github repos.
Prose offers a content focused editing experience accessible from any HTML5 browser (including mobile), with valuable workflow features such image insert and upload and page-to-page linking.
The experience contrast sharply alongside the laborious command line workflow used by most coders to edit content.
Some tangential research notes
I like that I can push content or edit on line and the built site will always be up to date. I also like that the build infrastructure is hosted by someone else, and I don’t have to worry about it bitrotting much.
On the down side, Jekyll is pretty much en feature freeze, as becomes quickly apparent looking through the issue tracker. I’m looking into doing more advanced stuff at build time (SASS mostly) and Jekyll, at least the Github Pages hosted version, won’t help me there. I could do my fancy build steps on a workstation, but I want to look into other options before I make a decision.
Middleman seems to be the default upgrade from Jekyll. It’s built around Rails’ Asset Pipeline evidently (am I wrong?) which means it’s a good bit more complex than Jekyll, but I’d still like to give it a chance.
Findings: Middleman repos can have arbitrary Ruby code in them. Boo. I don’t want erb, not safe. Mustache templates or similar are much better for layout.
Ok, next.. I found this compilation of tweet votes for static generators which gave me a bunch of research threads to pick up.
DocPad was the most popular such tool running on Node.js. I kinda like the idea of something made with Node since alot of the complexity of my static sites will be on the clientside and thus in JS, and this makes code sharing a possibility.
One person’s experience going from Octopress to DocPad
One encouraging point is this doc from the DocPad team on setting automatic build from a GitHub repo with the builder running on Heroku, which is pretty close to what I am looking for in a deployment story. Ideally though, I’d like a generic service which can build multiple sites.
Today I experimented with annotating slid.es presentations with SVG. It’s almost there. Following is a rough guide, for the adventurous, along with issues I found along the way.
Objective: call out features of my slides using custom floating graphics.
tl;dr; How to add annotations:
- Create an SVG image (for example and arrow) using method draw or your favorite SVG editor. It should have a transparent background.
- Insert the image into one of your slides. Note: Slid.es’ image upload form doesn’t currently accept SVG files so you will have to insert by URL. Either:
- Use a data URL. You can copy the data URL from Method under File > Save.
- Self host, for instance using the Dropbox Public folder.
How I got here
At first, I was embedding SVG using the
<svg> tag. This worked alright, and I could even mark individual shapes as fragments (incrementally shown elements), but it required switching to the code view frequently, and the slid.es UI didn’t allow interacting with the SVG image. So, it wasn’t broken per-se, but it kind of missed the point of using a GUI editor.
Then I hit on the idea of using lots of small external SVG images using the HTML
<img> tag. This would allow the SVG images to be positioned within the GUI just like other images. Unfortunately, in
This. Is. a Static Blog.
I made it using the basic Jekyll support in Github pages.
don park and I are at basement Pub drinking beers Woot
Sun Jan 5
Seems like it would be super easy to add a fall-through proxy for dev/testing without sending attachments to couchdb on every edit, using https://npmjs.org/package/grunt-connect-proxy
Fri Jan 3 2013
- Tests first
- Can I assign ID on server side based on content?
- if yes, set on save
- if not, set in client and validate on server
- How is validation of author info normally handled?
i prob need to switch to js couchapp
These are the notes for an article on tooling that I will publish after Pillowfork launches.
Too much boilerplate making this web app. Express, mongoose, mocha, angular, karma. So much files!
Was looking around at more container-ey tooling. Meteor, Firebase, Deployd. Somehow stumbled on PouchDB. Oo, it has come along. Still active!
- T: angular + pouchdb
- T: better workflow for couchapps. look at:
- couchapp js
- grunt couchapp plugin
- Work on Pillowfork first sprint
- How to test server?
- How to test client?
- Test pouchapp syncing with intermittant connectivity
- How to limit view by key?
- Works. Submitted doc patch.
- How does pouchapp syncing work?
- Very well! Flexible local vs remote
- Haven’t tested with intermittant connectivity yet
- T: Couchapp with pouchdb
- Social signin?
- Yes, via BrowserID plugin
- Also for FB/Tw via XO_Auth plugin (untested)
- seems broken on Iris. FB times out, Twitter config is read only
- what IDPs have “identity bridge” support?
- create a minimal couchapp and push it.
- test browserid support. this should work.
- build local couchdb with the browserid
brew install couchdb
To have launchd start couchdb at login:
ln -sfv /usr/local/opt/couchdb/*.plist ~/Library/LaunchAgents
Then to load couchdb now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.couchdb.plist
Or, if you don't want/need launchctl, you can just run:
🍺 /usr/local/Cellar/couchdb/1.5.0: 627 files, 14M, built in 109 seconds
- Install couch (brew install, or via packages on Ubuntu)
firstname.lastname@example.org Portland OR +15036090837
- 15 years building digital products, operating services, and supporting customers.
- Autodidactic learner with Mathematics/Physics degree.
- Support team members and users by managing issue queues, writing documentation, and automating builds, deployment, provisioning, and monitoring.
- Plan development efforts, specify functionality, and manage delivery timelines.
- Build highly usable human interfaces partnering with designer or from functional specifications.
Interests and hobbies
- Advocate for decentralized internet architecture as a social good.
- Natural STEM educator
- Maker: Electronics, structures, tools
- I Contribute code, testing, and support time to numerous open source projects
- Go and React.js patches to the filesystem and web interfaces of the Perkeep personal storage system. (2014—)
- Open source software QA/documentation volunteer for numerous open source projects (Firefox, wlroots, Dat Project)
- Lead development of ActivateHub event promotion and aggregation platform. (2011-2013)
- Senior software engineer, Sixgill (2016—2017) Green-field architected, prototyped, and launched real-time location data collection and analysis services and products in Go using gRPC, gomobile, Kubernetes, Terraform, and AWS.
- Application Engineer, Point 97 / Ecotrust (2014—2015) Created an offline-first spatial and social field survey stack as a mobile progressive web app. Designed and build a dynamic geodata and multimedia storytelling engine using Wagtail/Django with PostGIS, OpenLayers, and Leaflet. Automated provisioning and deployment of Django and PostgreSQL to cloud infrastructure using Ansible.
- Software Engineer, Janrain (2012—2013) Architected and built a Rails customer dashboard unifying various existing tools into a cohesive experience. Created provisioning APIs in core products and integrated with Zookeeper distributed configuration registry. Designed and built web UI and REST APIs for team management service using AngularJS, Scala, and Riak.
- Information Architect, PSU Communications (Nov 2005—Feb 2008) Architected a bubble-up content aggregation workflow for news, events, and faculty profiles. Developed custom Drupal distributions bundling reusable content types, views, workflows, and a customizable theme based on the University style guide.
- BS Mathematics/Physics PSU, 2010 Computer algebra, numerical modeling, graphics.
- Developer, Oregon Catholic Press (Aug—Nov 2005) Drupal-based music portal.
- Systems Administrator, Portland Public Schools (Apr-Aug 2005) Provisioned Linux servers and operated services including Moodle, Drupal, Docuwiki, and JIRA.
- Operations Engineer, Pioneer Net (Jan 2004—Feb 2005) Built and operated Linux web, email, and log servers and Cisco switching and traffic shaping hardware, monitored network health, provided tier-2 tech support, and developed a Drupal web portal.
- Consultant, Umpqua Computer Services (2000—2004) Created custom Drupal and Zencart ecommerce sites such as MLB Marbled Fabrics.
- Operate PDXHub infrastructure Produce engaging and hard-working web applications. (2004—)
- Lead development of SERPs, a web analytics product. (2011)
- Created a browser-based UI (Backbone.js) for Checkmarkable. (2011)
- Created cloudfeet.com, a graphics-rich static marketing site. (2011)
- Built a faceted browsing UI, text translation tool, and image/video asset manager for Nike’s 2008 Summer Olympics campaign using Drupal & jQuery with Sticky. (2008)
Nima, Hadron Collider 101, New Physics Theory https://video.ias.edu/node/3814
Rick at Side Door:
Rob Story: rich hickey closure concurrency talks
We Are Glacier People
from PBS Digital Studios
Math and science
- The windup girl / Paolo Bacigalupi
- Pattern recognition / William Gibson
- Pandora’s star / Peter F. Hamilton
- 1 hr photo (Robin Williams thriller)
- attack on titan
- blue gender
Similar to Ghibli
The Girl Who Leapt Through Time https://www.youtube.com/watch?v=ZVtftNwjVW4 http://www.rottentomatoes.com/m/the_girl_who_leapt_through_time/
Children Who Chase Lost Voices https://www.youtube.com/watch?v=_enFiTiLo_Y http://www.rottentomatoes.com/m/hoshi_o_ou_kodomo_2011/
A Letter to Momo