# Development

 

##  [ WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers ](/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers) 

 

  [ ![WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers](https://cdn.richeyweb.com/images/articles/windownamestore/windownamestore.webp) ](/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers "WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers")    In an era where privacy laws like the GDPR (General Data Protection Regulation) and the EU e-Privacy Directive are reshaping how web applications handle user data, developers face a growing challenge: how to manage temporary session data without tripping over cookie consent banners or risking non-compliance. Traditional tools like cookies and localStorage often require explicit user consent in Europe, as they persist data across sessions and can be used for tracking. Enter WindowNameStore—a lightweight JavaScript class that leverages the quirky window.name property to provide a volatile, privacy-conscious alternative for temporary storage, all released under the GPL-v3 license to empower developers everywhere.

 [  Read more: WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers ](/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers)

 

 

##  [ My Software Powers Joomla’s Volunteer Portal ](/blog/development/my-software-powers-joomlas-volunteer-portal) 

 

  [ ![My Software Powers Joomla’s Volunteer Portal](https://cdn.richeyweb.com/images/articles/thumbs-up-kid.webp) ](/blog/development/my-software-powers-joomlas-volunteer-portal "My Software Powers Joomla’s Volunteer Portal")    As a developer who’s been writing software for Joomla for over a decade, I’ve had my share of proud moments. But recently, I stumbled across something that truly took me by surprise—and filled me with gratitude. While combing the web (as one does when checking on unresolved reputation quirks), I found my [Authentication - Email](/software/joomla/plugins/authentication-email) plugin listed in the Git repo of none other than volunteers.joomla.org , the Joomla Volunteer Portal - a Joomla core site!

 [  Read more: My Software Powers Joomla’s Volunteer Portal ](/blog/development/my-software-powers-joomlas-volunteer-portal)

 

 

##  [ Did I Just Solve Joomla Bot Spam With HashCash? ](/blog/development/did-i-just-solve-joomla-bot-spam-with-hashcash) 

 

  [ ![Did I Just Solve Joomla Bot Spam With HashCash?](https://cdn.richeyweb.com/images/articles/plg_captcha_hashcash/blog-post/hashcash-blog-post.webp) ](/blog/development/did-i-just-solve-joomla-bot-spam-with-hashcash "Did I Just Solve Joomla Bot Spam With HashCash?")    Eleven years ago, I stumbled across a [technical paper from 2002 by Adam Back](http://www.hashcash.org/papers/hashcash.pdf). It was about HashCash—a proof-of-work system designed to make spammers’ lives miserable by forcing their machines to grind through heavy calculations. I thought, “This could work for bot spam in Joomla forms,” and built my first [Captcha - HashCash](/software/joomla/plugins/captcha-hashcash) plugin. Little did I know, someone else had tried it before me—and their version vanished after landing on the CVE list in 2006. If I’d known, I might’ve picked a different name. But that’s ancient history, and my HashCash? It’s still kicking.

 [  Read more: Did I Just Solve Joomla Bot Spam With HashCash? ](/blog/development/did-i-just-solve-joomla-bot-spam-with-hashcash)

 

 

##  [ SCORM Shenanigans - PART DEUX ](/blog/development/scorm-shenanigans-part-deux) 

 

  [ ![More SCORM Shenanigans](https://cdn.richeyweb.com/images/articles/knowbe4/288p/knowbe4-720p.webp) ](/blog/development/scorm-shenanigans-part-deux "SCORM Shenanigans - PART DEUX")    Because of my work described in [Brain Games - SCORM/suspend\_data and xAPI/state](/blog/development/brain-games-scorm-suspend-data-and-xapi-state), I gained the attention of another company looking to divine some wisdom from data they had collected. It has been a number of years since I did this work, but I just got another email thanking me for my suspend data work and I thought this might be helpful to someone.

 [  Read more: SCORM Shenanigans - PART DEUX ](/blog/development/scorm-shenanigans-part-deux)

 

 

##  [ GPC: DNT/Do Not Track’s Toothless Twin ](/blog/development/gpc-dnt-do-not-tracks-toothless-twin) 

 

  [ ![GPC: DNT/Do Not Track’s Toothless Twin](https://cdn.richeyweb.com/images/articles/dnt/dnt-headstone-thumbnail.webp) ](/blog/development/gpc-dnt-do-not-tracks-toothless-twin "GPC: DNT/Do Not Track’s Toothless Twin")    Remember Do Not Track? Neither do publishers. The little HTTP header that could—DNT for short—promised users a way to wave off trackers with a polite “no thanks.” It flopped hard. Websites ignored it, ad tech laughed it off, and by 2019, it was a digital relic. Enter Global Privacy Control (GPC), the shiny new signal touted as DNT’s successor. Backed by California’s privacy law, it’s supposed to force publishers to respect your opt-out. Sounds great, right? Here’s the catch: GPC has no more bite than DNT ever did. Publishers can sidestep it by simply doing business outside California’s reach—and they will. [History says so](https://support.google.com/google-ads/answer/9614122?hl=en) - Google did it.

 [  Read more: GPC: DNT/Do Not Track’s Toothless Twin ](/blog/development/gpc-dnt-do-not-tracks-toothless-twin)

 

 

##  [ Fun With SVG Graphics ](/blog/development/fun-with-svgs) 

 

So I did a bunch of SVG work I donated to a political candidate and (at the time) frequent media guest commentator, Raven Harrison, and this is a product of that work.

 [  Read more: Fun With SVG Graphics ](/blog/development/fun-with-svgs)

 

 

##  [ Joomla 4 Extensions - It begins! ](/blog/development/joomla-4-extensions-it-begins) 

 

They've kept it quiet - but it happened. The Joomla core developers released Joomla! 4.0.0 Beta 1 - very very quietly. I only noticed because I was looking over the update XML file for the alpha 12 version - and there it was.

 [  Read more: Joomla 4 Extensions - It begins! ](/blog/development/joomla-4-extensions-it-begins)

 

 

##  [ Stop using Internet Explorer ](/blog/development/stop-using-internet-explorer) 

 

This may seem like a personal attack on the browser, but really, my hatred for IE has nothing to do with it. Maybe I get a little joy from this, but I'll try to keep that to myself.

 [  Read more: Stop using Internet Explorer ](/blog/development/stop-using-internet-explorer)

 

 

 

1. [ What about IE 8, 9 and 10?](/blog/development/what-about-ie-8-9-and-10)
2. [ There's a right way, and a wrong way](/blog/development/theres-a-right-way-and-a-wrong-way)
3. [ GDPR &amp; Google Analytics](/blog/development/gdpr-google-analytics)
4. [ Before you blame the developer...](/blog/development/before-you-blame-the-developer)
 
 

 Page 4 of 6

 - [  ](/blog/development)
- [  ](/blog/development?start=16)
- [ 1 ](/blog/development)
- [ 2 ](/blog/development?start=8)
- [ 3 ](/blog/development?start=16)
- [4](#)
- [ 5 ](/blog/development?start=32)
- [ 6 ](/blog/development?start=40)
- [  ](/blog/development?start=32)
- [  ](/blog/development?start=40)
 
 

 

 

##### We Value Your Privacy

 

We use cookies to enhance your experience and for traffic analysis. By continuing to visit this site you agree to our use of cookies.

[Privacy Policy](/privacy-policy)

 Details 

###### Google Tag Manager Items

- Ad Storage
- Ad User Data
- Ad Personalization
- Analytics Storage
- Functionality Storage
- Personalization Storage
- Security Storage
 
 

 

 

 

 

 Decline Accept
```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.richeyweb.com/#organization","name":"RicheyWeb","url":"https://www.richeyweb.com/","logo":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/logo/richeyweb.svg","contentUrl":"https://www.richeyweb.com/images/logo/richeyweb.svg","width":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"@id":"https://www.richeyweb.com/#logo"},"image":{"@id":"https://www.richeyweb.com/#logo"},"sameAs":["https://x.com/ComRicheyweb","https://www.facebook.com/RicheyWebDev/","https://www.youtube.com/channel/UCxnVG8BwOvQRO7hVqNX7T2g","https://community.joomla.org/service-providers-directory/listings/115:richeyweb.html"],"description":"RicheyWeb is a custom software developer specializing in Joomla extensions.","ContactPoint":[{"@type":"ContactPoint","url":"https://www.richeyweb.com/contact-us","telephone":"903-873-8460","contactType":"Owner/Administrator","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"},{"@type":"ContactPoint","url":"https://www.richeyweb.com/bugs","telephone":"903-873-8460","contactType":"Technical Support","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"}],"knowsAbout":["Computer programming",{"@type":"Thing","name":"Computer programming","sameAs":["https://en.wikipedia.org/wiki/Computer_programming","https://www.wikidata.org/wiki/Q80006","https://g.co/kg/m/01mf_"]},"PHP",{"@type":"Thing","name":"PHP","sameAs":["https://en.wikipedia.org/wiki/PHP","https://www.wikidata.org/wiki/Q59","https://g.co/kg/m/060kv"]},"JavaScript",{"@type":"Thing","name":"JavaScript","sameAs":["https://en.wikipedia.org/wiki/JavaScript","https://www.wikidata.org/wiki/Q2005","https://g.co/kg/m/02p97"]},"arduino","Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"White hat",{"@type":"Thing","name":"White hat","sameAs":["https://en.wikipedia.org/wiki/White_hat_(computer_security)","https://www.wikidata.org/wiki/Q7995625","https://g.co/kg/m/03ns_5"]},"Search engine optimization",{"@type":"Thing","name":"Search engine optimization","sameAs":["https://en.wikipedia.org/wiki/Search_engine_optimization","https://www.wikidata.org/wiki/Q180711","https://g.co/kg/m/019qb_"]},"Search engine marketing",{"@type":"Thing","name":"Search engine marketing","sameAs":["https://en.wikipedia.org/wiki/Search_engine_marketing","https://www.wikidata.org/wiki/Q846132","https://g.co/kg/m/06mw8r"]},"Digital marketing",{"@type":"Thing","name":"Digital marketing","sameAs":["https://en.wikipedia.org/wiki/Digital_marketing","https://www.wikidata.org/wiki/Q1323528","https://g.co/kg/g/122hcnps"]},"Web hosting service",{"@type":"Thing","name":"Web hosting service","sameAs":["https://en.wikipedia.org/wiki/Web_hosting_service","https://www.wikidata.org/wiki/Q5892272","https://g.co/kg/m/014pz4"]},"Email hosting service",{"@type":"Thing","name":"Email hosting service","sameAs":["https://en.wikipedia.org/wiki/Email_hosting_service","https://www.wikidata.org/wiki/Q5368818","https://g.co/kg/m/09w60m"]},"Internet hosting service",{"@type":"Thing","name":"Internet hosting service","sameAs":["https://en.wikipedia.org/wiki/Internet_hosting_service","https://www.wikidata.org/wiki/Q1210425","https://g.co/kg/m/09w5yw"]},"Virtual hosting",{"@type":"Thing","name":"Virtual hosting","sameAs":["https://en.wikipedia.org/wiki/Virtual_hosting","https://www.wikidata.org/wiki/Q588365","https://g.co/kg/m/024mvh"]},"Web performance",{"@type":"Thing","name":"Web performance","sameAs":["https://en.wikipedia.org/wiki/Web_performance","https://www.wikidata.org/wiki/Q7978612","https://g.co/kg/m/0gfj3f1"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"General Data Protection Regulation",{"@type":"Thing","name":"General Data Protection Regulation","sameAs":["https://en.wikipedia.org/wiki/General_Data_Protection_Regulation","https://www.wikidata.org/wiki/Q1172506","https://g.co/kg/m/0pk_7xs"]},"SERP",{"@type":"Thing","name":"SERP","sameAs":["https://en.wikipedia.org/wiki/SERP","https://www.wikidata.org/wiki/Q2205811","https://g.co/kg/g/11c5szp7kc"]},"Artificial intelligence",{"@type":"Thing","name":"Artificial intelligence","sameAs":["https://en.wikipedia.org/wiki/Artificial_intelligence","https://www.wikidata.org/wiki/Q11660","https://g.co/kg/m/0mkz"]},"Prompt engineering",{"@type":"Thing","name":"Prompt engineering","sameAs":["https://en.wikipedia.org/wiki/Prompt_engineering","https://www.wikidata.org/wiki/Q108941486","https://g.co/kg/g/11p6kpgt_n"]},"E-learning",{"@type":"Thing","name":"E-learning","sameAs":["https://en.wikipedia.org/wiki/E-learning_(theory)","https://www.wikidata.org/wiki/Q182250","https://g.co/kg/g/122czm1f"]},"Sharable Content Object Reference Model",{"@type":"Thing","name":"Sharable Content Object Reference Model","sameAs":["https://en.wikipedia.org/wiki/Sharable_Content_Object_Reference_Model","https://www.wikidata.org/wiki/Q827811","https://g.co/kg/m/06_40"]},"Experience API",{"@type":"Thing","name":"Experience API","sameAs":["https://en.wikipedia.org/wiki/Experience_API","https://www.wikidata.org/wiki/Q7807728","https://g.co/kg/g/1yw9ktxr8"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]},"Nginx",{"@type":"Thing","name":"Nginx","sameAs":["https://en.wikipedia.org/wiki/Nginx","https://www.wikidata.org/wiki/Q306144","https://g.co/kg/m/02qft91"]},"MySQL",{"@type":"Thing","name":"MySQL","sameAs":["https://en.wikipedia.org/wiki/MySQL","https://www.wikidata.org/wiki/Q850","https://g.co/kg/m/04y3k"]}],"areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"memberOf":["Mensa International",{"@type":"Organization","name":"Mensa International","sameAs":["https://en.wikipedia.org/wiki/Mensa_International","https://www.wikidata.org/wiki/Q184194","https://g.co/kg/m/0140pf"]},"National Rifle Association",{"@type":"Organization","name":"National Rifle Association","sameAs":["https://en.wikipedia.org/wiki/National_Rifle_Association","https://www.wikidata.org/wiki/Q863259","https://g.co/kg/m/0j6f9"]},"CompTIA",{"@type":"Organization","name":"CompTIA","sameAs":["https://en.wikipedia.org/wiki/CompTIA","https://www.wikidata.org/wiki/Q597534","https://g.co/kg/m/040shq"]},"ISFCE LLC",{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://isfce.com","https://g.co/kg/g/11wxm5r0rg"]}],"hasCredential":[{"@type":"EducationalOccupationalCredential","name":"Joomla 3 Certified Administrator","credentialCategory":"Certification","description":"Administrator Exam is the first available Joomla! certification exam","recognizedBy":{"@type":"Organization","name":"Open Source Matters, Inc.","sameAs":["https://en.wikipedia.org/wiki/Open_Source_Matters,_Inc.","https://g.co/kg/g/11f00wvjhz"]},"url":"https://certification.joomla.org/certified-user-directory/michael-richey","about":["Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/badge.webp","contentUrl":"https://www.richeyweb.com/images/contact/badge.webp","width":{"@type":"QuantitativeValue","value":300,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":86,"unitCode":"PX"},"caption":"Joomla 3 Certified Administrator"}},{"@type":"EducationalOccupationalCredential","name":"Certified Computer Examiner","credentialCategory":"Certification","description":"Internationally recognized computer forensics certifiecation","recognizedBy":{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://en.wikipedia.org/wiki/ISFCE_LLC","https://g.co/kg/g/11wxm5r0rg"]},"url":"https://isfce.com/","about":["Digital forensics",{"@type":"Thing","name":"Digital forensics","sameAs":["https://en.wikipedia.org/wiki/Digital_forensics","https://www.wikidata.org/wiki/Q3246940","https://g.co/kg/m/0cnxzfx"]},"Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"Mobile device forensics",{"@type":"Thing","name":"Mobile device forensics","sameAs":["https://en.wikipedia.org/wiki/Mobile_device_forensics","https://www.wikidata.org/wiki/Q6887097","https://g.co/kg/m/06zp3tp"]},"Network forensics",{"@type":"Thing","name":"Network forensics","sameAs":["https://en.wikipedia.org/wiki/Network_forensics","https://www.wikidata.org/wiki/Q7001032","https://g.co/kg/m/05pb280"]},"Database forensics",{"@type":"Thing","name":"Database forensics","sameAs":["https://en.wikipedia.org/wiki/Database_forensics","https://www.wikidata.org/wiki/Q5227405","https://g.co/kg/m/0cgqsy"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/isfce-cce.webp","contentUrl":"https://www.richeyweb.com/images/contact/isfce-cce.webp","width":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"caption":"Certified Computer Examiner"}}],"hasOfferCatalog":{"@type":"OfferCatalog","name":"Web Services","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Hosting"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Development"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Search Engine Optimization"}}]}},{"@type":"WebSite","@id":"https://www.richeyweb.com/#website","url":"https://www.richeyweb.com/","name":"RicheyWeb","publisher":{"@id":"https://www.richeyweb.com/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.richeyweb.com/search?q={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string","valueMaxLength":256,"valueMinLength":2,"valuePattern":"^[A-Za-z0-9\\s]+$"}},"creator":{"@id":"https://www.richeyweb.com/#organization"},"copyrightHolder":{"@id":"https://www.richeyweb.com/#organization"}},{"@type":"WebPage","@id":"https://www.richeyweb.com/blog/development/#webpage","url":"https://www.richeyweb.com/blog/development","name":"Development","description":"Custom web and mobile app development.  Specializing in Joomla, PHP, and task automation, RicheyWeb can streamline your processes and take your data mobile.","isPartOf":{"@id":"https://www.richeyweb.com/#website"},"about":{"@id":"https://www.richeyweb.com/#organization"},"inLanguage":"en-GB"}]}
```
