Recent postshttp://3ww.red-route.org/blog/feed
enAsk In The Channel: Private Messages Considered Harmfulhttp://3ww.red-route.org/articles/ask-channel-private-messages-considered-harmful
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p><em>This article was originally posted on the <a href="https://capgemini.github.io/culture/ask-in-the-channel/">Capgemini Engineering blog</a></em></p>
<p>Our team have been using instant messaging for a long time. There are a lot of us, working in different parts of the world, and chat can really help us to stay in touch and build connections. We were early adopters of Slack, having previously dabbled with IRC and Skype, and there's a fairly healthy chat culture among the team. However, recently I’ve noticed something that feels to me like an anti-pattern: too many private messages.</p>
<p>Slack provides statistics on how many messages are sent, and what proportion are in private channels, public channels, and direct messages. When the number of direct messages is higher, that feels like a red flag to me that the team isn't comfortable sharing with each other.</p>
<p>When someone is unsure of something, or needs help, they’ll often send a private message to ask. Fair enough, you might think. That’s what instant messaging is for, isn’t it? Enabling quick communication between colleagues. The problem is that most of the time, other people are likely to have the same question.</p>
<p>It’s often junior team members asking the question, and I wonder why they're asking one to one. If they were to ask in our devs channel, there would be a lot more people who might know the answer, and the chances of one of them having the time, energy, and motivation to help would be much higher. Also, it's quite likely that other members of the team would benefit from seeing the answer to the question.</p>
<p>This might just be a grumpy old man getting fed up with answering the same question again, but it fits with my beliefs about open source, and <a href="https://capgemini.github.io/devops/transparency-of-things/">the value of transparency</a>. I may be echoing <a href="http://sexysexypenguins.com/2012/05/23/irc-private-messages-considered-harmful/">something that other people have already said</a>, but I think that it bears repeating.</p>
<p>By asking privately, we're behaving as if not knowing is something to be ashamed of. It's only natural that we don’t like to admit our ignorance - there can be a sense of shame in needing to ask for help. But to me, there's something empowering about <a href="https://capgemini.github.io/development/its-sometimes-clever-to-admit/">feeling secure enough to be able to admit my ignorance</a>, and if we can share knowledge, we all benefit.</p>
<p>Until recent events forced change, we weren’t a fully distributed team - we were a team of hubs, with the majority in either the London, Mumbai or Bangalore office, plus a few outliers like me who mostly work from home, and only come into the office from time to time.</p>
<p>In that scenario, it’s easy for the remote team members to be second class citizens, as the office-based people inevitably have face-to-face conversations, perhaps at lunch or while getting a cup of coffee. Now that we're all remote, that has changed, but as <a href="https://www.youtube.com/watch?v=pi6bHUkoBgY&amp;list=PLBzScQzZ83I_VX8zgmLqIfma_kJs3RRmu&amp;index=3&amp;t=0s">Dirkjan Bussink has said</a>, when we work remotely we need to be more mindful about how we communicate, and more intentional in cultivating bonds between members of the team.</p>
<p>Recently COVID-19 has brought about an increase in the number of people working remotely, but we need to remember that this isn't normal remote work - it’s <a href="https://twitter.com/neilmwebb/status/1245012958415073282">working at home during a crisis</a>, and <a href="https://www.hanselman.com/blog/QuarantineWorkIsNotRemoteWork.aspx">it’s difficult</a>. In these challenging times, we need to be even more mindful of the fact that we don't get a full picture of what's going on at the other end of a chat message.</p>
<p>Chat seems to have become the default method of communication for remote work, but we need to understand when to use asynchronous communication methods (like chat), and when we need the higher bandwidth of synchronous methods.</p>
<p>As with any piece of software, it's important to think about how we use chat, and to make sure that it's a tool that we control, rather than allowing it to control us. Rather than permanently having a chat window open, bombarding us with distractions, it's helpful to open it when we're ready to communicate, and close it when we need to focus. Similarly, we can turn off incoming messages in Outlook using the “Work offline” setting - this is great, as long as you remember to go back online now and then.</p>
<p>There are <a href="https://basecamp.com/guides/group-chat-problems">problems with instant messaging</a>, but I think that chat brings a lot of value to both distributed and co-located teams, and it's unlikely to go away any time soon. Besides, chat is a relatively new invention, and humans are still learning and evolving <a href="https://red-route.org/articles/how-be-rude-people-youve-never-met-or-how-medium-defines-etiquette">the etiquette of instant messaging</a>. It's important to strike a balance between under-sharing and spamming - another antipattern in instant messaging is <a href="https://slack.com/intl/en-gb/help/articles/202009646-Notify-a-channel-or-workspace">excessive use of @here and @channel</a>. But if we can create conditions of psychological safety in our teams, where we're more comfortable displaying our weaknesses, then we can grow stronger together.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-above">
<div class="field-label">Tags:&nbsp;</div>
<div class="field-items">
<div class="field-item even"><a href="/category/tags/work" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">work</a></div>
<div class="field-item odd"><a href="/category/tags/communication" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">communication</a></div>
<div class="field-item even"><a href="/category/tags/etiquette" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">etiquette</a></div>
<div class="field-item odd"><a href="/category/tags/capgemini" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Capgemini</a></div>
</div>
</div>
<a href="/blog/terms" class="taxonomy-link-all">All tags</a>
<span rel="schema:url" resource="/articles/ask-channel-private-messages-considered-harmful" class="rdf-meta element-hidden"></span><span property="schema:name" content="Ask In The Channel: Private Messages Considered Harmful" class="rdf-meta element-hidden"></span>Tue, 26 May 2020 10:42:38 +0000Malcolm51546 at http://3ww.red-route.orgAlways leave them wanting morehttp://3ww.red-route.org/articles/always-leave-them-wanting-more
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p>Apparently Amanda Palmer is doing a 4-hour show of songs and talking. It sounds horrible. Not because I have a particular dislike of Amanda Palmer (although I'm not a big ukulele fan), but because 4 hours of any performance is too much.</p>
<p>All good things should come to an end, preferably before they outstay their welcome. Inside every double album is a better single album that should have got out. I want to enjoy a show, not endure it. I don't want to emerge from the cinema with a numb bum and an overfull bladder. I don't want books to be so heavy that they give my arms more of a workout than my mind. I don't want to see the director's cut, I want to see the editor's cut.</p>
<p>Why do people make long films and double albums? Perhaps they feel that bigger is better, that longer means value for money, or that it's a sign of having bigger ideas. Sometimes it seems to be a sense of self-importance, a grandiose notion that their muse needs to be given full expression without such tiresome limitations as the audience having other things to do with their lives.</p>
<p>The great Russian novels were written for people who needed to stay indoors for months on end, but even so, do all those details about farming really add to our understanding of the human condition?</p>
<p>Perhaps I'm a philistine, living in shallower times, but I don't want reams of description or dozens of intricate subplots. There's value in directness and expressing ourselves succinctly, and without unnecessary ornamentation. I’d much rather read a lean short story than a bloated epic saga.</p>
<p>Artists sometimes talk about being free from the shackles of commerciality, but sometimes the corporate bean-counters are protecting us from the self-indulgent navel-gazing and grandiose ambitions of the would-be auteur who thinks that more is more.</p>
<p>Then again, a lot of people seem to like that sort of thing - three and a half hours of superhero movie gets people queuing round the block, and people rave about the feat of making it through Springsteen gigs. Maybe I’m missing out on a transcendent experience because I’d rather get an early night.</p>
</div></div></div><span rel="schema:url" resource="/articles/always-leave-them-wanting-more" class="rdf-meta element-hidden"></span><span property="schema:name" content="Always leave them wanting more" class="rdf-meta element-hidden"></span>Fri, 27 Dec 2019 07:19:25 +0000Malcolm51545 at http://3ww.red-route.orgA new beginning - a first run in Leweshttp://3ww.red-route.org/articles/new-beginning-first-run-lewes
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p>I've just moved to Lewes, and I want to find some good places to run. I'd found a blog post of <a href="https://firsttimerunner.wordpress.com/2011/05/02/my-top-5-lewes-running-routes-for-novices/">Lewes running routes</a>, but I've never been too good at following maps. Besides, there's nothing quite like trial and error for finding your way around a new place, so I've decided to head out without a map, let Strava keep track of where I end up, and keep some notes to see if any of them could become good routes.</p>
<p>Today was moving day, but we're moving to a mostly furnished flat, so it wasn't too stressful. I got the car unloaded and set the flat up pretty quickly, so it seemed like a good idea to get out for a run before getting too hungry, and before my daughter arrived.</p>
<p>I put on my running shoes and headed East across the Phoenix Causeway. Taking the path down to the river and heading North, I went past Tesco and up through Malling Rec. Here the options were up the hill, which would probably take me to main roads fairly quickly, or across the footbridge towards the Pells. Signposts mentioned the Sussex Ouse Valley Way, which sounded promising.</p>
<p>Along the river the path opened out into wider fields, with surprisingly tame cows apparently untroubled by the dogs and their walkers on the path.</p>
<p>Ahead of me I could see a tower, which I guess must be the church at Offham. It seemed like a good thing to aim for, but the path didn't seem to want to go along with that idea. Instead it cut back under the railway line and into another field of cows.</p>
<p>After I ran two sides of a triangular field, a man relaxing at the corner suggested that there was a path through to the river - "a few nettles and brambles, but nothing too bad" he said. Perhaps I need to toughen up, but it seemed fairly impassable to me, so I sheepishly came back past him and headed towards Landport, dodging cowpats as I went. Part way down towards town, there was another gate into the fields, so I headed off-road again, but pretty soon ran out of path and trudged back to the gate to follow Landport Road.</p>
<p>At the recreation ground. again the far corner of the field looked promising from a distance, but when I got there, the path just headed into a bramble patch and up to a fence, so it was time for another loop back to the road, and down to a twitten cutting through to the Pells and back through to North Street.</p>
<p>With a bit more planning, this could evolve into the beginnings of a pretty good route - mostly flat, not too many directions to think about, and the paths through the fields weren't too bumpy.</p>
<dl><dt>Distance</dt>
<dd>6.68km</dd>
<dt>Time</dt>
<dd>39.08</dd>
<dt>Pace</dt>
<dd>5.51/km</dd>
<dt>Elevation gain</dt>
<dd>31m</dd>
<dt>Roads crossed</dt>
<dd>1</dd>
<dt>Other runners seen</dt>
<dd>0</dd>
<dt>Animals seen</dt>
<dd>cows, dogs, ducks, moorhens, pigeons, squirrels</dd>
<dt>Nettle stings</dt>
<dd>4</dd>
<dt>Bramble cuts</dt>
<dd>1</dd>
<dt>Dead ends</dt>
<dd>3</dd>
<dt>Twittens</dt>
<dd>1</dd>
</dl><iframe height="405" width="590" frameborder="0" allowtransparency="true" scrolling="no" src="https://www.strava.com/activities/2675960443/embed/1fc16762402748bdae6af68297c8323d3276bb83"></iframe>
</div></div></div><div class="field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-above">
<div class="field-label">Tags:&nbsp;</div>
<div class="field-items">
<div class="field-item even"><a href="/category/tags/lewes-running" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Lewes running</a></div>
<div class="field-item odd"><a href="/category/tags/lewes" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Lewes</a></div>
<div class="field-item even"><a href="/category/tags/running" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">running</a></div>
</div>
</div>
<a href="/blog/terms" class="taxonomy-link-all">All tags</a>
<span rel="schema:url" resource="/articles/new-beginning-first-run-lewes" class="rdf-meta element-hidden"></span><span property="schema:name" content="A new beginning - a first run in Lewes" class="rdf-meta element-hidden"></span>Tue, 03 Sep 2019 12:29:20 +0000Malcolm51536 at http://3ww.red-route.orgThere isn't a module for that already?http://3ww.red-route.org/articles/there-isnt-module-already
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p><em>This article was originally posted on the <a href="https://capgemini.github.io/drupal/module-already/">Capgemini Engineering blog</a></em></p>
<p>Sometimes clients ask for the wrong thing. Sometimes developers build the wrong thing, because they didn't ask the right questions. If you're solving the wrong problem, it doesn't matter how elegant your solution is.</p>
<p>One of the most important services that we as developers and consultants can provide is being able to help guide our clients to what they need, rather than simply giving them what they want. Sometimes those two things are aligned, but more often than not, figuring out the right thing to build takes some discovering.</p>
<p>Why don't wants and needs match? It might be because the client hasn't spent enough time thinking about the question, or because they haven't approached it from the right angle. If that's the case, we can help them to do that, either by asking the right questions or by acting as their <a href="https://en.wikipedia.org/wiki/Rubber_duck_debugging">rubber duck</a>, providing a sounding board for their ideas. Alternatively, it might be because, as a marketing or content specialist, they lack sufficient awareness of the potential technological solutions to the question, and we can offer that.</p>
<p>Once you've properly understood the problem, you can start to look for a solution. In this article, I'll talk about some examples of problems like this that we've recently helped clients to solve, and how those solutions led us to contribute two new Drupal modules.</p>
<h2>There must be a module for that</h2>
<p>Sometimes the problems are specific to the client, and the solutions need to be bespoke. Other times the problems are more general, and there's already a solution. One of the great things about open source is that somebody out there has probably faced the same problem before, and if you're lucky, they've shared their solution.</p>
<p>In general, I'd prefer to avoid writing custom code, for the same <a href="https://hackernoon.com/how-i-built-a-cms-and-why-you-shouldnt-daff6042413a">reasons that we aren't rolling our own CMS</a>. There are currently <a href="https://www.drupal.org/project/project_module">over 43,000 contributed modules available for Drupal</a>, some of which solve similar problems, so sometimes the difficult part is deciding which of the alternatives to choose.</p>
<p>Sometimes there isn't already a solution, or the solution isn't quite right for your needs. Whenever that's the case, and the problem is a generic one, <a href="https://capgemini.github.io/tags/#Open%20source">we aim to open source</a> the solutions that we build. Sometimes it's surprising that there isn't already a module available. Recently on my current project we came across two problems that felt like they should have been solved a long time ago, very generic issues for people editing content for the web - exactly the sort of thing that you'd expect someone in the Drupal community to have already built.</p>
<h2>How hard could it be?</h2>
<p>One area that sometimes causes friction between clients and vendors is around <a href="https://capgemini.github.io/agile/estimation/">estimates</a>. Unless you understand the underlying technology, it isn't always obvious why some things are easy and others are hard.</p>
<p><img src="https://imgs.xkcd.com/comics/tasks.png" alt="tasks comic" /><a href="https://xkcd.com/1425/">XKCD -tasks</a></p>
<p>Even experienced developers sometimes fail to grasp this - here's a recent example where I did exactly that.</p>
<p>We're building a site in Drupal 8, making heavy use of the <a href="https://drupal.org/project/paragraphs">Paragraphs module</a>. When adding a webform to a paragraph field, there's a select list with all forms on the site, sorted alphabetically. To improve usability for the content editors, the client was asking for the list to be sorted by date, most recently created first. Still thinking in Drupal 6 and 7 mode, I thought it would be easy. Use a view for selection, order the view by date created, job done - probably no more than half an hour's work. Except that in Drupal 8, webforms are no longer nodes - they're configuration entities, so there is no creation date to order by. What I'd assumed would be trivial would in fact require major custom development, the cost of which wouldn't be justified by the business value of the feature. But there's almost always another way to do things, which won't be as time-consuming, and while it might not be what the client asked for, it's often close enough for what they need.</p>
<h2>What's the real requirement?</h2>
<p>In the example above, what the content editors really wanted was an easy way to find the relevant piece of content. The creation date seemed like the most obvious way to find it. If you jump to a solution before considering the problem, you can waste it going down blind alleys. I spent a while digging around in the code and the database before I realised sorting the list wouldn't be feasible. By enabling the <a href="https://drupal.org/project/chosen">Chosen module</a>, we made the list searchable - not what the client had asked for, but it gave them what they needed, and provided a more general solution to help with other long select lists. As is so often the case, it was five minutes of development work, once I'd spent hours going down a blind alley.</p>
<p>This is a really good example of why it's so important to validate your assumptions before committing to anything, and why we should <a href="https://agilemanifesto.org/">value customer collaboration over contract negotiation</a> - for developers and end users to be able to have open conversations is enormously valuable to a smooth relationship, and it enables the team to deliver a more usable system.</p>
<h2>Do you really need square pegs?</h2>
<p>One area where junior developers sometimes struggle is in gauging the appropriate level of specificity to use in solving a problem. <a href="https://css-tricks.com/specifics-on-css-specificity/">Appropriate specificity</a> is particularly relevant when working with CSS, but also in terms of development work more generally. Should we be building something bespoke to solve this particular problem, or should we be thinking about it as one instance of a more generic problem? As I mentioned earlier, unless your problem is specific to your client's business, somebody has probably already solved it.</p>
<p>With a little careful thought, a problem that originally seemed specific may actually be general. For example, try to avoid building CMS components for one-off pieces of a design. If we make our CMS components more flexible, it makes the system more useful for content editors, and may even mean that the next requirement can be addressed without any extra development effort.</p>
<p>Sometimes there can be a sense that requirements are immutable, handed down from on high, carved into stone tablets. Because a client has asked for something, it becomes a commandment, rather than an item on a wish list. Requirements should always be questioned
The further the distance between clients and developers, the harder it can be to ask questions. Distance isn't necessarily geographical - with good remote collaboration, and open lines of communication, developers in different time zones can build a healthy client relationship. Building that relationship enables developers to ask more questions and find out what the client really needs, and it also helps them to be able to push back and say no.</p>
<h2>Work with the grain</h2>
<p>It can be tempting to imagine that the digital is infinitely malleable; that because we're working with the virtual, anything is possible. When clients ask “can we do X?, I usually answer that it's possible, but the more relevant question is whether it's feasible.</p>
<p>Just as <a href="https://www.frankchimero.com/writing/the-webs-grain/">the web has a grain</a>, most technologies have a certain way of working, and it's better to work with your framework rather than against it. Developers, designers and clients should <a href="https://capgemini.github.io/development/design-review-checklist/">work together to understand what's simple and what's complicated</a> within the constraints. Is the extra complexity worth it, or would it be better to simplify things and deliver value quicker?</p>
<p>Sometimes that can feel like good cop, bad cop, where the designers offer the world, and <a href="https://humanwhocodes.com/blog/2012/06/12/the-care-and-feeding-of-software-engineers-or-why-engineers-are-grumpy/">developers say no</a>. But the point isn't that I don't want to do the work, or that I want to charge clients more money. It's that I would much rather deliver quick wins by using existing solutions, rather than having developers spend time on tasks that don't bring business value, like banging their heads against the wall trying to bend a framework to match a "requirement" that nobody actually needs. It's better for everyone if developers are able to work on more interesting things.</p>
<h2>Time is on my side</h2>
<p>As an example of an issue where a little technical knowledge went a long way, we were looking at enabling client-side sorting of tables. Sometimes those tables would include dates. We found <a href="https://www.drupal.org/project/tablesorter">an appropriate module</a>, and helped to get the Drupal 8 version working, but date formats can be tricky. What is readable to a human in one cultural context isn't necessarily easy for another, or for a computer, so it's useful to add some semantic markup to provide <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time">the relevant machine-readable data</a>.</p>
<p>Drupal has pretty good facilities for managing date and time formats, so surely there must be a module already that allows editors to insert dates into body text? Apparently not, so I built <a href="https://www.drupal.org/project/ckeditor_datetime">CKEditor Datetime</a>.</p>
<p>With some helpful tips from the community on <a href="https://www.drupal.org/slack">Drupal Slack</a>, I found some CKEditor examples, and then started plumbing it in to Drupal. Once I'd got that side of things sorted, I got <a href="https://github.com/Mottie/tablesorter/issues/1657">some help from the plugin maintainer</a> to get the actual sorting sorted. A really nice example of open source communities in action.</p>
<h2>Every picture tells a story</h2>
<p>Another challenge that was troubling our client's content team was knowing what their images would look like when they're rendered.
Drupal helpfully generates image derivatives at different sizes, but when the different styles have different aspect ratios, it's important to be able to see what an image will look like in different contexts. This is especially important if you're using responsive images, where the same source image might be presented at multiple sizes depending on the size of the browser window.</p>
<p>To help content editors preview the different versions of an image, we built the <a href="https://www.drupal.org/project/imagestyles">Image Styles Display</a> module. It alters the media entity page to show a preview of every image style in the site, along with a summary of the effects of that image style. If there are a lot of image styles, that might be overwhelming, and if the aspect ratio is the same as the original, there isn't much value in seeing the preview, so each preview is collapsible, using the <a href="https://www.drupal.org/node/1852020">summary/details element</a>, and a configuration form controls which styles are expanded by default. A fairly simple idea, and a fairly simple module to build, so I was surprised that it didn't already exist.</p>
<p>I hope that these modules will be useful for you in your projects - please give them a try:</p>
<ul><li><a href="https://www.drupal.org/project/ckeditor_datetime">CKEditor Datetime</a></li>
<li><a href="https://www.drupal.org/project/imagestyles">Image Styles Display</a></li>
</ul><p>If you have any suggestions for improvement, please let me know using the issue queues.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-above">
<div class="field-label">Tags:&nbsp;</div>
<div class="field-items">
<div class="field-item even"><a href="/category/tags/capgemini" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Capgemini</a></div>
<div class="field-item odd"><a href="/category/tags/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Drupal</a></div>
<div class="field-item even"><a href="/category/tags/open-source" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">open source</a></div>
<div class="field-item odd"><a href="/category/tags/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></div>
</div>
</div>
<a href="/blog/terms" class="taxonomy-link-all">All tags</a>
<span rel="schema:url" resource="/articles/there-isnt-module-already" class="rdf-meta element-hidden"></span><span property="schema:name" content="There isn&#039;t a module for that already?" class="rdf-meta element-hidden"></span>Thu, 23 May 2019 23:00:00 +0000Malcolm51532 at http://3ww.red-route.orgThe bigger picture and the smaller details http://3ww.red-route.org/articles/bigger-picture-and-smaller-details
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p><em>This article was originally posted on the <a href="https://capgemini.github.io/agile/bigger-picture-smaller-details/">Capgemini Engineering blog</a></em></p>
<p>Many people, myself included, say that <a href="https://www.infoq.com/news/2008/11/sprint-misnomer">sprints are the wrong metaphor</a> for software development. When we think about the need to maintain a steady, sustainable pace, and the importance of <a href="http://rgalen.com/agile-training-news/2013/9/16/the-agile-project-manager-can-agile-teams-get-burned-out">avoiding burnout</a>, the idea of <a href="https://gojko.net/2018/08/30/sprints-marathons-root-canals.html">the sprint can give us the wrong idea</a>. But maybe it makes more sense if we think about how real sprints work, and about all of Scrum's ceremonies, not just the cargo cult of the stand-up.</p>
<p>When Usain Bolt finishes a race, he doesn't just start again straight away. He does his victory pose, smiles for the cameras, does some warming down, and has a few days rest. When it's time for the next race, he spends time preparing himself, both mentally and physically, for the challenge ahead. He does everything he can to ensure that he's in the best possible state before his next sprint starts, so that he's able to function at maximum capacity to achieve a good result.</p>
<p>As software development teams, all too often we ignore the importance of these activities between sprints. In particular, the retrospective is frequently undervalued. It's easy for managers to see the retrospective as a time-consuming navel-gazing session, where the team doesn't deliver any business value or burn any story points. If the team is under pressure to deliver faster, it's probably the first thing that gets cancelled.</p>
<p>In our <a href="https://capgemini.github.io/development/how-we-work/">software engineering team manifesto</a>, we laid out some points for how a team should operate, including the idea that we "focus on the details, and on the bigger picture”. Maintaining a healthy balance between these two ways of seeing can be a challenge, and it's one of the things that people often find difficult when moving from an individual contributor role to <a href="https://www.youtube.com/watch?v=PFk9yhEqcN4&amp;list=PLBzScQzZ83I_VX8zgmLqIfma_kJs3RRmu&amp;index=15&amp;t=0s">take on leadership responsibilities</a>. As developers we’re used to getting deep down into the details of an issue, but as leaders, shaping the direction of a product, we need to take more of an overview. If you’re a technical lead it can be very difficult to switch between these two contexts, especially if you don't take time to reflect. If the team is working flat-out, it's easy to fall into the trap of focusing solely on the small details - things like burndown rates or technical implementation challenges - at the expense of considering the bigger picture of the project's direction of travel. It's important to schedule time for both modes of thinking, and retrospectives are an ideal opportunity for thinking about the bigger picture.</p>
<p>Another analogy sometimes used for software development is <a href="https://m.signalvnoise.com/new-in-basecamp-see-where-projects-really-stand-with-the-hill-chart/">climbing a mountain</a>. When you're climbing uphill, you have to keep looking at your feet, watching out for uneven ground to make sure you don't trip up. It's only when you stop and look around that you get a chance to enjoy the view, and understand the whole point of the endeavour. If you keep plodding on without taking a break, it's very easy to get disheartened.</p>
<p>That's what retrospectives are for: a chance to take stock of where we are and how we got there. They offer a moment to pause, take a breath and think about where we're going next, and whether we're going the right way. They're an important opportunity to <a href="http://rgalen.com/agile-training-news/2012/4/28/the-agile-project-managerthe-secret-sauce-team-appreciation.html">celebrate what we've achieved, and recognise the hard work we've put in</a>.</p>
<p>So let's remember to take a break from time to time, appreciate our colleagues, understand our achievements and our challenges, and think about where we go from here.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-above">
<div class="field-label">Tags:&nbsp;</div>
<div class="field-items">
<div class="field-item even"><a href="/category/tags/capgemini" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Capgemini</a></div>
<div class="field-item odd"><a href="/category/tags/work" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">work</a></div>
<div class="field-item even"><a href="/category/tags/agile" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">agile</a></div>
<div class="field-item odd"><a href="/category/tags/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></div>
</div>
</div>
<a href="/blog/terms" class="taxonomy-link-all">All tags</a>
<span rel="schema:url" resource="/articles/bigger-picture-and-smaller-details" class="rdf-meta element-hidden"></span><span property="schema:name" content="The bigger picture and the smaller details " class="rdf-meta element-hidden"></span>Sat, 20 Apr 2019 10:32:25 +0000Malcolm51531 at http://3ww.red-route.orgA framework for progressively decoupled Drupal: Introducing the SPALP modulehttp://3ww.red-route.org/articles/framework-progressively-decoupled-drupal-introducing-spalp-module
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p><em>This article was originally posted on the <a href="https://capgemini.github.io/drupal/spalp/">Capgemini Engineering blog</a></em></p>
<p>A lot of people have been jumping on the headless CMS bandwagon over the past few years, but I’ve never been entirely convinced. Maybe it’s partly because I don’t want to give up on the <a href="https://youarenotsosmart.com/2011/03/25/the-sunk-cost-fallacy/">sunk costs</a> of what I’ve learned about Drupal theming, and partly because I'm proud to be a <a href="https://adamsilver.io/articles/the-boring-front-end-developer/">boring developer</a>, but I haven’t been fully sold on the benefits of decoupling.</p>
<p>On our current project, we’ve continued to take an approach that Dries Buytaert has described as <a href="https://dri.es/how-to-decouple-drupal-in-2018">"progressively decoupled Drupal"</a>. Drupal handles routing, navigation, access control, and page rendering, while rich interactive functionality is provided by a JavaScript application sitting on top of the Drupal page. In the past, we’d taken a similar approach, with AngularJS applications on top of Drupal 6 or 7, getting their configuration from <code>Drupal.settings</code>, and for this project we decided to use React on top of Drupal 8.</p>
<p>There are a lot of advantages to this approach, in my view. There are several discrete interactive applications on the site, but the bulk of the site is static content, so it definitely makes sense for that content to be rendered by the server rather than constructed in the browser. This brings a lot of value in terms of <a href="https://www.smashingmagazine.com/2015/05/client-rendered-accessibility/">accessibility</a>, <a href="https://hashnode.com/post/in-2018-does-ssr-still-provide-an-advantage-over-csr-for-1-seo-2-performance-cjd5j5ecl01nuw0wu64igm64f">search engine optimisation</a>, and <a href="https://medium.com/@adamzerner/client-side-rendering-vs-server-side-rendering-a32d2cf3bfcc">performance</a>.</p>
<p>A decoupled system is almost inevitably <a href="https://www.lullabot.com/articles/the-hidden-costs-of-decoupling">more complex</a>, with more potential points of failure.</p>
<p>The application can be developed independently of the CMS, so specialist JavaScript developers can work without needing to worry about having a local Drupal build process.</p>
<p>If at some later date, the client decides to move away from Drupal, or at the point where we upgrade to Drupal 9, the applications aren’t so tightly coupled, so the effort of moving them should be smaller.</p>
<p>Having made the decision to use this architecture, we wanted a consistent framework for managing application configuration, to make sure we wouldn't need to keep reinventing the wheel for every application, and to keep things easy for the content team to manage.</p>
<p>The client’s content team want to be able to control all of the text within the application (across multiple languages), and be able to preview changes before putting them live.</p>
<p>There didn’t seem to be an established approach for this, so we’ve built a module for it.</p>
<p>As we've previously mentioned, the team at Capgemini are strongly committed to supporting the <a href="https://capgemini.github.io/development/how-we-work/#innovate-and-industrialise">open source</a> communities whose work we depend on, and we try to contribute back whenever we can, whether that’s patches to fix bugs and add new features, or creating new modules to fill gaps where nothing appropriate already exists. For instance, a recent client requirement to promote their native applications led us to build the <a href="https://www.drupal.org/project/appbanners">App Banners module</a>.</p>
<p>Aiming to make our modules open source wherever possible helps us to think in systems, considering the specific requirements of this client as an example of a range of other potential use cases. This helps to future-proof our code, because it’s more likely that evolving requirements can be met by a configuration change, rather than needing a code change.</p>
<p>So, guided by these principles, I'm very pleased to announce the <a href="https://www.drupal.org/project/spalp">Single Page Application Landing Page module for Drupal 8</a>, or to use the terrible acronym that it has unfortunately but inevitably acquired, SPALP.</p>
<p>On its own, the module doesn’t do much other than provide an App Landing Page content type. Each application needs its own module to declare a dependency on SPALP, define a library, and include its configuration as JSON (with associated schema). When a module which does that is installed, SPALP takes care of creating a landing page node for it, and importing the initial configuration onto the node. When that node is viewed, SPALP adds the library, and a link to an endpoint serving the JSON configuration.</p>
<p>Deciding how to store the app configuration and make all the text editable was one of the main questions, and we ended up answering it in a slightly "un-Drupally" way.</p>
<p>On our old Drupal 6 projects, the text was stored in a separate 'Messages' node type. This was a bit unwieldy, and it was always quite tricky to figure out what was the right node to edit.</p>
<p>For our Drupal 7 projects, we used the translation interface, even on a monolingual site, where we translated from English to British English. It seemed like a great idea to the development team, but the content editors always found it unintuitive, struggling to find the right string to edit, especially for common strings like button labels. It also didn't allow the content team to preview changes to the app text.</p>
<p>We wanted to maintain everything related to the application in one place, in order to keep things simpler for developers and content editors. This, along with the need to manage revisions of the app configuration, led us down the route of using a single node to manage each application.</p>
<p>This approach makes it easy to integrate the applications with any of the good stuff that Drupal provides, whether that’s managing meta tags, translation, revisions, or something else that we haven't thought of.</p>
<p>The SPALP module also provides event dispatchers to allow configuration to be altered. For instance, we set different API endpoints in test environments.</p>
<p>Another nice feature is that in the node edit form, the JSON object is converted into a usable set of form fields using the <a href="http://brutusin.org/json-forms/">JSON forms library</a>. This generic approach means that we don’t need to spend time copying boilerplate Form API code to build configuration forms when we build a new application - instead the developers working on the JavaScript code write their configuration as JSON in a way that makes sense for their application, and generate a schema from that. When new configuration items need to be added, we only need to update the JSON and the schema.</p>
<p>Each application only needs a very simple Drupal module to define its library, so we’re able to build the React code independently, and bring it into Drupal as a Composer dependency.</p>
<p>The repository includes a small example module to show how to implement these patterns, and hopefully other teams will be able to use it on other projects.</p>
<p>As with any project, it’s not complete. So far we’ve only built one application following this approach, and it seems to be working pretty well. Among the items in the issue queue is better integration with configuration management system, so that we can make it clear if a setting has been overridden for the current environment.</p>
<p>I hope that this module will be useful for other teams - if you're building JavaScript applications that work with Drupal, please try it out, and if you use it on your project, I'd love to hear about it. Also, if you spot any problems, or have any ideas for improvements, please get in touch via the <a href="https://www.drupal.org/project/issues/spalp">issue queue</a>.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-above">
<div class="field-label">Tags:&nbsp;</div>
<div class="field-items">
<div class="field-item even"><a href="/category/tags/capgemini" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Capgemini</a></div>
<div class="field-item odd"><a href="/category/tags/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></div>
<div class="field-item even"><a href="/category/tags/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Drupal</a></div>
<div class="field-item odd"><a href="/category/tags/javascript" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">Javascript</a></div>
<div class="field-item even"><a href="/category/tags/open-source" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">open source</a></div>
</div>
</div>
<a href="/blog/terms" class="taxonomy-link-all">All tags</a>
<span rel="schema:url" resource="/articles/framework-progressively-decoupled-drupal-introducing-spalp-module" class="rdf-meta element-hidden"></span><span property="schema:name" content="A framework for progressively decoupled Drupal: Introducing the SPALP module" class="rdf-meta element-hidden"></span>Sat, 15 Dec 2018 06:42:42 +0000Malcolm51529 at http://3ww.red-route.orgStopping SVG icons from going "blobby"http://3ww.red-route.org/articles/stopping-svg-icons-going-blobby
<div class="field field-name-field-image field-type-image field-label-hidden"><div class="field-items"><div class="field-item even" rel="schema:image" resource="http://3ww.red-route.org/sites/red-route.org/files/styles/large/public/blobby.jpg?itok=iRkZGaOh"><img typeof="foaf:Image" src="http://3ww.red-route.org/sites/red-route.org/files/styles/large/public/blobby.jpg?itok=iRkZGaOh" width="258" height="386" alt="" /></div></div></div><div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p>Here's a weird thing I learned about styling inline SVG icons with CSS today.</p>
<p>If you apply a <code>stroke</code> attribute with CSS to an SVG, you might get more than you bargained for.</p>
<p>On my current project, we're using an inline icon system, and being a responsible developer, I wanted to keep file sizes as small as possible, so I was using <a href="https://github.com/svg/svgo">SVGO</a> to strip out all the unnecessary garbage that gets added by design programs. I also did a find and replace to swap inline colour values for <code>currentColor</code>, so that it would be easier to re-use the icons in different contexts.</p>
<p>I compared the before and after icons in my pull request, and everything looked fine, but when they were being used in the page, some of the icons looked strange. One of them ended up with a line around it, and some of them were just a bit odd - the only word I can think of is "blobby" - see for yourself in the Codepen below.</p>
<p data-height="400" data-theme-id="0" data-slug-hash="LrwpBp" data-default-tab="result" data-user="malcomio" data-pen-title="SVG" class="codepen">See the Pen <a href="https://codepen.io/malcomio/pen/LrwpBp/">SVG</a> by malcomio (<a href="https://codepen.io/malcomio">@malcomio</a>) on <a href="https://codepen.io">CodePen</a>.</p>
<script async="" src="https://static.codepen.io/assets/embed/ei.js"></script><p>The difficulty of describing the problem made it difficult to Google, and as usual, I went down a long and tedious rabbit-hole of trying to figure out the problem.</p>
<p>I wondered if perhaps the SVGO options I'd used weren't right, or if 7 decimal points of precision might not be enough. The icons in this project are more complex than the flat icons I'd used in the past, and I spent far too long looking at the text diff of the SVG files, and manually restoring the previous version of the paths or polylines.</p>
<p>The fact that the individual SVGs still looked fine suggested that I might have some problem in the build pipeline - maybe <a href="https://github.com/w0rm/gulp-svgstore">svgstore</a> was configured wrongly. So I spent a long time eyeballing the <code>&lt;symbol&gt;</code> elements in the combined file, and comparing them with the individual files - everything seemed fine.</p>
<p>After a lot of trial and error, eventually I stumbled upon the answer - <a href="https://capgemini.github.io/frontend/jekyll-svg-icons/">just as I had done before</a>, I was setting <code>stroke: currentColor;</code> on the icons with CSS, based on a mangled version of <a href="https://css-tricks.com/cascading-svg-fill-color/">something I'd read on CSS Tricks</a>. One thing I hadn't realised is that this affects all the elements, even things like <code>&lt;g&gt;</code> which aren't visible, and hadn't been until SVGO was stripping out the apparently useless <code>stroke="none"</code> attributes on those elements.</p>
<p>As with so many development problems, a long time investigating has led me to a one-line fix. I'm never quite sure whether or not I like that feeling - somehow those hours of tearing my hear out should be represented by a bigger change than just one line of code (and a deletion at that). On the other hand, there's a certain satisfying elegance to a simple fix like that.</p>
<p>I'm writing this partly to remind me about this for my next project, and partly to help other people who might be banging their heads against the wall with the same problem. After all, nobody wants things to be blobby.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-above">
<div class="field-label">Tags:&nbsp;</div>
<div class="field-items">
<div class="field-item even"><a href="/category/tags/svg" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">SVG</a></div>
<div class="field-item odd"><a href="/category/tags/css" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">CSS</a></div>
<div class="field-item even"><a href="/category/tags/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></div>
</div>
</div>
<a href="/blog/terms" class="taxonomy-link-all">All tags</a>
<span rel="schema:url" resource="/articles/stopping-svg-icons-going-blobby" class="rdf-meta element-hidden"></span><span property="schema:name" content="Stopping SVG icons from going &quot;blobby&quot;" class="rdf-meta element-hidden"></span>Thu, 29 Nov 2018 04:49:23 +0000Malcolm51528 at http://3ww.red-route.orgThe laziness of the long-distance input-seeker - on the value of staring into spacehttp://3ww.red-route.org/articles/laziness-long-distance-input-seeker-on-value-staring-space
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p>I grew up in the era of cassettes, and I'm inclined to dismiss the idea of bringing them back as <a href="https://red-route.org/articles/fear-and-loathing-shoreditch-why-do-we-hate-hipsters">ridiculous retro hipster-ism</a>. Tapes were crap. The sound quality wasn't great, you couldn't jump to the track you want, and even after the apparently miraculous invention of auto-reverse, you’d often have to laboriously disentangle the tape from the mechanism by spooling it back with a pencil.</p>
<p>But lately I'm starting to understand some of the nostalgia for tapes, even the imagined nostalgia of those who are too young to have experienced them the first time round. We would have the same tape in our Walkmans (Walkmen?) for days or even weeks on end, so we'd actually listen to albums, and get to know the songs intimately. Being unable to skip a track wasn’t a bug, it was a feature. We'd hear the hidden gems that lurk within albums, the ones that don't make it onto playlists.</p>
<p>There's a laziness that develops when everything is instantly available. It's easy to be overwhelmed by the choice offered by Spotify - rather than face the almost infinite choice choosing, you're likely to end up just listening to one of their playlists. After all, the more options that are available, the more of them must be the wrong choice.</p>
<p>Having fewer options makes it easier to choose, and reduces the risk of becoming <a href="https://en.wikipedia.org/wiki/Buridan%27s_ass">Buridan's ass</a>. When everything is possible, it's impossible to do everything, and it’s inevitable that you’ll miss out on something. Sometimes it’s useful to set yourself some limitations, and often <a href="https://red-route.org/articles/making-decision-more-important-being-right">it’s better to make a decision and start, even if that decision isn’t the perfect one</a>. As <a href="http://www.whitestripes.net/faq.php#addingmember">Jack White put it</a>, “having a huge budget or unlimited time ... robs you of a lot of creativity, because you're not focused or confined. We purposely confined ourselves to help us be more focused”.</p>
<p>The same is true for our consumer habits. So many of us seem to be addicted to input, constantly seeking new stuff to occupy our brains. Some people need to feed this addiction while walking along the street, head down staring at phones even as they're crossing roads against the lights. A while ago I went on a course, and as soon as there was a break, I was jumping to other tasks, checking my email and Twitter - seeking more input. It was like a compulsion - I should have been giving my brain the opportunity to process the new information it had received, but instead I was checking that there was <a href="https://red-route.org/articles/getting-fed-with-feeds-taking-back-control-our-do-lists">no pending input, no tasks to be done</a>. Of course I was deluding myself - <a href="https://red-route.org/articles/existentialist-developer-or-absurdity-code-quality">there always will be tasks to be done</a>. Even if you are able to clear your to-do list, it doesn't mean that there won’t be a fresh deluge - <a href="https://red-route.org/quotes/salk-reward-work-well-done">“the reward for work well done is the opportunity to do more”</a>.</p>
<p>On the thankfully rare occasions that I commute by public transport, this addiction to input is particularly bad. Wedged in to a tiny standing space on a train, it’s difficult to focus deeply, so I don’t even try to read a book.While I listen to a podcast, I'm scrolling through Twitter, so I'm not really taking in either of them properly - I’m just trying to stave off boredom, to fill the mental space until the next thing.</p>
<p>Sometimes what we need is a sanctuary from input. All that input can be overwhelming, which is why mindfulness is becoming so appealing to so many people. Last year I spent a weekend on a canal boat with some old friends, and it felt good to be moving slower than you could walk, decelerating from <a href="https://red-route.org/articles/i-feel-need-need-slowness">London speed</a> to a slower pace of life, in the middle of nowhere with no phone signal. Not having an internet connection can be liberating. It’s good to <a href="https://red-route.org/articles/parental-phone-addiction">take a break from the relentless input of social media</a> from time to time. If we force ourselves to disconnect from the wider world, we can connect more closely to what's around us.</p>
<p>There’s a tension between these two forces - the push and pull of a loud quiet loud life. I want to live in a city. I want peace and quiet. I want to be surrounded by activity. I want to relax. I want to keep up with what’s going on in the world. I want to switch off. I want to have new experiences. I don’t want to be bored.</p>
<p>But sometimes we all need a break from busyness, some space to unwind. Besides, boredom can be good for us. Someone who is never bored has no reason to be creative. All the time that we're consuming input, we can't be productive. There's no room for original thought if you're constantly filling your mind with input, especially if that input is the <a href="https://red-route.org/articles/wider-wide-screen-why-virtual-reality-will-never-be-good-real-reality">bite-sized banality of social media</a>. Our boredom killers also risk destroying creativity.</p>
<p>So here’s to doing nothing. Here’s to having downtime. Here’s to creating some mental space to be creative.</p>
<p></p><div class="video-filter"><iframe src="//www.youtube.com/embed/Pj-qBUWOYfE?modestbranding=0&amp;html5=1&amp;rel=1&amp;autoplay=0&amp;wmode=opaque&amp;loop=0&amp;controls=1&amp;autohide=0&amp;showinfo=0&amp;theme=dark&amp;color=red&amp;enablejsapi=0" width="800" height="400" class="video-filter video-youtube vf-pjqbuwoyfe" frameborder="0" allowfullscreen="true"></iframe></div>
</div></div></div><div class="field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-above">
<div class="field-label">Tags:&nbsp;</div>
<div class="field-items">
<div class="field-item even"><a href="/category/tags/psychology" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">psychology</a></div>
<div class="field-item odd"><a href="/category/tags/music" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">music</a></div>
</div>
</div>
<a href="/blog/terms" class="taxonomy-link-all">All tags</a>
<span rel="schema:url" resource="/articles/laziness-long-distance-input-seeker-on-value-staring-space" class="rdf-meta element-hidden"></span><span property="schema:name" content="The laziness of the long-distance input-seeker - on the value of staring into space" class="rdf-meta element-hidden"></span>Wed, 31 Oct 2018 05:11:20 +0000Malcolm51527 at http://3ww.red-route.orgOn becoming a philistinehttp://3ww.red-route.org/articles/on-becoming-philistine
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p>Somehow I don't put as much value on art these days as I used to. As a young man, I used to be moved by paintings or sculpture, have deep, almost physical reactions to artworks. I'd spend hours in galleries, and I have vivid memories of being lost in a dream in the Rothko room at the Tate or forgetting my hunger at the Rijksmuseum. Art meant something to me.</p>
<p>These days, on the rare occasions I go to galleries, I tend to come out fairly quickly, unimpressed by the affectation and pretension of <a href="https://red-route.org/articles/fear-and-loathing-shoreditch-why-do-we-hate-hipsters">try-hard hipsters</a> showing off.</p>
<p>What's changed? Is it me or the world? I'm pretty sure it's me. I've become one of those grumpy old men who hardly ever reads fiction, preferring to stay grounded in the real world when I read books these days. I want things to be useful and serve a practical purpose. I've come to value efficiency over beauty.</p>
<p>Similarly, my relationship with music has changed - it's no longer the vital, visceral part of my life that it once was. I could choose to believe, as so many older generations before me have believed, that music nowadays is all rubbish, compared to the golden age that I was fortunate enough to grow up in. But that would be an act of delusion, an attempt to deny the fact that I'm no longer the target audience for pop music.</p>
<p>My listening habits have evolved - as with so many people, I almost never sit down and properly listen to an album any more. At times, I'm just using music as background noise to shut out the world. I no longer want music to shake me up and change my life - I want it to be familiar, to comfort and soothe me.</p>
<p>It's not just me, and it's nothing new. Is this an inevitable part of getting older? Am I just following a well-trodden path, keeping my mind on practical matters like mortgage payments?</p>
<p>Maybe it's just parenthood, or middle age, a narrowing of our horizons as we worry more about what we've got to lose. I think there's a correlation between this and the transition from being the person who makes the noise late at night to being the one who complains about the noise.</p>
<p>When we're young, we believe that music and art have the power to change the world, or at the very least change our lives. It's easy to lose that belief as we slide into middle age. Maybe we no longer want to change the world.</p>
<p>When we're young, we dream of change - it's exciting. At a certain point in our lives, change becomes something to fear - it represents crisis and chaos, rather than opportunity. Perhaps it's related to a loss of optimism, or an increased awareness of our own mortality. We're no longer shielded by that sense of invincibility and self-importance that allows our younger selves to go off on adventures, take absurd risks, and dare to dream. Grand artistic statements no longer seem bold, they've become pretentious. Just as we <a href="https://quoteinvestigator.com/2014/02/24/heart-head/">tend to become more conservative politically as we get older</a>, we tend to be less culturally adventurous.</p>
<p>I'm middle aged and middle class, with a family to support, and a mortgage to pay. I'm a member of the National Trust. I've got a job, a career, a family, fixed-interest mortgage repayments and all the rest of it. In short, I've <a href="https://www.youtube.com/watch?v=RCxgqHqakXc">chosen life</a>. Is that such a bad thing?</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-above">
<div class="field-label">Tags:&nbsp;</div>
<div class="field-items">
<div class="field-item even"><a href="/category/tags/art" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">art</a></div>
<div class="field-item odd"><a href="/category/tags/music" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">music</a></div>
<div class="field-item even"><a href="/category/tags/psychology" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">psychology</a></div>
<div class="field-item odd"><a href="/category/tags/culture" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">culture</a></div>
<div class="field-item even"><a href="/category/tags/parenthood" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">parenthood</a></div>
</div>
</div>
<a href="/blog/terms" class="taxonomy-link-all">All tags</a>
<span rel="schema:url" resource="/articles/on-becoming-philistine" class="rdf-meta element-hidden"></span><span property="schema:name" content="On becoming a philistine" class="rdf-meta element-hidden"></span>Sun, 07 Oct 2018 06:35:25 +0000Malcolm51526 at http://3ww.red-route.orgWider than wide-screen: why virtual reality will never be as good as real realityhttp://3ww.red-route.org/articles/wider-wide-screen-why-virtual-reality-will-never-be-good-real-reality
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="schema:articleBody content:encoded"><p>In my line of work, with a distributed team, conference calls seem to be a necessary evil. Nobody seems to like them, with <a href="https://boingboing.net/2017/07/17/conference-call-bingo.html">all their frustrating clichés</a>. It isn't just that the technology isn't good enough yet. Part of the problem is that we <a href="https://red-route.org/articles/how-be-rude-people-youve-never-met-or-how-medium-defines-etiquette">haven't yet evolved our etiquette to handle the medium</a>, but there's more to it than that, a more fundamental limitation of digital communications that means that we'll always want to talk face to face.</p>
<p>Why are face to face conversations always better than Skype? I think it's because the world is too big to be contained within a screen. The subtleties of human interaction don't survive the compression necessary to fit into the limited bandwidth of a Skype call.</p>
<p>The same is true for other parts of our lives. When we store information digitally, we’re not storing the actual information. We’re storing a representation of it, a simulation, a compressed version that is lossy by definition. Even in so far as our devices are able to capture the world, they only retain those parts of it that the algorithm considers essential. The world is too complex, too rich, and too messy to be captured as data points by any algorithm.</p>
<p>In Nunhead, South London, there’s a man who seems to have volunteered himself as a traffic warden. Most mornings, he’ll stand on the corner wearing hi-viz, directing traffic at a slightly awkward corner. Sometimes I think about stopping to ask him why he does it, but I’m usually in a hurry to get to work. Besides, I quite like not knowing - it leaves me free to speculate on his motives.</p>
<p>Once I tried Googling him, but there was nothing there. In a way, I was glad. Contrary to what Google may think, not all information in the world can be classified and organised. The inner motivations of a stranger shouldn’t be public knowledge available for all and sundry to idly search. Hi-viz man exists in the physical world, not online.</p>
<p>The desire to focus on the offline world was part of why I recently deactivated Twitter, although it was also a very minor form of <a href="https://mashable.com/article/deactiday-twitter-protest-alex-jones">protest against hate speech</a>. It may not have made any difference. Chances are, nobody even noticed I wasn’t there. I don’t tweet all that much, I’ve only got a couple of hundred followers, and some of them are people who think I’m <a href="https://en.wikipedia.org/wiki/Malcolm_Young">the dead guitar player from AC/DC</a>.</p>
<p>But it's also good to have a break from all of that incoming data. I mainly use Twitter as a time-filler, a reflexive action to shield me from the boredom of spending time in my own company. I've become more and more aware of the negative impact it has on my behaviour, my mood, and my view of the world. Twitter can be the source of amusement and learning, but more often than not it's a conduit for negativity to enter my life. I’ll go on Twitter in between doing other things, and 5 minutes later I’ll be mildly outraged about some injustice or other, or convinced that the world is full of neo-Nazis.</p>
<p>The timing was good. I was going on holiday without my daughter, so I would have decent chunks of time to myself to do whatever I wanted, without <a href="https://red-route.org/articles/parental-phone-addiction">needing bite-sized bits of distraction</a>. My plan was to read books and physical newspapers, do the crossword, go for long rides on my bike, and otherwise do very little.</p>
<p>This wasn’t one of those digital detoxes that you hear people talking about. I was still using my phone for reading the news, email, Spotify and Evernote. Every now and again, I'd have a look at Facebook, and of course, when I went for those long rides, I recorded them on Strava - sometimes it feels like <a href="https://red-route.org/articles/i-love-ticking-boxes-but-i-hate-box-ticking-exercises-on-strava-education-and-objective">if you didn't log it, it didn't happen</a>.</p>
<p>At one point on my ride, I looked out across a valley, and the sight of the rolling hills filled me with joy, a refreshing feeling of freedom, and a wonderful sense that all was well in the world. Perhaps I was having what Alain De Botton described in The Art of Travel as “an encounter, pleasurable, intoxicating even, with human weakness in the face of the strength, age and size of the universe”. I thought about taking a picture, add it to my ride - after all, posts with media get more engagement. But there was no point. Partly, I wanted to carry on riding, rather than stopping to faff about with my phone. More than that, though, it just wouldn't have been a very good photo. The point about those views of the rolling countryside is that they don't fit into a photo, especially not a social media thumbnail. Looking at the view makes you feel small in comparison to the hills, and there's no way that a photo on a phone can do that. Even with a panoramic photo, you don't get the sense of wonder that the world is a beautiful place - something is always lost when you try to capture the moment. Also, there's something about having slogged your way up a hill that enhances your appreciation of the view from the top.</p>
<p>I'll probably re-activate my Twitter account, although hopefully I'll use it less frequently, and more intentionally. I'm a city-dweller, and while I like getting away from it all for a while to have some downtime, there's something invigorating about <a href="https://red-route.org/articles/i-feel-need-need-slowness">getting back up to London speed</a>. The same is true for my digital life. I want to move quickly through cyberspace, and process a lot of information as I go.</p>
<p>One good thing about going out into the countryside, and going offline, is that it helps us to experience the world directly, without it being framed by a screen, without being filtered by any algorithms. It’s too easy to see the world as a set of facts, a series of data points that can be aggregated and analysed in terms of how they fit into a wider pattern. We lose something when we view the world this way. There's more to life than pattern recognition, and individual moments and people have value beyond their existence as part of a dataset. There are more things in heaven and earth than can be dreamt of in any algorithm or that can fit on a smartphone screen.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-above">
<div class="field-label">Tags:&nbsp;</div>
<div class="field-items">
<div class="field-item even"><a href="/category/tags/work" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">work</a></div>
<div class="field-item odd"><a href="/category/tags/technology" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">technology</a></div>
<div class="field-item even"><a href="/category/tags/cycling" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">cycling</a></div>
</div>
</div>
<a href="/blog/terms" class="taxonomy-link-all">All tags</a>
<span rel="schema:url" resource="/articles/wider-wide-screen-why-virtual-reality-will-never-be-good-real-reality" class="rdf-meta element-hidden"></span><span property="schema:name" content="Wider than wide-screen: why virtual reality will never be as good as real reality" class="rdf-meta element-hidden"></span>Fri, 07 Sep 2018 06:19:15 +0000Malcolm51525 at http://3ww.red-route.org