Skype, a 117MB application (as of right now, on macOS at least), keeps a 340MB stash of emojis on your computer. What?
Clearing some space on my SSD today, I notice that Skype’s Application Support folder takes up over 600MB.
The Upgrade subfolder contains 230MB of old Skype versions, with the oldest dating back to late 2012. That’s a little odd, to keep a five-year-old version around, but fine.
How far we’ve come: Skype today is over five times the size it was five years ago.
Drilling down into the robjwells subfolder we find emo_cache_v2, accounting for nearly all the 370MB size of its parents. What’s inside? 5,138 emojis and animations. Here’s a taste:
Except that, unlike the super-low-quality version above, the original is 2.4MB and has a delightful reggae soundtrack to accompany its 17-second length.
5,000 of these things. There’s even a Forrest Gump one!
And you’d think “cache” means that “you sent this before, you might need it again” — but as far as I can remember I’ve only ever sent “standard” emojis on Skype. 🤷♀️
Postscript: If you delete all the mp4 and png files in that directory and then relaunch Skype, it will refill it — but with 3.5MB of animated png emojis.
Post-postscript: I changed the title to remove the emoji as some feed-reading services (like Feed Wrangler, the one I use), couldn’t handle
🤦♀️. Oh well 🤦♂️. (And, funnily enough, BBEdit doesn’t handle the “emoji + zero width joiner + modifier” as a single character. Unicode is hard.)
This originally appeared in the Morning Star of Thursday September 28 2017. The print version (large PDF version here) included photographs by Hackney Cyclist and the Ranty Highwayman, to whom I’m incredibly grateful, of people going about their everyday lives by cycle in the Netherlands — which I think absolutely made it.
It is thankfully now accepted that if we are to stand any chance of tackling climate change we must change the way we move people and goods around.
Most talk has been about replacing petrol and diesel cars with electrics. Even our Tory government — whose ministers have never encountered a deposit of fossil fuel they didn’t want to dig up and set on fire — has set a date from which the sale of new oil-burning cars will be banned. Never mind that it’s the hopelessly and meaninglessly far away year of 2040.
We have to stop burning oil because it’s killing the planet. And that will kill us and our entire species. But the certainty of swapping our oil cars for electric cars as the next logical step for transport neatly somersaults over a flaming Cheddar Gorge full of problems.
But it isn’t the only path open to us; a different one can help us tackle not only the climate crisis but also many health and social problems. Environmental expert Alan Simpson wrote in these pages in July that “sustainability has to turn economics [and its obsession with GDP growth] on its head, putting work, wellbeing, security and inclusion at the centre.”
In the same way that we can’t just install a few gigawatts of renewable power and call it a day, we must think differently and, crucially, have the political courage to pursue an alternative strategy that upends most of a century of transport orthodoxy.
We are certainly barreling towards an electric-car future: France also wants to halt oil-car sales from 2040, India and bits of Germany 2030, Norway 2025. People will buy electrics instead of petrol and diesel; they plug in at home instead of filling up at a garage. Simple, done.
This doesn’t quite work though. For one, manufacturing a new car emits roughly as much CO2 as what comes out of the exhaust during its lifetime usage. And the equivalent to the per-mile emissions varies depending on how clean the electricity grid is; in Britain most power is from burning gas, with some coal, nuclear and wind.
It is also going to take a lot of electricity if we switch en masse to electric cars. It’s difficult to comprehend the huge amount of energy used by cars because they use a separate, somewhat obscured form of distribution — petrol stations.
National Grid warned this summer that, even under optimistic estimates, charging the expected number of electric cars in 2030 will use up all of the power from the under-construction Hinkley Point C nuclear plant. And it could be more than double the plant’s capacity — and this is the most expensive single object ever constructed on the planet.
Electric cars still add to air pollution — small particulate matter from tyre and brake pad wear which is damaging to health.
But the real problem is not the kind of motors we run on our roads — it’s the fact that the private car is the dominant mode of transport. We live in a car-dependent society, with people in many communities often legitimately having no other option. Since the 1950s Britain has very deliberately planned and provided for private car use and our streets and our society reflect that.
Car-dependence is killing us. Partly through pollution, which shortens lives to the point that it’s equivalent to 40,000 excess deaths a year. Partly through the 1,800 people killed and 22,000 seriously injured each year in car crashes. But mainly by eliminating physical activity from people’s day-to-day lives.
In Britain more than half of adults don’t do the recommended 150 minutes of “moderate” activity (hoovering, mowing the lawn, walking at 3mph) or 75 minutes of “vigorous” activity (jogging, swimming, cycling briskly) a week. Six million middle-aged people walk for less than 10 minutes at a go a month.
The effects on our health are huge. Inactivity is the fourth largest cause of disease and disability and contributes to one in six deaths from any cause. Worldwide, sedentary lives and resulting illnesses kill 5.3 million people a year. NHS England boss Simon Stevens has called growing obesity — inextricably but complexly linked to inactivity — “a slow-motion car crash in terms of avoidable illness and rising healthcare costs.”
The direct cost to the NHS is well over £1 billion a year, and wider economic costs from sickness and early death £6.5bn. Then there are costs as we live longer but in worse health — the Barnet “graph of doom” shows that within 10 years the rising cost of adult social care will leave the north London council with literally no money to spend on any other services (save statutory children’s services).
But fitting exercise into already busy days is hard, which is where transport comes in — getting about under our own steam and taking advantage of the “miracle pill” that is physical activity.
With the government focus for the past 60 years on the private car as the way to get about, it’s no surprise that 62 per cent of trips and 78 per cent of distance travelled in Britain is by car.
Over two thirds of journeys are shorter than five miles — a distance that, given the right conditions, could be easily cycled in less than half an hour. Yet more than seven in 10 journeys between one and five miles long are done by car.
The domination of the car for even short journeys also provides the answer for why more people don’t walk or cycle — it is unpleasant almost everywhere in Britain. 59 per cent of people think the roads are too dangerous for them to cycle on. This is what’s known as subjective safety: the risk of being hurt is lower than perceived — though still far too high — but people feel unsafe and are put off.
Thankfully we know what the answer is: taking road space away from cars and providing protected cycleways, such as the ones that opened last year in central London, John Dobson Street in Newcastle, and bits and pieces in Brighton, Leicester and elsewhere. Or the ones you see everywhere in the Netherlands.
We know they work and people like using them — bikes now make up the majority of vehicles during rush hour on Blackfriars Bridge in London, in just one lane of space. Or take Seville in southern Spain, which built about 80 miles of protected cycleways and turned fewer than 5,000 cycle journeys a day in 2006 into 72,000 in 2012 — going from a 0.5 per cent share of trips to 7 per cent.
Cycleways turn bikes from a hobby for the fit and the brave into a quick, cheap and easy way to get around for everyone. In the Netherlands three quarters of children cycle to school — able to get around independently in complete safety.
The same applies for older people, where having an easy and safe way to get about keeps up people’s health and decreases their social isolation. The director of the Dutch Cyclists’ Union tells Peter Walker in his book Bike Nation that while people tend to drive less from their mid-seventies as they feel less confident, they then cycle more. Not for nothing do people refer to the conditions as fit for 8 to 80-year-olds (and beyond).
For disabled people too, cycling can be a good way to travel independently as well as keeping healthy, as Wheels for Wellbeing has made crystal clear. People with impaired mobility often find it easier than walking and many use a cycle as a mobility aid.
We must alter our streets before we can reap the benefits of this — the road layouts we’ve inherited from the 1970s just don’t cut it. As a nice bonus we can start to make our towns more pleasant places to be, reclaiming space for people rather than cars.
Won’t this cause traffic chaos? No. You can move about seven times as many people on bikes as in cars in the same amount of space, and reducing the space for cars causes some of the traffic to evaporate, instead of taking different roads.
Doing this is going to cost money — particularly if we adopt a national plan to make these benefits available in every community, as we should. But it will cost substantially less than building roads, as the government is doing despite the evidence against being clear on all fronts. A mile of top-notch cycleway costs about £2-3 million. That’s 26 times cheaper per mile than the M4 bypass and 79 times cheaper than Crossrail.
Labour’s pledge to spend £10 per person per year on cycling infrastructure is a start — but it is just a start. The Netherlands already has a comprehensive network but still spends about £25 per head. Public health experts have long called for 10 per cent of transport budgets to be immediately allocated to walking and cycling.
In the long run it could save us a good deal: $24 trillion worldwide by 2050 if just 14 per cent of urban journeys are done by bike by then — less than what is achieved today in the Netherlands and Denmark. That figure does not even include the money saved through improved health, which would be substantial.
And that is from cycling alone. The same UC Davis study shows that cycling alongside improvements in public transport and a decline in private car use would save the world $128trn by 2050 in comparison to continuing as we are now.
Such a scenario would also halve the carbon emissions of the business-as-usual case, putting us firmly on track to avoid utterly catastrophic climate change.
Electric cars do have a role to play in our future — but we must be aware of the associated risks to our health and the environment of widespread private motor use, and choose a more ambitious path that can transform our communities for the better.
It’s a real shame that O’Reilly have now closed their store and are now only making their books available to people who subscribe to their Safari service or buy worse versions from Amazon.
Over the past four-ish years I’ve spent roughly $250 on O’Reilly books, and they’ve been a great way to learn new technical topics. Learning Web Design by Jennifer Robbins made something I’d previously found intimidating into a straightforward and enjoyable endeavour. Earlier this year I spent some time learning SQL with the Head First SQL book by Lynn Beighley and really enjoyed it. At the moment I’m reading Mark Lutz’s Learning Python — starting from the basics and working through what is quite a thick book (1,600 pages!) to improve my Python skills and make sure I’ve got the fundamentals nailed down.
They’re all great. I love the PDF versions as they’re incredibly well-typeset and fit perfectly on an iPad screen. It’s been nice to learn in the garden, at the kitchen table, in bed — all much more comfortable than sitting at my desk. And they’ve been updated repeatedly since I bought them to fix typos and other errors — the Learning Python errata page lists nearly 170 entries and the book has been updated 15 times since the publication of the third edition in June 2013, most recently this April.
The thing is, I’ve bought these books at various times over the past few years and generally only dipped into them to start and then come back later. Working through one will generally take me several weeks or even months. This is perhaps my third crack at Learning Python — not because it’s bad (it’s great!) but because I already knew enough Python to be dangerous and getting through the earlier sections took time and patience that I’ve not had until now.
This is not something that the Safari subscription allows for — particularly when as an individual and a hobbyist programmer I cannot begin to justify the $400 a year price. It’s another world to buying a $40 ebook so you can learn a particular topic or skill.
And what of reference books and cookbooks? I own both the Python Pocket Reference and the Python Cookbook — PDFs that I can dip into at any time and together would’ve been just $52 at full price.
The tagline on the O’Reilly homepage is “Safari is how you learn.” It makes me feel a bit crap, frankly, as I can’t afford a Safari subscription (nor could I justify it if I could) and I don’t want to buy an inferior product from a third party.
Sadly that means I won’t be able to learn from O’Reilly books in the future.
I quite enjoy turning out little plots for posts on here. Admittedly I’m not great at it, but I like to have a go.
However, matplotlib really is not my favourite. It feels like there’s a lot of boilerplate to write and a lot of work to do before you get make something reasonably approaching what you had envisioned in your head.
So I thought I’d give R a try, and learn some things about visualisation along the way with Kieran Healey’s data visualisation course notes, which was fun.
But mostly in this post I wanted to show how ludicrously straightforward using ggplot2 can be compared with what you have to do in matplotlib. Let’s pick on my plot of train ticket prices from just before Christmas.
The Python code for that is quite long so I’m not going to include it, but it is available to view online. I’m not being completely fair because part of that involves getting the data into shape, and I’m sure there’s things I could’ve done to cut out a few lines.
That said, it took me a while to figure out exactly how to go about doing the plot in matplotlib, exactly how to, say, parse the dates and label the axis.
There was some of that with R and ggplot2, but mostly me looking things up in the documentation as I’ve not used them much. But mostly it was pretty straightforward to figure out how to build up the plot.
Anyway, here’s the plot:
And here’s the code that produced it:
# Read in and convert string times to datetimes
trains <- read.csv('collected.csv')
trains$Time <- as.POSIXct(trains$Time, format = '%Y-%m-%dT%H:%M:%S')
# Get the data onto the plot
p <- ggplot(trains, aes(x = Time, y = Cost))
# 'Reveal' the data with points and show the
# East Mids price trend with a smoother
completed <- p + geom_point(aes(color = Operator)) +
geom_smooth(data = subset(trains, Operator == 'East Midlands Trains'),
aes(group = Operator, color = Operator),
method = 'loess', se = FALSE,
size = 0.75, show.legend = FALSE) +
# Let's adjust the scales
scale_x_datetime(date_breaks = '1 hour',
date_labels = '%H:%M') +
scale_y_continuous(limits = c(0, 100),
breaks = seq(10, 100, 10),
expand = c(0, 0)) +
# Set some labels and adjust the look
labs(title = paste('Cost of single train tickets',
'leaving European\ncapital cities',
'on Friday December 23 2016'),
y = 'Ticket cost (€)',
color = 'Train operator') +
theme_bw(base_family = 'Trebuchet MS') +
theme(plot.title = element_text(hjust = 0.5))
ggsave('plot.svg', plot = completed, device = 'svg',
width = 8, height = 4, units = 'in')
I’m still figuring things out with R and ggplot so I’m not exactly blazing through. (I still haven’t figured out how to export transparent SVGs without editing them by hand.)
But I love the way that plots are built up out of individual pieces, which makes far more sense to me than trying to wrangle matplotlib’s figures and axes.
I added support for JSON Feed to my homemade static site generator Majestic today, and thought I’d note it because funnily enough the two implementations mentioned by John Gruber (by Niclas Darville and Jason McIntosh) used the approach I’d taken for generating my RSS feed and wanted to avoid.
Basically all three of those define a document template and pass in the posts and other required bits, and you’re done. I’m really not knocking this — again, I do this with the RSS feed and it validates fine. It’s all good.
But I ended up templating my RSS feed like this because I looked at the feedgenerator module and ran away. Majestic was my first Python project of any real size and I wanted to keep things as straightforward as I could. While it looks (with hindsight) reasonably OK in use, it doesn’t have any documentation, has been pulled out of Django, and has funky class names (
Rss201rev2Feed) that didn’t fill me with confidence that I could implement an RSS feed quickly.
I was using Jinja templating for the site and since HTML and XML are cousins just did that. But you can probably tell that I didn’t really know what I’m doing (still don’t!) with escaping as any field that might contain non-Ascii characters is wrapped in
But hey, it works. Feed’s valid.
With JSON, everything just feels much more obvious. In Python you hand off basic types to the built-in json module and you get back a string, all the encoding taken care of. And if I make a mistake Python will complain at me, instead of just dumping out a file of questionable worth.
I think this is what all the people complaining on the Hacker News thread missed. Working in JSON is comfortable and familiar — the tools are good and you get told when something goes wrong. Working with XML can be unclear and a bit of a pain, and creating an invalid document is a risk.
So my super-duper advanced JSON Feed implementation is… constructing a
dict, adding things to it and passing it off to the json module that I use all the time. Taken care of. The code’s so boring I’m not even going to include it here (but it’s online to view).