<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Craig Nicol (he/him)</title>
    <description>The latest articles on DEV Community by Craig Nicol (he/him) (@craignicol).</description>
    <link>https://dev.to/craignicol</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F64879%2F8b4a4582-ab0b-40d9-a8a3-5a6e220b53d8.jpg</url>
      <title>DEV Community: Craig Nicol (he/him)</title>
      <link>https://dev.to/craignicol</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/craignicol"/>
    <language>en</language>
    <item>
      <title>Dear friends, and especially your children</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Thu, 20 Mar 2025 16:30:53 +0000</pubDate>
      <link>https://dev.to/craignicol/dear-friends-and-especially-your-children-n7a</link>
      <guid>https://dev.to/craignicol/dear-friends-and-especially-your-children-n7a</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://future.forem.com/challenges/writing-2025-02-26"&gt;Future Writing Challenge&lt;/a&gt;: How Technology Is Changing Things.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The latest version of AI is everywhere. You might have heard it called Generative AI, or LLMs. And you've been told that it will take your job, or this is Skynet, and there won't be any jobs for your children. And anyway everything they're learning in school is useless. You're scared, I know.&lt;/p&gt;

&lt;p&gt;This isn't the first AI revolution. You might remember when Kasparov lost a chess tournament to a computer. Or when Alexa was released and could understand most of what you said, and get things very wrong elsewhere. Just like autocorrect on your phone. &lt;/p&gt;

&lt;p&gt;And that's really what this is. It's an autocorrect that understands that most people who type Taylor then type Swift, that lots of people have pictures of cats, so it can predict what a picture of a cat can look like.&lt;/p&gt;

&lt;p&gt;But it isn't a decision or a reasoning engine, despite what the marketing money says. And there's still far more humans in the loop than you've been told. The party trick is built on huge amounts of energy - just look at how much money OpenAI loses - and huge amounts of human capital in places where labour is cheap. Categorising pictures, filtering out uncommercial content (not just nsfw but anything that might be controversial enough to scare advertisers).&lt;/p&gt;

&lt;p&gt;Meanwhile those same people are wildly underrepresented in the outputs of these models. Because when all your input is WEIRD (White, Educated,...) then so will you output be. Because internet life, like popular culture it grew on, is still heavily biased. &lt;/p&gt;

&lt;p&gt;The future isn't AI suppressing us, it's the billionaires using AI to reinforce bias and undermine labour power. But whilst they misdirect us by looking to an AI that doesn't exist, they can continue to exploit the rest of us (and the marginalized most of all) without oversight. And without respecting our privacy, or our copyright, or our humanity. &lt;/p&gt;

&lt;p&gt;The future will have more AI, but a future run by AI is a future that won't be a future for the majority of humans. The time will pass, and we can help it pass, and technology still has a big role to help our future, but only if we remember that we are in control. A future where more technology is controlled under laws like GDPR, where companies are controlled and monopolies are harder to form, and a future where technology might help us connect but doesn't meditate our social life. Be defiantly human, and make technology work for you, not the other way round.&lt;/p&gt;

</description>
      <category>futurechallenge</category>
    </item>
    <item>
      <title>Are Gen Z less technical?</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Tue, 11 Apr 2023 10:59:27 +0000</pubDate>
      <link>https://dev.to/craignicol/are-gen-z-less-technical-25jl</link>
      <guid>https://dev.to/craignicol/are-gen-z-less-technical-25jl</guid>
      <description>&lt;p&gt;&lt;em&gt;Scott Hanselmann had some thoughts on Gen Z and their knowledge of technology – is their knowledge less advanced than the previous generations?&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
 &lt;a title="@shanselman" href="https://www.tiktok.com/@shanselman?refer=embed"&gt;@shanselman&lt;/a&gt; &lt;p&gt;&lt;a title="stitch" href="https://www.tiktok.com/tag/stitch?refer=embed"&gt;#stitch&lt;/a&gt; with @glittering_ghostwriter is this generation less tech advanced than the last?&lt;/p&gt; &lt;a title="♬ original sound - Scott Hanselman" href="https://www.tiktok.com/music/original-sound-7204236712128695086?refer=embed"&gt;♬ original sound – Scott Hanselman&lt;/a&gt; 
&lt;/blockquote&gt;



&lt;p&gt;It depends what you mean by technology.&lt;/p&gt;

&lt;p&gt;I get that understanding files and folders are useful right now for understanding software and that part of our job is to teach that. But are they dying out?&lt;/p&gt;

&lt;p&gt;My dad, as a Chartered Electrical Engineer, was a dab hand at valves, capacitors and a bunch of electronic circuitry which has mostly been made obsolete by embedded systems using old CPU designs and lots of C. It’s not just that there’s missing levels of abstraction, that layer doesn’t work like that anymore.&lt;/p&gt;

&lt;p&gt;And in the web and big data era, I’m not sure we can say the underlying structure consists of folders and C drives. Web pages, social media, political movements, note-taking apps, presentations and APIs are built on relationships and multiple facets, not hierarchy and The One True Way. I loved delicious and GMail. Despite growing up on DOS, and later Windows and Linux, tags always made more sense to me than folders (heck, &lt;a href="https://github.com/craignicol/tagfs"&gt;I even built a proof-of-concept of a tag-driven file system based on how I used delicious&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;And as all the major languages embrace more functional composition over object hierarchy, will the structure of code itself follow? Look at how we’re starting to compose web applications, there are hierarchies of visual components, but the new ECMAScript is modular, and uses URLs instead of hierarchies to organise code. Microservices are loosely coupled and have no concept of hierarchy between them.&lt;/p&gt;

&lt;p&gt;Well-architected systems these days have service buses, temporary storage, network queues, and caches. There’s an asynchronous, distributed world that all the code lives in. That’s a very different technology to what I grew up with and started developing in. But it’s very similar to a world where kids communicate primarily by text, 1:1 or in group chats, where people post on social media and don’t know who sees it, where live streams become YouTube videos, where Slack, Discord and others make chat searchable and allow people to catch up in their own time. Where people have to track multiple channels asynchronously to keep up to date with their friends.&lt;/p&gt;

&lt;p&gt;The generation of developers who will build the next serverless and distributed applications, the fediverse generation, the XR voyagers, and the web3 generation – whether or not web3 itself becomes the next big thing, may find that those who think in terms of folders and hierarchies are limited in their ability to grok the systems required. Moderation in a hierarchy has failed multiple times. Twitter’s latest problems are not the only example. Amazon famously prefers small autonomous technical teams instead of big central planning. Google tried to get rid of managers, until they realised managers have a role beyond supporting the hierarchy.&lt;/p&gt;

&lt;p&gt;Yes, Gen Z have limited knowledge of some of the foundations of the technology we use today, but that’s just because those abstractions aren’t useful anymore. I’m sure some will embrace those abstractions, just as some embrace chiptunes and C64 restorations. But the foundations of yesterday’s technology will seem as archaic as valves or punched cards to whoever the next tech billionaire is.&lt;/p&gt;

&lt;p&gt;Are we going to be the dinosaurs, as the next wave takes over? We’re the generation who let go of memory management, semantic line numbers, and significant whitespace. They may well let go of hierarchies, disconnected machines, and object-oriented thinking.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The future is here, it’s distributed, it’s asynchronous, and it’s theirs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>code</category>
      <category>development</category>
      <category>leadership</category>
      <category>generations</category>
    </item>
    <item>
      <title>Name your problems</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Fri, 07 Apr 2023 10:52:00 +0000</pubDate>
      <link>https://dev.to/craignicol/name-your-problems-c23</link>
      <guid>https://dev.to/craignicol/name-your-problems-c23</guid>
      <description>&lt;p&gt;&lt;em&gt;A rose by any other name would smell as sweet.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Names matter. Names are a container for all we know about a person or a thing. Names give us a reference that allows us to abstract the detail to whatever level makes sense today.&lt;/p&gt;

&lt;p&gt;And big hairy problems will be referenced a lot. Big hairy problems will turn up at retrospectives where you can look at the detail and stand-ups where you can’t. They’ll manifest as bugs in some parts of the system, workarounds in others, and sometimes features in other places. They’re problems that aren’t one fix, they’re code and infrastructure and process changes.&lt;/p&gt;

&lt;p&gt;Sometimes the problem has an optimistic name: “Project Nightingale – to make data sing” because it’s much nicer to work on that than the “our charts are fundamentally broken and everyone hates working on them” problem. Sometimes it’s a description that helps visualise the issue: “the pinball routing problem” when the redirects in your webapp fill up your network, and it’s hard to see which page to show for the current state “Am I adding strawberries to my shopping cart, or am I paying for them separately?”&lt;/p&gt;

&lt;p&gt;A good name helps keep everyone focused and provides a focal point that everyone understands.&lt;/p&gt;

&lt;p&gt;I know naming things is hard, but naming hard things makes them easier to work with. And it doesn’t have to be a descriptive name. If you’re struggling, name them after hurricanes, or characters from Glee, or Tour De France winners, so long as they’re unique enough that you won’t get 2 of them confused.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Name your problems. And conquer them.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>code</category>
      <category>development</category>
      <category>programming</category>
      <category>software</category>
    </item>
    <item>
      <title>The conscious machine</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Wed, 22 Feb 2023 11:56:00 +0000</pubDate>
      <link>https://dev.to/craignicol/the-conscious-machine-41p7</link>
      <guid>https://dev.to/craignicol/the-conscious-machine-41p7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a fantastic explainer of the threats and risks, and opportunities of AI. Thinking about the nature of consciousness. Can we ever say truly what a machine consciousness is, or how it feels?&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://omny.fm/shows/clear-vivid-with-alan-alda/max-tegmark-when-our-machines-are-smarter-than-us" rel="noopener noreferrer"&gt;Max Tegmark – When Our Machines Are Smarter Than Us – Clear+Vivid with Alan Alda&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Up until now, we’ve been smarter than our tools. But that might change drastically sooner than we know. Isn’t it time to think about that?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As a white man, I have no idea how it feels to walk this world in darker skin. I can understand fear, but not the constant fear of being stopped by police, of watching my back.&lt;/p&gt;

&lt;p&gt;I can understand what is happening, and fight to change it, but I’ll never understand how it feels to be in that position. Equally, &lt;a href="https://en.m.wikipedia.org/wiki/Chinese_room" rel="noopener noreferrer"&gt;a machine will never be able to understand how that feels, although it may be able to approximate the behaviours expected of someone who does&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;AI is being built with a Western and a Chinese perspective. We cannot understand what a conscious machine will be like, or how it feels, but we can understand the environment it is created in.&lt;/p&gt;

&lt;p&gt;In the USA and in China, it’s an environment where the ruling party actively dehumanise sections of the community, particularly Muslims at the moment, and black skin for centuries.&lt;/p&gt;

&lt;p&gt;That environment is the context under which these consciousnesses are created. And whether the engineers agree with the government bias or not, their data will always be informed by it, especially where that AI is trained on historical data, news or social media.&lt;/p&gt;

&lt;p&gt;How deeply will that consciousness embed the ideas of division and hatred, that one group is better than another, that one group is less than human? And if that’s its world view, what decisions will it make?&lt;/p&gt;

&lt;p&gt;And it’s not theoretical. We know machine learning algorithms routinely discriminate against black skin, non-European names, female job applicants, and more.&lt;/p&gt;

&lt;p&gt;Without active anti-discrimination training, all these algorithms will build these white supremacist biases in, and that will be their world-view. Their water will be division and discrimination and they won’t be able to see it.&lt;/p&gt;

&lt;p&gt;Because those who train them are unable to see it.&lt;/p&gt;

&lt;p&gt;Machines don’t have to be smart to be dangerous. But a machine that embeds that bias into its own world-view can do it opaquely, just as systemic racism doesn’t have to use discriminatory language to prevent black kids from getting to university.&lt;/p&gt;

&lt;p&gt;Just one nudge after another to say “you don’t fit”, “this isn’t your world”, “try something else”, “behave more white”, “look less black”. (&lt;a href="https://en.m.wikipedia.org/wiki/Why_I'm_No_Longer_Talking_to_White_People_About_Race" rel="noopener noreferrer"&gt;Why I’m No Longer Talking To White People About Race&lt;/a&gt; has a great section on a hypothetical black kid growing up and these barriers)&lt;/p&gt;

&lt;p&gt;If you’re not actively building anti-discrimination into your AI, you are perpetuating white supremacy.&lt;/p&gt;

&lt;p&gt;You are supporting fascism.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How will you be anti-racist today?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ethics</category>
    </item>
    <item>
      <title>Why is CSS hard?</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Fri, 10 Feb 2023 00:07:28 +0000</pubDate>
      <link>https://dev.to/craignicol/why-is-css-hard-2pob</link>
      <guid>https://dev.to/craignicol/why-is-css-hard-2pob</guid>
      <description>&lt;p&gt;CSS is a real language, and you need deep technical knowledge to understand it. But plenty of software developers hate it and look down on it. It’s a good, if incomplete, tool for what it does. But I think it scares some of the gatekeepers who were drawn to software before the web.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;It can’t be unit tested. It’s a language that only exists in a domain that stretches multiple sizes, multiple devices and multiple renderers. There’s more than 1 way to do things. And some of the biggest challenges with CSS are human. It’s the paintbrush for the bike shed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/craignicol/status/1074330589107507200?s=19" rel="noopener noreferrer"&gt;https://twitter.com/craignicol/status/1074330589107507200?s=19&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Funny how many hard problems in computer science, including cache invalidation, are about users.&lt;/p&gt;

</description>
      <category>code</category>
      <category>development</category>
      <category>codecraft</category>
      <category>design</category>
    </item>
    <item>
      <title>If it hurts, stop doing it: the wrong process</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Tue, 07 Feb 2023 11:57:00 +0000</pubDate>
      <link>https://dev.to/craignicol/if-it-hurts-stop-doing-it-the-wrong-process-4cck</link>
      <guid>https://dev.to/craignicol/if-it-hurts-stop-doing-it-the-wrong-process-4cck</guid>
      <description>&lt;p&gt;If something is painful, should you do more of it? &lt;a href="https://dev.to/craignicol/if-it-hurts-stop-doing-it-the-wrong-tool-16fl"&gt;Not if it’s painful because you have the wrong tool.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometimes though, &lt;a href="https://dev.to/craignicol/processes-upon-processes-the-jira-trap-37l8"&gt;it doesn’t matter what the tool is, there’s something more fundamental at play&lt;/a&gt;. A process that exists only because one thing went slightly wrong years ago. And rather than&lt;a href="https://dev.to/craignicol/how-to-make-mistakes-1k5e"&gt;implementing a process to correct mistakes&lt;/a&gt;, somebody tried to prevent them.&lt;/p&gt;

&lt;p&gt;Just like technical debt, &lt;a href="https://craignicol.wordpress.com/2015/06/23/agile-papercuts/" rel="noopener noreferrer"&gt;this process debt adds pain&lt;/a&gt; to every feature, every bug fix, or every release. That pain can be removed by &lt;a href="https://dev.to/craignicol/work-hard-to-make-things-simple-303n"&gt;removing the process&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  It’s painful because you shouldn’t be doing it
&lt;/h2&gt;

&lt;p&gt;Does your test plan or your requirements sheet still specify IE as a supported browser? If Microsoft doesn’t support it why should you?&lt;/p&gt;

&lt;p&gt;Are you spending all your time monitoring your staff, making sure they’re working when they’re not in the office? Do you struggle getting the right reports? Do you feel resentment from your staff even though it’s in their best interest? Or have you tried trusting them?&lt;/p&gt;

&lt;p&gt;Is every release delayed because the database team and the security team have to review all code, and they’re already overstretched? Have you asked them how to provide confidence with less manual intervention? How to minimise the impact any change could make? How to add automation for common areas? How to train the developers to fix common issues upstream before it gets to the frontline teams?&lt;/p&gt;

&lt;p&gt;Have you ever thought about deleting a process that isn’t adding anything? About making things simpler?  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.podchaser.com/podcasts/inquiring-minds-159754/episodes/the-untapped-science-of-less-w-93221690" rel="noopener noreferrer"&gt;`The Untapped science of less : Inquiring Minds podcast’&lt;/a&gt;&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>agile</category>
      <category>development</category>
      <category>frustrating</category>
    </item>
    <item>
      <title>If you truly want people to be creative and innovative, take them off the clock</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Fri, 03 Feb 2023 11:52:00 +0000</pubDate>
      <link>https://dev.to/craignicol/if-you-truly-want-people-to-be-creative-and-innovative-take-them-off-the-clock-53h1</link>
      <guid>https://dev.to/craignicol/if-you-truly-want-people-to-be-creative-and-innovative-take-them-off-the-clock-53h1</guid>
      <description>&lt;p&gt;&lt;em&gt;That doesn’t mean no deadlines, but no timesheets – don’t justify every 15 minutes with a project, because the next ideas aren’t about 1 thing, they’re about connecting multiple things.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;They’re about &lt;a href="https://craignicol.wordpress.com/2007/01/25/take-a-good-hard-look-at-your-first-revision-and-just-say-to-yourself-gloves/" rel="noopener noreferrer"&gt;taking time to pause&lt;/a&gt; and thinking about the bigger picture: what problems are you seeing in multiple places? Where else would that new thing you’ve built be useful? What are multiple clients asking for?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>timeout</category>
      <category>agile</category>
      <category>codecraft</category>
    </item>
    <item>
      <title>Mise en place architecture</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Tue, 31 Jan 2023 11:52:00 +0000</pubDate>
      <link>https://dev.to/craignicol/mise-en-place-architecture-14n5</link>
      <guid>https://dev.to/craignicol/mise-en-place-architecture-14n5</guid>
      <description>&lt;p&gt;&lt;em&gt;I love working with smart people. I learn a lot and it gives me energy.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I hate working with smart people who aren’t motivated. They’ll either get sloppy, get a new job, or get creative with their code design. The kind of creativity that makes you curse when you’re debugging a production incident at 3am.&lt;/p&gt;

&lt;p&gt;The best creativity happens in a constrained environment, which also happens to make the easiest debugging.&lt;/p&gt;

&lt;p&gt;Sure, we could let the developers figure out the best way to do something for every component, and there’s sometimes a benefit, but for every hour they’re spending figuring out how to solve a problem that didn’t need to be solved, or figuring out an unusual design, or evaluating a logging package, or writing boilerplate, there’s an hour not delivering value.&lt;/p&gt;

&lt;p&gt;When an architecture is designed to put everything right where it should be, where decisions that have already been made are baked into the code and the tools, where &lt;a href="https://en.wikipedia.org/wiki/Don%27t_Make_Me_Think" rel="noopener noreferrer"&gt;a developer doesn’t have to think&lt;/a&gt; about how to structure their solution, the code is easier to write, easier to review and easier to debug.&lt;/p&gt;

&lt;p&gt;Chefs like to follow mise en place. Everything in its right place. Before preparing a dish, prepare the workspace, the knives, and the food. Everything you need for the task and nothing you don’t. Everything is in a predictable place. Because then you can concentrate on the dish, instead of the kitchen. &lt;a href="https://craignicol.wordpress.com/2016/09/20/usable-apis-follow-up/" rel="noopener noreferrer"&gt;Good preparation helps every task fall into the pit of success&lt;/a&gt;, and makes it easier to recover if something goes wrong.&lt;/p&gt;

&lt;p&gt;The more steps you have to complete a subtask, the easier it is to make mistakes. You might forget what the previous step was, you might walk to the fridge and then have to return to your workspace to remember what you need. Multitasking adds friction and adds opportunities for error.&lt;/p&gt;

&lt;p&gt;That’s why we want encapsulated classes and single responsibility. One change updates one file, as far as possible. Although one feature may cover many changes in order to make it possible. Isolate your code from the data store, &lt;a href="https://craignicol.wordpress.com/2016/07/01/your-api-sucks-notice-period/" rel="noopener noreferrer"&gt;isolate the public API from your code&lt;/a&gt;, &lt;a href="https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/" rel="noopener noreferrer"&gt;parse don’t validate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Keep smart people working on solving new problems, and keep them consistent, because that’s the way to get the best from the team at all times, especially when you have a Priority 1 to update a logging framework at 3am.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>development</category>
      <category>programming</category>
      <category>architecture</category>
      <category>codecraft</category>
    </item>
    <item>
      <title>You need a manifesto</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Fri, 27 Jan 2023 11:53:00 +0000</pubDate>
      <link>https://dev.to/craignicol/you-need-a-manifesto-5hfa</link>
      <guid>https://dev.to/craignicol/you-need-a-manifesto-5hfa</guid>
      <description>&lt;p&gt;&lt;em&gt;My software engineers’ manifesto:&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We write software to solve problems, not to create them.&lt;/li&gt;
&lt;li&gt;We write software for everyone.&lt;/li&gt;
&lt;li&gt;Those who don’t write software have things we can learn from.&lt;/li&gt;
&lt;li&gt;Always leave the project better than you found it.&lt;/li&gt;
&lt;li&gt;Sometimes the best contribution you can make is not writing code.&lt;/li&gt;
&lt;li&gt;Sometimes the best contribution you can make is deleting code.&lt;/li&gt;
&lt;li&gt;Sometimes the best contribution you can make is by talking to someone.&lt;/li&gt;
&lt;li&gt;Software is inclusive. Women broke the Enigma code, and black women got us to the moon.&lt;/li&gt;
&lt;li&gt;If you don’t hate in 5 years what you’ve written today, you haven’t learned enough.&lt;/li&gt;
&lt;li&gt;If you don’t have compassion for whoever wrote that code 5 years ago, you haven’t learned enough.&lt;/li&gt;
&lt;li&gt;If anyone can’t use your software, that’s a bug. Prioritize accordingly.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/craignicol/unsuccessful-teams-5b59"&gt;Overtime is a bug.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Debug your processes with as much attention to detail as you debug your code.&lt;/li&gt;
&lt;li&gt;Asking for help is a sign of strength.&lt;/li&gt;
&lt;li&gt;Work with the best. Don’t lower your standards to only work with straight cis white men.&lt;/li&gt;
&lt;li&gt;Be pragmatic. Shipped code is far more useful than perfect code, but if you can have both, &lt;a href="https://dev.to/craignicol/what-are-you-doing-now-that-your-future-self-will-thank-you-for-5b5b"&gt;future you will thank you&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Inspired by: You Need A Manifesto &lt;a href="https://pca.st/episode/33cb401f-a028-4de2-b20d-ec2c96f2b019"&gt;https://pca.st/episode/33cb401f-a028-4de2-b20d-ec2c96f2b019&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>code</category>
      <category>development</category>
      <category>programming</category>
      <category>codecraft</category>
    </item>
    <item>
      <title>If it hurts, stop doing it : the wrong tool</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Tue, 24 Jan 2023 11:17:05 +0000</pubDate>
      <link>https://dev.to/craignicol/if-it-hurts-stop-doing-it-the-wrong-tool-16fl</link>
      <guid>https://dev.to/craignicol/if-it-hurts-stop-doing-it-the-wrong-tool-16fl</guid>
      <description>&lt;p&gt;There’s a theory under agile, lean and similar methodologies that if something is painful, you should do more of it. If releases are infrequent and error-prone and once a quarter, do them 10 times a day and they’ll get easier.&lt;/p&gt;

&lt;p&gt;Same idea with performance reviews, customer feedback, and security audits. If it’s a good idea and it’s painful, practice it and refine it until it’s natural and mostly painless. And the pain that’s left is manageable. Roll back the release, and have another catch-up tomorrow once tempers have dampened.&lt;/p&gt;

&lt;p&gt;I’ve seen people make the mistake of assuming that it should apply to everything. Every pain point is a gathering, a thing to be controlled, minimised and made less painful, by repeating it over and over again. After all, if it works over there, it should also work over here.&lt;/p&gt;

&lt;p&gt;But not all pain is equal.&lt;/p&gt;

&lt;p&gt;Remember, focusing on doing something more means that we deal with the pain by eliminating it. We automate releases so we can throw out that painful checklist. We give small, actionable feedback at the time, rather than a sucker punch that brews for months until it’s released in the appraisal.&lt;/p&gt;

&lt;p&gt;But don’t mistake pain for discomfort. Making big improvements will mean transitions that are scary and uncomfortable. And what’s painful for someone else might not be painful for you. That doesn’t mean the pain isn’t real and it still needs to be dealt with.&lt;/p&gt;

&lt;p&gt;Here’s a few things that are painful because you shouldn’t be doing them. These are the pebbles in your shoes that you need to remove.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;It’s painful because it was never built for that&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;I know there’s a lot of hate for JIRA. It’s the tool of choice for “Safe Agile” enterprises. And&lt;a href="https://craignicol.wordpress.com/?p=4007" rel="noopener noreferrer"&gt;it gets a bad rep for being an overcomplicated monstrosity&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I was a JIRA admin once, bringing the tool into our enterprise. There were things I didn’t like about it on a technical level, but the central tool, with the defaults, isn’t terrible. But it’s so customisable, that you can codify any corporate process you like. And when it causes frustration, people blame the tool, not the admin. When the tool is the process, it makes concrete what people could fudge, and suddenly everyone has to work the way of the manager who needs to show their impact.&lt;/p&gt;

&lt;p&gt;Start with the people. Don’t build a process around what people &lt;strong&gt;&lt;em&gt;should&lt;/em&gt;&lt;/strong&gt; do. Find out what they &lt;strong&gt;&lt;em&gt;actually&lt;/em&gt;&lt;/strong&gt; do and build from there. Some of it might be wrong, but find out why, and &lt;a href="https://craignicol.wordpress.com/2016/07/05/cognitive-load-default-to-success/" rel="noopener noreferrer"&gt;help them fall into the pit of success&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Don’t blame the tool for a broken process.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>development</category>
      <category>leadership</category>
      <category>agile</category>
      <category>management</category>
    </item>
    <item>
      <title>Stop working when you’re ill</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Fri, 20 Jan 2023 10:52:00 +0000</pubDate>
      <link>https://dev.to/craignicol/stop-working-when-youre-ill-3944</link>
      <guid>https://dev.to/craignicol/stop-working-when-youre-ill-3944</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;a href="https://www.heraldscotland.com/news/19370100.agenda-managing-presenteeism-remote-working/?ref=rss"&gt;Want to stop people from working when they’re ill?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pay them.&lt;/li&gt;
&lt;li&gt;Warn them if you find they are working. The culture should expect everyone to recover before working.&lt;/li&gt;
&lt;li&gt;Encourage everyone to have an illness plan – where can anyone find what work needs to be covered, and who’s best placed to cover it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;See also: working when children or parents are ill.&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>ethics</category>
      <category>management</category>
      <category>codequality</category>
    </item>
    <item>
      <title>The uncrackable back door : The intersection of mathematics, AI, politics and ethics</title>
      <dc:creator>Craig Nicol (he/him)</dc:creator>
      <pubDate>Tue, 17 Jan 2023 11:52:30 +0000</pubDate>
      <link>https://dev.to/craignicol/the-uncrackable-back-door-the-intersection-of-mathematics-ai-politics-and-ethics-1fmk</link>
      <guid>https://dev.to/craignicol/the-uncrackable-back-door-the-intersection-of-mathematics-ai-politics-and-ethics-1fmk</guid>
      <description>&lt;p&gt;The following is a lightly edited conversation I had with a tech-savvy friend who is not in IT. It was about the FBI trying to break the encryption on an iPhone so they could access potential information on criminal activity, but in light of the UK government seeking to add backdoors to all messaging platforms, for much the same reason, I thought it was a good time to revisit the arguments.&lt;/p&gt;

&lt;p&gt;My friend’s comments are quoted, and the unquoted text is mine.&lt;/p&gt;

&lt;p&gt;Imagine a technology existed that let you send things via post and to you and everyone else it looked like an envelope, but to the NSA it looked like a postcard, and they could read everything.&lt;/p&gt;

&lt;p&gt;How does the NSA prove it’s them? How can we trust them? What if the FBI or your local police force can pretend to be the NSA? Couldn’t criminals, or your stalker ex do it too?&lt;/p&gt;

&lt;p&gt;Maths doesn’t deal with legal balance. Either you let everyone in, or you let no one in. That’s the political choice. Is getting access to this phone more important than keeping other governments, such as China or North Korea out of phones they are interested in?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I don’t know if it’s an all or nothing situation though… are we saying that the courts shouldn’t be able to force entry into criminals data? Or are we saying that all data should be accessible to all outside existing privacy laws?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think of the Enigma code. Once it was broken, Bletchley Park knew most of what the military was doing. If the Nazis knew it was broken, they’d have stopped using it, and all the work would have been for nought.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Enigma is a great example of why the code needed to be broken in the first place. That’s a chicken and egg scenario. But also a really interesting point! What if an iPhone is enigma, and say GCHQ cracked it. Would the evidence be allowed in court?&lt;/p&gt;

&lt;p&gt;Is it not the case of Apple granting access to specifc phones; not being given the technique to do so?&lt;/p&gt;

&lt;p&gt;What I’m worried about is the fact that big companies could hold justice and common law to randsom: that to me is equally as worrying as big brother, if not even more so. We can “elect” governments, and they can pass legislation to create international privacy agreements (as what Snowden’s revelations led to) We can’t elect Apple and I detest how Apple seem to be influencing justice; that is a very very bad sign of things to come.&lt;/p&gt;

&lt;p&gt;Don’t even get me started over how data protection doesn’t exist between companies any more. Logon via Facebook anyone?&lt;/p&gt;

&lt;p&gt;Is it not the case that Apple can access all this data anyway? So does Apple not have an ethical responsibility to disclose evidence for an individual case that has a court request attached to it? Guess not. Is that an appropriate level of power a company should have? To dictate what can and can’t be shared with courts?&lt;/p&gt;

&lt;p&gt;Corporations already have too much power in the world. By not establishing a legal framework of when it is appropriate for a court order to be issued and have access (e.g to break and enter) we are basically letting sometimes serious criminals have a get out of jail free card. And that includes tax dodgers like Apple.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Apple can’t access the data at the moment, that’s the point. It only exists on the phone, encrypted with a key that’s password protected with a password only known to a dead guy.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Interesting. So none of his data was stored on Apples / 3rd party servers and it was all encrypted on the phone? What about all his comms traffic.&lt;br&gt;&lt;br&gt;
If I encrypt my (ah hem) Google Android phone, does that mean that my emails can’t be viewed by Google?&lt;/p&gt;

&lt;p&gt;A lot of this comes down to trust. I don’t trust our govt nor the govt of others, but equally I don’t trust Google or Apple.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He switched off iCloud sync so it was all on his phone. However, as it was government issue, they could have changed that via policy if the FBI hadn’t tried to change the iCloud password, and hence locked the phone out of the government domain.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So they got locked out. That’s hilarious.&lt;/p&gt;

&lt;p&gt;What I tend to do these days is try to remove my mind from the broader political implications and think about things at a ground level then I thought…. what if a phone contained information related to the death of my loved one.. then I realised there should be a controlled process in place to retrieve data legally and transparently.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think the broader implications are important. If they can do it here, where else would it apply?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We have to think of real world scenarios : a murder in Glasgow, a child missing, that type of thing&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Look at councils using anti-terror legislation to catch petty criminals, or DSS using it to follow people on benefits.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Imagine an encrypted padlock to a cabinet containing murder weapons.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Who watches the watchmen?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That’s conspiracy speak Craig. If we don’t trust the courts… then who can we trust?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s recorded activity. It’s not conspiracy if it actually happened.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;courts are separate from government. They have been in Scotland since 1748.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I trust the courts. The problem is that many of these powers bypass the courts.&lt;/p&gt;

&lt;p&gt;DSS is rarely a court matter.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Yes, but they are doing so illegally and that’s why new laws are coming in&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And a backdoor for one is a backdoor for all. If the FBI have a post-it note with the pin for that murder weapon safe, it only takes one photo for everyone to have access.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The FBI is not the UK. We cannot control what Israel does but what we can do is create controls for the UK. so… if my loved one is killed, and there are photos on the phone.. then of course the police should have access! It’s a no brainer&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;True, so why would we want a situation that increases the risk of Israel, or North Korea, having the means to access something that sensitive?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What’s sensitive exactly? They don’t care about normal users!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even if it means Journalists at News Of The World can also gain access to those photos?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That’s illegal! As is breaking and entering.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It didn’t stop them last time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Yes.. and look what’s happened.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They renamed it to the Sun on Sunday, and carried on as normal?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Come on…. I’m saying that only the courts can have access.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Being illegal doesn’t stop things from happening. That’s why we lock our doors and fit burglar alarms.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;and besides… they cracked the iPhone anyway!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s not how maths works.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Life isn’t maths. Life is ethics. Ethics are not maths&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yeah, there’s an Israeli company that will break into iPhones for anyone who pays.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What Israel does is up to them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No, but encryption is maths.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But retrieving data is an ethical issue. It’s not black and white. It’s about appropriate use of powers&lt;/p&gt;

&lt;p&gt;Like knowing when to put someone away for life, or releasing them in 10 years&lt;/p&gt;

&lt;p&gt;It would not be acceptable for police to hack my phone without just cause, but it would be acceptable if they suspect me of plotting a terrorist act.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I agree, but when access to the data cannot be done without compromising everyone’s security, we have to ask where to draw the line?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We draw the line through the law.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;CCTV inhibits crime in those areas, but we accept that it’s creepy to allow it in bathrooms.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Exactly. …&lt;a href="https://ico.org.uk/for-the-public/cctv/"&gt;There are laws regarding the use of CCTV&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And many offices do not have CCTV inside because the risk of losing sensitive data is higher than the risk of crime.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can only film in your property. That’s the law. But.. of course there is a difference between private companies and local government. And that’s where PFI come in….&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Plenty of public CCTV as well&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not here there isn’t&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Depends where you are, agreed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There’s a camera on the bus.. I think, and at the primary school, maybe one in the shop…. but I don’t think big brother is watching when they can’t find muggings taking place at the Broomielaw!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s about effectiveness though.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Google is the one to watch&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And Facebook&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Yeah… but Facebook has countless terrorist pages funnily enough. So they can’t even monitor effectively. Let alone GCHQ.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Depends who has the most effective Algorithms. We don’t know what GCHQ is capable of. Just ask Snowden.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You know fine well it’s not about monitoring – it’s about textual analysis – patterns – heuristics. GCHQ is trustworthy. I have no problem with them whatsoever.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s cos you’re not Harriet Herman, or a union activist.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I really don’t, maybe I am naive, but I’m not scared. If I want to disconnect all I have to do is switch off the router and remove my sim&lt;br&gt;&lt;br&gt;
oh and stop using my bank card&lt;br&gt;&lt;br&gt;
and then become a missing person…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not GCHQ, but …&lt;a href="http://www.theguardian.com/uk-news/undercover-with-paul-lewis-and-rob-evans/2015/oct/02/police-facing-hard-questions-over-covert-monitoring-of-jeremy-corbyn-and-other-mps"&gt;the police faced hard questions about covert monitoring of Jeremy Corbyn and other MPs&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Well that’s not surprising. This has nothing to do with encrypted phones.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That &lt;a href="http://www.bbc.co.uk/news/uk-politics-34729139"&gt;security services were monitoring privileged conversations of individuals not suspected of criminal activity&lt;/a&gt;?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Does that come as a surprise? They may as well just have attended a meeting.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No. But it shows trusting the courts is naive when it comes to backdoors&lt;/p&gt;

&lt;p&gt;Attending a meeting is enough to put you on a watchlist.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is not the same as getting access to evidence for a crime that has taken place. If you want secrecy, you can meet in the woods. It’s very simple…&lt;/p&gt;

&lt;p&gt;Sorry, but I do trust our system of justice.. I don’t necessarily trust the government and I certainly believe that there should be water tight controls that allow for breaking and entering into criminals data. And that includes data from corrupt politicians. It works both ways.&lt;/p&gt;

&lt;p&gt;Digital forensics is a thing… with impossible encryption the whole thing falls down&lt;/p&gt;

&lt;p&gt;Now… I like encryption… especially for B2B, but Apple are not gods! And private companies should never be above the law. If we let private companies rise above the law, we will be in a much worse situation than we are now… it’s already bad enough with tax avoidance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s not about being above the law. It’s about a clear standard, and if police don’t have evidence to hand, they have to collect it. Sometimes cameras are broken. Sometimes weapons are lost, and sometimes you can’t get access to encrypted data.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;They can only legally collect evidence if they have sufficient knowledge of a criminal activity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And they have ways to set up intercepts in those cases, without physical access to the phone&lt;/p&gt;

&lt;h2&gt;
  
  
  Further Reading
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://www.theverge.com/2016/2/22/11096888/bill-gates-apple-fbi-iphone?utm_campaign=theverge&amp;amp;utm_content=article%3Afixed&amp;amp;utm_medium=social&amp;amp;utm_source=facebook"&gt;Bill Gates say Apple should unlock the iPhone for the FBI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.theverge.com/2016/3/30/11330892/fbi-google-android-unlocking-phone-court-order"&gt;Feds ordered Google’s help unlocking nine Android phones since 2012&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.troyhunt.com/2016/02/everything-you-need-to-know-about-apple.html"&gt;Troy Hunt: Everything you need to know about the Apple versus FBI case&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.wired.com/2016/02/apples-fbi-battle-is-complicated-heres-whats-really-going-on/"&gt;Apple’s FBI Battle Is Complicated. Here’s What’s Really Going On&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.mozilla.org/blog/2016/02/24/continuing-the-conversation-about-encryption-and-apple-a-new-video-from-mozilla/"&gt;Continuing the Conversation About Encryption and Apple: A New Video From Mozilla&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://amp.theguardian.com/commentisfree/2018/feb/12/encryption-safe-hillary-clinton-secure-backdoors-privacy"&gt;Encryption keeps us safe. It must not be compromised with ‘backdoors’ | Robby Mook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.openrightsgroup.org/publications/whos-checking-on-your-chats-in-private-online-spaces/"&gt;Open rights group: who’s checking on your chats in private online spaces?&lt;/a&gt;&lt;/p&gt;

</description>
      <category>data</category>
      <category>freespeech</category>
      <category>programming</category>
      <category>security</category>
    </item>
  </channel>
</rss>
