    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Editorial: Just a minute</title>
        <link>https://members.accu.org/index.php/articles/2267</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>




<div class="xar-mod-head"><span class="xar-mod-title">Journal Editorial + Overload Journal #134 - August 2016</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c184/">Journal Columns</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c185/">Editorial</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c78/">Overload</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c364/">o134</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/c185-364/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/articles/c185+364/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Editorial: Just a minute</h1>
<p><strong>Author:</strong>&nbsp;Martin Moene</p>
<p>
<strong>Date:</strong> 07 August 2016 21:48:38 +01:00 or Sun, 07 August 2016 21:48:38 +01:00</p>
<p><strong>Summary:</strong>&nbsp;Constraints can seem like an imposition. Frances Buontempo wonders if banning hesitation, deviation or repetition is a good thing.

</p>
<p><strong>Body:</strong>&nbsp;<p>The BBC Radio 4 comedy â€˜Just a minuteâ€™ has been running since 1967. For those unfamiliar with it, the contestants are tasked to speak for one minute on a subject without hesitation, deviation or repetition. Points are awarded for speaking when the minute whistle blows, or for correctly spotting a failure to comply with the rules. â€œWhat does this have to do with an editorial for <em>Overload</em>?â€ I hear you ask. A good question. Having recently stopped commuting to work I am now at home in time to catch some of the 18:30 broadcasts of Radio 4 comedy programmes. Previously I could find them on the BBC iPlayer, but I prefer the set time and structure of certain little rituals. Having an editorial at the front of <em>Overload</em> is presumably a ritual some readers pine for, though as ever I hope I may be forgiven for deviating somewhat, sometimes repeating myself and definitely hesitating as I try to gather my thoughts every two months and yet again fail to write an editorial. Perhaps you will award me the occasional point for making you chuckle from time to time though.</p>

<p>Constraints, such as banning hesitation, repetition, or deviation might seem to make things harder; however, this can actually aid creativity. For example, writing a short story for a competition with a strict limit on the number of words, or filling in a personal statement for a role with a strict limit on the number of characters (spaces did count apparently) gives a structure and something to aim for. Adding a deadline may also provide some impetus. Constraints and structure can be a good thing. Writing a short story is a vague requirement, whereas writing one in under 500 words, using â€˜elephantâ€™, â€˜Plank constantâ€™ and â€˜denial of service attackâ€™ might focus the mind enough to get the imagination firing. </p>

<p>If you are self-employed or conducting long term research, perhaps a PhD, then a change from set working hours and a list of tasks to complete, or from timetabled lectures and weekly homework can be a shock to the system. On paper, it might sound liberating. Just imagine being free to do whatever you want, when you feel like it. In practice, a high level of discipline is required to ensure you do not get distracted, say by listening to comedy programs or doing a random walk through the internet, and instead keep focussed on the task in hand. Finding some structure, or setting a timetable for yourself, can be useful in such circumstances. Now working with a (very) small start-up, I have found it useful to start the day with a coffee, of course, and to use the agile style daily stand-up format, just briefly. What were we doing? What do we plan to do today? Whatâ€™s getting in the way? It is far too easy to start by looking at emails and so on, only to find two hours have vanished once some emails have been read, others deleted, links to articles have been followed, proclaiming exciting new programming languages and tools, surveys have sucked you in, and other distractions, or deviations, if you will, have stolen your time. What was I saying? Oh yes. Try to stay on target in the face of distractions and lack of formal structure. It is all too easy to be tempted to stay up far too late if you are in the middle of something interesting, without the need to be in the office by 9am sharp the next day. As a student, I frequently pulled all-nighters. I love having an interesting problem to get my teeth into, and there is usually no one much around to distract you in the middle of the night. However, irregular sleep patterns are not a good idea. I have personally found it really important to try to keep regular bed times, avoiding reading maths books before putting the light out. If I donâ€™t, then I find it harder to get a proper nightâ€™s sleep. The interesting problem will still be there in the morning. If you are pulling an all-nighter for work, the bug will still be there in the morning. In both cases, you might be more effective after a good nightâ€™s sleep. It seems sleep/wake homeostasis and the circadian biological clock are important [<a href="#[Body Clock]">Body Clock</a>]. There have been suggestions that irregular sleeping patterns, including shift work, can lead to health problems. J Harrington provides an overview in the BMJâ€™s <em>Occupational and Environmental Medicine</em> magazine [<a href="#[Harrington]">Harrington</a>]. </p>

<p>As programmers, hopefully avoiding burning the midnight oil, we schedule many things, often automatically. Aside from keeping meetings in regular timeslots, to avoid the disruption of flash-mob style meetings intruding on moments when you were trying to concentrate on a complex problem, we may schedule server reboots, or scripts to run when code is committed, from checking it compiles to checking tests pass or perhaps to deployment if everything is ok. We may automatically, or manually, check that coding standards, another form of constraint, have been adhered to. Hopefully the occasional deviation will be allowed, otherwise developers have a tendency to find back doors and workarounds where officious gatekeepers are perceived to stand in the way of productivity. A known timetable, such as a linux startup sequence; bios, mbr, grub, kernel, init then runlevel, means we know what will happen in which order. This constraint makes it easy to set things up and troubleshoot if required. Every linux installation doing things in a unique and unpredictable order would cause chaos.</p>

<p>A programming language could be seen as a sequence of constraints. Either a compiler or interpreter will enforce the syntax of the language and refuse to do any more if you try the coding equivalent of free-form jazz where a type-name was expected. Some languages are stricter than others. The Haskell type system is strongly revered, purporting to be able to give you code that is correct, rather than defensive. Originally introduced to solve problems concerning to equality and other numeric operations, its powerful type classes now allow reasoning about correctness [<a href="#[Hudak et al]">Hudak et al</a>]. At the extreme, some languages, such as Prolog, are purely based on constraints. Where an imperative approach would give step by step instructions and a declarative approach would declare what must be done, logic or constraint programming states constraints, or facts or rules, a solution must satisfy. This immediately lends itself to word puzzles like:</p>

<pre class="programlisting">
     SEND
  +  MORE
  -------
  = MONEY</pre>
  
<p>where each unique letter corresponds to a unique digit, and the given sum is correct. Prolog and variants have successfully been used for expert systems and natural language programming (NLP). GOLEM is an expert system built on Prolog [<a href="#[Muggleton]">Muggleton</a>] which combines examples with rules supplied by experts that are combined into hypotheses. In turn these can then be transformed into rules, when validated against further data. NLP uses include representing a semantic web [<a href="#[Wielemaker et al]">Wielemaker et al</a>], to combine disparate data from various sources allowing a â€˜semantic searchâ€™ to find potentially related entries. Constraint programming can also be applied to planning problems readily. The constraints in these examples all form the basis of a problem that the language will attempt to solve. I suspect logic programming is rather more niche than functional programming. More generally, this little diversion has shown constraints can solve problems.</p>

<p>Forays into niche languages aside, unfamiliarity can be exciting and uncomfortable in varying measures. A holiday or a new job will offer novelty but the potential culture shock as you are re-orientated in unusual places is a reminder that the same-old run-of-the-mill routine had its benefits. Many C++ programmers, or users of any compiled language, find dynamic languages unnatural initially. Similarly going from the constraint of a strongly typed language to duck typing can be confusing. It is interesting to note that more freedom often tends to coincide with fear, to begin with. Eventually people tend to embrace these brave new worlds. As a kitten constantly looks out of the window, seemingly longing to explore, and then recoils in horror when the back door is finally opened after a few weeks, the constraints that we are used to provide a familiarity and sense of safety. This disruption, whether it be changing programming languages or paradigms, operating systems or going outside for the first time ever is a thing of note. Constraints help us to be creative, by knowing what to expect, catching mistakes early, communicating clearly, even if hesitating when we forget the exact keyword or syntax, but also can inspire deviation or disruption. What if C++ (03) didnâ€™t require so much boilerplate just to output the contents of a vector? What if you introduced structure, via functions or submodules, to a coding language rather than having to trace <code>goto</code>s around to see what happened when? What if everything was an object? Maybe thatâ€™s a step too far. What if you didnâ€™t use braces to delineate blocks, but used spacing instead, perhaps inventing a new language in the process? Constraints can help creativity, but so can questioning them.</p>

<p>The start-up culture has readily adopted the buzz-word â€˜disruptiveâ€™. Clayton Christensen [<a href="#[Christensen]">Christensen</a>] coined the phrase â€˜disruptive innovationâ€™ in 1995 to describe small new companies being able to release new services and products far more quickly than established companies thereby being able to take hold of the so-called â€˜bottom of the marketâ€™ and eventually stir things up for the â€˜big boysâ€™. We see this happening with apps on mobile phones to book taxis, rather than hailing traditional Black Cabs, with noise about crypto-currencies stealing a market share off big banks, Amazon starting to threaten bookshops, and so on. Things do change and often small companies do disrupt the normal course of things with innovative ideas. I notice people are tending to just say â€˜disruptiveâ€˜ rather than using the whole phrase â€˜disruptive innovationâ€™. Something got lost in the meme sharing. Something like the punk anthem â€˜Smash it upâ€™ [<a href="#[The Damned]">The Damned</a>] conjures up the sense of pure disruption for disruption's sake. Disruptive innovation, on the other hand, may create new markets, or sustain existing products and services, by making them more efficient. </p>

<p>Sometimes rebellion for rebellionâ€™s sake does hail a new beginning. Punk was a kick against the hippie movement or prog rock, giving short simple songs anyone could yell along to, or write themselves. Itâ€™s tempting to draw analogies between the punk rock movement and disruptive start-ups, though like most ideas itâ€™s been done before. The Think Jar Collective offers such a parallel and reminds us that for all its disruption:</p>

<p class="blockquote">The punk movement and the music ate itself within a few years of its adrenaline and narcotic inspired inception. But punk morphed itself into new wave and gradually added itself into the mainstream of music.[<a href="#[TJC]">TJC</a>]</p>

<p>Uber and Amazon and the like are now becoming mainstream. New things do sometimes become old-hat. The abnormal might morph the world around itself until it becomes the new normal. This usually happens because people like the new ideas, rather than through clever marketing schemes. </p>

<h2>References</h2>

<p class="bibliomixed"><a id="[Body Clock]"></a>[Body Clock] <a href="https://sleepfoundation.org/sleep-topics/sleep-drive-and-your-body-clock">https://sleepfoundation.org/sleep-topics/sleep-drive-and-your-body-clock</a>
</p>

<p class="bibliomixed"><a id="[Christensen]"></a>[Christensen]  <a href="http://www.claytonchristensen.com/key-concepts/">http://www.claytonchristensen.com/key-concepts/</a></p>

<p class="bibliomixed"><a id="[The Damned]"></a>[The Damned] <a href="https://www.youtube.com/watch?v=YZ76LC_l8yk">https://www.youtube.com/watch?v=YZ76LC_l8yk</a></p>

<p class="bibliomixed"><a id="[Harrington]"></a>[Harrington]  <a href="http://oem.bmj.com/content/58/1/68.full">http://oem.bmj.com/content/58/1/68.full</a></p>

<p class="bibliomixed"><a id="[Hudak et al]"></a>[Hudak <em>et al</em>] â€˜A History of Haskell: Being Lazy With Classâ€™ Paul Hudak, John Hughes, Simon Peyton Jones, Philip Wadler. <em>Proceedings of the third ACM SIGPLAN conference on History of programming languages</em>, Pages 12-1â€“12-55, 2007<a href="http://dl.acm.org/citation.cfm?id=1238856">http://dl.acm.org/citation.cfm?id=1238856</a></p>

<p class="bibliomixed"><a id="[Muggleton]"></a>[Muggleton] S. Muggleton and C. Feng, â€˜Efficient induction of logic programsâ€™, <em>Inductive Logic Programming</em>, Academic Press, pages 281â€“297, 1992.</p>

<p class="bibliomixed"><a id="[TJC]"></a>[TJC] <a href="http://thinkjarcollective.com/articles/punk-rock-innovation/">http://thinkjarcollective.com/articles/punk-rock-innovation/</a></p>

<p class="bibliomixed"><a id="[Wielemaker et al]"></a>[Wielemaker<em> et al</em>] â€˜Using Prolog as the fundament for applications on the semantic webâ€™ Jan Wielemaker , Michiel Hildebrand2 , and Jacco van Ossenbruggen in <em>Proceedings of the 2nd Workshop on Applicatiions of Logic Programming and to the web, Semantic Web and Semantic Web Services</em>, p84â€“98, 2007 <a href="http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-287/paper_1.pdf">http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-287/paper_1.pdf</a></p>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
