<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="https://shawfactor.com/wp-content/plugins/lh-private-feeds/xsl/template.xsl"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" >

<channel>
	<title>Peter Shaw</title>
	<atom:link href="https://shawfactor.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://shawfactor.com</link>
	<description>Free people govern themselves together</description>
	<lastBuildDate>Sun, 25 Oct 2026 16:04:48 +0000</lastBuildDate>
	<language>en-AU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://i0.wp.com/shawfactor.com/wp-content/uploads/sites/60/2014/03/cropped-pete-2.jpg?fit=32%2C32&#038;quality=86&#038;strip=info&#038;ssl=1</url>
	<title>Peter Shaw</title>
	<link>https://shawfactor.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<atom:link rel='hub' href='https://shawfactor.com/?pushpress=hub'/>
<atom:link rel="search" type="application/opensearchdescription+xml" title="Search Peter Shaw" href="https://shawfactor.com/wp-json/opensearch/1.1/document" />
	<item>
		<title>The polis and the platform</title>
		<link>https://shawfactor.com/2026/10/26/the-polis-and-the-platform/</link>
					<comments>https://shawfactor.com/2026/10/26/the-polis-and-the-platform/#respond</comments>
		
		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Sun, 25 Oct 2026 16:04:46 +0000</pubDate>
				<category><![CDATA[Opinion]]></category>
		<guid isPermaLink="false">https://shawfactor.com/?p=159162</guid>

					<description><![CDATA[Independence and community aren't opposites. The Greeks knew it, and so does anyone who has run a club. Online, we've forgotten it, and handed our communities to masters.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I have never been good at being told what to do.</p>



<p class="wp-block-paragraph">I grew up on a farm at Dunneworthy, near Ararat, where independence isn’t a lifestyle choice. Nobody is coming to fix the pump. You work it out, or it doesn’t get done. But nobody on a farm is truly alone either. They turn up when the shed burns down, and everyone knows who pulls their weight and who doesn’t. Self-reliance and community weren’t opposites. They were the same habit, seen from two sides.</p>



<p class="wp-block-paragraph">Rugby taught me the same thing. I played at state level, then semi-professionally in England, until a broken leg ended it. Fifteen stubborn individuals only become anything when they agree to play for each other. The best players I knew were the most independent-minded and the most committed to the side.</p>



<p class="wp-block-paragraph">Then I spent fifteen years in banking, and learnt the opposite lesson. A large organisation offers neither independence nor community. You don’t govern yourself, and you don’t really belong to anything you help govern. You comply. Decisions arrive from somewhere above, wrapped in process, owned by no one you can argue with. I chafed under it. </p>



<p class="wp-block-paragraph">It took me a while to realise the Greeks had already named what I was looking for.</p>



<h2 class="wp-block-heading">Free, together</h2>



<p class="wp-block-paragraph">To the ancient Greeks, independence and community were not in tension. Freedom, <em>eleutheria</em>, meant not having a master: not being a slave, and not living under a tyrant. But it was not the modern freedom to be left alone. A free man was free because he took part. He spoke in the assembly, argued, voted, and then lived under laws he and his fellow citizens had made. Aristotle called us <em>politikon zōon</em>, creatures of the polis. Outside a community, he said, a man is either a beast or a god.</p>



<p class="wp-block-paragraph">But the Greek idea had a blind spot. Citizenship was for a minority, and women, slaves and foreigners were shut out. But the core insight survives: you cannot be free alone, and you cannot be free in a community you have no say in running.</p>



<h2 class="wp-block-heading">The new tyrants</h2>



<p class="wp-block-paragraph">Look at where most communities live now.</p>



<p class="wp-block-paragraph">The local footy club runs on a Facebook group and a WhatsApp chat. The residents’ association keeps its members in a spreadsheet on someone’s Google Drive. The choir, the surf club, the parents’ committee: all of them tenants, on land owned by a handful of companies on the other side of the world.</p>



<p class="wp-block-paragraph">Those companies are not malicious. But they are masters. They decide who can see a post, what may be said, which members are reachable, what the data is worth and to whom. They change the rules without a vote. When a community’s page is shut, its group throttled or its history lost, there is no assembly to appeal to. The Greeks had a word for rule like that, and it was not democracy.</p>



<p class="wp-block-paragraph">We have rebuilt the tyranny the Greeks fought to escape, and we did it for convenience.</p>



<h2 class="wp-block-heading">Self-government is a practice</h2>



<p class="wp-block-paragraph">I founded Princes Park Touch to have fun, and it became something more. Today it has more than 760 members, and 500 to 600 people play each season. It runs on its own infrastructure: its own website, its own member records, its own communications, with no Facebook group holding the keys. Members can see the rules. The club answers to them, and every year the committee reports to them at the AGM.</p>



<p class="wp-block-paragraph">It is not frictionless. Self-government never is. People have to turn up, argue, accept outcomes they voted against, and hold each other to the standards they set. That is the price of freedom, and it is cheaper than the alternative.</p>



<p class="wp-block-paragraph">That is why I build LocalHero. It started in 2016 as a way to link local content to local people. It has become a platform that lets community organisations own what they depend on: their website, their members, their data, and increasingly their AI tools. Because a community that does not control its own infrastructure cannot govern itself.</p>



<h2 class="wp-block-heading">Independence needs community, and community needs independence</h2>



<p class="wp-block-paragraph">I still dislike being told what to do by people I didn’t choose and can’t remove. But the cure for that was never isolation. It was building communities worth belonging to, and making sure they belong to their members.</p>



<p class="wp-block-paragraph">The Greeks understood that the free individual and the self-governing community are one thing, not two. Online, we have forgotten it. We traded the assembly for the feed, and citizenship for a terms-of-service checkbox.</p>



<p class="wp-block-paragraph">We can take it back. It starts one organisation, one community at a time.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://shawfactor.com/2026/10/26/the-polis-and-the-platform/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Privacy is not impunity</title>
		<link>https://shawfactor.com/2023/04/15/should-all-name-shame/</link>
					<comments>https://shawfactor.com/2023/04/15/should-all-name-shame/#comments</comments>
		
		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Fri, 14 Apr 2023 14:37:22 +0000</pubDate>
				<category><![CDATA[Opinion]]></category>
		<guid isPermaLink="false">https://shawfactor.com/?p=157761</guid>

					<description><![CDATA[Originally published April 2023. The argument hasn&#039;t changed. The platforms have only made it more urgent. Every community has behaviour that is legal but corrosive: the committee member who treats the organisation&#039;s money as their own, the volunteer who bullies newcomers until they leave, the member who harasses others and dares anyone to prove it. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph"><em>Originally published April 2023. The argument hasn&#039;t changed. The platforms have only made it more urgent.</em></p><p class="wp-block-paragraph">Every community has behaviour that is legal but corrosive: the committee member who treats the organisation&#039;s money as their own, the volunteer who bullies newcomers until they leave, the member who harasses others and dares anyone to prove it. No law covers most of it, and no law should. For most of history it was handled by something more powerful than law: reputation. People cared what their community thought of them, and behaved accordingly.</p><p class="wp-block-paragraph">I made this argument in 2000, in <a href="https://shawfactor.com/2000/06/26/thin-veil-civilisation/">The thin veil of civilisation</a>. Social norms, enforced by approval and disapproval, are the real glue of a society. Laws are the backstop.</p><p class="wp-block-paragraph">That glue is weakening. Communities are larger, more anonymous and more transient. Someone can behave badly in one organisation and turn up fresh in the next, with a clean slate and a new set of targets. The tools communities now run on make it worse. Facebook groups and WhatsApp chats give organisers no memory and no standing: complaints vanish in a scroll, and the platform&#039;s rules, not the community&#039;s, decide what can be said.</p><h2 class="wp-block-heading">Privacy matters</h2><p class="wp-block-paragraph">I take privacy seriously. People should control their own data, decide what is shared, and never be exposed on a whim. That principle is why I build member-owned infrastructure in the first place.</p><p class="wp-block-paragraph">But privacy protects people from strangers, corporations and the state. It was never meant to protect people from the consequences of how they treat others. Privacy that means no one may ever say &quot;this person did this, and it isn&#039;t acceptable&quot; is not privacy. It is impunity.</p><h2 class="wp-block-heading">Accountability done properly</h2><p class="wp-block-paragraph">Naming has to be done carefully or it becomes a mob. The rules that make it legitimate:</p><ul class="wp-block-list"><li><strong>Conduct, not character.</strong> What someone did, not who they are.</li><li><strong>Decided by those accountable</strong>, through a known process, not by whoever shouts loudest.</li><li><strong>A right of reply</strong> before anything is published.</li><li><strong>Proportionate and time-limited.</strong> Records expire. People can change.</li></ul><p class="wp-block-paragraph">Whether to go further and name people publicly is each community&#039;s call. I would, and I do. A community&#039;s duty doesn&#039;t end at its own boundary: if bad actors are quietly shown the door, they simply move on to the next organisation, which gets no warning. Keeping it private protects the offender, not the next victim. But I understand why others stop short of that, and a fair internal record is still far better than none.</p><p class="wp-block-paragraph">Whichever you choose, the truth matters. Publish only what you can stand behind. Anyone named falsely has the law of defamation on their side, which is exactly as it should be.</p><h2 class="wp-block-heading">Communities should own this</h2><p class="wp-block-paragraph">The point is not shaming for its own sake. It&#039;s that a community should be able to set its own standards and enforce them, on infrastructure it controls, under rules it writes. When the platform belongs to someone else, you get their rules and their priorities, and usually their silence. When it belongs to you, you can build accountability that is fair, transparent and answerable to members.</p><p class="wp-block-paragraph">It&#039;s how I run Princes Park Touch, whose <a href="https://princesparktouch.com/hall-of-shame/">Hall of Shame</a> is public, and it&#039;s what LocalHero is built to let any community do, publicly or not.</p>]]></content:encoded>
					
					<wfw:commentRss>https://shawfactor.com/2023/04/15/should-all-name-shame/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Native apps are (mostly) a waste of time.</title>
		<link>https://shawfactor.com/2019/03/14/native-apps-waste-of-time/</link>
					<comments>https://shawfactor.com/2019/03/14/native-apps-waste-of-time/#respond</comments>
		
		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Thu, 14 Mar 2019 04:14:47 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">https://shawfactor.com/?p=154980</guid>

					<description><![CDATA[So you think you need an app for your phone and you were considering shelling out some cash to a developer to build you a native app. Before you waste your money (and time) paying a developer to deliver a native app the first thing you need to consider the advantages an app has over [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">So you think you need an app for your phone and you were considering shelling out some cash to a developer to build you a native app. Before you waste your money (and time) paying a developer to deliver a native app the first thing you need to consider the advantages an app has over a traditional website.</p>



<p class="wp-block-paragraph">The big three are:</p>



<ol class="wp-block-list">
<li>It is installable, ie it appears on the phone home screen, this gives it a massive advantage over a traditional website in ensuring ongoing user interaction.</li>



<li>An app is fast, ie it is faster to load and interact with than a traditional website.</li>



<li>It can send notifications, again this increases user interaction substantially.</li>
</ol>



<p class="wp-block-paragraph">Obviously these are not the only reasons but they are the major ones.</p>



<p class="wp-block-paragraph">Now here is the kicker, you can get all the above features on a website on the majority of phones right now! Goodbye native apps and welcome to the world of progressive web apps.</p>



<p class="wp-block-paragraph">What is a progressive web app (PWA), you may ask? Well at it is heart it is just a website with some additional features. Those features enable all three of the advantages I outlined above on the majority of smart phones worldwide, right now!! But being a website a PWA also has some massive advantages. They include:</p>



<ol class="wp-block-list">
<li>They are linkable, ie you can access them by opening a URL.</li>



<li>They are much easier to build, after all they are just a website with some substantial enhancements.</li>



<li>They are updatable, ie any changes can occur as soon as the PWA is accessed (as opposed to waiting for a user to download a new version of a native app).</li>



<li>Being on the web they are cross platform.</li>
</ol>



<p class="wp-block-paragraph">Lets look at the state of play on different phones:</p>



<p class="wp-block-paragraph">On android phones which now constitute the majority of smart phones worldwide all of the above advantages are currently already available to progressive web apps. ie visitors will be prompted to instal your website on the phone (provided it meets the PWA criteria) right now and that website if properly designed will be fast and be able to send notifications</p>



<p class="wp-block-paragraph">For apple  the situation is not quite so good. Yes you can install a web app but the installation experience not obvious and there is no ability to send notifications. The good news is that but in the upcoming IOS version (IOS 12.2) there will be significant improvement. Once installed on your phone a well built progressive web app will behave like its native counterpart, with the only issue that it will not be able to send notifications. But that functionality is coming.</p>



<p class="wp-block-paragraph"><strong>Update: since March 2023 IOS supports push notification for those running PWAs on IOS 16.4 or later.</strong></p>



<p class="wp-block-paragraph">So in conclusion is that unless you need certain hardware apis that are not supported by PWA´s yet or you desperately need notifications on Apple phones then you should find a web developer who can enhance your existing website to become a PWA. The future is PWA´s and the future (to a large extent) is already here.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://shawfactor.com/2019/03/14/native-apps-waste-of-time/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Don&#8217;t break the web or why html is important</title>
		<link>https://shawfactor.com/2017/04/02/dont-break-the-web/</link>
					<comments>https://shawfactor.com/2017/04/02/dont-break-the-web/#respond</comments>
		
		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Sat, 01 Apr 2017 14:10:35 +0000</pubDate>
				<category><![CDATA[Opinion]]></category>
		<guid isPermaLink="false">https://shawfactor.com/?p=153962</guid>

					<description><![CDATA[just because you can doesn't mean you should]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I am a member of the advanced WordPress facebook group and its seems every few days someone posts and article on there waxing lyrical about the latest javacsript only theme they have built using the latest JavaScript framework and the rest api.</p>



<p class="wp-block-paragraph">Dont get me wrong, I love javscript, and I think the rest api is one of the best things to happen to WordPress but every time I read about someone usea front end framework to build a theme I shake my head.</p>



<p class="wp-block-paragraph">A wise man once said,</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>just because you can doesn&#8217;t mean you should</p></blockquote>



<p class="wp-block-paragraph">This applies to so many things, especially JavaScript when used to output content.&nbsp; In order to explain we all need to be reminded of the way the web is traditionally designed namely:</p>



<ul class="wp-block-list"><li>HTML for con­tent</li><li>Css for pre­sen­ta­tion</li><li>Javascript for func­tion­al­ity</li></ul>



<p class="wp-block-paragraph">This combination might seem old hat but it was created by smart people with good reasons.</p>



<p class="wp-block-paragraph">When done properly it has three major strengths</p>



<ol class="wp-block-list"><li>It conveys meaning</li><li>It is robust</li><li>It has a clear separation of concerns</li></ol>



<p class="wp-block-paragraph">However it can be slow so today many advocate using JavaScript to interract with apis to replace this traditional paradigm. This has&nbsp; major advantage in that can be substantially faster as the client side javascript can request only the information that it needs. However it also means that javascript is now the creating the content as well as the providing the functionality</p>



<p class="wp-block-paragraph">However lets just compare how this compares to the traditional approach. Namely:</p>



<p class="wp-block-paragraph"><strong>Conveying meaning</strong>.&nbsp; Yes javascript can convey an experience that may be indistunguishable to the eye BUT the web is not just a visual medium for humans. Machine like search engines, and screen readers are important and in most cases a javascript front end is invisible to these agents</p>



<p class="wp-block-paragraph"><strong>Being robust</strong>. Javascript is a not a fully standardized lanaguage and is notorious for conflicts and errors, and being browser depe3ndent. So an error on a javascript front end usually means the whole site falls over. In contrast a traditional semantic html front end degrades gracefully</p>



<p class="wp-block-paragraph"><strong>Separating concerns</strong>. In a JavaScript front end you are tightly coupling functionality with content and potentially presentation as well. This actually if you change the api or you change your javascript the whole thing falls over. In contrast html is html and if the JavaScript stops working you still have the html.</p>



<p class="wp-block-paragraph">Javascript is important but its not a replacement for html. Its future is in rproviing functionality, both in enhancing the reading experience and in making the eually important area of creating, updating and deleting content on the web.</p>



<p class="wp-block-paragraph">Finally I&#8217;d like to urge you that is you need speed work on the basics like http caching, or look to modern technologies like http/2 and service workers.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://shawfactor.com/2017/04/02/dont-break-the-web/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Introducing LH Archived Post Status</title>
		<link>https://shawfactor.com/2015/02/13/introducing-lh-archived-post-status/</link>
					<comments>https://shawfactor.com/2015/02/13/introducing-lh-archived-post-status/#comments</comments>
		
		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Fri, 13 Feb 2015 03:51:29 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">https://shawfactor.com/?p=153916</guid>

					<description><![CDATA[LH Archived Post status is a WordPress extension that creates an additional posts status available for content that may no longer be relevant to most visitors but should be available publicly (perhaps for historical purposes). I built this plugin as UI needed this flexibility whilst using WordPress as a CMS. The plugin adds a new [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">LH Archived Post status is a WordPress extension that creates an additional posts status available for content that may no longer be relevant to most visitors but should be available publicly (perhaps for historical purposes).</p>



<p class="wp-block-paragraph">I built this plugin as UI needed this flexibility whilst using WordPress as a CMS. The plugin adds a new post status that enables posts and pages (and custom post types) to be archived. Archiving in this context means that the content is still publicly available but is not published on the front page of the site  or the feed. I was not satisfied with other archiving solutions which hid the content for all non logged in visitors and was not configurable.</p>



<span id="more-153916"></span>



<div class="wp-block-image"><figure class="alignleft"><a href="https://i0.wp.com/shawfactor.com/wp-content/uploads/sites/60/2015/02/archived-post-status-dropdown.png?quality=86&#038;strip=info&#038;ssl=1"><img data-recalc-dims="1" data-dominant-color="f4f5f7" data-has-transparency="false" style="--dominant-color: #f4f5f7;" fetchpriority="high" decoding="async" width="600" height="400" sizes="(max-width: 600px) 100vw, 600px" src="https://i0.wp.com/shawfactor.com/wp-content/uploads/sites/60/2015/02/archived-post-status-dropdown.png?resize=600%2C400&#038;quality=86&#038;strip=info&#038;ssl=1" alt="archived-post-status-dropdown" class="wp-image-153918 not-transparent"/></a></figure></div>



<p class="wp-block-paragraph">Posts are available directly for any visitor but can have a custom message added that flags that they may no longer be relevant.</p>



<p class="wp-block-paragraph">WordPress’ default <a href="https://wordpress.org/documentation/article/post-status/" target="_blank" rel="noreferrer noopener">post statuses</a> currently work very much like an on/off switch as far as a finished post is concerned. Of the eight default statuses, Published is the only one that is public, while all the rest remain behind the curtain in various states of unreadiness. None of the statuses, apart from Published, adequately indicate that a post is complete or finished or its relevancy.</p>



<p class="wp-block-paragraph">Fortunately, WordPress makes it possible for developers to register their own <a href="https://wordpress.org/documentation/article/post-status/#custom-status" target="_blank" rel="noreferrer noopener">custom post statuses</a>, which is what I&#8217;ve done with this plugin.  It allows you to archive posts in the same way that you might archive email.</p>



<p class="wp-block-paragraph">Archived Post Status is compatible with posts, pages, and custom post types, giving you a wide array of possible use cases:</p>



<ul class="wp-block-list"><li>Archive pages or posts from a conference or event for editing and re-use next year</li><li>Archive real estate listings for records</li><li>Cycle portfolio content in and out of the site as necessary</li><li>Temporarily remove listings from a site that indexes businesses or organizations</li><li>Archive products to bring back for future use</li></ul>



<p class="wp-block-paragraph">While custom post types seem to be one of the most likely uses for this plugin, you may not want to have the archived status available to all post types.  Thisd can be done by slecting the appropriate posts types in the settings area.</p>



<div class="wp-block-image"><figure class="aligncenter"><a class="img-hyperlink" href="http://i2.wp.com/wptavern.com/wp-content/uploads/2015/01/archived-posts-list-screen.png" rel="prettyPhoto[37591]"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/shawfactor.com/wp-content/uploads/sites/60/2015/02/archived-posts-list-screen1.png?quality=86&#038;strip=info&#038;ssl=1" alt="archived-posts-list-screen" class="wp-image-37614"/></a></figure></div>



<p class="wp-block-paragraph">If you need  to public archive completed posts, but hide them from the front page, feeds, and flag their state this simple plugin will do the trick. Installation instructions etc are available here:<br>
<a title="Archived Posts Status" href="https://lhero.org/portfolio/lh-archived-post-status/">https://lhero.org/portfolio/lh-archived-post-status/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://shawfactor.com/2015/02/13/introducing-lh-archived-post-status/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
	</channel>
</rss>
