Shared posts

13 May 23:01

A cycling love letter to Paisley

by Lady Vélo

Dear Paisley,

We’ve been cycling together for four months now. I’ve talked about how you were the most unexpected surprise on Christmas morning, and how you immediately started starting turning stuff that had been kicked upside down in my mind the right way up again.

Four glorious months on, I can laugh about almost putting the kibosh on your existence, whenever Ian reminds me of the flippant comment I made in the run-up to the festive season:

“The last thing I want to be given this Christmas is anything related to cycling!”

That’s how I was feeling, as everything was awful at the time. Mamma Vélo was ill, I thought I was doing a terrible job as her carer and almost every book deadline my editor gave me throughout December was missed. I was also convinced that any words I did manage to write about cycling were absolute trash. I am still, of course, a bundle of nerves about that. Bikes were the last thing on my mind.

I can happily eat those words now.  

Being on two wheels doesn’t feel like pressure anymore… thanks to you, it’s pleasure, like it used to be. I’m turning to you and cycling when I need to clear my mind, instead of running as fast as I can in the opposite direction. The joyrides we’ve been on so far may just be simple ones, but considering how complex everything in my brain can get, they are huge milestones for me.

We cycle to the local shops and take the longest route possible to stretch out the fun. We do whole days out, riding from cafe to cafe to seek out the best coffee, sandwiches and cakes in the city (#PedallingForPastry is becoming a thing). Hopping on you to cycle to my 1st major meeting with my publisher since the ‘I missed all my bloody deadlines in December and I hope they don’t bin the whole thing’ anxiety attacks, kept me chilled out. And even last week, when I was terrified about my cervical screening appointment (a mixture of pain, panic and a horrid family history of ‘trouble down there’ had me on edge), cycling to the GP and taking a detour ride back home helped me out so much.

Jools Walker with her Brompton bicycle after cycling to Little, Brown Offices in London

Ian James at Prufrock Coffee eating a sandwich after cycling there with Jools Walker

Rhubarb and Cardamom Pastry at Pophams Bakery

Jools Walker at Chancery Lane Underground Station with her Brompton, after a day of cycling.

Jools Walker with her Brompton bike, after cycling to the Doctor's Surgery

Jools Walker with her Brompton bike in Shoreditch, after cycling around East London

Paisley, you’re doing wonders for me! Even though being able to fold you up and hop on the tube is an extra added bonus if it all gets a bit too much, you’ve got me thinking about taking on bigger rides again. Each jolly on you leads to another and then wanting to ride further. I’ve gone past the point of wistfully looking at my road bike and thinking ‘what if I don’t ride this again?’ to now planning long adventures for the summer.

I’m reconnecting with one of my biggest loves on the smallest of wheels and mate, it’s an absolute joy. Thank you, Paisley, for the reminder that I still have that love for cycling in me… and here’s to rolling further in the future.

Much love,

Jools x

The post A cycling love letter to Paisley appeared first on Velo City Girl.

23 Apr 20:58

These Weeks in Firefox: Issue 57

by Johann Hofmann

Highlights

Toggling the print styles on wikipedia

Toggling the print styles on wikipedia

Controlling letter-spacing from the Fonts panel

Controlling letter-spacing from the Fonts panel

  • The Web Console now groups content blocking messages, if you flip the devtools.webconsole.groupWarningMessages pref. Much easier to read the output!
  • The new remote debugging is ON in Nightly now. Check out about:debugging to see the new experience!
    • An “Intent to unship” notice for WebIDE and the Connect dialog has been sent.
  • The Oxidation of Firefox Sync continues, with the team writing new components in Rust! 🦀
  • Firefox Front-end Performance Update #16 posted, highlighting some performance improvements that are going out in Firefox 67
  • We enabled the FIDO U2F API in Nightly, targeting an uplift to Firefox 67
  • Access to the logins list from the entry points not tied to a specific website (about:preferences and the main menu) has nearly doubled in the week-and-a-half since adding the main menu item.

  • Access from a page context (filtered to show logins for that domain) has grown over 50x in just two days since enabling the autocomplete footer!

Friends of the Firefox team

Here’s a list of all resolved bugs by volunteers

Fixed more than one bug

  • Carolina Jimenez Gomez
  • Dhyey Thakore [:dhyey35]
  • Hemakshi Sachdev [:hemakshis]
  • Ian Moody [:Kwan] (UTC+0)
  • Martin Stránský [:stransky]
  • Mellina Y.
  • PhoenixAbhishek
  • Suriyaa Sundararuban [:suriyaa]
  • Trishul
  • Yuan Cheng

New contributors (🌟 = first patch)

Project Updates

Activity Stream

Discovery Stream

Add-ons / Web Extensions

Applications

Firefox Accounts
Sync

Developer Tools

  • Layout Tools
    • Starting to work on Inactive CSS. This lets users see when CSS declarations are valid but do not have any effect on the page (bug, mockup #1 “how inactive CSS declarations look in the inspector”, mockup #2 “example of tooltips telling users why a declaration is inactive”).
    • Coming soon: Making CSS warnings in the console more useful. That means, e.g., not emitting warnings for vendor-prefixed properties when corresponding unprefixed properties exist. Or linking warnings to DOM nodes in the inspector. Thanks to jdescottes, nchevobbe and emilio for working on the platform support.
  • Debugger
    • Uplifting several fixes for column breakpoints and windowless workers.
    • Column Breakpoints are pretty solid now. As always, please keep an eye out for issues and report any if needed.
    • Most of the team is busy with general debugger quality issues they’ve prioritized.
  • Console
    • Clicking on a location in the console now opens the debugger at the expected column (thanks Mellina (yogmel), bug).
    • Switch `devtools.webconsole.input.autocomplete` if you want to turn autocompletion off entirely (thanks Dhruvi, bug).
  • Fission
    • Platform work on this requires the DevTools toolbox to be loaded via `<iframe type=”content”/>`. This means the toolbox document is slightly more “sandboxed” into its frame. This unblocks Fission, which is good! (see bug and bug).

Fission

Lint

 

Mobile

Firefox for Android
  • Nightly 68 now has an ARM64 JIT. ARM64 will improve stability (fewer out-of-memory crashes) and security (better ASLR), but is not expected to have much impact on performance at this time.
  • Nightly 68 has enabled Android PGO. Improves Speedometer score by 5%!
  • Nightly 68 has reduced paint suppression delay to improve First Contentful Paint time.
  • Nightly 68 has enabled Retained Display Lists to improve responsiveness on complex pages.

Password Manager

Performance

Policy Engine

Privacy / Security

Search and Navigation

Search
Quantum Bar
  • Fixed a regression causing us to get search suggestions for file:// uris
  • Refining details about the first Quantum Bar experiment, to be run in Q2
  • 35 bugs fixed in Quantum Bar in the last 2 weeks, 13 open bugs to reach MVP
23 Apr 20:58

Week in Review: 4/15-4/19

by John Stewart

What I’m working on

Creaties

I am planning out the 4th Annual OU Creaties for this year. Every year we honor the best students and faculty who created the best new websites and web content in OU Create. This year we’re moving away from a physical event and focusing instead on a video that celebrates the achievements of the Create community. This week we’ve been collecting nominations and laying the ground work for the awards. This includes everything from preparing 3D printed trophies, to updating the website, to getting graphics set up for the awards video.

Extensions

This week I also worked on a pair of web development projects. I’ve been working with the Carl Albert Center here at OU for a couple of months now on transitioning what had been a biannual print magazine/journal into a digital publication. Extensions, as the magazine is called, is keeping most of its format in terms of featured articles and news from the center. Most of the work then was just in translating the look of the glossy publication into the website.

In working with the staff at Center, Katherine McRae, Chuck Finocchiaro, and Michael Crespin, we drew out on white boards the layout of the home page and how we could use the categories and tags in WordPress to build a new layer of discoverability into Extensions. We picked out a theme, and then I did some tweaking in the CSS and plugins to get everything to match up.

I learned a couple of things on this project. We found a plugin that handles footnotes pretty well, Easy Footnotes, and another that allows us to add author information for the articles even though those authors don’t actually have access to the backend of the site, Simple Authorbox.

Italian Program

The other project that I focused on this week was a site for the Italian Program here at OU. The Modern Languages Department has its own site within our university CMS, but the smaller programs like Italian don’t have their own sites. They wanted something that would spotlight both the students and faculty and explain to students why they should study Italian at OU.

We have great study abroad programs at Arezzo and Bologna, so there are tons of great images to work with. Dr. Irene Bulla sent me tons of great copy for the site, so the main challenge for me was just laying everything out. I think there’s still some tweaking to do on that front to get it looking great, but I’m pretty happy with where we are.

What I’m Reading

I’m trying to read a book every week this year. This week I read:

Book cover for Conversations with Friends by Sally Rooney. In the cover art, there are simplified drawings of two women.
Conversations with Friends by Sally Rooney

There have been several articles over the last week about Sally Rooney and her new book Ordinary People. I just got the new book off of ILL, but I thought I would check out her first book, Conversations with Friends, while I waited.

Rooney’s writing style is really interesting. The book is driven by conversation using face-to-face, email, and text conversations to build an epistolary framework for a ménage à quatre. There is very little superfluous description of settings, and the book would feel brisk if there was a traditional, central narrative to follow. However, the story is character driven, looping through the coming of age of a pair of millenial, Irish college students. I enjoyed the book while disliking pretty much all of the characters. I’m going to try to write up more of my thoughts soon.

Book cover for 'The Wild Robot Escapes' by Peter Brown. In the cover artwork, a robot stands on and amidst a series of pipes.
The Wild Robot Escapes by Peter Brown

This week, I finished reading Peter Brown’s The Wild Robot Escapes to my daughter, Evie. We had read The Wild Robot about a month ago, and both tell the story of a robot named Roz who washed up on shore on a remote island. Peter Brown uses the robot and her animal friends as an allegory about family, community, and life. I strongly recommend these books to anyone with kids old enough for some direct conversations. You can find my longer write up here.

I also listened to a book called The Thirteenth Tale by Diane Setterfield. The book strongly reminded me of Mary Shelley’s Frankenstein in that it was a gothic noir told within a similar interview framing device. Both this book and Rooney’s Conversations feature well educated female leads who casually allude to literary and intellectual figures to make their points.

The Thirteenth Tale Diane Stterfield
23 Apr 20:58

Twyla Tharp on the Practice of Collaboration

by Jim

Book cover for Twyla Tharp The Collaborative habitThe Collaborative Habit: Life Lessons for Working Together. Twyla Tharp. 2009. T

Collaboration is fundamentally an artistic process. That is easy to lose sight of in the organizational exhortations to be more collaborative and the mass of marketing literature touting the collaborative goodness of some new piece of software.

If you agree that attacking today’s wicked problems depends on effective collaboration, then the arts are a good place to look for insight. Dancer and choreographer Twyla Tharp has done us a great service in reflecting on and sharing her decades of experience as creator and collaborator in The Collaborative Habit: Life Lessons for Working Together. This is a book I’ve revisited many times since it was first published in 2009. I’m still learning from it.

Tharp concludes with the following advice:

In the end, all collaborations are love stories…Honesty and bluntness, but not to the point of pain. Mutual respect, but not to the point of formality and stiffness. Shared values, so the group’s mission can carry it over the inevitable bumps. And, of course, actual achievement, so the group is supported by an appreciative community.

This is not counsel that fits into a motivational poster in a conference room or into the menus of a new software application or service. Collaboration is a practice built over time out of snippets of behavior and interaction anchored in a supporting context.

Tharp shares the stories of her collaborations with fellow artists, institutions, and communities. As an aside, it is clear from her stories that Tharp has always been a reflective practitioner. Her earlier book, The Creative Habit: Learn It and Use It for Life, contains insights into her processes and how she documents them; it is equally worthy of your time and attention. The richness and grounding of her observations reinforces her point that collaboration and creativity are work; rewarding work but work nonetheless.

When we observe the end products of creative and collaborative efforts, we admire the grace and beauty of the art and the artists. By taking us back into the process and behind the scenes, Tharp reminds us of the intense work and discipline it takes to make it look easy. She also reinforces the essential truth in an old cliche that “the work is its own reward.”

The post Twyla Tharp on the Practice of Collaboration appeared first on McGee's Musings.

23 Apr 20:58

"Language changes, and as convenient as it can be to use linguistic shorthand, it’s important to..."

“Language changes, and as convenient as it can be to use linguistic shorthand, it’s important...
23 Apr 20:58

Hefezopf

by Andrea

Was backt man zu Ostern? Natürlich Hefezopf!

Chefkoch: Friedas genialer Hefezopf.

Hab gerade einen riesigen sehr fluffigen Hefezopf aus dem Ofen geholt. Mein Rezept war aus einem Backbuch, hatte aber die gleichen Mengenverhältnisse wie dieses hier, allerdings von allem die Hälfte. Ich habe das Rezept verdoppelt, würde das nächste Mal aber zwei kleine Hefezöpfe mit je 500g Mehl backen statt einem großen mit 1kg Mehl.

23 Apr 20:57

Boots

by Tom

IMG 20190331 105528

I hadn’t properly cleaned my boots last time I put them away.

When I unbagged them and sat on the back of the car in the Lakes, a few weeks ago, they still had mud on them from a previous walk. Mud, from snow melting into earth, and white chalk, from the North Downs.

And now, that mud and chalk was translated a few hundred miles north, to be trodden into ground near Derwent Water.

A smile on the inside: how much mud and soil and who knows what else have I moved around the county, mixing tiny samples from one place into another?

My last pair of boots had taken me up hills in France, Cyprus, California, Australia. I didn’t clean the Australian soil off them for a few weeks after I returned. I couldn’t bring myself to do it; it was a final memento of a huge trip, a little piece of something alien, brought all the way home. I finally replaced those grey synthetic boots with these leather ones around 2016, when the old pair were just no longer waterproof. I was sad to do so; they had so many travels trodden into their soles; the new ones, stiff and clean, didn’t feel like they could match up.

But now, a few years later, these ones have really started to get their miles in, slowly – and highly inefficiently – redistributing soil and dirt around the world.

They’ll get a proper clean and wax in due course. In the meantime, I still like the tingle of all the previous journeys I see in them in moments like this.

23 Apr 20:57

Diversity where I work is important to me. Full...

Diversity where I work is important to me. Full stop.

Yes, I’m referring to the Microsoft discussions where some people are questioning whether it’s important or not.

23 Apr 20:57

Josh Underhay

by peter@rukavina.net (Peter Rukavina)
23 Apr 20:57

Twitter Favorites: [CatherineOmega] What's a word for a person who lives somewhere for a year or two and then moves on that isn't "transient"? I'm open… https://t.co/YUt7lG2oii

Catherine Winters @CatherineOmega
What's a word for a person who lives somewhere for a year or two and then moves on that isn't "transient"? I'm open… twitter.com/i/web/status/1…
23 Apr 20:57

Twitter Favorites: [JohnBiehler] First print underway with the #SparkMakerFHD #3dprinter & some Elegoo translucent red resin - mind the gap on the… https://t.co/LjLELkFWO9

John Biehler @JohnBiehler
First print underway with the #SparkMakerFHD #3dprinter & some Elegoo translucent red resin - mind the gap on the… twitter.com/i/web/status/1…
23 Apr 20:57

Node-RED

by Rui Carmo

A visual programming environment that is commonly associated with IoT but which I’ve been increasingly using for prototyping and automating other things.

Resources

Category Date Link Notes
Machine Learning 2019 node-red-machine-learning A thin wrapper around Python libraries (including Tensorflow)
Messaging node-red-contrib-cotejs A set of nodes that use the cote library for message passing
Tools DNR An editor for distributed workflows

23 Apr 20:57

Frohe Ostern!

by Andrea

23 Apr 20:57

Easter Fires’ PM10 Spike

by Ton Zijlstra

It’s only morning on Easter Sunday, but apparently in Germany, over 160 kilometers away, Easter fires have been burning on Saturday evening. This morning we woke up to a distinct smell of burning outside (and not just of the wood burning type of smell, also plastics). Dutch Easter fires usually burn on Easter Sunday, not the evening before. So we looked up if there had been a nearby fire, but no, it’s Easter fires from far away.

The national air quality sensor grid documents the spike in airborne particles clearly.
First a sensor near where E’s parents live, on the border with Germany.

A clear PM10 spike starts on Saturday evening, and keeps going throughout the night. It tops out at well over 200 microgram per cubic meter of air at 6 am this morning, or over 5 times the annual average norm deemed acceptable.

The second graph below is on a busy road in Utrecht, about 20 mins from here, and 180 kilometers from the previous sensor. The spike starts during the night, when the wind has finally blown the smoke here, and is at just over 80 microgram per cubic meter of air at 8 am, or double the annual average norm deemed acceptable.

This likely isn’t the peak value yet, as a sensor reading upwind from us shows readings still rising at 9 am:

On a map the sensor points show how the smoke is coming from the north east. The red dot at the top right is Ter Apel, the first sensor reading shown above, the other red points moving west and south have their peaks later or are still showing a rise in PM10 values.

The German website luftdaten.info also shows nicely how the smoke from the north eastern part of Germany, between Oldenburg and the border with the Netherlands is moving across the Netherlands.

The wind isn’t going to change much, so tomorrow the smell will likely be worse, as by then all the Easter fires from Twente will have burnt as well, adding their emissions to the mix.

23 Apr 20:57

A 250 GB SSD for 35 Euros

by Martin

Entry level SSDs for upgrading old PCs are becoming insanely cheap these days. When I recently upgraded a 10 year old PC from Windows to Ubuntu, I also used the occasion to replace the aging hard disk with a new SSD. At first I wanted to look for an HDD+SDD hybrid drive as I have done in a previous ‘upgrade’ because they were cheaper than pure SSDs. Quite to my surprise I noticed that such a compromise is no longer necessary.

After SSD prices have remained stable for a very long time, they are now almost on a free fall and 250 GB SanDisk SSDs are now available for 35 euros, including tax and shipping. This is great news to keep old PCs running longer as it is often people who would rather keep their 10 year old PCs running that can’t spend a lot of money in their hardware. Prices are so low now that 2.5″ hard disks with the same capacity have simply vanished from the market. 3.5″ variants for desktop PCs are still available for 18 euros, again including tax and shipping.

P.S.: Prices for 2 TB SSDs have continued to decline as well. When I bought a Samsung 2 TB SSD just a month ago I paid 320 euros for it. I bought another 2 TB SSD from SanDisk a few days later for around 250 euros. After that, prices increased again somewhat for a week, but just now I bought the same model once again for 199 euros, including tax and shipping.

23 Apr 20:57

"Beginning with the Reagan era, economic policy played a key role in this dystopia: Just as forces of..."

“Beginning with the Reagan era, economic policy played a key role in this dystopia: Just as...
23 Apr 20:57

don't preempt me bro

Some surveillance marketing organizations have suggested adopting a Federal privacy law in order to preempt the California Consumer Privacy Act. Preemption would be bad if it actually happened, but the fact that they're trying for it is the best endorsement I have ever seen for the California Consumer Privacy Act. If I wasn't a CCPA fan before, I am now.

In my humble opinion, preemption is the wrong direction. Privacy regulation should be complicated enough to impose significant transaction costs on database marketing practices. State-level privacy regulations are a start, but what about county or city ordinances? User tracking allowed on alternate sides of the street on different days of the week?

Why would I want to see costs and complexity imposed on the surveillance marketers? I'm going to leave the political stuff out for now. From a selfish point of view, as an individual considering buying stuff, I am going to get ads, and I'm going to get them matched to me in three ways.

  1. Context. Placed on a resource I'm interested in using, like a magazine article or a bus bench.

  2. Search. Matched to search results when I look for a product or a service, like a Yellow Pages ad or a Google search or Maps ad.

  3. Personalized targeting. Matched to me based on something the advertiser knows about me.

On the Internet, many ads are placed using a mix of these techniques, and it's hard to split out how a real-world marketing budget is allocated across them. And information originally collected based on context can leak and start getting used for personalization. But the technical and regulatory environment affects how much money advertisers choose to invest in each one.

As the recipient, or potential customer, the three ad placement methods affect me in different ways. Ad money allocated to context is a subsidy for something I want to use, whether it's local news coverage or an ad-supported public restroom.

Ad money allocated to search is almost as good. I'll use a search engine more if it gives helpful results, so search advertising also pays for something I want.

Personalized targeting, though, is a problem. Instead of paying to support something I want, the advertiser is paying to reach me as an individual. The fact that my information is in somebody's database is a risk to me, but a source of revenue for the database owner. It's a classic Negative Externalities problem. Besides, anything spent on this stuff does not go to pay for the ad-supported resources and search services I really want.

Ad-supported cultural works have positive externalities, when they're re-purposed for other uses. The "Star Trek" advertisers got their money's worth in 1966-1969, but people are still watching the show today. Kurt Vonnegut quit his job as a car dealership manager because he sold stories to Collier's magazine.

As a member of the audience for advertising, I win when I can help move the marginal advertising dollar from personalized targeting to either context or search, because a fraction of the money that gets moved pays for something I want, some of it is likely to create positive externalities, and none of it gets spent on creating risks for me. Regulation is a piece of the solution, and a mess of confusing regulations could be more effective in raising the relative price of personalized targeting than a single set would.

People's intuitions about marketing practices are economically sophisticated.

  • People often choose to pay attention to ads that carry economic signal.

  • People are quick to develop banner blindness and other habits to avoid low-signal advertising.

  • People choose not to invest a lot of time in low-effectiveness ways to protect their personal information, but pick up on measures seen as effective, such as Do Not Call.

People who grow up in ad-heavy economies learn the economics of advertising like people who grew up playing ball learn physics.

What we need to see from privacy regulation is

  • increase the transaction costs of negative-externality advertising practices.

  • credible promise of reducing risks, to atract mass participation.

Privacy regulation has to have the confusion and cost from the advertiser side increased, in order to balance out the risks and costs imposed on the audience side, and shift ad budgets.

Bonus links

Four Steps Facebook Should Take to Counter Police Sock Puppets New law of headlines: any piece with Facebook should in the headline is not worth reading. Come on, EFF, the police put undercover officers into schools and workplaces all the time. Why should a mass-market social platform be any different? This is just the high school weed dealer's if you ask them if they're a cop they have to say yes.

Silicon Valley-Funded Privacy Think Tanks Fight in D.C. to Unravel State-Level Consumer Privacy Protections Employees of companies that back this: Is facepalm-induced neck trauma a work-related injury?

Craig Silverman at Buzzfeed continues to write the absolute best #contentMarketing for #progressiveWebApplications: Popular Google Play store apps are abusing permissions and committing ad fraud

Carole Cadwalladr blasts tech titans at TED: Your technology is “a crime scene” (It's not "their technology" though. It's thoroughly owned by criminals and domestic terrorists. High-profile "tech" execs just pay the power bill, and they're only "titans" of resting and vesting.)

With Epsilon deal, Publicis bets on first-party data for survival With Epsilon news, Publicis makes themselves the first to-do item on my CCPA opt-out list.

European Commission’s Giovanni Buttarelli on state of GDPR adoption: ‘Even ticking a box does not necessarily mean consent is freely given’ I have tried to figure out how much you need to know about web ads to give informed consent. I don't know enough myself, but I'm still learning.

Adobe announces deeper data sharing partnership with Microsoft around accounts Sweet, another one for that CCPA to-do list.

Daphne: Moderating Facebook At Barely Minimum Wage
then: hardware is difficult, manly work, and software is a straightforward office task we can hire low-paid women for.
now: software is difficult, manly work, and content moderation is a straightforward office task we can hire low-paid women for.

Almost half the Bay Area’s residents want to move, survey shows Those of you who want to stay: what's your secret?

23 Apr 20:57

Quoting Alex Stamos

Lots of people calling for more aggressive moderation seem to imagine that if they yell enough the companies have a thoughtful, unbiased and nuance-understanding HAL 9000 they can deploy. It’s really more like the Censorship DMV.

Alex Stamos

23 Apr 20:57

Desperation in the rhythm

by russell davies

I love this bit in The Guardian's interview with Robert Caro. via.

It makes me want to try harder. Or at least make sure every bit of writing I do includes an extra pass where I try and think about this stuff.

'Caro’s own prose makes me think of waves: in the paragraphs roll, grandiose as anything, crashing against the shore as he winds them up with a last, very short sentence. “Well, that’s from Paradise, um…” He shakes his head. “I don’t compare myself with Milton, but great works can be models. He [Milton] has these long lines about Satan falling and falling and then, suddenly, the rhythm changes. I try to do things with rhythm. In the second volume, Johnson is campaigning in Texas in a helicopter, and he’s so desperate. I wrote on an index card: is there desperation on this page? I meant in the rhythm. I want to reinforce the reader’s understanding with that rhythm.” '

On the other hand, it seems like Robert Caro might have a blind spot about LBJ's treatment of women.

UNRELATED

I've been going to the same barber for about 17 years. Every haircut happens in total blissful silence. Then, yesterday, he asked me if I'd been on holiday. I said 'no'. End of talking.

Here's to the next 17 years.

23 Apr 20:56

Week Notes 19#16

by Ton Zijlstra

16
16 (photo by Matthieu Sévère, license CC-BY)

A regular week with increasingly nice weather in which I

  • Had a meeting with the National Archive’s open data team
  • Discussed potential training products/services with our new employee Sara
  • Worked on our open data project for a province
  • Discussed organising an unconference to celebrate the 10th anniversary of a professorship
  • Had our monthly ‘all hands’ meeting with my company (we’re currently 8 people), followed by drinks and dinner together
  • Did first quarter book keeping for the VAT returns
  • Wrote some contributions for the 2018 year report for a province
  • Spent a beautiful sunny day with the little one, exploring our part of town with her in the lead, eating fish, and ice cream with her, playing on the slides and swings
  • Spent the Easter weekend outside in the sun, with our own and my sister’s family.
  • Started work to get my e-book collection organised (and duplicated to my local Calibre library, realising how badly Amazon’s Kindle and website interface are designed
  • Sent out the first invites to the IndieWebCamp Utrecht, for 18/19 May.
23 Apr 20:56

Rear mudflap on Brompton

by jnyyz

A while back I installed a non standard fender on the rear of the Brompton in order to accommodate wider tires. However, I soon found that the mudflap was too long, and tended to get caught on the pavement whenever I folded the bike. As a result, it got bent, and started to look rather unattractive .

So I decided to see if I could install an SKS mudflap. The one I used was ordered from Thorusa, and it was the narrow version.

Widthwise it fit the Planet Bike fender perfectly, but it look a bit of hacking to get the fender mount to fit with the new setup. Fortunately, the tabs on the Ti rack were easily bendable.

However, the new mudflap extended quite far out, and thus was in danger of having the same problem as the previous one.

I trimmed it back so that it barely touched the ground when the tire and rear ez wheels were on the ground.

Here’s the finished installation.

Also note that the mounting tabs for the rear EZ wheels turned out to be easily bent, and as a result the bike was no longer rolling straight when folded. I straightened out the tabs, and remounted the wheels on the rack inboard of the mounting tabs. We’ll see if they hold up a little better.

All things considered, I can’t completely recommend the H&E Ti rear rack because of the issue of the EZ wheel mounts being easily bent. If I had to do it over, I would have gone with an aluminum half rack, such as these on eBay.

23 Apr 20:56

What is point-free style?

by Eric Normand

Point-free style is a way of defining functions with a very simple constraint: you cannot name arguments or intermediate values. How can you possibly do that? Well, with higher-order functions, of course. For instance, with function composition, you can define a new function without naming the arguments. Some languages, like the APL family, or Haskell, let you do this very easily.

Transcript

Eric Normand: What is point-free style, and does it have a point? By the end of this episode, you’ll know what point-free style is. How you might already be using it and why it makes things hard to read sometimes.

Hi, my name is Eric Normand and I help people thrive with functional programming. Point-free style, it’s an important term because you might come across it when you’re reading about functional programming, or in a discussion with someone who is into functional programming.

It’s good to be familiar with it. It’s also an important style for programming, because it helps you think at the right level of abstraction. These things are good to name. This is where my head is.

That said, it’s not like once you learn this, you should be doing point-free style everywhere. Except maybe as an exercise. It is not “The last style” that we should be learning, it’s nothing like that.

What is point-free style? It means you’re programming in a way that you don’t need to name your arguments or name any of your intermediate values. When you define a function, normally, you have to name the arguments. Most languages require it, or they make that the really easy way to define a function.

Likewise, when you’re in the body of the function, you’re writing what this function does. Often the easiest way to use the result of calling a function is to save it to a variable, and then pass that variable to the next function. Use it later in the expression.

Point-free style says, “Can we do without that? Naming is hard, it takes a lot of room. It’s a line per variable. Maybe we don’t want to do that?”

How do you do this? The easiest example to really hit home is, let’s say you’re calling map, and you’re calling map with something like toUpperCase, the function toUpperCase. On a list of strings, you’re mapping toUpperCase over those strings.

One thing you could do is you could define…you’re calling map, you’re passing in a function, so you’re going to define a new function, give it an argument, maybe call it S because it’s a string. Then you call toUpperCase on that string and return it. Why did you wrap toUpperCase in a new function? It already is a function.

You could just pass that toUpperCase function directly. It already takes one argument, it already returns the right value, why would you wrap it up a lot? I mean, just my personal experience, I see a lot of JavaScript programmers doing this. A lot of JavaScript code seems to unnecessarily wrap functions up in other functions. I don’t know why it’s common there.

I know in some cases you need it because the map passes both the value and the index, and you’d want to ignore the index. There’s reasons for some of it but a lot of times it’s unnecessary.

Removing that extra layer where you have to name the argument and just pass in the function itself, it’s a way to achieve point-free style. Point-free style has a bunch of little techniques that remove the need for arguments, one little step at a time until you got no arguments. That’s the point-free.

You could have point-less, point-minimal style where you have one or two arguments left maybe. It seems like a spectrum, that’s what I’m trying to say. It seems like a spectrum, you can get down to point-free style, but you could move along in that direction.

Another one that we’ve already talked about in a previous episode is function composition. Function composition in the general case is, you have two functions, you want to take the return value of one and pass it to the other.

So you make a new function, it takes the arguments, passes them to the first function, saves the return value then calls the second function with that return value, then calls the second function with that return value, and then returns it.

Well, there’s a special case where the second function only takes one argument. The return value can go right in there. You don’t even need to wrap it in a new function that you write explicitly. You can put all that boilerplate into another function, a higher-order function that takes two functions and returns a new function.

Notice when you do that, you’ve totally eliminated naming the arguments or the intermediate values. You just say, “Compose f g or f.g,” depending on your language and how you do it.

Instead of writing new function that takes x, calls g of x, and then passes that to f and returns it. You just write, Compose f g. You’ve eliminated the argument. Function composition is used a lot in point-free style. Another way that’s very related to function composition is pipelining. In Clojure, you have a thing called the threading macros, it’s a bunch of things.

It’s a bunch of different macros that do threading. What it lets you do is write pretty long function composition expressions, but in a top-down, like one line at a time way, where the return value of one thing is passed to the next thing, is passed to the next thing, is passed to the next thing. You never have to name those things. This is a way of achieving point-free style.

I believe Elixir has something very similar. I don’t know if they call it threading or pipeline, something like that, but it’s the pipe…Oh man, am I going to get this wrong? I think it’s pipe greater than sign. Elm has something similar as well, it just lets you flow values through these functions. You don’t have to name any of those intermediate values. Why would you want to do this? Why?

Why is this a thing worth naming? Two reasons, really. Naming is hard, so having to come up with all these variable names is a thing that if you can avoid it, and without much cost, it might be worth avoiding naming. The names take up more room, so you have longer code.

There’re things that could get out of sync more easily, meaning, I’ve had a thing where I’ve called the variable, five days, because the first time I wrote it, it was five days, like a unit of time.

Then I changed it. Now, the function that I’m assigning to that variable is returning seven days. I need to change the variable name. I need to change the variable name and then go and find everywhere I use it and change it. I named it wrong. Naming is hard, I named it wrong. I could have avoided that maybe, and not have to deal with it, at all.

Then there’s this other more important reason besides not having to do this hard thing called naming. The other thing is that when you’re doing point-free style, you’re often working at a higher level of abstraction. Let’s call it the right level of abstraction. You’re like really in the zone, you’ve got the program in your head. You’re thinking, “Oh, hey, I need to compose these two functions.”

You don’t want to be thinking, “OK, now I have to define a new function give it an argument name and thread this argument in here.” You don’t want to do all that. You want to think, “Oh, I’m just composing these two. Done.” In Haskell, it’s one character, .f.g, boom. A period. The full stop.

It lets you express yourself at that higher level just like higher-order functions too. It’s done with higher-order functions. Point-free style is done with higher-order functions. This is taking it to the extreme where you’d never name arguments. That’s the style.

Just like you can get into this flow where you’ve got really good concentration that day, you got the whole thing in your head and you’re working really efficiently. It’s becoming almost a very clever code.

That doesn’t mean that tomorrow, you’re going to be in that same headspace, a week from now, or certainly, six months from now. This style can be very terse. It relies often on operator precedence rules and other knowledge of how things work, like how currying will work, things like that. What happens is you come back to it and you don’t understand it anymore.

Looking at some Haskell point-free code for examples, I used to work in Haskell. I would write stuff like this sometimes. There’s a lot of parentheses around things. There’ll be a parentheses around the compose operator because you want to force the precedence somehow.

You’re passing the compose and you don’t want the compose to run. You want to pass compose. You put parentheses around it. You get some really, what I would consider, gnarly, gnarly code. There’s something about the redundancy of names that makes it easier to read sometimes. I think it’s like a noble pursuit or it’s a good exercise to try to push the style to its extreme. Just like an architecture.

You might say, “Let’s take some architectural principle and push it to the extreme, see what we get, what building we will design if we just say,” I’m just going to make something up, “All the vertical structure is going to be made of steel and all the horizontal structure is going to be made of wood.”

Just very, very basic rules and constraints like that. You see what buildings you make out of that. It’s a great exercise because it’s forcing you to explore in this new way. That doesn’t mean it will make a good building. It doesn’t mean people will want to live in the building or work in that building. But it’s a good exercise.

I think that’s true of point-free style. It’s a good exercise. It causes you to think of this higher-order function level. It doesn’t mean the code you write is the code you want to live with in your system. That’s my opinion there.

The guy who wrote the Dart programming language, he has said that he thinks you really can’t do point-free style and currying, which is used in point-free style a lot.

You can’t really do them without a good type system because you lose so much information when you eliminate the arguments and the names of the intermediate values, that you can’t tell yourself when you’re looking at the function whether it’s correct or not, whether you’ve made a mistake.

Just as an example, if you wanted to write a sum function in point-free style in Haskell because Haskell lets you do that, you say, sum = foldr, if you’re doing a foldr, + 0. OK, that’s point-free style. I had not named any arguments. Typically, if you’re going to do a foldr, you can say sum of the list is equal to foldr + 0, list. You’re naming the list argument. You don’t have to because of currying.

Now, when you read that, you have to know how many arguments foldr takes. You might know it. I’m not saying you don’t know that, but what if it was a different function? What if it wasn’t foldr? What if it’s some other function that you don’t know? You don’t know if there’s some currying going on because you don’t know how many arguments that function has.

You can look at the type, but that’s it. That’s what it’s saying that it relies on good type information that your compiler can check.

I tend to agree with that. If you go that far, you lose so much information for your brain to pick up on that you really need the help of the type system. Just look at some of the point-free style stuff that people had done. You have all these operators, dots and greater than, less than operators.

You’re like, “What does this do? How many arguments does it take? What’s the precedence rules? I can’t figure out why you put those parentheses there.” It’s very terse.

That said, I think it’s a spectrum. You can go to this extreme, but also there might be somewhere along that spectrum that is perfect, has very clear code and does not have unnecessary names, but has some names to give you clues what the code is supposed to do.

Another thing about it is because you’re working at this high-level, this is a good thing. You’re working at this high-level, you or the compiler can begin to do algebraic manipulations on the functions. You’re at a higher order. You’re dealing with functions of functions. These functions can have algebraic identities, algebraic properties.

You could say, just a simple example, that map of F over a list is equivalent to the list of f of each element of the list. That’s like an identity. Your compiler might say, “Oh, because I’m working on a higher-order function, I understand how map works.”

I can replace this map with something else, with some other code that is equivalent to it. I don’t have to actually call the function “map” myself.

There’s a bunch of these identities. In fact, that is where the programming language J was going. The idea was that you couldn’t define functions with defn or def function.

There was no way to just make a function. You had to do it with these higher-order combinators. You would be able to have all these algebraic identities that would let the compiler optimize and do all sorts of cool stuff.

Imagine you could only do map, filter and reduce, and not define new functions. You’re just mapping and filtering with existing functions, and compose. Obviously, you can do stuff like that, compose.

The languages that use this the most…this is my experience. My little bit of research has turned these things up. This is where I have encountered it the most.

There’s the APL family of languages. APL, famous for being very terse and not having to name arguments. J is a member of the APL family. Look at some APL code and you’ll see how terse it can get.

Haskell lets you work on the whole spectrum. You can define all your arguments with names and intermediate values with names, or you can move more toward the point-free style if you want.

I already mentioned in Clojure and Elixir, there’s the thread or pipeline stuff. I just want to mention names can be bad, but they can be really good for readability. They can be a pain to write, but really helpful when you’re reading your code.

Just to recap…I’m going long, so I’m just going to recap real quick. Point-free style means programming where you don’t have to name arguments or intermediate values. The main reason we do it is to be able to code at the right level of abstraction.

You don’t want to be thinking about, “How do I name this function?” or “How do I name this argument?” Stuff like that. You want to be thinking higher order like, “OK. This is the composition of this. This is mapping that over this.” That’s what you’re thinking.

It creates some really terse code that can be obtuse, hard to understand. APL family, Haskell, Clojure, and Elixir, those all use it.

I want to ask you, are you using point-free style anywhere in your code? Have you managed to eliminate an argument here or there that you didn’t need to name?

I’m also curious because there’s some really [laughs] opaque code out there that’s in point-free style. I’m wondering what the worst you’ve seen is.

Send that to me. You can email me at eric@lispcast.com or you can tweet me @ericnormand. Find me on LinkedIn. Please subscribe if you liked this because there’s more coming down the pipe.

I’m Eric Normand. I’ll see you later.

The post What is point-free style? appeared first on LispCast.

23 Apr 20:54

violent tween zone

by graydon

If children survived to age seven, their recognized life began, more or less as miniature adults. Childhood was already over. The childishness noticeable in medieval behaviour, with its marked inability to restrain any kind of impulse, may have been simply due to the fact that so large a proportion of active society was actually very young in years. About half the population, it has been estimated, was under twenty-one, and about one third under fourteen.

Barbara Tuchman - A Distant Mirror, The Calamitous 14th Century



This entry was originally posted at https://graydon2.dreamwidth.org/265970.html. Please comment there using OpenID.
23 Apr 20:54

Twitter Favorites: [gnomeslair] Almost finished writing Virtual Cities :O (almost)

Konstantinos Dimopoulos @gnomeslair
Almost finished writing Virtual Cities :O (almost)
23 Apr 20:54

Twitter Favorites: [davewiner] It's too hard to publish something to the open web. It has to be available as simple content. Not rendered inside a… https://t.co/wMZWCgXtSG

scripting.com @davewiner
It's too hard to publish something to the open web. It has to be available as simple content. Not rendered inside a… twitter.com/i/web/status/1…
23 Apr 20:54

Twitter Favorites: [Sean_YYZ] One of the old Halifax Transit ferries, now in freshwater. https://t.co/fxxcLtnRme

Sean Marshall @Sean_YYZ
One of the old Halifax Transit ferries, now in freshwater. pic.twitter.com/fxxcLtnRme
23 Apr 20:54

Familiarity

by Liz

It’s so nice, and comforting, to be with familiar people who you’ve known a long time. They may be very different from when you knew them in other phases of your life but it’s a good feeling.

I was just saying to yatima today that I’m glad we have known each other in this time of our lives through our 40s raising children. Thinking about that a bunch tonight, in general (also because I was thinking about this kind of thing, and long relationships, knowing people for a long time, for the APAzine I am part of). I have had a very lucky time in life in general.

Today I worked more on my sidewalk tree and repotting some plants, wrote a little bit, checked up on work, went to Oakland, met up with a nice writing group, came back to Danny making a whole lot of nice food for the week. Ada came back from Eastover with abomination bunnies (melted and weirded up chocolate rabbits with like, 6 eyes and 2 heads) and Danny and I watched Game of Thrones. Fittingly for my train of thought they were all having meaningful buddy conversations. (In Winterfell just before the Enormous Horrible Battle with the Dead.)

23 Apr 13:49

long ambients two :: moby

by Volker Weber

Three years ago, Moby released Long Ambients 1. Now he is back with long ambients two:

“One of the things that excites me about this second record is if you combine it with the first ‘Long Ambient’ album, it’s more than seven hours of very quiet music. My hope is that it could actually see someone through an entire night of sleep. My suggestion is to not approach this as music, but to approach it as a sleep aid or tool.”
— moby

Available to stream, download for free via Wetransfer or in the Calm app.

More >

22 Apr 21:51

Fix for Samsung Pay Randomly Opening on Galaxy S10

by Rajesh Pandey
Samsung Pay is easily one of the most underrated features of the Galaxy S10 series. While it is a mobile payment service similar to Google Pay, Samsung Pay can also work with traditional PoS systems unlike other alternatives in the market. However, Samsung Pay has a peculiar problem on the Galaxy S10 series. It automatically opens up from the lock screen every once in a while. Continue reading →
22 Apr 21:51

Samsung Galaxy Fold China Launch Delayed [Update: Delayed in the U.S. Too]

by Rajesh Pandey
Following reports of display units of Galaxy Fold breaking in the hands of reviewers, Samsung has seemingly decided to postpone the launch of its foldable smartphone in China. While Samsung had clearly mentioned it won’t be delaying the launch of the Galaxy Fold due to the display issues, its statement was only applicable for the United States. Continue reading →