The cursor is meant to tell the user the current location.
The human visual system has a pre-cortical lag of roughly 50-90 ms (read more about P1).
That's how long it takes from something changing on the screen to cause an avalanche of photons to barrel towards your eyeball, be phototransduced and processed by several stages of cells in the retina, finally causing retinal ganglion cells to fire an action potential down their axons through the optic nerve, make its way to a processing relay station called the LGN, with those cells firing action potential down their axons, with those spikes finally ending up in the primary visual cortex.
By ~150 ms, our brains have processed the visual input enough to perform a non- trivial ammount of object recognition.
The default blink rate for CodeMirror is 530ms.
That's as slow as molasses in January!
Say that I've been distracted and looked away from the screen. When I look back at the scree, half of the time it will take 3 times longer for me to get the information that I want ("where's my cursor") than if that cursor was clearly visible at all times. Now it's not always that bad, because sometimes my gaze will land on the screen and even though the cursor isn't visible, it appears in a few milliseconds, and so it takes just as long as if the cursor was there the whole time. But if I happen to be particularly unlucky (there's a reason I don't gamble), it can take 6 times longer.
Try it out
Make the change stick
IPython has a notion of profiles to allow for different kinds of configurations.
If this is news to you, you've probably just been using the
and not known it. In the shell, run the
ipython profile create command to be
sure (don't worry, if you alreay have a profile, this won't overwrite it). Now
ipython locate profile will tell you the directory which contains all of the
configuration for the
!ipython profile create
!ipython locate profile
x = !ipython locate profile
db/ history.sqlite history.sqlite-journal ipython_config.py ipython_nbconvert_config.py ipython_notebook_config.py log/ pid/ security/ startup/ static/
There's a lot of stuff there, but we just need to add our one line to the end of the file in
!echo "codemirror.defaults.cursorblinkrate=0" >> custom.js
"I want it all and I want it now!"
You say you don't want to save your current notebook and reload it to get the updated CodeMirror settings? You just want all cells in the current notebook to change their behavior? Well, OK, Freddie:
I hope you enjoyed this little IPython customization detour. If you want more information about how to get rid of blinking in other programs you use every day, here is an invaluable resource on that matter.
Remember, blinking in user interfaces is bad, but blinking in vision is very important.read more
I'll be in Austin, TX for SciPy next week, and I'll be giving an updated talk about tools for reproducible research.
What follows is the abstract of a talk that I really wanted to give and submitted to the general track which did not get in. I care deeply about this topic, and I'm hoping to have conversations with others about it. The talk was deferred to a poster, so if you don't bump into me at other times, seek me out during the poster session (mine's poster #15, 10:35 AM - 11:35 AM on June 27th). This post is intended as a pre-conference warm up to that.
Navigating the Scientific Python Communities - the missing guide.
The awful truth: our newcomers have a deluge of options to wade through as they begin their journey. What tools are available, how do I install them, how do I make them work together -- all hard questions facing a budding scipythonista.
On developer-friendly platforms, the popular approach is to just install numpy, scipy, matplotlib, and ipython using package management facilities provided by the operating system. On Mac OS X and Windows, the least painful, bootstrapping approach is to use a Python distribution like Python(X,Y), EPD, Anaconda, or Sage.
Both of these paths obscure a reality which must be stated explicitly: the development of packages is fundamentally decentralized. The scientific python ecosystem consists of a loose but thriving confederation of projects and communities.
The chaos of installation options and lack of centralization around a canonical solution, which on the surface appears to be a point of weakness that is detrimental to community growth, is a symptom of one of its greatest strengths. Namely, what we have is a direct democracy for user-developers. They vote with their feet: filing bug reports, testing pre-release versions, participating in mailing lists, writing and reviewing pull requests, and advertising the tools they use in talks, papers, and conversations at conferences.
I will discuss why this is the case, why this is a good thing, and how we can embrace it. The talk will present the ethos and expectations of an effective newcomer, as well as resources and strategies for incremental progress toward becoming a master scipythonista.read more
So, following up on my transition to pelican, here's a little help for navigating a pelican site. If you've ever wondered why sometimes there's a highlighted menu item at the top, and other times there isn't, read on.
With Pelican, every post belongs to exactly one category - that category is
'misc' if one is not provided (and you can override that named by setting
DEFAULT_CATEGORY = 'somethingelse' in your
Alternatively, if the post is in a subdirectory, it's category becomes the
subdirectory name. So if you have a situation like this:
lady-rainicorn post will be filed under the category of
You can explicitly override this category-from-subdirectory behavior, by
specifying the category in the header of the file, like so:
title: All about Lady Rainicorn slug: lady-rainicorn category: adventure-time
Categories are where a lot of the pelican themes get the top navigation bar,
which is referred to as the menu in Pelican. You'll notice that this post is
technology. If you're viewing this on the main page, that won't
be highlighted, but if you click on the title of this post, you'll see that
technology will become highlighted. Same deal if you just click on
technology, which will get you a listing of the latest post in that category,
and a pagination of all previous ones.
The menu items need not be limited to categories, however. With the popular
notmyidea template (which is what I've customized for my journal here), if you
create any pages (by putting the file in a
content/pages/ directory), then the
title of that page will appear in front of all of the categories in the menu.
These pages don't show up in RSS feeds, though.
Additionally, you can specify other
pelicanconf.py, which will
go in front of all pages and categories.
MENUITEMS is a list of tuples, each
tuple should be composed of a link name, and a url. This is how I link to the
listing of all of my blog posts:
MENUITEMS = [('all', '/blog/archives.html')]
Finally, you can have zero or more tags attached to a post. Tags, by default, do
not get a feed generated for them. To enable a tag feed, you'll have to set a
line like this in your
TAG_FEED_ATOM = "feeds/tag_%s.atom.xml"
notmyidea template only contains logic for highlighting the active
category. This is why, if you click on 'All' at the top of mine, it doesn't
stay highlighted when you're on that page.
On the other hand, if you click at
the menu bar, it will stay highlighted, and you will see a listing of the
articles in that category. But if you click on the
tag in one of those posts - the menu item will not be
highlighted, and you will see some more articles - in particular, right now my
review of Just Ride will also be listed, but it
lives in the category of
books, because that's
where I'm keeping book reviews.
So there you have it - now you know the differences between categories, tags, pages, and menu items, as far as Pelican is concerned. For me, the bottom line is that I'll probably stick to just using categories, and will try to use tags sparingly. In my transition from WordPress, I cleaned up and removed a whole bunch of tags (since they were either redundant (the same tags kept appearing together), or were too specific (most tags were only used for one post).read more
Well, it's happened again, I've jumped (back) on the static blog engine
bandwagon. Early versions of my site were generated literally using
gcc, and a
Makefile...). Back then I was transitioning away
from using livejournal, and decided to
use WordPress so I wouldn't have to roll my own RSS feed generator.
I tolerated WP for a while - and the frequency of my posts was so low, that it wasn't much of an issue.
Except for the security upgrades. I logged into the
wp-admin console way more
times than I cared to just to press the little "upgrade" box. The reason is that
wordpress keeps everything in a database that gets queried every time someone
hits the site. I was never comfortable with the fact, because content can be
lost in case of database corruption during either an upgrade or a security
breech. Also, my content just isn't that dynamic. The WP-cache stuff just seemed
overkill, since I don't get that many visitors.
But lately, I've found myself wanting to write more, to post more, but also shying away from it because I hate dealing with the WordPress editor. And I also hate being uncertain about whether any of it will survive the next upgrade, or the next security hole, whichever I happen to stub my toe on first.
And the thing is, I really like to use version control for everything I do. I liked my blog posts to be just text files I can check into version control. I also like typing "make" to generate the blog, and now I get to!
For added fun, I'm hoping that writing my posts in markdown will make it easier to coordinate my gopher presence, since it's pretty close.
For posterity, I'm capturing what the first version of my Pelican-based blog looked like. I did the same thing when I moved to WordPress.
I ran into some confusing things about transitioning to Pelican, so I thought I'd note them here, for the benefit of others.
Unadulturated code blocks
I like to use indentation as a proxy for the venerable
<tt> tag - which uses a
If you just want to use an indentation, but do not want the indented text parsed
as a programming language, put a
:::text at the top of that block. Here's what
I mean. Take this Oscar Wilde quote, where I've inserted a line break for
drammatic effect, for example:
A gentleman is one who never hurts anyone's feelings unintentionally.
Now, you see that ugly red box around the apostrophe? Well, That's because all I
did was indent the two lines. If I just put a
:::text above the quote,
indented to the same level,
:::text A gentleman is one who never hurts anyone's feelings unintentionally.
the result will render like this.
A gentleman is one who never hurts anyone's feelings unintentionally.
As the pelican documentation specifies, this is also the way you can also
specify the specific programming language you want, so
:::python would be one
way to not make pygments guess. You can get a list of all supported languages
here, just use one of the
for your language of choice.
And you should really do this, even if you aren't bothered by the red marks,
because the code highlighting plugin goes in and tokenizes all of those words
and surrounds them in
<span> tags. Here's the HTML generated for the first
<div class="codehilite"><pre><span class="n">A</span> <span class="n">gentleman</span> <span class="n">is</span> <span class="n">one</span> <span class="n">who</span> <span class="n">never</span> <span class="n">hurts</span> <span class="n">anyone</span><span class="err">'</span><span class="n">s</span> <span class="n">feelings</span> <span class="n">unintentionally</span><span class="p">.</span> </pre></div>
and here's the version generated when you add the
:::text line at the top:
<div class="codehilite"><pre>A gentleman is one who never hurts anyone's feelings unintentionally. </pre></div>
At some point, having a dialogue with myself, I wrote in here "or should I not use pelican and use nicola instead?"
Ok, tried it - nikola takes too long to startup -
nikola --help real 0m1.202s user 0m0.876s sys 0m0.300s pelican --help real 0m0.639s user 0m0.496s sys 0m0.132s
I'm sure it's a fine static blogging engine - and Damian Avila's already
written IPython Notebook converters for it, but it just feels like it tries to
do too many things. Constraints are good. I'll stick with Pelican for now.
(Though I did use the nikola wordpress import
to grab the
wp-upload images from my WordPress blog)
another set of instructions I consulted: Kevin Deldycke's WordPress to
Pelican, which is how
I did get my articles out using
exitwp which I patched slightly, so files got
saved as .md, and preserve other format properties.
also known as: not breaking the web
I wanted to preserve rss feeds, and also not break old WordPress style
/YYYY/MM/DD urls - the Nikola wp-import script had created a url remapping
scheme in a file called
I don't have that many posts, so I just added them in by hand:
Options +FollowSymLinks RewriteEngine on RedirectMatch 301 /blog/feed/ /blog/feeds/all.atom.xml RedirectMatch 301 /blog/2006/10/18/todd-chritien-greens-choice-voting/ /blog/todd-chritien-greens-choice-voting.html RedirectMatch 301 /blog/2007/01/04/changelogs-with-dates-gui-goodness/ /blog/changelogs-with-dates-gui-goodness.html ...
Enabling table of contents for posts
If you want to include a table of contents within a post using
[TOC], you must
enabled the markdown
toc processor with a line like this is your
MD_EXTENSIONS = [ 'toc', 'codehilite','extra']
Categories and tags
Ok, so this was never clear to me in wordpress, either - but what's the difference between a tag and a category? is it the case that a post can only belong to one category, whereas it can have any number of tags?
I think I used categories as tags on wordpress. Looks like all posts on Pelican can have at most one category. Turns out this little aside was long enough to turn into its own post, so if you're interested, pelican tags-vs-categories has got you covered.
That's it for now
Thanks to Preston Holmes (@ptone) for encouraging me to transition away from WordPress, and pointing me to this post by Gabe Weatherhead (@MacDrifter) for how to do that. It should be said that the pelican documentation itself is very good for getting you going. Additionally, I consulted this post by Steve George which has a good description to get you started, and also covers a bunch of little gotchas, and lots of pointers. Also, thanks to Jake Vanderplas (@jakevdp) for his writeup on transitioning to Pelican, which I will consult later for incorporating IPython notebooks into my markdown posts, in the future. This is good enough for now. LTS.read more
A page about cycling in the East Bay (and the San Francisco Bay Area in general).
This started off as the sort of resource that I wish I had when visiting a new town: so hi there, out-of-towner, welcome to our corner of the world. Hope you enjoy your stay and find these resources helpful.
You need a bike, a water bottle, a jersey or a saddle bag (to store your snack, phone, patch kit). Everything else is optional.
Though I consider myself an avid cyclist, the reality is that I am only mildly so. I have not been on a ton of rides in the area, and don't know them well at all outside of the East Bay - I have yet to cycle across the Golden Gate Bridge - and the Marin Headlands (an omission I plan to rectify soon). I did mountain bike a bit in Marin when I was a kid, and rode a fair bit around the Peninsula while I was in high school. I got my first roadie the summer before heading off to UC Davis. It was a wonderfully light steel blue Peugeot from the 70s (you can see a picture of it here). I convinced (my then future roommate) Philip to get a matching white one. But it was taken from me my first year in grad school (2006). I hadn't been cycling much since, until I started up again recently. Below, you will find a concise guide to some of my favorite rides in the area. As far as my actual experiences, you can get a flavor of the rides I go on by reading my cycling log.
Here is the overview: If you want a shorter ride with a great view - I recommend this 24 km (15 mi) loop from UC Berkeley to Grizzly Peak. The ascent to Grizzly Peak Rd is steady and manageable. The road does get pretty rough when you turn off of College until you get to Broadway, but you avoid the dangerous Ashby route to Tunnel Road. Recently, I've been doing a similar ride that avoids that rough patch by going down College Ave all the way to Broadway. As an alternative option, instead of going up to Grizzly Peak, you can turn off for a slightly shorter (but really fun) descent that ends at the historic Claremont Hotel.
What's nice about these loops is that you can do them back-to-back for a total of ~50 km. But If you want to do a ride that long with more variety, read on for the longer routes.
50 km and beyond
If you have some time (about twice the time it takes to do the shorter routes above), the Redwood-Pinehurst route will take you through an incredible canyon that's filled with redwoods! You can take the loop in the other direction - Pinehurst-Redwood.
Another local favorite is the "Three Bears" ride, which has some truly scenic views all throughout (62 km, ~1 km gain).
My longest ride was the El Cerrito to Davis 200K
My previous longest ride took me half-way up Mt Diablo - the views from there are breathtaking. Can't wait to go all the way up! (115.5 km, 1825 m gain)
I haven't yet completed a century.
Here are some local ones that I have my eye on.
Grizzly Peak Century is one that goes through some of the local East Bay routes I described above.
Best of The Bay Century likewise starts off in the East Bay routes I'm most familiar with, and heads south all the way to San Jose, before returning a bit to Fremont BART station.
Foxy's Fall Century is an organized ride based out of Davis, CA, where I was an undergrad.
There are a lot of long rides listed on the Different Spokes San Francisco website. San Francisco Randonneurs run a very regular brevet series.
Routes to avoid
Ohlone Greenway: it's not fun - there are too many stops and unprotected crossings. This is a nice route to take a stroll through, on a bike it's just frustrating.
Local Bike Shops
I want to keep track of reasonable places that rent bicycles in the area (in particularly road bikes), as well as routes you should be sure to checkout (with variations, caveats, and general overview).
Missing Link Bicycle Cooperative - One can't say enough good things about this place, super friendly atmosphere. They're located right downtown Berkeley, they both sell gear and fix bikes, and even have two complete sets of tools and stands you can use to fix up your bike for free!
Blue Heron Bikes - a relatively new shop (opened in 2012), in "Westbrae" right of the Ohlone Greenway, I cycle past it every day on my commute. Soon after they first opened, I chatted with the owner, Rob, and he's a great guy.
Wheels of Justice Cyclery - The wheels of justice grind slowly, but exceedingly fine.
Bike East Bay - a very active local group (previously went by the name East Bay Bike Coalition).
Albany Strollers and Rollers - Albany, California, is a little 1.5 square mile city just north of Berkeley which I call home.
Berkeley Critical Mass - 2nd Friday of each month - departs at 6pm from Downtown Berkeley BART station.
East Bay Bike Party - a monthly evening ride.
Just Ride - my review of Grant Petersen's book.
Here's some ASCII art I made that I now use as my email signature:
_ / \ A* \^ - ,./ _.`\\ / \ / ,--.S \/ \ / `"~,_ \ \ __o ? _ \<,_ /:\ --(_)/-(_)----.../ | \ --------------.......J
This is a pretty good book - though it's more of a set of short little blog posts combined into a book. It's nice to read the very opinionated thoughts of someone who's been dealing with bicycles for a very long time.
The whole time I was reading this, I felt like this is the type of stuff that my pal Jon G would have said, and in a similar style to the way he would have said it. I look forward to reading Jon's treatises on cycling in the future.
Reading this book made me proud to and convinced me to continue to never wear clipless pedals and cycling shoes (I have toe clips), and having a kickstand on my roadie. I'm an unracer - and to quote the title of one of the little chapters: "Racing ruins the breed".
I also learned how to corner and turn properly - which has been invaluable in my windy descents lately. Finally, I was reminded to not just count miles, because every ride counts ("No ride too short"). Also it makes as much sense to count time spent on the bike, and the amount of elevation gain, and the number of days biked, period. Thanks to my commute, this means my days biked per week stays above 5 during the most of the year in California.
I also learned a new word: Beausage (byoo-sidj). My current bike doesn't have any, but my last laptop certainly does.
It also felt kind of cool that the author is local. Grant Petersen founded and still runs Rivendell Bicycle Works in Walnut Creek, CA.read more
2017-02-25 SF Tri Club in the East Bay - Kilian invited me and it was great ride. I had to take easy since I haven't ridden any significant amount lately. (113km, 1710m gain, 7 hours) -- 2017-03-22 Direct to Orinda and back - left my water bottle there the weekend prior -- 2017-03-15 Happy Valley loop -- 2017-02-25 Pt Richmond
2017-02-18 Pt Richmond
2017-02-11 Pt Richmond
2017-01-29 Ciba and back - a lovely weather ride with Greg. I stuck around for a Hawk Hill loop before heading home. First time at Ciba - great coffee!
2017-01-16 Happy valley loop - saw Gabi hiking in Tilden.
2017-01-13 Friday morning ride - it's been a long time since I did one of these. This time I went alone, fueling up at Bica before heading up the last bit of Broadway.
2017-01-02 Tour the Flats - Greg and I decided to start the year off right by going all the way across the Bay Bridge. It was cold. The flats gods tried to deter our plans, and halted our progress only 1.3 miles into the ride from our rendez-vous point. But Greg fixed it with grace, and we were on our way. Only to get another flat as soon as we made it to Yerba Buena Island. Once he patched that up, we decided to reward ourselves with cinnamon rolls from Ikea for our heroism.
2016-10-23 Happy valley loop - didn't take any snacks with me, was OK.
2016-10-18 Social ride - With Sara and Kayvon.
2016-10-09 Russian River 200k (modified) - Stork and I had a great day on our bikes. On the way back, we decided to get off Highway 1 and instead backtracked our morning rollout (for calmer road conditions, and at the cost of some extra climbing. This was my first ride in 2 months and it showed - I had to go painfully slow from Bodega Bay to Valley Ford, spinning in low gear without being able to provide any power.
2016-08-13 El Cerrito - Davis 200k - a my 5 consecutive monthly 200k. Left El Cerrito at 7am and got to St Helena at noon, which is 45 faster than usual for me - but it was so hot that, despite the extra time cushion, I ended up rolling into Davis at 6pm - which is an hour longer than last time. (213km, 2472m climbing, 11 hours total)
2016-08-12 Friday morning social ride - Danny and Jon, over Grizzly Peak (42 km, 759m gain, 1.5 hours)
2016-08-07 Bay Trail - Oakland to Fremont with Jon - beautiful day, the mixed terrain was very welcome. (90km, 137m gain, 5 hours)
2016-08-05 Friday morning social ride - just Danny and I, took Claremont. (40km, 678m gain, 1.5 hours)
2016-07-23 Happy valley loop - good to be back on the bike, it was a hot one. (57km, 1062m gain, 2.5 hours of saddle time)
2016-07-10 Cloverdale to SF 200k - Stayed up front at the beggining and got a chance to ride with some fast riders through the first two controls, and then from just before Sir Francis Drake climb. (202km, 1694 gain, 8 hours 40 minutes)
2016-07-09 Boonville Lollipop 300k - My first 300k! (310km, 3188m gain, 14 hours 56 minutes)
2016-07-07 Hawk Hill with Janet! We saw whales when we stopped part way down the descent.
2016-07-03 Return to Reliez - haven't ridden on Reliez Valley Rd for over a year, maybe two... Decided to correct that today. (73km, 1463m gain, 3 hours 40 minutes)
2016-07-01 Friday with Jon - had a good conversation about 3D modeling tools, and a possible stealth project... (52km, 860m gain)
2016-06-25 Russian River 200k - what a lovely ride! (205km, 2026m gain, 9 hours 25 minutes)
2016-06-24 Friday with Danny and Jon - good thing I did this ride, because the only water I had at the start of the 200k the next day was a single mostly full bottle from this outing.
2016-06-11 Happy valley loop - Saw a gorgeous Stellar's Jay in the woods, and two young deer on the Wildcat on the way back. (57km, 1062m gain, 2.5 hours of saddle time)
2016-05-12 Bike to Work day! A sweet leisurely ride from the office to Hawk Hill (my first time there) with Danny and Janet. Danny and I rode the ferry from Oakland, so I had another 13km before the SF portion of the ride. Danny has a few photos on his Strava (56km, 650m gain, 3 hours)
2016-05-08 Bear-y Happy Nice and foggy morning ride, fueled by Doughnut Dolly! (75km, 1174 m gain, 3 hours)
2016-05-01 Grizzly Peak Century - Spontaneously ended up riding with Mark within the first few miles, and after meeting at the first rest stop, we rode most of the 110 mile version of the ride together at a brisk pace. The conversation sure made the miles go by a lot faster. Also bumped into randonneurs Rob Hawks and Barb who volunteered separate rest stops - nice to see familiar faces. (190km, 3101 m gain, ~ 10.5 hours total)
2016-04-30 The ride of two Pauls - I took Paul The Elder on his first ride in the East Bay. It was a beautiful morning, which we started at Semifreddi's. I had to ditch Paul at the top of Happy Valley to head home, but he was a good sport about it. (56km, 1062m gain, 3.5 hours of saddle time)
2016-04-29 Another Friday with Danny - Danny and I took on Grizzly Peak - I returned home the more direct way, opting out of the extra climbing. (33km, 579m gain, 2 hours)
2016-04-16 El Cerrito - Davis 200k - a wonderful day for a ride (213km, 2472m climbing, 9 hours of saddle time, 10 hours total)
2016-04-10 Happy LaMo return via Arlington again - the weather kept me from leaving earlier in the morning in trying for Mt Diablo. Climbed around Albany Hill when I got back just to add a little extra. (57km, 1062m gain, 3 hours of saddle time)
2016-04-03 Longer training ride, the 200k is only two weeks away, so I extended my usual loop by going through Moraga. Pleasant sounds of bubbling creeks on Redwood Road: delightful. (88 km, 1720m gain, 4.5 hours)
2016-04-01 (Anti) Social ride - Danny slept in, so I took on Grizzly Peak by myself. (42 km, 759m gain, 2.5 hours)
2016-03-26 Happy LaMo return via Arlington - trying to get ready for the El Cerrito-Davis 200k (57km, 1062m gain, 3 hours of saddle time)
2016-03-25 Friday with Dmatt - Danny and I decided to take on Grizzly Peak. (42 km, 759m gain, 2.5 hours)
Wildcat Only - wow, not
Friday with Dmatt
-- 2016-01-23 A run - ran to El Cerrito BART station, then the North Berkeley one, once around UC Berkeley campus and back. 16.7km, 222m gain -- 2016-01-15 Tunnel Road to Claremont - Danny was freezing, Jon's back tire had a slow leak, but we still got out there! I wore a jacket and was much warmer. (40km, 678m gain, 1.5 hours)
2016-01-08 Tunnel Road to Claremont - with Jon, I was very cold, was shivering at Fourne for quite a while after the Claremont descent. Jon and I came up with and idea for an electronics project. (40km, 678m gain, 1.5 hours) 2016-01-01 Wildcat Only - wow, not cycling for two months really made me weak... The cold temperature (5-7°C / 41-45° F) didn't help. (31km, 560m gain, 2 hours)
2015-10-25 Happy LaMo return via Arlington - saw one turkey doing a pretty dance for another turkey... in the middle of the road... Turkey's aren't very smart, it turns out. (57km, 1062m gain, 3 hours of saddle time)
2015-10-30 Tunnel Road to Claremont - Jon, Danny, and I. Saw some turkeys, one of whom had beef with us and took it out on the car behind us.
2015-10-25 Happy LaMo return via Arlington (2.5 hours of saddle time)
2015-10-16 Tunnel Road to Claremont - Just Danny and I today.
2015-10-10 Winters 200k - continuing my tradition of forgetting to put water in my bottles before rolling out - rode 'dry' and ended up filling them at the first control (38km into the ride). For the first half of the ride, I somehow ended up in a group with 2 anciens and 2 anciennes (Robert, Barry, Kris, and Renee). Having done only two 200k rides before this, I was actually surprised to keep up with them for as long as I did. We got to the Winters control (93km) at 10:10 - I was aiming for 10 hours which would have only put me there a bit before noon. The cardiac hill climb is where I couldn't keep up anymore, though our paths still crossed at the next control (124km) - but I decided to sit and cool off for a bit as they rolled out from there (and finished exactly an hour before me). I was pretty much alone for the second part of the ride, which is too bad, because the headwind was quite strong and took a lot out of me, but I'm happy with my performance. (Photos from an SFR member) (200km, 2266m gain, 9 hours, 28 minutes)
2015-10-04 Willow Ave Park and Ride Scoped out the Winters 200K start control for next week. (51 km, 460 m gain, 2 hours)
2015-10-02 Tunnel Road to Claremont - All of us again (Sara, Kayvon, Danny and Jon) - met up at Blue Bottle this time. Fournée post-ride stop again! (40km, 678m gain, 1.5 hours)
2015-09-27 Pt Reyes Station loop with Danny and Stork! Danny's longest ride ever - but he paid for it with two flats. I played with staying in the big gear for several of the climbs, and the new-to-me segments of the Cross Marin Trail were delightful. (150km, 8 hours)
2015-09-25 Tunnel Road to Claremont - Our biggest turnout! Sara, Kayvon, Danny and Jon all showed up. Jon got a flat halfway up Tunnel Road. Our first time at Fournee bakery afterwards, yummy! (40km, 678m gain, 1.5 hours)
2015-09-18 Tunnel Road to Centennial - A ride with Jon and "Hawkeye" Danny! (40km, 678m gain, 1.5 hours)
2013-09-14 Lucas Valley Populaire: Danny's first randonneuring event, it was a really nice, overcast day. (113km, 1417m gain, 6 hours)
2015-09-06 Happy Valley First weekend ride with Danny! (56km, 1057m gain, 3 hours)
2015-09-01 Tunnel Road to Centennial - Sara, Kayvon, and Danny! (37km, 600m gain, 1.5 hours)
2015-08-27 Wildcat and South Park - went for a run with Stéfan afterwards (1.5 hours)
2015-08-21 Tunnel Road to Centennial - Just DMatt and I this time, we split off with Danny taking Centennial down, whereas I stayed on Grizzly and came down Spruce. (37km, 600m gain, 1.5 hours)
2015-08-09 Wildcat Moraga Redwood - a good weekend ride. (80km, 1.5km gain, 3.5 hours saddle time)
2015-08-07 Tunnel Road to Centennial - another Friday morning with Sara and Danny. Danny's first time up to Grizzly Peak. (37km, 600m gain, 2 hours)
2015-08-03 Freestone Bread Run 200K - Awesome ride with SF Randonneurs, - here's an album where I can be seen holding a coffee at the beginning of the ride. (205km, 3km of climbing, 11 hours 45 minutes of saddle time, 3 wild blackberry pickings on the side of the road)
2015-07-31 Tunnel Road to Claremont with Sara and Danny (DMatt's first time!). Sadly, found out that Nobolom is closing after 40 years this Sunday, glad to have gotten a chance to go there one last time.
2015-07-13 Biked to Oakland for coffee and bacon at Sara and Kayvon's place, followed by a ride to Concord for a long lunch with Kenji. Took ...read more
Please donate to the John Hunter Memorial Fund. A giant in our community, John lead by example and gave us all so much. This is one small way we can give back to his family.
what follows are excerpts from my paper journal over the past week:
John Hunter passed away this morning, Oh my god. John Hunter was incredibly kind and warm -- I can't believe he bought me this laptop. I can't believe that such a wonderful man could be dead -- so suddenly. What a tremendous loss.
Dear Merlin, John Hunter died yesterday -- getting unstuck. It is entirely appropriate to be stuck -- to feel it, smell it, taste it feel it drilling though your head
I keep pacing around the house. I just need to leave. calmly. My thoughts are with John's family. & with the folks in Louisiana. A rat in a maze -- panicked -- & the water level rises still. escalates.
Our loss of John makes me want to code furiously.
I feel the urge to code furiously, but only have the capacity to tweet about it, and lack thereof to censor myself.
I don't believe I'm losing my mind. I believe I never had one to begin with. I'm not losing my mind. I never had one to begin with. I'm not losing my mind. That would imply I had one to begin with. Left the house without shoes -- waiting for my laptop to charge. I want to share this with the group -- so I can come to terms with it myself. forgive myself. Connection with a stranger -- can be a form of escape. but it can help you gain perspective on your own life. I think it has for me. I am a severely broken person. Ok. Time to get shoes, shower, & then go to try & talk w/ Greg Wilson.
I must be mistaken. Maybe I was. Who's to say that I wasn't.
The scientific python community lost one of it's giants this week, and I lost an important mentor. Remembering John Hunter (JDH) People keep dying. I don't know how to deal with that -- I feel like I never really processed dedushka's death -- nor Ken Green's, nor Jessi Debaca's, nor babushka's ... I lost another mentor. Most of these people (all?) don't know that they were mentors to me -- but they were. I looked up to John -- I secretly wanted to please him -- but did not even dare to do so directly (I have Fernando Perez to thank for getting my first contribution into Matplotlib. I remember feeling really bad after my first sprints at SciPy 2009 -- John actually knew who I was -- and wanted me to work on some matplotlib stuff -- I ended up doing some rote work with David Warde Farley (and felt kind of like a third wheel - since dwf (pronounced "dwoof" - did I get that right, David?) is more than capable as a command-line cowboy (David doesn't know this -- but I learned a great deal from just sitting next to him and watching him string together standard unix tools, pipe-after-pipe -- to clean up some scipy wiki content, to try and export it to a new site. David's also a role model in other ways -- he's very calm and collected (unless he senses you've pushed the bozo button from some punditry vending machine - instead of understanding and engaging with the full complexity of some social or political issue) John was extremely kind and understanding -- he wanted to invite & welcome me to code alongside other matplotlib developers, but there was no expectation. I got to hang out with John the most at the PyData conference in Mountain View in late February. He was giving a matplotlib talk, and was seeking feedback on what to talk about -- & how to do it. He's warm -- and always had this kind smile about him. After hanging out with John at PyData -- this email arrived in my inbox
Fernnado knew about the email -- & I was at a barbecue at his house -- to sort of celebrate an awesome week of lots of Python Giants in from out of town. Fernando was giddy -- "Have you checked your email?" -- with a twinkle in his eye "Let's go have you check your email right now" -- & he walked over to turn on his desktop machine.
On the mailing lists -- I always tried to emulate John's approach -- helping everyone even if in the slightest manner. I was offered commit rights sort of out of the blue -- after sending a couple of pull requests. We are a community. We need to remember John, & keep remembering John -- for many, many, many years to come. I feel the urge to reach out to everyone I know & don't know. I'm desperate -- i think I've been that way since I was a little kid -- I remember having the same feelings when we were leaving Moscow -- a ten-year old, talking to friends and my teachers, many for the very last time.
I am posting this, but it isn't finished. This is broken, half-finished, confused, necessarily so -- because there is no way to mend what we have lost. This is an expression of my current state -- and if I don't let this out, it will just keep ricocheting around in my head for years to come. This is a first pass. This is me grieving. This will never be enough. This is just a start.
videos of John Hunter's talks:read more
paul's habitual errant ramblings (on Fr)idays (2012-08-03)
gopher://sdf.org/1/users/ivanov/pheridays/2012-08-03 (yes, gopher!)
- try to not say "uuuuhhhhmmnn"
BAM/PFA Summer Cinema on Center Street http://bampfa.berkeley.edu/filmseries/summercinema
- SciPy 2012 videos up, go check them out! (I have!) http://www.youtube.com/nextdayvideo (removed nextdayvideo internal box url, by request)
Software Carpentry: Record and Playback post http://software-carpentry.org/2012/07/record-and-playback/
- termcasting: a review of what's out there.
http://termcast.org and http://alt.org/nethack/ mostly nethack stuff, both just use telnet protocol, only live sessions (though there are "TV" scripts to re-run sets of ttyrec files).
(playterm vs ascii.io vs shelr.tv)
tldr: playterm.org supports ttyrec files, but has the most primitive player. Players on ascii.io and shelr.tv can both seek. shelr.tv can also speed up playback! Downside is both of those have their own recorder programs (though at least shelr leverages script or ttyrec)
http://playterm.org/ - supports ttyrec files, outgoing links for author and related article, comments. - most primitive player (https://github.com/encryptio/jsttyplay/) - Pause only - only terminal sized of 80x24 or 120x35 - supports tags and comments - service only (code for playterm.org does not seem to be available, though jsttyplay is doing the hardest part of actual playback)
- my wanted list for termcasting
- should support ttyrec files (upload and download)
- live-streaming (like ustream - but for coding)
- termcast.org has ttrtail which does just this
- quick "encrypt" switch - to keep streaming, but start GPG encrypting the stream as it goes out - so you can still look at it later. This would make it easy to leave the streaming on all the time
- a .tty editor that's like a video editor cut out portions [i.e. dead time]
This is a low-bandwidth way of capturing what I'm working on and thinking
about. Now, I'm going to try to record everything I do! "
ttyrec -e screen
-x". I've only done it a couple of times so far while coding, but I
find being able to go back and re-view (and review) what I worked on at the end
of the day to be really helpful.
I was inspired by Joey Hess' "git-annex coding in haskell" where he reviews and narrates some of the code he wrote, after he wrote it. http://joeyh.name/screencasts/git-annex_coding_in_haskell/
P.S. It's Saturday now. I tried to save some local diskspace by running recordmydesktop using the --on-the-fly-encoding option, and that was a mistake. The audio and video were (un)hilariously desynchronized - the audio ran for 9:48, but the video wanted to be just 7:30. Audacity came to the rescue by allowing me to change the tempo to be 30% faster, which made the syncing better. And then I used avconv to stitch in the faster audio.
tools used: Debian GNU/Linux sid, recordmydesktop, xmonad, fbpanel, screen, chromium, cheese, xcompmgr, audacity, avconvread more
Here's pheriday 1, another edition of paul's habitual errant ramblings (on Fr)idays
I had three topics I wanted to cover today, and ended up spending about an hour thinking about what I was going to say and which resources I was going to include. This was too long, and the end result was still very rambling, but I think I'll get better at this with more practice.
- try to not say "uuuuhhhhmmnn"
- be lazy (software carpentry)
- flipside of "publisher's block" (git-annex)
- visiting another country (windows 8 release preview)
As usual, I didn't know what I was really trying to say in 0, and here's a really good overview of what I meant: Software Carpentry
play it in 60 seconds, instead:
mplayer -af scaletempo -speed 1.5 Software_Carpentry_in_90_Seconds-AHt3mgViyCs.flv
Jaron Lanier's You Are Not A Gadget What I mention in the video is not at all the main point of Lanier's book (which is quite good!), and in fact, his book is a critique of (over) digitization. Nevertheless, I'm only pointing out that there are redeemable aspects of an increasingly digital artifact producing life, such as preservation.
My review of David Weinberger’s Everything is Miscellaneous, where I go into more depth about "information overload".
git-annex Excellent project. The technical details is that when you "annex" files, they are renamed to long hash of their contents (bit rot resistant!) and stored in a .git/annex/objects directory, whereas in place of where the file was, you get a symlink to the original file, which gets added to git. So git only keeps track of symlinks, and additionally has a git-annex branch that keeps track of all known annexes, so that you can copy, move, and drop files from the ones that are accessible. Very handy!
tools used: Debian GNU/Linux sid, recordmydesktop, xmonad, fbpanel, screen, iceweasel, cheese, xcompmgr, youtube-dl, mplayer, screenread more