Sam's news

Here are some of the news sources I follow.

My main website is at https://samwilson.id.au/.


Sewing Room Session

Published 17 Jul 2018 by Dave Robertson in Dave Robertson.

Does the poster typo mean I have to dress differently for this show?

Share


Sewing Room Session

Published 17 Jul 2018 by Dave Robertson in Dave Robertson.

Does the poster typo mean I have to dress differently for this show?

Share


Turning light into matter, the science of the gut, and the effects of lithium

Published 17 Jul 2018 by in New Humanist Articles and Posts.

Chemistry, Biology, Physics: Three scientists talk through big recent developments in their fields.

Book review: Dictator Literature

Published 17 Jul 2018 by in New Humanist Articles and Posts.

Daniel Kalder's book asks why the books of extraordinary world leaders are so often mind-numbingly dull.

Talk at Clarkson Library – The Paleo Prescription for Personal and Planetary Health

Published 16 Jul 2018 by Tom Wilson in thomas m wilson.

This Thursday evening I’ll be giving a talk about what we modern Westerners can learn from hunter-gatherer societies, and about the cultural history of our attempts to rewild ourselves. Register for the event here.  The talk goes from 6-7pm and I’ll stick around for questions afterwards.  Hope to see you there. Also the following week […]

Prepped for Portland and OSCON 2018

Published 16 Jul 2018 by DigitalOcean in The DigitalOcean Blog.

Prepped for Portland and OSCON 2018

It's the 20th year of OSCON, held this week in Portland, Oregon, and we will be in attendance!

We have two great presentations lined up:

On Wednesday, July 18, from 11:50 AM-12:30 PM, Lauren McCarthy and Tom Spiegelman present "DigitalOcean’s approach to Spectre and Meltdown" in E143/144.

News of the security vulnerabilities Spectre and Meltdown gripped headlines earlier this year, and for good reason: the bugs affected an estimated three billion chips in use. The impact to cloud providers was substantial, and DigitalOcean was no exception.

Lauren McCarthy and Tom Spiegelman share DigitalOcean’s approach to tackling the Spectre and Meltdown vulnerabilities—dubbed "Smeltdown”—covering what the company chose to move forward with and why. This was one of the biggest challenges the company has dealt with in terms of complexity and scale. One of the key issues was timeliness: while the big cloud companies received advanced notice, DigitalOcean didn’t have that luxury. But it couldn’t use that as an excuse: it just meant working smarter and harder. Lauren and Tom discuss the hardships faced and how the chosen solution left the company with a more secure cloud infrastructure and ready move forward to work toward new offerings so that developers and their teams can focus on what matters: building software that changes the world.

On Thursday, July 19, from 4:15 PM-4:55 PM, Andrew Kim presents "Containers and anycast IPs at DigitalOcean" in D139/140.

Today’s container networking technology has made it significantly easier to build distributed systems on top of container orchestrators such as Kubernetes, Mesosphere, and Docker Swarm. Container networking technologies use Linux primitives such as iptables and IPVS to provide load-balancing capabilities for network traffic across containers in a cluster. These simple yet powerful tools are a cornerstone to the success of containerized systems, as they provide highly available environments with little to no effort.

Despite the many benefits of container networking, running containerized applications that must be latency sensitive and globally distributed is an extremely challenging task. Container networking is mainly scoped for in-cluster traffic, leaving little room to globally distribute an application across multiple clusters. Moreover, extending a container network for external traffic requires many additional layers of abstraction, usually introducing points of failures in a cluster and increasing end-to-end latency.

Andrew Kim leads a technical deep dive into how DigitalOcean uses anycast IPs, BGP, and Kubernetes to run globally distributed services on containers. Along the way, Andrew discusses design considerations for scalability, architectural trade-offs, data center networking, lessons learned in production, and challenges to adopting containers for latency sensitive applications.

You can also catch us at booth #101 at the following times:


Media Wiki error when I upload a file

Published 16 Jul 2018 by juju Joly in Newest questions tagged mediawiki - Ask Ubuntu.

I activated the upload of file in localsettings.php but it answer that : My error

That means : Cannot store upload in storage (UploadStashFileExeption) : "Cannot create mwstore://local-backend/local-temp/fd directory"


Exploring CSS property definitions

Published 16 Jul 2018 by François Daoust in W3C Blog.

Reffy and CSS specifications

Reffy is a specification exploration tool that Dominique Hazaël-Massieux and I developed as a side project during W3C Geek Week a couple of years ago to explore cross-dependencies of JavaScript APIs specifications. Reffy crawls, parses, analyzes, and reports on potential anomalies that specifications may have. Reffy reports are published on a daily basis and help detect issues such as invalid WebIDL content or missing normative references. The dump of the WebIDL content defined in each specification is now also used to create WebIDL tests in the Web Platform Tests effort.

Reffy was essentially restricted to specifications that define some WebIDL content. For Geek Week this year, Dominique and I wondered whether we could extend Reffy to support CSS specifications:

  1. Could we extract all CSS property/descriptor definitions from specifications automatically?
  2. Could we create a useful syntax tree out of the CSS property/descriptor value definitions automatically?
  3. Would it reveal potential issues in CSS specs? Would it be useful to improve the quality of the specifications, to automate the creation of tests, or to create/maintain documentation?

Outcomes

We identified and added about 100 CSS specifications to the list of specifications crawled by Reffy, looking at specifications published as W3C Technical reports, as well as Editor’s Drafts from the CSS Working Group, the FX Task Force and the Houdini Task Force.

Reffy can now successfully extract all CSS property/descriptor definitions from these specifications (544 CSS properties as of today), and parse all value definitions that follow the Value Definition Syntax.

A number of issues have been raised against CSS specifications along the way (see CSS Value Definition Syntax issues for details), notably to report invalid value definitions per the syntax and editorial updates that would help automate the extraction and parsing of definitions. The Value Definition Syntax was most likely not created with automated parsing in mind. We could not spot places where definitions were really ambiguous for human beings, but the syntax could perhaps be improved to ease automated processing and prevent any misunderstanding.

Comparing the information we extracted with MDN data, we detected and reported some outdated info on MDN related to scroll-snap properties and offset-* properties.

Possible next steps

We will continue to investigate the integration with MDN data. That data is currently maintained manually by the community. The possibility to automate part of this process would improve accuracy.

We did not have enough time to run a deep analysis of the resulting syntax tree. Such an analysis might reveal further specification issues. On top of improving the quality of CSS specifications, it should be easy to create a CSS property explorer similar to WebIDLPedia (this one being restricted, as its name suggests, to the exploration of WebIDL used across specifications) out of the list of properties extracted.

In specifications that define JavaScript APIs, WebIDL definitions can be used to create interface tests automatically, using idlharness.js. Similar tests can probably be created for CSS. We confess being more familiar with JavaScript APIs though. It may be that parsing CSS is not a major source of interoperability issues. Would such tests be as useful as WebIDL ones?

The extraction and parsing currently only works for CSS properties and descriptors. It could be interesting to cover at-rules and selectors as well. This may be more challenging though, as actual prose seems to prevail in that area, with fewer parseable code definitions.


Big Data

Published 16 Jul 2018 by BBC Radio 4 in The Infinite Monkey Cage.

Brian Cox and Robin Ince are joined on stage by Danny Wallace, mathematician Hannah Fry and science writer Timandra Harkness. They'll be going big on Big Data, and asking just how big is it? They'll be looking at where Big Data comes from, should we be worried about it, and what mysteries are hidden within the seemingly endless amounts of information that is collected about us as we go about our daily lives.

Mediawiki : Gadgets tab not appearing in appearance

Published 16 Jul 2018 by Nishanth Mehanathan in Newest questions tagged mediawiki - Stack Overflow.

I am trying to use the navigation popup in mediawiki but my mediawiki under appearance tab has no gadgets option and gadget definition is empty.

Special:version shows the following – (bac29ae) 06:39, 5 May 2018. It seems the gadget extension is installed but no gadget tab appears.

enter image description here


Breathe

Published 16 Jul 2018 by jenimcmillan in Jeni McMillan.

DSC_0640

This moment of contemplation gives me everything I need for my next step. I am about to step into the unknown, again and again and again. Already I can feel the excitement fluttering inside like a deranged butterfly. If I concentrate on my breath, I am able to slow her flight but unable to allow her to settle gracefully on a flower of her choice. And this is necessary for the creature to dip into the nectar and continue the cycle of life. So I will practice. Breathe in. Breathe out. Breathe in. Breathe out.


Request: sub category for local meetup/event planning

Published 15 Jul 2018 by @samwilson Sam Wilson in Wikimedia Discourse - Latest posts.

Okay, new category is: #local-events and tags can be added as required.


About the Local events category

Published 15 Jul 2018 by @samwilson Sam Wilson in Wikimedia Discourse - Latest posts.

Announcements about and discussion of geographically local events such as meetups, wikisalons, etc.


Request: sub category for local meetup/event planning

Published 15 Jul 2018 by @samwilson Sam Wilson in Wikimedia Discourse - Latest posts.

Sounds like a good idea! I can create cats.

What about just a ‘Local events’ category, and then use tags within that to differentiate different meetups/salons/etc.?


How to fix errors with database user in MediaWiki?

Published 14 Jul 2018 by Pyro Newman in Newest questions tagged mediawiki - Stack Overflow.

I have been attempting to create a second wiki for my wiki family. When I created a database for the second wiki, I first got an Access Denied error and after I created a user for that database, I got a database query error. The query error looks like this:

[Wz03lFwtCOv-yYg8e1qVvgAAAY4] /mw19/ Wikimedia\Rdbms\DBQueryError from line 1149 of /home/gjlxrtap/public_html/mw19/includes/libs/rdbms/database/Database.php: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading?

Query:

SELECT
  user_id,
  user_name,    
  user_real_name,
  user_email,
  user_touched,
  user_token,
  user_email_authenticated,
  user_email_token,
  user_email_token_expires,
  user_registration,
  user_editcount 
FROM `gjlxrtap_mw19758`.`mwd50q_user` 
WHERE user_id = '1' LIMIT 1

Function:

User::loadFromDatabase

Error:

1142 SELECT command denied to user 'gjlxrtap_wiki2'@'localhost' for table 'mwd50q_user' (localhost)

Backtrace:

#0 /home/gjlxrtap/public_html/mw19/includes/libs/rdbms/database/Database.php(979): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)

#1 /home/gjlxrtap/public_html/mw19/includes/libs/rdbms/database/Database.php(1343): Wikimedia\Rdbms\Database->query(string, string)

#2 /home/gjlxrtap/public_html/mw19/includes/libs/rdbms/database/Database.php(1411): Wikimedia\Rdbms\Database->select(string, array, array, string, array, array)

#3 /home/gjlxrtap/public_html/mw19/includes/user/User.php(1287): Wikimedia\Rdbms\Database->selectRow(string, array, array, string, array)

#4 /home/gjlxrtap/public_html/mw19/includes/user/User.php(496): User->loadFromDatabase(integer)

#5 /home/gjlxrtap/public_html/mw19/includes/libs/objectcache/WANObjectCache.php(892): User->{closure}(boolean, integer, array, NULL)

#6 [internal function]: WANObjectCache->{closure}(boolean, integer, array, NULL)

#7 /home/gjlxrtap/public_html/mw19/includes/libs/objectcache/WANObjectCache.php(1012): call_user_func_array(Closure, array)

#8 /home/gjlxrtap/public_html/mw19/includes/libs/objectcache/WANObjectCache.php(898): WANObjectCache->doGetWithSetCallback(string, integer, Closure, array, NULL)

#9 /home/gjlxrtap/public_html/mw19/includes/user/User.php(521): WANObjectCache->getWithSetCallback(string, integer, Closure, array)

#10 /home/gjlxrtap/public_html/mw19/includes/user/User.php(441): User->loadFromCache()

#11 /home/gjlxrtap/public_html/mw19/includes/user/User.php(405): User->loadFromId(integer)

#12 /home/gjlxrtap/public_html/mw19/includes/session/UserInfo.php(88): User->load()

#13 /home/gjlxrtap/public_html/mw19/includes/session/CookieSessionProvider.php(119): MediaWiki\Session\UserInfo::newFromId(string)

#14 /home/gjlxrtap/public_html/mw19/includes/session/SessionManager.php(487): MediaWiki\Session\CookieSessionProvider->provideSessionInfo(WebRequest)

#15 /home/gjlxrtap/public_html/mw19/includes/session/SessionManager.php(190): MediaWiki\Session\SessionManager->getSessionInfoForRequest(WebRequest)

#16 /home/gjlxrtap/public_html/mw19/includes/WebRequest.php(735): MediaWiki\Session\SessionManager->getSessionForRequest(WebRequest)

#17 /home/gjlxrtap/public_html/mw19/includes/session/SessionManager.php(129): WebRequest->getSession()

#18 /home/gjlxrtap/public_html/mw19/includes/Setup.php(762): MediaWiki\Session\SessionManager::getGlobalSession()

#19 /home/gjlxrtap/public_html/mw19/includes/WebStart.php(114): require_once(string)

#20 /home/gjlxrtap/public_html/mw19/index.php(40): require(string)

#21 {main}


Request: sub category for local meetup/event planning

Published 14 Jul 2018 by @slaporte Stephen in Wikimedia Discourse - Latest posts.

Can we request a new category for meetups and local events? If we could get a meetup section, with a subcategory for the Bay Area (California), we would start using it for planning our Bay Area Wiki Salon events.

We currently have a meetup page on English Wikipedia and another page on Meta Wiki, but we still end up doing most of our coordination over email. Someone in our group suggested that it would be useful to do this more publicly—and I agree!—and think Discourse could be a great platform. I’d rather not set up and maintain a full installation just for our relatively small but dedicate group. It would be at least ~4 people using it on a monthly basis, and possibly more if we promoted it at our event.

Could we get a category? Something like [Local events] > [Bay Area]? What’s the right process for requesting new categories?

Thanks!


Dead Ringers

Published 13 Jul 2018 by BBC Radio 4 in Friday Night Comedy from BBC Radio 4.

A satirical take on the news, sport, politics and Donald Trump.

Google not indexing my MediaWiki [on hold]

Published 13 Jul 2018 by Josea in Newest questions tagged mediawiki - Stack Overflow.

it seems there is no way Google will index my wiki wiki.neotel2000.com.

So far:

  1. I created a sitemap.xml.

  2. I submitted the url to Google through https://www.google.com/webmasters/tools/submit-url

3.- I added the property to Google Search Console; It is verified by Google.

Still nothing.

BTW, there is no meta noindex, nor robots.txt blocking whatsover.

Can anybody help me on this please?

Thanks a million in advance


v2.5.0

Published 13 Jul 2018 by fabpot in Tags from Twig.


v1.35.4

Published 13 Jul 2018 by fabpot in Tags from Twig.


The problem with identity politics

Published 13 Jul 2018 by in New Humanist Articles and Posts.

Q&A with Asad Haider, author of "Mistaken Identity: Race and Class in the Age of Trump"

We’re turning three and you get the presents!

Published 12 Jul 2018 by Hugh Rundle in newCardigan.

newCardigan dates our ‘birthday’ from our first cardiParty in June 2015, so each June we celebrate another year. This time we celebrated at the Duke of Wellington in Melbourne and we’ve also put together a timeline. If you’re a relatively new Cardi then this will show you where we’ve come from, and if you’ve shared most or all of the journey with us it will hopefully bring back great memories!

To help you celebrate and show how much you love newCardigan, we’ve also released some newCardigan t-shirts for you to purchase on Red Bubble. All profits will go to keeping newCardigan going for another three years and beyond – so show the world how much you love newCardigan and buy a t-shirt today!

Can’t afford a shirt and rent this month? No problem, you can at least check out our pics of other cardies wearing them, on our new Instagram account.


Join W3C at Financial Innovations and Payments Summit!

Published 12 Jul 2018 by J. Alan Bird in W3C Blog.

colorful e-commerce round concept symbol in outline style on dark backgroundNext week I will be attending the Opal Group’s Financial Innovation and Payments Summit for the 2nd year.  Last year was phenomenally productive for W3C and I expect this year to be even more so!  This event attracts a few hundred of the key organizations aligned with the various parts of the Payments and Ecommerce industries, which is perfect for W3C.

While we have significant participation in our work in these areas, we ALWAYS need more views and voices in our Membership. This event gives us the opportunity to both speak with some of our current Members and to have discussions with those considering joining or that are unaware of our work. You can learn more about our Web Commerce or Payments activities.

I have been given the honor of being the Panel Moderator for the Sreamlining Ecommerce session on Thursday afternoon at 4:30P. While we are still finalizing the panel, I’m pleased that we’ll have Rachel Yager from Fortune Times Group and Frank Liddy from PayPal! You can expect a lively discussion covering various topics that are affecting the various participants in the Ecommerce industry.

If you haven’t already, register with a 15% discount by using code W3FIPAS2018. If you’re going to be there and want to meet, just drop me a note to abird@w3.org.


PHPWeekly July 12th 2018

Published 12 Jul 2018 by in PHP Weekly Archive Feed.

PHPWeekly July 12th 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 12th July 2018

Hello and welcome to the latest @phpweeklynews.

The PHP team has announced the release of PHP 7.3.0 Alpha 3 this week, to be tested and issues reported.

Also this week we take a look at how to build a simple polling plugin for WordPress with Vue.

Following an article last year on why Doctrine is dying, there's been a turnaround within the Doctrine project which has led to a follow up blog on reasons why it's now alive and kicking.

Plus the latest PHP Web Development Podcast takes a look at the future of Laravel.

And finally, the Coder Cruise sets sale next month out of Ft. Lauderdale for a 5 day developer conference on a cruise ship. Tickets are still available.

Have a great weekend,

Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

Don't Read Books
You're probably thinking: "He's joking, right? That's kind of that title, that is a parody to show us we should do the opposite. You won't get us again, Tomas." No, I really don't think we should read books nor feel bad for not reading them. And now talk about those non-fiction books with the knowledge that readers want to use in their lives. Do you still think this is sarcasm? Keep on reading.

Blogging Every Week
A very important "trick" in finding the flow in life is: do what you like most. Of course, you have to do things you don't like (and then you need different life hacks), but when you can do something you like, you'll find that you'll be more successful at it. When it comes to blogging, I find that it helps to follow my instincts, to write about whatever I like to write about at the moment. I can think of a list of things that need blogging about, but I end up not writing about them because they don't light the fire inside me (anymore).

6 Reasons Why Doctrine is Alive and Kicking
Almost 1.5 year ago I wrote Why is Doctrine Dying. I didn't use dead, because it's is just state of time being. Open-source projects - like people - tend to find themselves on the top, being stuck or struggling with the right path from time to time. It's a completely normal process of evolution. I don't know if that post helped it, but since then many things changed for better in Doctrine project. Saying that this post deprecates my old view and celebrate changes.

About Fixtures
System and integration tests need database fixtures. These fixtures should be representative and diverse enough to "fake" normal usage of the application, so that the tests using them will catch any issues that might occur once you deploy the application to the production environment. There are many different options for dealing with fixtures; let's explore some of them.

Tutorials and Talks

Understanding Design Patterns - State
Allows an object to alter its behaviour when its internal state changes. The object will appear to change its class.

How to Install ownCloud on Ubuntu 18.04
Let's see what happens when we undertake the process of installing the latest version of ownCloud onto the latest version of Ubuntu Server. The process isn't terribly challenging, at least not when you know what dependencies to install.

Zend Framework: ACLs For Users With Multiple Roles
After covering the essentials of the Zend\Permissions\Acl component (Access Control unit, Cross Cutting Concerns module, in the Zend Framework Advanced course), many students have approached me to ask, “what happens if a user has multiple roles?” In this article I discuss the “traditional” way of handling a user who has multiple roles, and then lay out an easy approach which I simply call Mr. X.

Parsing HTML With PHP Using DiDOM
In this tutorial, we will learn about a fast, easy-to-use HTML parser called DiDOM. We will begin with the installation process and then learn how to extract information from different elements on a webpage using different kinds of selectors like tags, classes, etc.

Setting up PHP, PHP-FPM and NGINX for Local Development on Docker
You probably heard from the new kid around the block called "Docker"? You are a PHP developer and would like to get into that, but you didn't have the time to look into it, yet? Then this tutorial is for you!

Building Deploy Ready PHP Apps
Deploy ready means that your application should be able to be deployed in any environment without changing the application code.

Writing WordPress Posts in Markdown
WordPress allows you to write your posts using Markdown. This feature is available using Jetpack. If you write some of your eBooks or other documents using Markdown, and need to transfer some of the same content to a WordPress blog than this feature is extremely useful. No need to again create a different HTML version of the content.

Notes For Working On The OpenWhisk PHP Runtime
These are some notes for working on the OpenWhisk PHP Runtime, but are probably applicable to the other runtimes too.

Implementing Custom Logic With Raw SQL In Laravel’s Query Builder
Laravel’s query builder offers a nice way to work with raw SQL. We can use them in our where conditions and also in our orderings as well. Let’s see some examples where we can use raw SQL to implement custom logic for ordering the results.

How To Rid Your Database of PHP Class Names in Eloquent's Polymorphic Tables
Polymorphic relations let you set up a relationship between many different model types, without the need for extra tables. This works by storing the "morphable type" (explained below) in the database, in addition to the morphable type's ID. By default, the morphable type stored in the database is the model's full class name. While this works, it tightly couples your database to your PHP application. Let's look at how we can instruct Eloquent to use more generic values for these morphable types.

Building a PHP Framework: Part 7 – The Container
Part 6 began our discussion of PHP containers. Today, I’ll be going into greater detail of the subject and, along with that, I’ll run down the work done so far on the Analyze container.

200 OK
200 OK is the most common HTTP status code. It generally means that the HTTP request succeeded. If the HTTP request was a GET request, the response should include the full representation of the resource.

Improving Performance Perception: On-demand Image Resizing
We’ve been building a sample application — a multi-image gallery blog — for performance benchmarking and optimisations. At this point, our application serves the same image regardless of the resolution and screen size it’s being served in. In this image resizing tutorial, we’ll modify it to serve a resized version depending on display size.

Build a WordPress Plugin with Vue 2
It’s been a while since we’ve played with Vue JS on this blog, so why don’t we take a beginner-focused look at how one might go about building a simple polling plugin for WordPress with Vue.

News and Announcements

PHP 7.3.0 Alpha 3 Released
The PHP team is glad to announce the release of the third PHP 7.3.0 version, PHP 7.3.0 Alpha 3. The rough outline of the PHP 7.3 release cycle is specified in the PHP Wiki. For source downloads of PHP 7.3.0 Alpha 3 please visit the download page. Windows sources and binaries can be found on windows.php.net/qa/. Please carefully test this version and report any issues found in the bug reporting system.

CoderCruise - August 30-September 3rd 2018, Ft. Lauderdale, FL
Tired of the usual web technology conference scene? Want a more inclusive experience that lets you get to know your fellow attendees and make connections? Well, CoderCruise was designed to be just this. It's a polyglot developer conference on a cruise ship! This year we will be taking a 5-day, 4-night cruise out of Ft. Lauderdale, FL that includes stops at Half Moon Cay and Nassau. Tickets are on sale now.

WavePHP Conference - September 19th-21st 2018, San Diego
WavePHP Conference is bringing the wonderful PHP community to the Southwest United States. Designed to be a conference for both professionals and hobbyists alike. Held in beautiful southern California's San Diego County the area has ideal weather and tons of activities. Early Bird Tickets are on sale now.

Pan-Asian PHP Conference - September 26-29th 2018, Singapore
The third pan-Asian PHP conference will take place in September 2018 in Singapore - the Garden City of the East! This is a single track, 2 days Conference, followed by a day of tutorials on 29th September 2018. Come and meet with the fastest growing PHP communities in Asia. More than 300 attendees are expected in this single track conference, with Rasmus Lerdorf and Sebastian Bergmann already confirmed as speakers. Super Early Bird Tickets are on sale now.

Nomad PHP US - August 23rd 2018 20:00 CDT
PHP-1701-A. Presented by Adam Culp. Regardless of claims by trendy developer websites, Enterprise PHP really is a thing: the final frontier. A reality for companies doing business at scale who turn to their developers for selecting frameworks, libraries, and tools that work at the scale they operate. There are undocumented, and unspoken criteria driving what they trust. Join us in this talk as Adam Culp walks through lessons learned over a five-year mission, consulting with companies who operate enterprise scale PHP applications. See what was boldly learned about squeezing more power out of PHP’s engines.

Nomad PHP EU - August 23rd 2018 20:00 CEST
Building Lego Robots with PHP. Presented by Christopher Pitt. Hands up if you love LEGO. Just kidding, I can’t see your hands. I understand why you love it though. LEGO in general, and especially Technic, are wonderful outlets of creativity and marvels of engineering. Everything fits together so neatly. Some of the sets also include optional motors and sensors; bringing them to life. The trouble is that they’re closed systems, not easily customised or controlled. Until now.

Podcasts

Post Status Draft Podcast - Working On Your Own Website
In this episode, the Brians discuss the challenges of working on your own business website, when your company offers services or makes products for websites.

PHP Web Development Podcast Ep #6 - Future of Laravel
Following our last week’s podcast with Clem, this week we will be asking more questions about Laravel. What will happen  to Laravel?  We have seen popular frameworks such as Zend move lower in the ratings , will the same thing happen to Laravel? Why do we think it will be around in the next few years?

PHP Ugly Podcast #112 - Episode 1,120
This month the team discusses Alexa telling its owner : All I see is people dying.

Reading and Viewing

Cloudways Interview - Magento Development Trends in Ukraine from Marat Mingazov, WEB4PRO CEO
Learn what Marat Mingazov, CEO of WEB4PRO, has to say about the future of Magento 1 and 2, ecommerce trends, and Magento development principles and workflows in Ukraine in our one-to-one session.

[Live Blog] Hosting WordPress Yourself Q&A
Welcome to the live blog of our Hosting WordPress yourself live Q&A event. The live event has ended. You can see the questions and answers from the event embedded below. If you want to see the full conversation, look up the #HostWPYourself hashtag on Twitter.

Learn Laravel Forge
In this series, guest instructor Marcel Pociot (Beyond Code) will steer you through the ins and outs of building and configuring servers with Laravel Forge. Whether you’re a seasoned veteran hoping to streamline your server workflow, or a beginner who doesn’t know where to start, Marcel will get you up to speed in no time.

What's The Most Weirdest Program You Have Written With PHP?
A great thread on Reddit last week asking for the weirdest program you've written using PHP.

Learn PHP and Zend Framework From Experts
Get PHP training from the basics, through cutting edge topics, and on to certification. Each course offers real-life examples and interactivity to provide a robust and hands-on php training experience, to sharpen your skills and add new development practices.  Our PHP courses, Zend Framework courses, and Zend product courses are taught online with a live expert instructor which are scheduled in advance. Classes can also be taught onsite or in a classroom setting (availability based on geography).

Where Your Money Goes - DrupalCI Tests
The test runs on Drupal.org are paid for by our generous partners and members. This is just one of the services provided by the Drupal Association as part of our commitment to maintain Drupal.org so you can focus on Drupal development and community building.

Jobs





Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

aimeos-core
Aimeos is an Open Source e-commerce framework for online shops consisting of the e-commerce library, the administration interface and different front-ends. It's a modular stack that offers an unmatched combination of flexibility and speed.

concrete5
Welcome to the official repository for concrete5 development! concrete5 is an open source CMS built by people from around the world. Want to get involved? Check out our contributor guide for more info.

biz-framework
A PHP Service Layer Framework.

typesetter
Open source CMS written in PHP focused on ease of use with true WYSIWYG editing and flat-file storage.

kontrolio
A simple standalone data validation library inspired by Laravel and Symfony and compatible with PHP 5.6+.

subrion
Subrion is a Content Management System (CMS) which allows you to build websites for any purpose. Yes, from blog to corporate mega portal.

name-parser
A universal, language-independent name parser PHP library.

infection
Infection is an open source project that welcomes pull requests and issues from anyone.

chassis
Chassis is a virtual server for your WordPress site, built using Vagrant.

imagecow
PHP library to manipulate and generate responsive images.

nano
Nano is a family of PHP webshells which are code golfed to be extremely stealthy and efficient.

froxlor
The server administration software for your needs. Developed by experienced server administrators, this panel simplifies the effort of managing your hosting platform.

wp-user-frontend
A WordPress plugin that brings many backend functionality to the site frontend.

namelessMC
A free, easy to use & powerful website software for your Minecraft server, which includes a large range of features.

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

Living lightly

Published 12 Jul 2018 by jenimcmillan in Jeni McMillan.

The Jump

She’s lost her way, moaned the mattress wearily.

Where are her arms? asked the solid floor.

The window was closed to all possibilities.

But the floor sprung sweetly under the weight of her frame.

 

The light smiled softly, the air rushed madly,

And she laughed at the room,

In complete abandonment.


How to set a login page as landing page?

Published 11 Jul 2018 by kulls in Newest questions tagged mediawiki - Stack Overflow.

I have successfully Installed MediaWiki on my host. Can you please suggest me how do I set the landing page as login page? At present, it shows the main page.


Infinite Monkey Cage 100

Published 11 Jul 2018 by BBC Radio 4 in The Infinite Monkey Cage.

Monkey Cage 100! Brian Cox and Robin Ince celebrate the 100th episode of the hit science/comedy show, by inviting some very well known monkey cage alumni to join them. Brian Blessed, Eric Idle, Katy Brand, Dave Gorman and Andy Hamilton (to name a few) take to the stage to consider what has been learnt since Episode 1, back in November 2009. Joining them on stage, will be science royalty, including Alice Roberts, American Astrophysicist Neil De Grasse Tyson, Professor Sue Black and Prof Fay Dowker, to look at the big scientific discoveries that have happened in the time since Brian and Robin first hit the airwaves, from the Higgs Boson, to Gravitational Waves, to our understanding of how human evolved. What epic discoveries might be made over the course of the next 100 episodes? For the first time, You can watch the 100th episode of The Infinite Monkey Cage, recorded live in the iconic BBC Radio Theatre, on BBC iPlayer for 30 days from Wednesday July 11th, and on the BBC Red Button at various times for 7 days from Monday 16th July. Producer: Alexandra Feachem Producer (Vision): Michael Gray.

Episode 12: Stas Malyshev

Published 10 Jul 2018 by Yaron Koren in Between the Brackets: a MediaWiki Podcast.

Stanislav "Stas" Malyshev is a developer who is currently part of the Wikimedia Search Platform team, working on search within both MediaWiki and Wikidata. He has worked for the Wikimedia Foundation since 2014. He previously worked on PHP as part of Zend Technologies, and remains involved with the development on PHP. He also worked at SugarCRM.

Links for some of the topics discussed:


Engaging Developer Communities through Webinars (Part 1)

Published 9 Jul 2018 by Karan M.V. in The DigitalOcean Blog.

Engaging Developer Communities through Webinars (Part 1)

As as developer-first company, we are always looking for meaningful channels to engage with the developer community. Our Community site contains over 1,900 tutorials on various DevOps and system administrator topics, and our Meetups host a community of 40,000+ members across 73 groups in 33 countries where members share resources, learn, and have discussions about technical topics.

We started organizing webinars as a way to combine the best of both worlds: the learning experience available through our online tutorials and the interactivity and camaraderie facilitated through our in-person meetups. Since our first webinar in September 2016, we have organized more than 30 webinars on a wide range of themes, including containers, orchestration, CI/CD, configuration management, and big data, with developers from around the world tuning in to our content.

We’ve learned a lot over the past two years and want to share how community organizers can create webinars to engage further with their communities.

1. Choosing the right webinar tool

The virtual nature of webinars is a prime advantage compared to in-person events. Attendees can join from anywhere in the world, providing them greater flexibility and accessibility. Without the limits of physical capacity, webinars allow for greater attendance.

Organizers of in-person events have an arsenal of techniques for audience engagement, such as Q&As, live quizzes and social media contests. To retain some of that flavor online, you must carefully choose the tool for delivering a webinar. Commonly-used tools include Google Hangouts, Zoom, GoToWebinar, and On24.

We use GoToWebinar for many of our webinars. To help attendees focus on the demos and technical content that a speaker is sharing, we primarily do screencasts. This, coupled with other in-session engagement features such as live polls, helps us gauge audience interest and customize our content on-the-fly.

Tip: Many of the webinar and engagement tools often have associated costs. Evaluating the tools in the context of your goals and budget will help you deliver more value to your community.

2. Getting the right equipment

If a webinar session is being recorded for later viewing, it is important to consider factors that would produce a high-quality video output suitable to your audience. Some of these are:

Video Resolution

Ensure the tool you choose supports recording in HD resolution or higher. In some tools, this depends on the resolution of the speaker’s display or webcam.

Audio Quality

Many professional webinar speakers and organizers invest in a professional microphone setup for a high-quality audio recording. Whenever possible, do a trial-run with your speakers to test their microphones, the ambient noise, and their internet connection to ensure a better experience for your attendees.

Post-Processing

Like any other video, many webinar sessions require post-processing such as video editing, animation overlays, and audio corrections, which will help deliver a better video output. The time taken for this process can be reduced by checking audio and video quality before the session, ensuring relevant animations/diagrams/graphics are created beforehand, and other post-processing factors such as frame-rates are considered.

3. Targeting attendees globally

Due to the virtual nature of webinars, developers from all around the world can attend or engage with your sessions. While targeting to engage with developers globally, there are a few key things to keep in mind:

Content

The content must resonate with your global audience and not be restricted to a certain geography. For example, a webinar on best practices for hosting developer events in the U.S. might not relate to community organizers in India.

Speaker/s

The speaker for the sessions should also be relevant to the global audience in terms of their vocabulary, language, and speaking style. The content delivered by the speaker should be understood by both native and non-native English speakers.

Time

It is essential that the time of the live session is considerate of the global audience. The cultural and social factors of the target geographies come into play here while deciding the appropriate time for your session, such as weekends vs. weekdays, evenings vs. mornings, and length. Based on your target audience, you can identify a ‘sweet-spot’ that would be suitable for a majority of your target audience. An alternative to this would be to host multiple sessions in different time zones that would be convenient to the respective regions.

The content of our webinars is technology-oriented and geography-agnostic, which draws thousands of developers from all over the world. The speakers delivering this content are well-known subject matter experts who have experience in delivering their content to international audiences.

Tip: Having an idea of the geographies that you wish to target will help you build better engagement with developers across the world.

4. Creating a learning path

A major reason for your audience to attend webinars is to learn by the various means available through a live session. Not every attendee might be fully equipped to assimilate the content in terms of their understanding and skill levels. While some might be experts on the content and expecting answers to specific questions, others might be beginners looking to understand the basics.

Creating a learning path will help attendees evaluate their understanding and self-select their learning path by attending all or a specific set of sessions within a published content curriculum. The learning path can consist of multiple webinar sessions along with various types of accompanying supplementary resources.

In our webinar series on containers and microservices, our learning path consisted of six webinar sessions with accompanying DigitalOcean tutorials and quizzes for self-evaluation.

Tip: Continuously engage with devs to help them navigate the learning path. An example is by targeting email campaigns to people based on which stage they are in the learning path.

In my next post, I will share what happens during and after the webinar. If you have any questions about the tips I’ve provided, feel free to leave a comment below!

Karan MV is the India Outreach Manager at DigitalOcean. He is focused on building and helping developer and startup communities leverage DigitalOcean to solve their problems. He launched the webinars program at DigitalOcean and is currently involved in scaling it.


Are human rights enough?

Published 9 Jul 2018 by in New Humanist Articles and Posts.

We tend to treat protecting the individual as distinct from ensuring collective welfare. It’s vital we find a way to do both.

DDD Call for Presentations — By the Numbers

Published 8 Jul 2018 by Aidan Morgan in DDD Perth - Medium.

As our agenda has just been announced, we thought it would be a good time to take a look back at the proposals we received for presentations this year and break some of the numbers down that we thought were interesting for 2018.

Submissions

First of all, the big number; we had 201 presentation topics submitted this year, which is a big increase over the 104 we received last year. That’s nearly a doubling of the number of talks (it’s so close I think we can call it double)!

It’s a great testament to the Perth community that we’re receiving so many talks, and the number is growing each year! Keep an eye on this blog where Rob will be posting soon on our voting breakdown.

Speakers

The 201 presentations came from 131 speakers, with 47 speakers submitting more than one talk. We even had one person submit presentations on 6 different topics!

We appreciate the amount of time it takes to submit one abstract for DDD Perth, so to those of you that submitted more than one — thank you!

Speaker Experience

On the topic of speakers, one of the things the organising committee really wanted to see this year was an increase in the number of first time or junior speakers, I think it’s safe to say that this year we achieved that goal with 42% of speakers having little to no experience presenting.

Of additional interest is the career progression of our speakers, with 19% of our speakers being in the earlier stages of their careers — definitely something the organising committee will be working on for 2019. We’re hoping more of the Perth juniors are speaking at Levelsconf this year, honing their skills before taking the stage at DDD Perth 2019!

Tags

2018 is the first time we asked speakers to provide topic tags for their presentations. Tags are something that we as an organising committee thought would help people filter through the number of submissions when voting, but it also gives us an interesting insight to the topics that are of interest to the Perth software community.

Coming out on top are Backend and Frontend/Web tags, which is to be expected given the historically developer focused nature of DDD, but the data is promising — we’re seeing more non “traditionally developer focused” topics moving up the list such as Leadership, Teams, Soft Skills, and Data and Analytics topics starting to grow in size.

This increase in diversity of topics also means we’ll be presenting an agenda this year which appeals to people from all different parts of the Perth software community.

This data is also useful for us when organising our “DDD by Night” events where we take a deep-dive into a topic in an evening. Rob has a great write up about the first one here.

If you submitted an abstract this year but it wasn’t selected for the agenda we haven’t forgotten you, there’s a change you might be approached to speak at DDD by Night instead!

DDD By Night events will be announced throughout the year, so keep an eye on your inbox!

Session Length

We allow our speakers to specify a 45 minute “long talk” or a shorter 20 minute “short talk” format when submitting their talk,. This year the breakdown was almost 50/50 for both, with that 50/50 split present across all career progression levels.

There is a noticeable difference in session length when it comes to previous speaking experience, with submissions from presenters with less speaking experience preferring the shorter length presentations.

If we were able to somehow accept all submitted talks we would have 108 hours of presentations (assuming no breaks). That is just short of the amount of time the Apollo astronauts spent getting to and from the moon!

Diversity

Diversity is a topic of great importance to the DDD organising committee, something that we work hard each year to improve. Matt has a great write up of some of the things we’ve been doing in this space here.

Diversity can mean different things to different people, but to get an idea of how we’re tracking against our diversity goals we use a “diversity score” that takes into consideration many different variables about our speakers (including pronouns, level of experience at public speaking and seniority in current job role).

This year we’re proud to say that the people who submitted abstracts for DDD Perth come from a more diverse background than previous years with 40% of speakers coming from at least one of our identified under-represented groups.

We will always strive to continue to improve in this space, as it remains one of our core objectives — it’s heartening to see that we’re doing better each year.

Conclusion

DDD Perth keeps getting better year on year, and it’s all thanks to our amazing community who keep submitting impressive talks. Is there some data you’d like to see that we haven’t supplied here? Give us a shout!


DDD Call for Presentations — By the Numbers was originally published in DDD Perth on Medium, where people are continuing the conversation by highlighting and responding to this story.


Wikipedia API related topics

Published 8 Jul 2018 by BD111 in Newest questions tagged mediawiki - Stack Overflow.

I'm looking for some way to retrieve all related topics for some keyword (also a topic). For example for the key word 'Pizza' I want to get something like: ["Food", "Italian", "Cheese"....]. Is there any way to do it with the Wikipedia API? Thanks!


Dead Ringers

Published 6 Jul 2018 by BBC Radio 4 in Friday Night Comedy from BBC Radio 4.

Holding a wobbly mirror up to the World Cup, Wimbledon and Brexit.

Accessibility and usability report for AtoM

Published 6 Jul 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Earlier this year I blogged about our recent upgrade to AtoM 2.4 and hinted at a follow up post on the subject of usability and accessibility.

AtoM is our Archives Management System and as well as being a system that staff use to enter information about the archives that we hold, it is also the means by which our users find out about our holdings. We care very much what our users think of it.

When we first released the Borthwick Catalogue (using AtoM 2.2) back in 2016 we were lucky enough to have some staff resource available to carry out a couple of rounds of user testing - this user testing is documented here and here.

We knew that some of the new features of AtoM 2.4 would help address issues that were raised by our users in these earlier tests. The addition of ‘shopping bag’ functionality in the form of the new clipboard feature, and the introduction of an advanced search by date range being two notable examples.

We did not have the capacity to carry out a similar user testing project when we upgraded to 2.4 but as a department committed to Customer Service Excellence we were very keen to consider our users as we rolled out the new version.

We decided to take a light touch approach to this problem and take advantage of the expertise of other colleagues across the University. 

We approached our Marketing team with a request for support and were pleased that the Senior User Experience Designer was able to act as a critical friend, giving us a couple of hours of his time to take a look at our catalogue from a usability perspective and give us some feedback. Thanks!

A quick note:
We use a slightly customised version of the Dominion theme. Some of the issues raised will be relevant to other AtoM users (particularly those with the Dominion theme) and others are more specific to our own customisations (for example the colours we use on our interface).
The Borthwick Catalogue at
iPhone 5 size with browse button
partially visible

Mobile responsiveness

We have already done some work on mobile responsiveness but our usability guru highlighted that there was still work to do. At some screen sizes parts of the top navigation were cut off the screen. At other screen sizes a white block appears to the left of the search box. This appears to be an issue not limited to our AtoM instance.

One of the customisations we have is a footer (similar to that found on our website) at the bottom of every page. It was noted that at certain screen sizes (below 1200px) the right end of the footer is cut off.

I had some discussion with a technical colleague who supports AtoM and we agreed that whilst this isn’t a deal breaker, we would like it to be better. He is going to investigate this in more detail at a later date.

Our footer for the Borthwick Catalogue - with information on the right truncated at smaller screen sizes


Bold text not appearing on a Mac

When viewing our catalogue on a Mac, it was noted that text that should have been bold was not appearing as such. This is a minor irritation but again something we would like to investigate further.


Colour contrast

There was a fair amount of feedback on colour contrast and how this may be problematic for some of our users.

Specific areas of concern were:

  • The text colours we had specifically chosen for our theme - for example the light orange and grey in this example
The light orange and grey text that we use for our catalogue have may not stand out enough to be legible
  • The buttons (for example ‘search’ and ‘reset’) in this example look a little faded.
Buttons in AtoM use subdued colours which may cause problems for some users
  • The clipboard notification bubble in the top menu bar is blue on dark grey. There were concerns about the visibility of this.
Lack of contrast between the blue and dark grey here

I need to try and find some more suitable (stronger) colours for our theme. Never an easy task but the WebAIM colour contrast checker is my friend!


Colour alone used to indicate links

It was noted that colour was the only method of indicating that some of the text within the interface was a link. 

This is not too much of a problem in some areas of the site (for example in the navigation bar on the left where it is more obvious that this will be linked text) but particularly when included in the static pages this could be problematic for some users.

An example of how colour is used to indicate links in our static pages - these visual clues will not be apparent to some users


Alt text for images

Alt text gives visually impaired users a description of an image on a website and is particularly necessary if an image conveys important information. Read more about alt text here.

The images within the AtoM interface (for example in the static pages) utilise the image filename as the alt text.

Having a file name as alt text is not always very helpful. It would be better to have no alt text if the images are purely illustrative or to allow AtoM administrators to add their own alt text to those images that do convey important information.

There doesn’t appear to be a method of including alt text in AtoM currently. It would be helpful if the syntax to include an image in static pages supported an additional alt text argument. 

Living in hope, I tried to include some alt text for an image within the static pages but unfortunately this was not picked up when the page was rendered in the web browser.


Login button

There is a login button in the top right corner of AtoM. This is because staff use the same interface to create records in AtoM as users use to search and browse. By logging in, staff have access to information and features that are not available to other users (for example the accessions records, draft records and import and export options).

A user coming to our catalogue may see the login button and wonder if they need to login in order to unlock additional functionality or perhaps to enable them to save their session or the contents of their clipboard.

By default the login button on the AtoM interface is simply labelled 'Log in'. I discussed with colleagues and the AtoM mailing list how we could avoid confusion for users and we talked through several different options.

For now we have taken the quick approach of altering the label on the button so it now reads 'Admin Login'. This makes it clearer to our users that the feature is not intended for them. 

Artefactual later announced that they had been able to carry out some work to resolve our problem and have added the log in button to the Visible Elements module of AtoM - enabling adminstrators to configure whether they want to show or hide the button to unauthenticated users. This will be available in AtoM 2.5 - thanks Artefactual!


Clipboard feature

A couple of comments were made about the clipboard functionality. 

Firstly, that users may be confused by the fact that the clipboard can appear to be empty if for example you have been collecting Authority Records rather than Archival Descriptions. As the clipboard shows Archival Descriptions by default, it is not immediately obvious that you may need to change the entity type in order to see the items you have selected. 

Secondly that the feedback available to users when adding or removing items from the clipboard is not always clear and consistent. When viewing a list of results the clipboard icon just changes colour to indicate an item has been added.

The small clipboard icon on the right of each item in a list changes colour when you add or remove the item


However, when on a archival description or authority record page, there is also a text prompt which helps explain to the user what the icon is for and what action is available. This is much more helpful for users, particularly if they haven't used an AtoM catalogue or encountered the clipboard feature before.

When viewing a record, the clipboard icon to the right is much clearer and more user friendly



So, some useful food for thought here. It is always good to be aware of potential usability and accessibility issues and to open up discussions about how things could be improved.

I hope these findings are of interest to other AtoM users.

Accessibility and usability report for AtoM

Published 6 Jul 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Earlier this year I blogged about our recent upgrade to AtoM 2.4 and hinted at a follow up post on the subject of usability and accessibility.

AtoM is our Archives Management System and as well as being a system that staff use to enter information about the archives that we hold, it is also the means by which our users find out about our holdings. We care very much what our users think of it.

When we first released the Borthwick Catalogue (using AtoM 2.2) back in 2016 we were lucky enough to have some staff resource available to carry out a couple of rounds of user testing - this user testing is documented here and here.

We knew that some of the new features of AtoM 2.4 would help address issues that were raised by our users in these earlier tests. The addition of ‘shopping bag’ functionality in the form of the new clipboard feature, and the introduction of an advanced search by date range being two notable examples.

We did not have the capacity to carry out a similar user testing project when we upgraded to 2.4 but as a department committed to Customer Service Excellence we were very keen to consider our users as we rolled out the new version.

We decided to take a light touch approach to this problem and take advantage of the expertise of other colleagues across the University. 

We approached our Marketing team with a request for support and were pleased that the Senior User Experience Designer was able to act as a critical friend, giving us a couple of hours of his time to take a look at our catalogue from a usability perspective and give us some feedback. Thanks!

A quick note:
We use a slightly customised version of the Dominion theme. Some of the issues raised will be relevant to other AtoM users (particularly those with the Dominion theme) and others are more specific to our own customisations (for example the colours we use on our interface).
The Borthwick Catalogue at
iPhone 5 size with browse button
partially visible

Mobile responsiveness

We have already done some work on mobile responsiveness but our usability guru highlighted that there was still work to do. At some screen sizes parts of the top navigation were cut off the screen. At other screen sizes a white block appears to the left of the search box. This appears to be an issue not limited to our AtoM instance.

One of the customisations we have is a footer (similar to that found on our website) at the bottom of every page. It was noted that at certain screen sizes (below 1200px) the right end of the footer is cut off.

I had some discussion with a technical colleague who supports AtoM and we agreed that whilst this isn’t a deal breaker, we would like it to be better. He is going to investigate this in more detail at a later date.

Our footer for the Borthwick Catalogue - with information on the right truncated at smaller screen sizes


Bold text not appearing on a Mac

When viewing our catalogue on a Mac, it was noted that text that should have been bold was not appearing as such. This is a minor irritation but again something we would like to investigate further.


Colour contrast

There was a fair amount of feedback on colour contrast and how this may be problematic for some of our users.

Specific areas of concern were:

  • The text colours we had specifically chosen for our theme - for example the light orange and grey in this example
The light orange and grey text that we use for our catalogue have may not stand out enough to be legible
  • The buttons (for example ‘search’ and ‘reset’) in this example look a little faded.
Buttons in AtoM use subdued colours which may cause problems for some users
  • The clipboard notification bubble in the top menu bar is blue on dark grey. There were concerns about the visibility of this.
Lack of contrast between the blue and dark grey here

I need to try and find some more suitable (stronger) colours for our theme. Never an easy task but the WebAIM colour contrast checker is my friend!


Colour alone used to indicate links

It was noted that colour was the only method of indicating that some of the text within the interface was a link. 

This is not too much of a problem in some areas of the site (for example in the navigation bar on the left where it is more obvious that this will be linked text) but particularly when included in the static pages this could be problematic for some users.

An example of how colour is used to indicate links in our static pages - these visual clues will not be apparent to some users


Alt text for images

Alt text gives visually impaired users a description of an image on a website and is particularly necessary if an image conveys important information. Read more about alt text here.

The images within the AtoM interface (for example in the static pages) utilise the image filename as the alt text.

Having a file name as alt text is not always very helpful. It would be better to have no alt text if the images are purely illustrative or to allow AtoM administrators to add their own alt text to those images that do convey important information.

There doesn’t appear to be a method of including alt text in AtoM currently. It would be helpful if the syntax to include an image in static pages supported an additional alt text argument. 

Living in hope, I tried to include some alt text for an image within the static pages but unfortunately this was not picked up when the page was rendered in the web browser.


Login button

There is a login button in the top right corner of AtoM. This is because staff use the same interface to create records in AtoM as users use to search and browse. By logging in, staff have access to information and features that are not available to other users (for example the accessions records, draft records and import and export options).

A user coming to our catalogue may see the login button and wonder if they need to login in order to unlock additional functionality or perhaps to enable them to save their session or the contents of their clipboard.

By default the login button on the AtoM interface is simply labelled 'Log in'. I discussed with colleagues and the AtoM mailing list how we could avoid confusion for users and we talked through several different options.

For now we have taken the quick approach of altering the label on the button so it now reads 'Admin Login'. This makes it clearer to our users that the feature is not intended for them. 

Artefactual later announced that they had been able to carry out some work to resolve our problem and have added the log in button to the Visible Elements module of AtoM - enabling adminstrators to configure whether they want to show or hide the button to unauthenticated users. This will be available in AtoM 2.5 - thanks Artefactual!


Clipboard feature

A couple of comments were made about the clipboard functionality. 

Firstly, that users may be confused by the fact that the clipboard can appear to be empty if for example you have been collecting Authority Records rather than Archival Descriptions. As the clipboard shows Archival Descriptions by default, it is not immediately obvious that you may need to change the entity type in order to see the items you have selected. 

Secondly that the feedback available to users when adding or removing items from the clipboard is not always clear and consistent. When viewing a list of results the clipboard icon just changes colour to indicate an item has been added.

The small clipboard icon on the right of each item in a list changes colour when you add or remove the item


However, when on a archival description or authority record page, there is also a text prompt which helps explain to the user what the icon is for and what action is available. This is much more helpful for users, particularly if they haven't used an AtoM catalogue or encountered the clipboard feature before.

When viewing a record, the clipboard icon to the right is much clearer and more user friendly



So, some useful food for thought here. It is always good to be aware of potential usability and accessibility issues and to open up discussions about how things could be improved.

I hope these findings are of interest to other AtoM users.

WTFM is fun

Published 6 Jul 2018 by Sam Wilson in Sam's notebook.

There’s a delight in writing documentation, in putting the words down that you wish you could read when first starting to use a project. At that point nothing doesn’t make sense, and everything is going to proceed according to the clear picture you have. Things later change, but when done well I think the earlier documentation serves to get you back on track, and makes later maintenance so much better.


Tabulate 2.10.3

Published 5 Jul 2018 by Sam Wilson in Sam's notebook.

I fixed a bug in Tabulate last night, and released version 2.10.3. I’ve rather been neglecting this project for a while, so it’s been nice to come back to it. There are a few things that I might try to get done on it in the next few days or weeks (starting with more documentation).

The bug was to do with the change in WordPress’ default database character set and how that affected the reports ‘title’ column. Previously, a key length on this column of 200 was okay as it was under MySQL’s maximum of 767 (i.e. 767 bytes / 3 bytes for utf8 = max. 255 characters), but now the default is utf8mb4 each character can use up to 4 bytes instead of 3, and so the length must be reduced to 191 (i.e. 767 bytes / 4 bytes for utf8mb4 = max. 191 characters). WordPress core only does this for sites running on MySQL 5.5 and above, but it seemed easier just to reduce the key length for all Tabulate installations; it doesn’t seem likely to be an annoyance to anyone.


How can I add an upload filetype to mediawiki?

Published 5 Jul 2018 by Solx in Newest questions tagged mediawiki - Stack Overflow.

I would like to be able to upload .2h files to mediawiki. I think it is version 1.310-alpha

I added '2h' to wgFileExtensions which almost works. It now complains with:

File extension ".2h" does not match the detected MIME type of the file (application/sla).

The file is binary, so I assume I need to somehow allow:

application/octet-stream

Redirect users to login page when they click to edit MediaWiki

Published 5 Jul 2018 by Josh Harry in Newest questions tagged mediawiki - Stack Overflow.

I need to redirect users that aren't logged in to the login page when they try to edit a page on my wiki, and then once they have logged in, redirects them back to the edit page.

I found this MediaWiki extension that does the job I am looking for (https://www.mediawiki.org/wiki/Extension:ForceLogin) but it doesn't appear to be up to date and I couldn't get it working on the newest version of MediaWiki (1.31.0).

I tried to remake the extension myself (here: https://github.com/JoshBigGuns/ForceLogin) but don't have much experience with PHP and writing extensions.

Any help is greatly appreciated, many thanks - Josh


PHPWeekly July 5th 2018

Published 5 Jul 2018 by in PHP Weekly Archive Feed.

PHPWeekly July 5th 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 5th July 2018

A very warm welcome to you out there in the PHP community, and thank you for joining us :)

After an absence of several months, the Zend Framework Quick Bites podcast is back, discussing delegator factories and why you should use them.

Also this week, with constant talk of GDPR all around us, we take a look at an easy way for Laravel users to get rid of default cookies that have been set by the framework.

The latest Month in WordPress blog is out, discussing all that happened in the community in June.

Plus SymfonyCon Lisbon has been announced for December. With talks, workshops, discussions and other serious work around Symfony and its environment taking place over five days, tickets are on sale now.

And finally, voting for the Drupal Association Board positions is open now. Check out candidate profiles and get voting.

Enjoy your weekend,

Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

Enterprise Laravel Help Me: White-Labeled Clothing Stores
Recently, I grew tired of hearing people say, "Laravel is fine for small apps, but when you are working in the Enterprise..." You can almost hear the capital E in enterprise, like they're talking about the starship. I've spent the last few months trying to gather information about what makes people say this, and also stories of folks who are already successfully working with Laravel in enterprise context. I put out a survey to collect stories, and wrote and delivered a talk (which I hope to give again soon) titled "Laravel and the Enterprise."

Make PHP Great Again
Apologies for the clickbait title, but if you are a PHP developer, I really think that this topic deserves your attention.

GitHub Tips and Tricks
I’ve compiled a list of my favorite GitHub tips and tricks that I use in my workflow daily. You might be familiar with some or even all of them, but I find that developers new to GitHub and veterans alike might pick up a new tip or two by sharing!

It's Time To Vote - Drupal Community Elections 2018
Voting is now open for the 2018 At-Large Board positions for the Drupal Association!  If you haven't yet, check out the candidate profiles including their short videos found on the profile pages. Get to know your candidates, and then get ready to vote. Election voting will be held from 2 July, 2018 through 13 July, 2018. During this period, you can continue to review and comment on the candidate profiles.

Tutorials and Talks

Building Flexible Axios Clients
Recently I set out to improve how I work with APIs in my Vue applications by building a flexible Axios client that I can use in my Vuex actions and one-off components.

Concurrency in PHP with Swoole
Swoole is a CLI server written in C as a PHP extension. It handles HTTP, TCP and socket servers, offering some really interesting features. The ones I’ve tested and I’m pretty excited about are related to concurrency.

Keeping Credentials Secure in PHP
Effective PHP credential security can be tricky, but simpler is better than complex.

What Are Delegator Factories and Why You Should Use Them
Ever wanted to dynamically expand the functionality of an object which you retrieve from your dependency injection container, based on different needs, yet without creating messy, hard to maintain configurations? If so, then you're going to want to know about a powerful technique called Delegator Factories.

Using Fractal As Your OpenWhisk API's View Layer
When writing an API, it’s common to produce an output that conforms to a known media type such as JSON API or HAL, etc. I’m a strong believer that even though I’m writing an API, my application has a view layer. It’s not the same as building an HTML page, but you still need to separate out the code that creates the structured output from your model layer. For a couple of APIs that I’ve written recently, I’ve used Fractal for this.

WordPress File Delete to Code Execution
WordPress is the most popular CMS on the web. According to w3tech, it is used by approximately 30% of all websites1. This wide adoption makes it an interesting target for cyber criminals. In this blog post we are going to introduce an authenticated arbitrary file deletion vulnerability in the WordPress core that can lead to attackers executing arbitrary code.

Let Changelog Linker Generate CHANGELOG.md for You
Do you have an open-source project on Github? Do you want your users to know about new features and changes without you writing posts about it? Do you keep a changelog? Do you struggle with keeping it up-to-date and descriptive and with all the links to all merged pull-requests? Yes? Then you'll love Changelog Linker. A PHP CLI tool that does all this boring work for you.

PHP: Use Associative Arrays Basically Never
The other day I was working on some sample code to test out an idea that involved an object with an internal nested array. This is a pretty common pattern in PHP. But that got me wondering, is that common pattern really, you know, good? So like any good scientist I decided to test it: What I found will shock you!

103 Early Hints
103 Early Hints is an experimental status code. It can be used by a server to preemptively send headers to a client or intermediary. A client might be able to use these headers to make certain optimisations as early as possible in the process.

Optimisation Auditing: A Deep Dive into Chrome’s Dev Console
Chrome DevTools incorporates many sub-tools for debugging web applications on the client side - like recording performance profiles and inspecting animations - most of which you’ve likely been using since your early days of learning web development, mostly through the DevTools console. Let’s look at some of those tools, focusing particularly on the console and the performance metrics.

Join The Light Side, We Have No Cookies
If you haven't been in hibernation the last couples of weeks you might have heard of something called GDPR. If you are using Laravel, here's how you can (very) easily get rid of the default cookies set by the framework.

PHP Reflection
PHP provides a complete reflection API and multiple functions right out of the box. This provides an object the ability to examine itself and report back things like its methods and properties. With that functionality, we can automatically create documentation, inject dependencies, and a lot more.

Using Facebook Messenger Quick Replies with BotMan
I guess you already used quick replies for text buttons, right? But did you know that you can ask the user for email, phone number, and current location? It is time to give you a refresh of Facebook Messenger quick replies and how they work in the BotMan chatbot framework.

News and Announcements

Oscon - July 16-19th 2018, Portland
OSCON is the complete convergence of the technologies transforming industries today, and the developers, engineers, and business leaders who make it happen.The 20th Open Source Convention takes place next July. From architecture and performance, to security and data, get expert full stack programming training in open source languages, tools, and techniques. Tickets are on sale now.

PHP Developer Days - September 21st-22nd 2018, Dresden
After a very successful edition in 2017 we aim to push this community driven conference to the next level in 2018. For the first time we will offer a full day with workshops, so you can get the most out of our excellent trainers. On the second day our international speakers will provide you with great sessions in a single track. We are committed to creating a unique community experience - an event where everyone is among #PHPriends. Tickets are on sale now.

Laracon AU - October 18-19th 2018, Sydney
Two days of learning and networking with the Laravel community in Australia for the first time. The two day conference will see us welcome some of the most prominent Laravel community members including Matt Stauffer, Adam Wathan, and the framework’s author Taylor Otwell as speakers alongside a host of terrific local speaking talent. Early Bird Tickets are on sale now.

PHP Central Europe - October 26-28th 2018, Prague
New season and new challenges! As conference organisers we understand perfectly that you can stay with peleton only when you focus on development. That is why phpCE, as an event aimed at a wide group of PHP programmers from Central Europe, leaves Poland for the first time. We are stronger than before thanks to the organisers of Brno PHP Conference and volunteers from the Pehapkaři group. Together we have been working for the success of this year’s edition and we are inviting you to Prague. With Rasmus Lerdorf already confirmed as a special guest, the Call for Papers closes today.

Symfony Con - December 4-8th 2018, Lisbon
Symfony is proud to organise the sixth edition of the SymfonyCon, the international Symfony conference. This year, to celebrate Symfony, we decided to bring the entire community to Portugal and discover the amazing city of Lisbon. If you like Symfony and share fun with professionals, this is where you want to be in December! Join us for talks, workshops, discussions and other serious work around Symfony and its environment.

Podcasts

Laravel News Podcast LN64: Babies, Packages and PHP 7.3
Jake and Michael discuss all the latest Laravel releases, tutorials, and happenings in the community.

Zend Framework Quick Bites Episode 44 -  What Are Delegator Factories and Why You Should Use Them
Ever wanted to dynamically add functionality to services you retrieve from your DI container - without creating custom versions or long inheritance hierarchies? Do you want to do it in a simple, clear, and well structured way? If so, then tune into this episode and learn about delegator factories. They're an advanced and very powerful technique for handling just this situation.

PHP Ugly Podcast #111 - A Failed Transaction
Topics this week include VuePress and Laravel Horizon.

Post Status Draft Podcast - An Abundance of Acquisitions
In this episode, Brian and Brian discuss several acquisitions that have occurred in the WordPress space in recent weeks.

PHP Web Development Podcast Ep #5 - Why Laravel?
This week I am speaking to a champion in the Technical community. Clement  started his career as an intern and working his way up to a Technical Lead with experience leading a team. As a FullStack developer, His skills entail PHP, Symfony, Laravel, BDD,TDD, Solid Principles, Mobile development etc.

Three Devs and a Maybe Podcast - AWS, Golang and iOS Development with Alex Bilbie
In this weeks episode we are lucky to be joined by Alex Bilbie to discuss all things AWS, Golang and iOS development. We start off the show by exploring how he got into programming, the stack he currently uses, and moving from a Monolith Laravel application to Golang microservices (deployed using ECS). From here, we move on to highlight his time developing the popular PHP OAuth 2.0 Server package, and how he first got interested in the AWS platform.

Full Stack Radio Podcast Episode 92: Derrick Reimer - Building an SPA with Elm, Phoenix and GraphQL
In this episode, Adam talks to Derrick Reimer about building his new app Level as an SPA using Elm, Phoenix, and GraphQL.

Reading and Viewing

Theme Developer’s Guide to WPBakery Page Builder for WordPress
WPBakery Page Builder for WordPress (formerly known as Visual Composer) is probably the most popular page builder on Envato Market. Sitting at over 350,000 sales to date, this plugin is bundled with a large number of WordPress themes sold on ThemeForest. In this short course, you’ll learn how to integrate WPBakery Page Builder in your WordPress theme and customise it to fit your specific theme requirements.

php[architect] Magazine July 2018 - Navigating State
We write code to solve problems. Whether it’s allowing a client’s site to accept credit card payments to buy a plush toy or if we’re trying to automatically track our World Cup bracket results, the applications we make exist for a reason. While HTTP and PHP are stateless at their core, keeping track of the state of things is a recurring concern. It could be tracking if a user is logged in or knowing where they are in the shopping cart checkout process. In this issue, we survey tools to help you model and persist application state.

The Month in WordPress: June 2018
With one of the two flagship WordCamp events taking place this month, as well as some important WordPress project announcements, there’s no shortage of news. Learn more about what happened in the WordPress community in June.

PHP Extensions Status with Upcoming PHP 7.3
With PHP 7.3 entering stabilisation phase, time to check the status of most commonly used PHP extensions (at least, the ones available in my repository). Here is the exhaustive list.

7PHP Interview with Matthew Weier O’Phinney
Making Zend Framework Components Compatible With PHP 7.2 & Is It The End of Monolithic Framework at Zend | Hear It From The Mouth Of The Principal Engineer at Zend Technologies a.k.a Mr Matthew Weier O’Phinney.

Jobs





Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

core-bundle
Contao 4 has been designed as a Symfony bundle, which can be used to add CMS functionality to any Symfony application.

limesurvey
The most popular FOSS online survey tool on the web.

yii2-docker
Official docker images suitable for Yii.

php-mediainfo
PHP wrapper around the `mediainfo` command.

cakephp-geo
A CakePHP plugin around geocoding tools and helpers.

siler
A set of general purpose high-level abstractions aiming an API for declarative programming in PHP.

lawoole
A high-performance PHP framework based on Laravel and Swoole

poduptime
Poduptime is software to get live stats and data on listed Diaspora Pods.

payme
A multi-gateway payment platform for PHP.

grocery-crud
Grocery CRUD is a PHP Codeigniter Framework library that creates a full functional CRUD system without the requirement of extra customisation to the JavaScripts or the CSS to do it so.

jikan
Unofficial MyAnimeList PHP+REST API which provides functions other than the official API.

chassis
Chassis is a virtual server for your WordPress site, built using Vagrant.

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

From Another View Project: Wiluna to the Carnegie Homestead, via the Canning Stock Route and Glenayle station 26 – 30 May 2018

Published 4 Jul 2018 by carinamm in State Library of Western Australia Blog.

2007_0219Number3MAY20180003.JPG

From 26-30 May, State Library staff, Bill Gannon and Rod Schlencker travelled from Wiluna via the Canning Stock Route to Windich Spring, Pierre Spring, the Weld Spring/Palatji and then via Glenayle Station to the Carnegie Homestead. The State Library recognise the right of Martu people to check images and content prior to posting online. Therefore, there will be a delay in posting information related to areas closer to the Canning Stock Route. Please check the Google Map for location details.

On 30 May 2018, the project team, Bill and Rod travelled to Mount Moore to view the cairn which John Forrest built at the eastern end of the peak.  During this trip, the project team worked closely with the Martu people from the Birriliburru Native Title area.  John and Alexander Forrest visited Mount Moore between 22 and 26 June 2018. John’s account in Explorations in Australia 1874 states that he visited on 22 June 1874. However, the published map contains the dates 25 and 26 June 1874, at Camp 50.  Mount Moore was named after Mr. W.D. Moore of Fremantle, a subscriber to the Expedition Fund.  On top of Mount Moore, Bill Gannon sketched the Timperley Range which John Forrest described in his diary:

Ascending the the hill we had an extensive view to the South-West, South and South-East. Fine grassy country all round and very little spinifex. To the south about nine miles we saw a lake, and farther off a remarkable red-faced range, which I named Timperley Range, after my friend Mr. W.H. Timperley, Inspector of Police, from whom I received a great deal of assistance before leaving Champion Bay. A remarkable peak, with a reddish top, bore South-South-East, which I named Mount Hosken, after Mr. M. Hosken, of Geraldton, a contributor to the expedition.  Forrrest, J. Explorations in Australia. 1875

To keep informed of project updates follow the From Another View project blog: https://fromanotherview.blog/

IMG_0162.JPGIMG_0143.JPG
IMG_0163.JPG


Day 19: The End

Published 4 Jul 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

It's over. Tonight was our last night on the trip, and we head back to Athens tomorrow. I think I learned a lot more about myself than the skills and knowledge I picked up. I spent some time reflecting by talking to people in person, so I'm not going to write anything up tonight. Goodbye (for now!) ^.^

"Boyz of FLP"

"Boyz of FLP"

P.S.: My team won in Jeopardy! tonight, $2,600 - $500 - $400 - $200. It was fun.


"We are in the middle of the fight": the globalisation of LGBT rights

Published 4 Jul 2018 by in New Humanist Articles and Posts.

Q&A with Frédéric Martel, author of "Global Gay: How Gay Culture is Changing the World"

Untitled

Published 3 Jul 2018 by Sam Wilson in Sam's notebook.

I just donated to Read the Docs.


Day 17 & 18: Dignity and human rights

Published 3 Jul 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

We visited the Kara Tepe and Moria refugee camps over the past two days. The director of Kara Tepe really spoke to me when he started talking about dignity, freedom, and other human rights. I ended up re-reading the Universal Declaration of Human Rights, and some of the background behind it's creation.

I'm still processing the Moria camp, and how to tell its story. There's a slight possibility that we might go back tomorrow, so I'll just post a short snippet from the interview we conducted today with a 23 year old Syrian photojournalism student (basically me, but from a war-torn country and not from immense privilege). One of his friends translated the Arabic to English for us, and I'm paraphrasing the quote.

"Would you rather be at Moria or in Syria?"

"Syria. We're not safe here, we weren't safe there. But at least in Syria we had the freedom to go wherever we wanted and we could see our family."

Salam, Ibrahim.


How i can Parse Mediawiki Sommaire and found the HTML code with PHP?

Published 3 Jul 2018 by Bernard Bass in Newest questions tagged mediawiki - Stack Overflow.

Exemple with a mediawiki link : https://www.visionduweb.eu/wiki/index.php?title=Utiliser_PHP

Show the source code and identify the sommaire from this Mediawiki page.

I search how i can parse the source code and found the HTML code for this sommaire.

#

I tried with $domExemple = $xpath->query(« //ul/li »); but I have too many answers and poorly formatted.

I tried with $domExemple = $xpath->query(« //ul/li[@class=’toclevel-1 tocsection-1′] »); which gives me the result, but, how to get all toclevel and tocsection, without having to specify the number 1, or 2, or 3, ... toclevel or tocsection.

In this example, I do not get the HTML content, only the text content. I would have preferred to retrieve the HTML content.


Using Hue & Hive to quickly determine Wikidata API maxlag usage

Published 3 Jul 2018 by addshore in Addshore.

Hue, or Hadoop User Experience is described by its documentation pages as “a Web application that enables you to easily interact with an Hadoop cluster”.

The Wikimedia Foundation has a Hue frontend for their Hadoop cluster, which contains various datasets including web requests, API usage and the MediaWiki edit history for all hosted sites. The install can be accessed at https://hue.wikimedia.org/ using Wikimedia LDAP for authentication.

Once logged in Hue can be used to write Hive queries with syntax highlighting, auto suggestions and formatting, as well as allowing users to save queries with names and descriptions, run queries from the browser and watch hadoop job execution state.

The Wikidata & maxlag bit

MediaWiki has a maxlag API parameter that can be passed alongside API requests in order to cause errors / stop writes from happening when the DB servers are lagging behind the master. Within MediaWiki this lag can also be raised when the JobQueue is very full. Recently Wikibase introduced the ability to raise this lag when the Dispatching of changes to client projects is also lagged behind. In order to see how effective this will be, we can take a look at previous API calls.

Within the Hadoop DataLake there is an apiaction table that contains all API calls to Wikimedia sites (which includes Wikidata) along with the parameters used (with some data redacted) and other details such as user agent.

The query below counts the number of calls that were successful to the Wikidata API, using the Wikidata writing API actions for June 2016 that did not come from internal services.

SELECT COUNT(*) AS COUNT,
       params["maxlag"] as maxlag
FROM apiaction
WHERE wiki = "wikidatawiki"
  AND haderror = FALSE
  AND params["action"] RLIKE '^wbl?(create|edit|set|add|remove|link|merge)'
  AND useragent != '127.0.0.1'
  AND YEAR = 2018
  AND MONTH = 06
GROUP BY params["maxlag"]
ORDER BY COUNT DESC LIMIT 25;

In Hue this looks like:

The play button to the left of the query can be used to start the job, and the running query will then appear in the “Query History” section of the page:

Once the query has completed the raw results can be viewed in the browser under the “Results” tab:

And the results can even be quickly visualized in the browser (using more than just a pie chart…):

This shows us that the majority of writing API calls use a maxlag of 5, however around 1/3 of calls in June 2018 either passed no maxlag value or a maxlag value that is so high it would probably never be reached during regular operation.

The post Using Hue & Hive to quickly determine Wikidata API maxlag usage appeared first on Addshore.


Revised “Inaccessibility of CAPTCHA” Draft for Review

Published 3 Jul 2018 by Janina Sajka in W3C Blog.

Today the Accessible Platform Architectures (APA) Working Group, with extensive assistance from its Research Questions Task Force (RQTF), published a draft update to the W3C Note “Inaccessibility of CAPTCHA“. This widely accessed publication from 2005 has been extensively revised and updated to bring it up to date with changes in technology since it was last published. Much has changed in technology since then, but CAPTCHAs remain a barrier for some people to access websites.

We are attempting to survey the landscape of existing approaches and their accessibility challenges and solutions comprehensively in this update. We have also conducted an extensive review of relevant research literature in creating this revised draft, which is incorporated into the document with citations. We were able to include additional information about federated identity systems, dual factor authentication, and biometrics, which are now more broadly used. New types of CAPTCHAs, such as 3d and video game CAPTCHAs, are also emerging which present new opportunities and challenges for accessibility.

Web Content Accessibility Guidelines 2.0 and 2.1 refer to the requirement for accessible CAPTCHA in Success Criterion 1.1.1 Non-Text Content. This document is an important complement to that requirement which provides more detail on how to meet these requirements, and relevant considerations in accessible authentication of Web users.

We have endeavored to comprehensively cover the current landscape in technologies that attempt to distinguish human web site users from robots. To be sure the updated document is as complete as possible, we need public input on this version. The following questions will help guide your review:

To comment, file an issue in the W3C apa GitHub repository. If this is not feasible, send email to public-apa@w3.org (comment archive). Comments are requested by 31 July 2018. In-progress updates to the document may be viewed in the publicly visible editors’ draft.

This publication returns the document to Working Draft status. After incorporation of feedback, and probably at least one more public review draft, the Working Group plans to advance this document back to Note status. The 2005 CAPTCHA Note is still available.


HTTP error 500 in extension Flagged Revs mediawiki

Published 3 Jul 2018 by Ann G. in Newest questions tagged mediawiki - Stack Overflow.

I have a problem with extension FlaggedRevs. When I try to load main page, I have 500 http error. I found error logs: PHP Fatal error: Call to private method WikiPage::convertSelectType() from context 'FlaggableWikiPage' in /var/www/annagorlo/data/www/mybot.freedomain.thehost.com.ua/mediawiki-1.27.4/extensions/FlaggedRevs/backend/FlaggableWikiPage.php on line 391

function with error:

public function loadPageData( $data = self::READ_NORMAL ) {
    $this->mDataLoaded = true; // sanity
    # Fetch data from DB as needed...
    $from = WikiPage::convertSelectType( $data );
    if ( $from === self::READ_NORMAL || $from === self::READ_LATEST ) {
        $db = wfGetDB( $from === self::READ_LATEST ? DB_MASTER : DB_REPLICA );
        $data = $this->pageDataFromTitle( $db, $this->mTitle );
    }
    # Load in primary page data...
    parent::loadPageData( $data /* Row obj */ );
    # Load in FlaggedRevs page data...
    $this->stable = 0; // 0 => "found nothing"
    $this->stableRev = null; // defer this one...
    $this->revsArePending = false; // false => "found nothing" or "none pending"
    $this->pendingRevCount = null; // defer this one...
    $this->pageConfig = FRPageConfig::getDefaultVisibilitySettings(); // default
    $this->syncedInTracking = true; // false => "unreviewed" or "synced"
    # Load in flaggedrevs Row data if the page exists...(sanity check NS)
    if ( $data && FlaggedRevs::inReviewNamespace( $this->mTitle ) ) {
        if ( $data->fpc_override !== null ) { // page config row found
            $this->pageConfig = FRPageConfig::getVisibilitySettingsFromRow( $data );
        }
        if ( $data->fp_stable !== null ) { // stable rev found
            $this->stable = (int)$data->fp_stable;
            $this->revsArePending = ( $data->fp_pending_since !== null ); // revs await review
            $this->syncedInTracking = (bool)$data->fp_reviewed;
        }
    }
}

How to fix it?


Wrong date? Just add 3½ days

Published 3 Jul 2018 by Sam Wilson in Sam's notebook.

More PHP date weirdness, this time in the Cargo extension for MediaWiki:

+		// 'o' is better than 'Y' because it does not add leading
+		// zeroes to years with fewer than four digits.
+		// For some reason, though, this fails for some years -
+		// returning one year lower than it's supposed to - unless you
+		// add the equivalent of 3 days or more to the number of
+		// seconds. Is that a leap day thing? Weird PHP bug? Who knows.
+		// Anyway, it's easy to get around.
+		$yearString = date( 'o', $seconds + 300000 );

How to allow Xowa run in web browser(offline)

Published 2 Jul 2018 by jj9010 in Newest questions tagged mediawiki - Stack Overflow.

I would like to setup Xowa(offline Wikipedia) in browser, but I would like to know how do I able to do so? I've google but doesn't seems to find any way to do so(or maybe I missed it).I able to import everything in my local and it works but is there any chance I can setup and run it in browser?


Day 16: Lost and found

Published 2 Jul 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece. Note: I wrote this halfway through day 17, which definitely affected what I'm writing now.

Today was mostly a stay-at-the-hotel-and-work day, so this is another reflection.

For a while now I've felt lost in where I want to go in the future. I have about a year and a little bit more of school, but after that I've been pretty unsure. I don't think I want to become a real journalist, but I've also been contemplating whether I should be continuing at my current job (in a full time capacity). At least one person I talked to on this trip suggested that other work experience outside of Wikimedia would be good for me so I can broaden my horizons and grow as a person, and I think I generally agree with him.

So the main question I've had is, what should I do? I think it's pretty clear that I want to do something that will improve the world and people's lives. I have the privledge to not have to worry that much about money, so I feel the obligation and desire to help other people.

A few people have suggested law school to me, which is pretty appealing. It seems like a lot of problems today need lawyers to fight them, and I've always had a fascination with civil rights litigation. But that requires going through law school, and I don't think I have the patience to wait that long. I want to start improving the world now.

It's funny sometimes how one small event can turn your entire life over. It was pretty dangerous, reckless, stupid, but incredibly fun. I don't think I've had my adrenaline running like that in years.

I didn't say anything to her about what happened, but my mom immediately noticed the difference in my mental state when I talked to her for 30 seconds on the phone.

We talked a lot about values, relationships, and most importantly failure last night. I don't think I've exactly found where I want to go yet, but I feel much better that I've found the right track.

The sunrise

Maylea's picture of the sunrise

MedaiWiki: php tries to access the wrong images folder

Published 2 Jul 2018 by M46 in Newest questions tagged mediawiki - Stack Overflow.

I set up a new mediawiki (v1.31.0) installation and added a logo in the {IP}/images folder. I configured the LocalSettings.php with

$wgLogo = "$wgResourceBasePath/images/logo.png";

I can see the logo on my wiki pages but apache shows an error in the logs stating that

PHP Warning:  md5_file(/images/logo.png): failed to open stream: access denied in /var/www/mediawiki-1.31.0/includes/OutputPage.php on line 3740

The problem is that php is trying to access /images while it should access /var/www/mediawiki/images.

Any suggestions where and how to configure this correctly?


Resizing DO storage

Published 2 Jul 2018 by Sam Wilson in Sam's notebook.

For my own future reference, resizing a Digital Ocean storage volume is (as described in the docs) quite easy:

  1. Resize the volume in the the DO control panel.
  2. $ sudo resize2fs /dev/disk/by-id/scsi-0DO_Volume_volume-xxxn-nn

(I recommend Digital Ocean for anyone needing a VPS. I’ve been using them for a few years and have found it all quite brilliant.)


Untitled

Published 2 Jul 2018 by Sam Wilson in Sam's notebook.

Podcast: The Last Night, Anny Shaw talking to Andrea Rangecroft.


What ancient DNA says about us

Published 2 Jul 2018 by in New Humanist Articles and Posts.

David Reich’s pioneering study of ancient DNA is set to revolutionise our ideas about human migration and identity.

MinervaNeue not loading text formatting

Published 1 Jul 2018 by Lucas C. in Newest questions tagged mediawiki - Stack Overflow.

The MinervaNeue skin on my MediaWiki installation is not loading the text formatting of the wiki. The attached image is an example:

MinervaNeue Mobile Layout

The Vector skin doesn't give me any issues (but it isn't mobile-friendly, either). Does anyone have a solution for this?

Edit: Here is the part of LocalSettings.php where I load and apply the skin:

wfLoadSkin( 'MinervaNeue' );
wfLoadExtension( 'MobileFrontend' );
$wgMFAutodetectMobileView = true;
$wgMFDefaultSkinClass= "SkinMinerva";

Auto Generate TOC for Article with Less than Four Headings

Published 1 Jul 2018 by Patrick Rynhart in Newest questions tagged mediawiki - Stack Overflow.

In the documentation https://www.mediawiki.org/wiki/Help:Formatting it states that an article will have a TOC generated if there are 4 or more headings. We would like a TOC to be generated even if there is less than 4 headings. Is this value customisable ?

Our workaround at present is to add FORCETOC to every page, but we would prefer it if this wasn't needed.

Thanks in Advance


GLAM Blog Club – July 2018

Published 1 Jul 2018 by Clare Presser in newCardigan.

Cool beans, we are all half way through the year (my, my doesn’t time fly) and it’s time for another GLAM Blog Club Wrap up. There was a deeply resplendent collection of thoughts from the GLAM sector on the topic of ‘Create’, so let’s give them all a moment on stage to show themselves off in the best light possible (using correct handling and conservation procedures, naturally).

Glamorous Windmill-tilter highlights the importance of having creative projects and making mistakes to assist with critical thinking and issue resolution. Hugh Rundle takes this line of thinking further and discusses Library technologies and practices that have had important learning outcomes, although being imperfect. Nik McGrath talks about her creative pursuits outside of the GLAM space being part of her self-care to allow her more energy to focus on work. However, if you do not consider yourself to be a creative type, take a few tips from the Happier Librarian about ways to still harness that sense of fun and think outside the box.

Edward Shaddow shares a plethora of exciting Youtube videos, whilst discuss the creation of new library spaces and resource for content creation. Alissa discusses Zines, how cool they are and the different tools you can use to cataloguing standard you can use to address them. Annelie discusses creating an opportunity for healing in the museum sector thorough the repatriation of Ancestral remains.

Funding is not usually a topic that gets discussed in the creative fields, but money is certainly needed to grease the wheels. Melly talk about raising funds, current online platforms for financial exchanges and why it’s hard for us all to get involved. Looking to the future, Andrew discusses creating career opportunities, for those of you in the library world.

Speaking of the future (and the future is now), our theme for July is Digital. We look forward to reading your blogs!

Please don’t forget to use the tag GLAM Blog Club in your post, and #GLAMBlogClub for any social media posts linking to it. If you haven’t done so yet, remember to register your blog at Aus GLAM Blogs. Happy blogging!


Day 15: The knife, the port, the prison, and the boy

Published 30 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

There are four stories today.


The knife

We were going to the lifejacket graveyard. It's a dump that has boats and lifejackets from refugees that made it here. But each lifejacket is a good thing - it represents a refugee that successfully completed the journey, and no longer have a need for it.

We got out of the car, started looking around, opening up tripods, when he came. He works at the state-owned dump, and was driving a bulldozer.

"What are you doing here?" he shouted. "This is private property!"

He got out of the bulldozer, and started waving a giant butcher's knife at us, while telling us to leave. We retreated back to our van, but our local driver walked up to him, and stood her ground.

Knife guy

She later told us that she suspects he was a member of the far-right Golden Dawn party, since he told her that "we [Greeks] are being colonized by refugees and migrants" (translated, paraphrased).


The port

Molyvos is a tourist town. But there simply weren't enough tourists for the amount of shops and services they had. We had heard that the refugee crisis had scared away tourists from the island, but this seemed eerie at times. I wasn't sure whether people were being extremely friendly because that was just the way they were, or whether they were desperate to have people buy their merchandise.

We interviewed a shopkeeper there, who is from Belgium, but has lived and worked on Lesvos for 25 years, meeting her husband here as well. She had an interesting take on the fear of tourists that the island was overrun by refugees. (By the way, it's not.) She explained that people who want to come here for the tourism could just stay in the tourist areas, and those who wnated to come here to help the refugees should do that. It was as if she wanted to treat the island as two parts: a refugee crisis area and a beautiful tourism center.

As we were leaving lunch, I briefly talked with a member of the Hellenic Coast Guard about his experiences. We talked about a few different things, but one quote stuck with me:

"The people who come here are refugees, leaving war, but some are migrants, looking for a better life than home. But to me, it doesn't matter. I save everyone."


The prison

Call it what you want - Moria is a prison. We drove past it, and it looks like a prison. The walls are prison walls. There's barbed wire on top of the walls. If they didn't want it to be a prison, they would have torn that stuff down.

We'll be going to Moria again on Monday, this time to conduct interviews, get pictures, etc. I'm pretty nervous.


The boy

We came back to the hotel, I quickly changed, and jumped into the ocean, taking a kayak with me. One of them was a two person kayak, so I taught two of my classmates how to kayak before he came up to me, asking for a ride.

He looked at me and said, "you're black", to which I nodded. Then he looked down into the water at my feet and said, "you're white in the water," to which I responded with "Probably. But why does it matter?"

And he didn't say anything, but I knew why it mattered to him.

He is a five year old boy from the Congo. He spoke decent English, and was usually understandable. But he's a refugee, and had to leave his country for well...whatever this island is. No one else at the resort at the time was as dark skinned as me or him, so hopefully he felt a bit more comfortable.

I didn't see his parents around, so I didn't feel comfortable asking any other questions. We rode out into the ocean, talking about the waves and the kayak. If there was one thing that put a smile on my face today, it was seeing the smile on his face.


Making a collapse button on a wiki page, but only one div collapses? see page for details

Published 29 Jun 2018 by Riley Kholousi in Newest questions tagged mediawiki - Stack Overflow.

Sorry for the poor title, I'm really unsure what to do here.

What I'm trying to do is make an expandable box. A simple task normally, but I'm doing this through a wiki, as a regular user. I don't have admin permissions or anything like that.

I've accomplished this in a very hacky way by using the wiki's table of contents code:

<div id="toc" class="toc" style="border:1px grey solid; height:1em; overflow:auto; background-color:rgb(38,38,38);">
    <div id="toctitle">
        <h2>Click to expand</h2>
    </div>
    <ul>[user puts their content in here]</ul>
</div>

The wiki's javascript automatically inserts an < a > button next to the < h2 > that can be clicked to show or hide the contents of the box (done through the toc id it seems). By itself this works pretty well, but when this box is used multiple times on a page, or even if there's a regular table of contents, when any show/hide button is clicked only the first box on the page is affected.

I'm open to alternate methods of making this, but < script > tags and < style > tags are both blocked by the software so I imagine those ways are scarce.


Day 14: New island with more questions than answers

Published 29 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

Unless you're already familiar with Lesvos/Moria, I would recommend you read the Human Rights Watch report, and this New York Times story. Lesvos is the name of the island, and Moria is one of the main refugee camps on the island. Moria is a former prison that was turned into a camp, but it is extremely stuffed with more people than it is supposed to have the capacity for.

OK, here goes.

We got off the ferry in the morning, and took a quick drive to our hotel. It's a family run resort that is BEAUTIFUL.

View during breakfast

View during breakfast

It's a gorgeous resort. The staff is hella nice too. Nothing more really that we could ask for.

So then we went to a place called Mosaic in the afternoon, where refugees take different classes to help them with integration into society. They have English and Greek classes, music classes, IT classes, and so on. The services are offered to both adults and kids. I think I might write more about what they do at another time, but it looked fantastic. Honestly based on the previous research I had done about Lesvos, it really felt too good to be true.

But I get the feeling that something isn't right here. We walked down and explored a bit of the city, and found one of Lesvos's dark secrets.

"Fuck Islam"

"Fuck Islam"

That's less than 10 kilometers away from our hotel. It was a big deal a while back that the far-right party, Golden Dawn, was driven off of Lesvos. I do wonder what the long term effects of that will be, and whether it actually reduced racism on the island.

I also have a lot of questions about Moria. The people I talked to at Mosaic said that nearly everyone who comes has a mobile phone (nearly always a smartphone). So when we hear stories about the atrocities that happen in Moria, why is no footage or pictures making it out? They all seemingly have internet access?

The more important question I'm struggling with is: how could the EU let this happen? The current situation (as described by media reports) is a hellhole. Why hasn't the EU figured out a way to quickly move people off the island to another location in Greece? I think I could easily come up with a few decent plans to ensure that everyone at least has humane living conditions.

Hopefully I'll get the answers to some of my questions this week.


Day 13: I'm on a boat

Published 29 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

Today was uh...boring? Our group was done with our work ahead of time, so we technically had "free time", except we didn't have anything to do/see, so we just got even more ahead on our work and took naps/watched TV.

Then we got to the boat! At this point was basically the end of our adventure in Athens - we were heading to Lesvos now. We were booked on an overnight ferry that would get us there. The room was pretty cramped, but really the main function of it was the beds.

Anyways, we ended up spending a lot of time on the deck just staring at the moon and talking. That's always fun. Too bad the chair lift never worked.


Dead Ringers

Published 29 Jun 2018 by BBC Radio 4 in Friday Night Comedy from BBC Radio 4.

Topical satire, this week covering politics, the World Cup and of course the weather.

DigitalOcean Currents: June 2018

Published 29 Jun 2018 by Ryan Quinn in The DigitalOcean Blog.

DigitalOcean Currents: June 2018

For the fourth edition of Currents, our quarterly report on developer trends in the cloud, we asked nearly 5,000 respondents around the world for their opinions on developer technologies like containers and serverless computing, and the latest hiring trends in software development.

Some of our key findings this time around include:

Developers are going all in on containers

DigitalOcean Currents: June 2018

Nearly half of our respondents (49 percent) use containers today, and most who don’t use them yet (78 percent) plan to adopt containers in the future. Developers in the U.K. are adopting containers at a slightly slower rate than other respondents, with 43 percent using the technology today and 73 percent planning to use it in the future.

Developers who do use containers cite easy scalability as the biggest benefit, though they face challenges in setting up persistent data storage and network configuration.

Developers in India are slightly ahead of the pack when it comes to serverless adoption

DigitalOcean Currents: June 2018

Globally, only a third of developers have deployed applications in a serverless environment; however, 43 percent of developers based in India have done so. Of the half that do not yet have a clear understanding of serverless, 81 percent plan to do further research into the technology this year.

Competition for top technical talent is fierce, and company culture is the most important factor for talent retention

DigitalOcean Currents: June 2018

Overall, a third (34 percent) of hiring managers at companies that struggle to retain IT talent cite competing job opportunities as the main reason technical employees leave. And, one third of hiring managers in Canada noted lack of growth opportunities as well. When we look at what’s working: more than half of hiring managers at companies with strong IT talent retention list their workplace culture as the primary reason for their success.

Traditional college degree programs don’t leave developers feeling adequately prepared

DigitalOcean Currents: June 2018

Sixty-one percent of developers felt that coding bootcamp adequately prepared them for their jobs, compared to 36 percent of college graduates. Canadian developers feel more prepared overall, with 67 percent of coding bootcamp alumni saying they felt prepared, compared to 40 percent of those who participated in a college degree program.

However, nearly half of all bootcamp participants (49 percent) felt that their education was sometimes a disadvantage in job interviews. There might be some truth to this. Even though a majority of hiring managers (55 percent) claimed they do not distinguish between graduates of bootcamps and 4-year programs, nearly half (48 percent) said that they had not hired a bootcamp graduate over the past few years.


DigitalOcean Currents is published quarterly, highlighting the latest trends among developers in the cloud.

Catch up on all our previous issues from:

If you would like to be among the first to receive Currents each quarter, sign up here. You’ll receive the latest report once it is released and you’ll be able to share ideas on what topics we should cover and participate in our next survey.

Read more about these and other findings in the full report. Read the full Currents report here.


Same page names. Namespaces? Aliases? Hierarchy?

Published 29 Jun 2018 by darkgaze in Newest questions tagged mediawiki - Stack Overflow.

My wiki page has many pages that have the same name. I have no idea how to avoid name clashes.

For example:

softwareA->topicA
softwareB->topicA
softwareC->topicA
softwareC->topicC->topicA

How can I manage this? Should I create namespaces for each sofware? I read its not a good idea... But it's a pretty good idea in the programming world. In fact, I wish I had:

namespace softwareA namespace softwareB...

softwareA.topicA softwareB.topicA

both pages would have the same name. Their URL address should be different. But I see all pages I create are inside the root, so obviously it's impossible.

Sometimes I also have to add words after the page name to diferentiate. Example:

folders (windows)

folders (images, windows)

How does people organize stuff like this?


Control Panel and Documentation Updates

Published 28 Jun 2018 by Jake Levirne in The DigitalOcean Blog.

Control Panel and Documentation Updates

At DigitalOcean we love to make things easier for developers. You want to spend your time learning valuable new skills, building software, and scaling up your applications—not managing your infrastructure. With that in mind, we’ve made improvements to the following over the past two months to the DigitalOcean control panel and documentation to save you time:

Read on for more details!

Use Google for Login

Want to remember fewer passwords? Now you can use your Google account to log in to DigitalOcean.

Control Panel and Documentation Updates

New Product Documentation Center

DigitalOcean is built by developers for developers, and we know good software development includes thorough, well-maintained documentation. Our new DigitalOcean Product Documentation center contains Overviews and Quickstart guides on everything DigitalOcean has to offer, as well as How-Tos and Resource links to dive in deeper. As you use the new site, let us know how we're doing with a quick star rating or more in-depth feedback.

Control Panel and Documentation Updates

Droplet Search

With Droplet Search, we’ve made it easier for you to find your Droplets from the Dashboard, or from any page in the control panel. From the top of any page, just start typing the name of a Droplet and quickly see a list of matches to jump to.

Control Panel and Documentation Updates

Droplet Expanded View

Speaking of the Dashboard, we’ve now made it easier for you to get more details about a Droplet without having to click around. Just expand one of your Droplets in the Dashboard to see the nitty gritty.

Control Panel and Documentation Updates

Simplified Backups

We never want you to lose your hard work, so we’ve made it easy to know, at a glance, which of your Droplets have backups enabled. Just jump to the Dashboard and scan down your list of Droplets.

Control Panel and Documentation Updates

If you spot a Droplet that doesn’t have backups enabled, one click can turn on backups and protect your work. We also made it easy to turn on backups when creating a new Droplet: click the “Enable Backups” button and we’ve got you covered.

Control Panel and Documentation Updates

Auto-format Block Storage Volumes

This new capability allows you to automatically format and mount a Block Storage Volume in a few seconds, right when a new Droplet is being created.

Control Panel and Documentation Updates

You can also do this when creating a new Block Storage Volume to attach to an existing Droplet. For more details, check out this post from our blog.

Recovery ISO

Though we hope you never need it, we’ve made the process of booting your Droplet from a Recovery ISO much easier. Booting from a recovery ISO allows you to recover from kernel mismatches and perform repairs on corrupted file systems. In the past, this required you to contact Support, but now you can boot a Droplet from a Recovery ISO on your own from a Droplet’s “Recovery” page in the Control Panel.

Control Panel and Documentation Updates

That's all for now, but keep letting us know what you love about DigitalOcean and what we can do to make it easier and better for you and your team.


Python3, Using some shared state in 2 async methods

Published 28 Jun 2018 by addshore in Addshore.

Python logoThe asyncio module was added to Python in version 3.4 to “provides infrastructure for writing single-threaded concurrent code using coroutines, multiplexing I/O access over sockets and other resources, running network clients and servers, and other related primitives”. If you want an introduction to asyncio take a look at this blog post.

This post will look at how to share state between multiple async methods that may be running at the same time without using anything silly like globals. The examples should be easy to follow and easy to extrapolate from. Also I’ll be embedding trinket.io  code snippets which you should be able to run in the browser.

Disclaimer: I don’t really write much python so there might be better solutions. This post is only meant to serve as a consolidation of knowledge to be passed to another.

One way to run 2 async methods at the same time in python and wait for them to complete is to use the asyncio.gather method.

For example to run methodOne() and methodTwo() at the same time and wait for them both to complete the code below could be used:

await asyncio.gather(methodOne(), methodTwo())

You might want to pass some data to each of these methods, for example a counter:

counter = 0
should_continue = true
await asyncio.gather(methodOne(should_continue,counter), methodTwo(should_continue,counter))

But in the above example both counter and should_continue will not be able to be altered from within methodOne and methodTwo as they are not passed by reference, but instead by value.

From https://stackoverflow.com/a/430958/4746236:

When a parameter is passed by reference, the caller and the callee use the same variable for the parameter. If the callee modifies the parameter variable, the effect is visible to the caller’s variable.

When a parameter is passed by value, the caller and callee have two independent variables with the same value. If the callee modifies the parameter variable, the effect is not visible to the caller.

One way of getting around this would be to use globals, but globals are evil, take a look at this stackoverflow post for more details.

A working example of a simple counter program using global to share state can be seen below:

A better way to do this would be to use some sort of object to hold the state required.

Objects are passed by reference and simple values such as ints and bools are passed by value.

You can create an empty object using the code below, and an explanation for the code can be found at https://stackoverflow.com/a/19476841/4746236

b = type('', (), {})()
b.this_works = 'cool'

This can be seen working below where an integer passed to a method and modified does not have the modification reflected in the outer scope, but the object containing an integer when modified is reflected in the outer scope.

Converting the above counter example using globals to use some sort of state object is pretty easy.

Such state objects can be as complex or as simple as needed.

The post Python3, Using some shared state in 2 async methods appeared first on Addshore.


PHPWeekly June 28th 2018

Published 28 Jun 2018 by in PHP Weekly Archive Feed.

PHPWeekly June 28th 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 28th June 2018
Welcome to the latest phpweekly.com
 
This week the php.net team has announced several releases - PHP 7.1.19 and 7.2.7, both available immediately, plus 7.3.0 alpha 2 which is available for testing.
 
Also this week we take a look at building a project time tracker, with Symfony and VueJS.
 
PHP South Africa takes place late September, in Johannesburg. Save the date and check back for announcements.
 
Plus the PHP Ugly podcast team discuss the Browser Exploitation Framework Project in the latest edition.
 
We are always on the lookout for great articles, podcasts, tutorials and announcements. In fact, anything PHP related. So if you've written or read anything you think might interest our readers, drop me a line on katie@phpweekly.com.
 
Have a great weekend,
 
Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

How Much Does it Cost to Hire a PHP Developer?
PHP is one of the most ubiquitous programming languages on the web. It’s been around awhile, but it has the chops to stay mainstream. If your site is like a majority of those around the web running on Linux or WordPress, chances are you need a skilled PHP developer now and again to update and maintain your codebase. So how does hiring a PHP developer fit into your project budget? What’s the best way to estimate how much it will cost to hire a PHP developer? In this article, we’ll look at a few cost factors to consider when drafting a project description and reviewing proposals from potential PHP developers.

Drupal Business Survey 2018 Calls for Input
At the end of June 2018, the third edition of the Drupal Business Survey will be launched by One Shoe and Exove in collaboration with the Drupal Association. The purpose of the survey is to provide information on how Drupal agencies are doing worldwide and how Drupal fits in business-wise. Therefore the initiators of the Drupal Business Survey 2018 call for input from the Drupal Community. Any Drupal business related topics, ideas or suggestions you wish to see investigated, are more than welcome.

Open Source is Selfish
Most people I meet see open-source as "putting all your work free to the public". Do you think that I'd love it so much if that was the case? That's why I want to talk about selfish benefits of open-source, that comes first, almost always, but just a few people can see them. And that selfish open-source is a good thing.

PHP Frameworks Guide & Top 10 Best PHP Framework 2019 (Prediction)
In the next 9 minutes you will be reading about the PHP Scripting Language, the Backend Development Trends, Why does Businesses like ours trust PHP, and the Best PHP frameworks that we believe would rule the Backend App Development industry in 2019. Ready for the ride? Let’s begin.

Tutorials and Talks

Understanding Design Patterns - Decorator
Attaches additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.
 
PHP Simple HTML DOM Parser Script
In this post I have explained some elements to scrap data from external websites. Simple HTML DOM parser is a PHP 5+ class which is useful to manipulate HTML elements. This class can work with both valid HTML and HTML pages that do not pass W3C validation. You can find elements by ids, classes, tags and many more. You can also add, delete or alter DOM elements. The only one thing you should care about is memory leaks – but you can avoid memory leaks as explained later.
 
Computer Vision and Machine Learning in PHP Using The opencv Library
In almost 7 years I have written 10 articles, 8 of them technical. The total number of views of all articles is about half a million. I have made the main contribution into two topics: PHP and Server Administration. I like to work at the junction of these two areas, but the scope of my interests is much broader.
 
Building an Image Gallery Blog with Symfony Flex: Data Testing
In the previous article, we demonstrated how to set up a Symfony project from scratch with Flex, and how to create a simple set of fixtures and get the project up and running. The next step on our journey is to populate the database with a somewhat realistic amount of data to test application performance.
 
Building a PHP Framework: Part 6 – Dependency Inversion, Inversion of Control, oh my!
Part 5 of this series discussed test driven development (TDD). Today, I’ll be talking about Dependency Inversion, Inversion of Control, Dependency Injection, and other related topics.
 
Breaking Laravel's FirstOrCreate Using Race Conditions
Recently I was working on a client project where a data import was performed via queues. Each record was imported in its own queued job using multiple queue workers. After the data import was done we had more rows than expected in the database. In this blog post I'd like to explain why that happened.
 
Short Identifier
Sometimes resources can be identified by one of their attributes (a name, title, slug) and sometimes they can't (no name, or confidential name). In the later case, an ID needs to be artificially crafted. Two of the popular strategies is to use either an auto incremental one or a universally unique one, however when it comes to share them publicly, both strategies present some drawbacks
 
Quick and Easy PHP Code Generation Testing
Recently I was working on some PHP code (for the PHP-FIG) that involved code generation. Of course, like any good developer I was writing tests for it as I went. That meant needing to test that the generated code was valid PHP syntax and did what I wanted it to do.
 
Let’s Build a Project Time Tracker with Symfony and VueJS
As developers, we often love to keep track on the amount of time spent implementing a new feature, fixing bugs or generally carrying out a particular task during development. This has proven to be one of the ways to improve productivity.
 
Building a Single NGinx Docker Image For All My PHP-FPM Containers
Lately I’ve been working to deploy a suite of PHP microservices using Docker containers. One of the problems is that our PHP applications are set up to work with PHP-FPM and Nginx (instead of the admittedly simpler Apache/PHP setup covered here), so each PHP microservice needs two containers (and by extension, two Docker images): a PHP-FPM container and an NGinx container.
 
Scopes in PHPStorm
Scopes in PHPStorm can significantly improve your development experience. They enable better search and allow for custom file colours.
 
Puphpeteer: A Puppeteer Bridge for PHP
PuPHPeteer by Johann Pardanaud is PHP bridge for Google Chrome’s Puppeteer headless chrome Node.js API. PuPHPeteer has similar PHP examples based on the Puppeteer examples, to get a feel for how you might use the API in PHP.
 
Fast Web Scraping With ReactPHP. Part 3: Using Proxy
In this article, I will show you how to send concurrent HTTP requests with ReactPHP using a proxy server. We will play around with some concurrent HTTP requests and then we will come back to the scraper, which we have written before. We will update the scraper to use a proxy server for performing requests.
 
Using PHP Anonymous Classes as Package Private Classes
I’ve written before about the benefits of using PHP’s Anonymous Classes for test doubles; but Anonymous Classes also have potential usecases within production code as well. In this article I’m going to describe one such usecase that can be particularly useful within libraries, and that is replicating the access of Package Private (in Java), or Protected Internal Classes (as per C#).

News and Announcements

PHP 7.1.19 Released
The PHP development team announces the immediate availability of PHP 7.1.19. All PHP 7.1 users are encouraged to upgrade to this version.

PHP 7.2.7 Released
The PHP development team announces the immediate availability of PHP 7.2.7. This is a primarily a bugfix release which includes a segfault fix for opcache. PHP 7.2 users are encouraged to upgrade to this version.

PHP 7.3.0 alpha 2 Released
The PHP team is glad to announce the release of the second PHP 7.3.0 version, PHP 7.3.0 Alpha 2. The rough outline of the PHP 7.3 release cycle is specified in the PHP Wiki. Please carefully test this version and report any issues found in the bug reporting system.

Mid-Atlantic Developer Conference - July 13-14th 2018, Baltimore
Mid-Atlantic Dev Con is a polyglot event, designed to bring together programmers from the region, regardless of their choice of platform, for two full days of learning from each other and building a stronger regional community. Tickets are on sale now.

Laracon EU - 29-31st August 2018, Amsterdam
Laracon EU is a unique international Laravel event with over 750 attendees. The conference has multiple tracks and is focusing on in-depth technical talks. Come learn about the state of the industry while networking with like-minded and diversely experienced developers. Tickets are on sale now.

PHP South Africa - 26-28th September 2018, Johannesburg
An annual PHP conference in South Africa. We try to get the best of the best to share knowledge. So far we have succeeded. This year is our 5th birthday! To celebrate the occasion, we are going all out! Check back often to see any new announcements about the biggest conference we have planned yet!

ZendCon - 15-17th October 2018, Las Vegas
ZendCon & OpenEnterprise is the premier technology conference designed to teach and share practical experiences from the front lines of enterprise PHP and open source environments. Focused on solving real-world, enterprise-class problems, technical business leaders, strategists, and developers will assemble to discuss case studies and best practices around the application of PHP and open source to transform business. Early Bird tickets are on sale now.

Podcasts

This month the team discusses BeEF - The Browser Exploitation Framework Project.
 
PHP Web Development Podcast Ep #4 - The Importance of Getting a Mentor for PHP Developers
This week I have the pleasure of speaking to Dan Blows. Currently a tech lead, he has done some really cool stuff; he's in the top 3% on stack overflow, in the top 10% of PHP developers in Europe, speaking at meet ups , spoke in the European conference in front of 100's of people, training and mentoring junior developers and much more.
 
PHP Round Table Podcast 74: Secrets, Secrets, Are No Fun
Secrets, secrets, are no fun, all they do is cause pain when trying to deploy to production. By secrets, we're talking about database passwords, API keys, and other credentials that we want to keep from prying eyes. There are a number of solutions out there to keep our secrets out of the codebase and in a more secure area. We'll discuss the options we have for managing secrets and the tradeoffs for using them.

Reading and Viewing

A secure .env handler with encrypted key/value storage, fast string manipulation library with multibyte support, query builders for Atlas.Pdo connections, framework for creating and deploying serverless-applications in PHP, traits for Laravel eloquent models, and more. Keep on reading!
 
Zeev Suraski on PHP 8
The goal of this email isn't to discuss in detail each and every topic that's mentioned, but rather to establish whether we want to move to focus on PHP 8 as we go beyond PHP 7.3, based on some of the research projects and PoCs we've been working on.
 
Testing Unreleased Features of PHP
We'll be discovering and testing a completely unreleased feature of php-src from an RFC that's still under discussion. If you've ever wanted to be ahead of the curve of PHP features or you've just wanted to contribute back to PHP internals, testing an unreleased feature from an RFC is a fun and educational way to do so.
 
PHP Development Third Edition (by Gerardus Blokdyk, published 12th May 2018)
How do you determine the key elements that affect PHP Development workforce satisfaction? how are these elements determined for different workforce groups and segments? Who will be responsible for deciding whether PHP Development goes ahead or not after the initial investigations? How do we maintain PHP Development's Integrity?

Jobs





Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

grumpypdo
A simple PHP class wrapper for PDO.
 
alternc
AlternC is a software helping system administrators to handle Web and Email services management. It should be easy to install, based only on free software.
 
tc-lib-barcode
PHP library to generate linear and bidimensional barcodes.
 
modxrevolution
MODX lets you power anything from multi-language, multi-domain corporate sites to personal blogs to mobile APIs.
 
The Phar Installation and Verification Environment (PHIVE). Installation and verification of phar distributed PHP applications has never been this easy!
 
Slim-Restrict-Route
A Slim middleware to restrict ip addresses that will access to your routes.
 
emoncms
Web-app for processing, logging and visualising energy, temperature and other environmental data.
 
snidel
Snidel makes parallel processing easy for all PHP developers.
 
ganesha
Ganesha is PHP implementation of Circuit Breaker pattern which has multi strategies to avoid cascading failures and supports various storages to record statistics.
 
php-pinterest-bot
This PHP library will help you to work with your Pinterest account without using any API account credentials.
 
poggit
GitHub application for managing PocketMine-family plugins, and website for sharing plugins.
 
brainmonkey
Mocking utility for PHP functions and WordPress plugin API.

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

The mysteries of the neutrino

Published 28 Jun 2018 by in New Humanist Articles and Posts.

Neutrinos are the most common particles in the universe - but don't underestimate their significance.

Day 12: Photos, photos, photos

Published 28 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

Sunset from the Acropolis

Sunset from the Acropolis of Athens

We had to go on a "photo safari" - two photos of ancient Athens, two of modern Athens, and one that was a hybrid. We went to the old Polytechnic university buildings that were the site of an uprising in 1973. It was incredible to see the gates that were smashed by the tank, as well as all of the street art on the buildings. You could really feel that an incredibly important event had happened there.

After that we went to the National Archeological Museum that was next door to find our ancient pictures...except those were incredibly ancient. I enjoyed seeing all the different statues of Greek gods and historical figures, but after a certain point they all started to look the same.

The coolest part of the day was going up to the Acropolis in the evening. It had begun to rain, so most of the crowd was gone, and there was no line. The Parthenon is just as incredible as I've seen in every photo, and the view from it is fantastic.

My ancient and modern hybrid photo

My ancient and modern hybrid photo

We waited about 2 hours through the sunset and then a bit more for it to get dark and all lit up. Someone even set off fireworks on a nearby hill.

Also, one of my favorite xkcds is Ten Thousand. Yesterday I got to teach someone that the number of chimes in a striking clock is the number of hours it currently is. :D I was slightly dissapointed that wikihow's How to Read a Clock didn't explain how to "read" a striking clock.


DDD Perth Diversity & Inclusion 2018 Update

Published 28 Jun 2018 by matt ward in DDD Perth - Medium.

The organising committee are proud of what DDD Perth achieved last year, but as we came together to organise this year’s conference we didn’t want to rest on our laurels, we wanted to go further.

Our awesome 2017 speakers!

Branding

We started by reviewing our content, our branding, the message that we were sending out to the world.

A conference’s Code of Conduct is its official statement on what it represents, so the committee initiated a full review of ours, looking at what other conferences were doing and talking about what is really important for us. Please read what we came up with, it really sets the tone for the conference.

We asked Julie Grundy (thanks Julie!) for an accessibility review of our website, and have been working, along with some much-appreciated volunteers, to address all the recommendations. The remaining issues are all listed on our GitHub repo so please, get involved!

And finally we thought about our name. We believe the name DDD initially came from Steve Ballmer’s infamous ‘Developers! Developers! Developers!’ chant, but we wanted DDD Perth to be for the whole software community. Luckily, DDD Melbourne had already engaged Matt Birman to redo their logo so we piggy backed off that, stopped talking about developers so much, and now if anyone asks what DDD stands for, we say Developers! Designers! Data Scientists! (DevOps? Data Architects? Distributed Testers?)

Our logo for this year’s conference!

Community

Next we thought about community, we are very much a community-focused event, and we wanted to see what new groups we could reach out to this year.

We decided that we wanted to focus on juniors this year, either in a speaking or attending capacity. We emailed academics, poked student groups on Facebook, and encouraged every junior that we knew to submit!

We reached out to the Autism Academy of Software Quality Assurance, offering tickets to its members to come along on the day, as well as mentoring for anyone interested in speaking.

And we’re thrilled to announce that one of our keynote speakers this year will be Mark Leopold from beyondblue, who will be speaking on ‘Better mental health in the workplace’.

On the day

Lastly we thought about the day itself, a conference can be hard to get to if you have kids, or intimidating if you are attending for the first time, don’t know many people, or identity as a part of a minority group.

We are thrilled to be providing subsidised childcare at this year’s conference. You can purchase an extra childcare ticket when you purchase your ticket, and your child will be cared for and provided with fun activities for the duration of the conference. You will just have to provide them with some food!

Last year we had one talk live-signed, and this year we are hoping to build on that by providing live captioning for all of our talks.

https://medium.com/media/758a4138e6a7a6651515f6ffccc8a750/href

Finally we thought about assumptions that we may have been making about our attendees. This year when you purchase a ticket you will be able to indicate your preferred pronoun, as well as whether or not you are comfortable being photographed.

We hope that all these initiatives will lead to a more enjoyable, inclusive, and memorable day. If $50 is too much for you then please grab one of our free financial assistance tickets. We hope to see you there!


DDD Perth Diversity & Inclusion 2018 Update was originally published in DDD Perth on Medium, where people are continuing the conversation by highlighting and responding to this story.


new note (near West End, North Fremantle, Fremantle, Western Australia, Australia)

Published 28 Jun 2018 by Daniel Haward in OpenStreetMap Notes.

Comment

Created 20 days ago by Daniel Haward
"closed" The place has gone or never existed. This is an auto-generated note from MAPS.ME application: a user reports a POI that is visible on a map (which can be outdated), but cannot be found on the ground. POI name: Adult Shop POI types: shop-beauty OSM data version: 2018-05-26T22:39:02Z #mapsme

Full note

Created 20 days ago by Daniel Haward
"closed" The place has gone or never existed. This is an auto-generated note from MAPS.ME application: a user reports a POI that is visible on a map (which can be outdated), but cannot be found on the ground. POI name: Adult Shop POI types: shop-beauty OSM data version: 2018-05-26T22:39:02Z #mapsme

Day 11: Rain rain, go away

Published 27 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

But like really. It's not actually supposed have a high chance of raining in Athens...and yet it rained.

We had a tourist day planned, visiting the islands of Hydra, Poros, and Aegina.

Hydra was nice, it was lightly raining, but we went into the ocean to swim. The beach was basically non-existent, but it dropped off pretty quickly, so you could swim right away. After drying myself off, we started heading back to the boat while Zeus decided it was time to start pouring...soaking wet yet again. Oh well!

The sun came out for Poros, it was magnificent. But we only had enough time to go up to the clock tower, look around, and come back down before it was time to go.

We headed to Aegina with the storm behind us, had a beautiful time on the boat, and then got off at the island to go swimming. The beach was nice, except it was super duper shallow so you had to walk out 20 feet to be able to swim. Oh, and that storm behind us? It caught up and decided to drench us. Why Zeus, why???

And then in the evening, I got to have dinner and walk/drive around the city with Faidon, which was a a real treat :-)


Day 10: Meeting refugees and Athena

Published 27 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece. Yes, I fell behind on blogging :/.

We hit the ground running in Athens, and the first morning, went to interview refugees in Victoria Square. Since we only spoke English, we looked for people roughly our age, assuming that the younger generation would speak English.

It's a small square, but we found 3 young men from Afghanistan. They fled the Taliban, and eventually ended up in Greece. They have refugee status, but are unable to work, and spend most of their day walking around the park, playing some soccer, and similar. They said they don't have a proper place to stay, and are often sleeping in the park. They were willing to do a video interview with microphones, as long as the camera didn't show their faces. The most frustrating part for me was when one of them told us he had a graduate degree in computer science - and yet he's unable to use his education to get a job and work.

We also talked with a few more young men, but from Syria this time. I have a text story for that, which should be published...soon.

In the evening we did a walking tour of Athens, saw the Modern Academy of Athens, and then the incredibly beautiful Panathenaic Stadium. Our tour guide finished with a somewhat lecture on being active citizens in the democracy, which I enjoyed. It's incredible that theoretically I'm walking on the same grounds that Socrates, Plato, and Aristotle once walked on.


Getting STARTTLS Everywhere

Published 27 Jun 2018 by Helen Horstmann-Allen in FastMail blog.

Yesterday the Electronic Frontier Foundation released a new website for their STARTTLS Everywhere project. The STARTTLS Everywhere project has actually been going on for a number of years, but yesterday's reboot got a new website, new logos and a renewed marketing push, so it's been getting a lot of press.

The aim of the campaign ("make email delivery more secure") is one we've been excited about for a long time. We turned on STARTTLS for incoming email 9 years ago and outgoing email 8 years ago. Enabling STARTTLS support is fairly easy for most SMTP servers these days and anyone running an email server should do this.

To check if your email provider supports STARTTLS, the EFF built a tool that lets you test the mail servers for a particular domain and they put a "How secure is your email server?" box on the STARTTLS Everywhere site. Many of our customers are very interested in security, and we got a lot of hits to check FastMail hosted domains.

Normally, you would have seen exactly what you expect — our great support for STARTTLS (including only supporting modern TLS versions and having a TLS chained to a valid CA root). But there was just one problem! This wasn't a system that had sent mail to us, and it had no reputation with us. We take security and abuse very seriously, and a system with many rapid SMTP connections but no actual sending of mail triggered our spam detection systems. After repeated testing attempts, our security systems blocked the test tool as a likely spam bot.

For all of you who checked your domain yesterday without success, please try again — we've marked the STARTTLS Everywhere test tool as a valid source.

We welcome the efforts of the EFF in making email security more accessible. There are other efforts underway (such as DANE and MTA-STS) for ensuring that email is transferred securely between systems. In addition to our work on open-source email tools like Cyrus, we also work hard behind the scenes at industry and standards groups like the IETF and M3AAWG to build the next generation of standards. Seeing the industry settle on protocols is always the first step in making tools to make security the easy choice. We appreciate the work the EFF is doing with this campaign to drive support for standards on email, privacy and security.


The Wikimedia Server Admin Logs

Published 27 Jun 2018 by addshore in Addshore.

The Wikimedia Server Admin Log or SAL for short is a timestamped log of actions performed on the Wikimedia cluster by users such as roots and deployers. The log is stored on the WikiTech Wikimedia project and can be found at the following URL: https://wikitech.wikimedia.org/wiki/Server_Admin_Log

An example entry in the log could be:

09:04 addshore: addshore@terbium:~$ for i in {1..2500}; do echo Lexeme:L$i; done | mwscript purgePage.php --wiki wikidatawiki

As well as the main cluster SAL there are also logs for release engineering (jenkins, zuul, and other CI things) and individual logs for each project that uses Wikimedia Cloud VPS.

A tool has been created for easy SAL navigation which can be found at https://tools.wmflabs.org/sal

Each SAL can be selected at the top of the tool, with ‘Other’ providing you with a list of all Cloud VPS SALs.

The search and date filters can then be used to find entries throughout history.

Usages of the SAL

The timestamps of the SAL can be used to determine the causes of cluster or projects issues. The entries can be used alongside other timestamped data in incident reports, for example https://wikitech.wikimedia.org/wiki/Incident_documentation/20180229-Train-1.31.0-wmf.27#Timeline

The SAL messages can sometimes be used to find changes that have otherwise gone entirely undocumented (not in puppet or any git repo).

An example of finding such an undocumented change can be found below with the tmp1 index that was recently found on the wb_terms wikidata table.

Finding the wikidata tmp1 index

Searching for ‘tmp1’ only finds log entries from 2018:

2018-05-26
14:25   <marostegui>  Add tmp1 index back on db1101:3318 - T194273
09:56   <marostegui>  Add tmp1 index back on db1087 (sanitarium master), this will generate lag on labsdb hosts - T194273
05:21   <marostegui>  Add tmp1 index back on db1099:3318 - T194273
2018-05-25
08:36   <marostegui>  Add tmp1 back on db1092 - https://phabricator.wikimedia.org/T194273
05:57   <marostegui>  Add tmp1 index back on dbstore1002 - T194273
05:05   <marostegui>  Add tmp1 index back to db1109 - T194273
2018-05-24
20:58   <marostegui>  Add tmp1 index back on db1104

Changing the search a little to look for the table name instead of the index name reveals some different log entries:

2014-01-04
04:13   <springle>    schema change, ad-hoc, additional indexes on recentchanges & wb_terms for recent slow queries
2013-12-13
02:50   <springle>    ongoing schema changes on slaves, indexing only, logging gerrit 85508, wb_terms gerrit 99660
2013-07-18
19:52   <springle>    delaying slave db45 for wikidatawiki wb_terms OSC duration
18:13   <Reedy>   Added term weight to wb_terms on testwikidatawiki

The key entry here mentioning gerrit change 99660 which in turn links to bugzilla bug 45529 which is now recorded as phabricator ticket T47529.

Looking through the phabricator comments we can see a first mention of tmp1, https://phabricator.wikimedia.org/T47529#518889.

Writing to SAL

The SAL can of course be written to directly on the various wiki pages however this is not advised at it can of course lead to edit conflicts.

Take a look at https://wikitech.wikimedia.org/wiki/Tool:Stashbot

The post The Wikimedia Server Admin Logs appeared first on Addshore.


new note (near Fremantle, Western Australia, 6959, Australia)

Published 27 Jun 2018 by Daniel Haward in OpenStreetMap Notes.

Comment

Created 20 days ago by Daniel Haward
"moved" The place has gone or never existed. This is an auto-generated note from MAPS.ME application: a user reports a POI that is visible on a map (which can be outdated), but cannot be found on the ground. POI name: 5 Star Tattoo POI types: shop-tattoo OSM data version: 2018-05-26T22:39:02Z #mapsme

Full note

Created 20 days ago by Daniel Haward
"moved" The place has gone or never existed. This is an auto-generated note from MAPS.ME application: a user reports a POI that is visible on a map (which can be outdated), but cannot be found on the ground. POI name: 5 Star Tattoo POI types: shop-tattoo OSM data version: 2018-05-26T22:39:02Z #mapsme

Why Sponsor DDD Perth?

Published 26 Jun 2018 by Rebecca Waters in DDD Perth - Medium.

DDD Perth is an inclusive non-profit conference for the Perth software community. Our goal is to create an approachable event that appeals to the whole community, especially people that don’t normally get to attend or speak at conferences. We do this by:

Achieving the first point is hard. To give you some idea of scale, the cost of catering for the 2018 conference is over $50 per person. The ticket price doesn’t even cover the food we serve you on the day, let alone the hire of an amazing venue and a plethora of other costs associated with running the conference.

So, we need sponsors. We love the Perth software community and we see the companies that work in the space as part of that community. But, we understand it’s sometimes a tough sell to understand what you get out of sponsoring the conference.

Last year, one of our long term sponsors, LiveHire, wrote a blog post reflecting on the 2017 conference. We’ve reproduced it here. They are a sponsor yet again for 2018, and this year are even sponsoring DDD Melbourne (aren’t they amazing?). Thank you, from the bottom of our hearts, for your continued commitment to DDD!

As an organisation that’s vision is to empower talent and support diversity, it was no wonder that LiveHire were proud gold sponsors for the 2017 Developer! Developer! Developer! (DDD) event held in Perth!

How is DDD different to a usual tech event?

Created as an approachable, non-profit event that anyone can attend or speak at, DDD Perth is an inclusive event for the Perth software community, promoting diversity in the tech sphere. It’s affordable and on a Saturday so that everyone and anyone can attend!

Some of LiveHire’s amazing staff!

Who presents is up to the public! Anyone can submit their presentation and the public votes on what they’d most like to hear. There is no reference to the applicant’s gender, name, or age, to encourage diversity in those who get the opportunity to speak.

So, let’s talk about the 2017 #DDDPerth event!

This year was double the size of last years event, with 360 attendees registered!

Last year, zero women submitted speeches. 👎

But this year…

5 presentations/ talks were delivered by women!

So, 21% of talks were conducted by a female, and 19% of presenters were female.

There were also 104 received presentation submissions from women. 🙌🙌🙌

Hooray to promoting diversity in the tech sphere!

(Ed: In 2017, there were 104 submissions total, roughly a quarter from women.)

Looking after the LiveHire booth at DDD Perth 2017

The LiveHire table was in full swing and fully stocked with #LiveHireSwag.

Whether it was to give out free doughnuts or to chat about innovative tech, our LiveHire team was keen to chat with anyone who stopped by. There was also the opportunity to enter win a UE BOOM 2! (Don’t miss your chance- You still have time to join our LiveHire Talent Community!)

Giveaways on the LiveHire booth at DDD Perth 2017

The speakers and presentations all had a strong focus on Inclusion, echoing the purpose of the event.

Some highlights of the day included:

  1. Jasmine Quek’s talk on How feedback helped me get over myself.
  2. Sam Ritchie’s presentation on Flying Solo — lifehack your way to a pants-optional workplace (YES PLEASE!)
  3. And Donna Edward’s inspiring Attraction and retention strategies for Women in Tech- an incredibly important presentation that should be taken on by tech organisations worldwide.
Donna Edwards speaking at DDD Perth 2017

LiveHire Co-Founder and Growth Director, Dr. Mike Haywood, also gave an address to the conference. Mike highlighted LiveHire’s role in nurturing creativity and diversity in candidates, and often supporting ‘will’ over ‘skill’ explaining;

“We let recruiters move to a proactive process where they have a reserve of engaged people who are ready to hire. When a recruitment team is frantically trying to fill a role, they hire for the person’s last role title and not all of their characteristics beyond that like personality and enthusiasm. Companies are getting creatively destroyed faster and faster because they can’t stay agile and relevant. It takes over two months to replace lost employees. At our core, we’re about developing every kind of worker, not just developers.”

DDD Perth 2017 conference attendees

Thank you, DDD Perth for creating such a worthwhile and exciting event.

If you’re interested in learning more about LiveHire’s own Women in Tech portal and how we empower and support women wanting to pursue a role in tech, you can learn more here.

Or if you’re interested in connecting with us at LiveHire, you can join the LiveHire Talent Community here.

See you next year! 👋

There are still sponsorship opportunities available for 2018; if you are interested, contact us via the website.

We can’t wait until August! See you there!


Why Sponsor DDD Perth? was originally published in DDD Perth on Medium, where people are continuing the conversation by highlighting and responding to this story.


Episode 11: Markus Krötzsch

Published 26 Jun 2018 by Yaron Koren in Between the Brackets: a MediaWiki Podcast.

Markus Krötzsch is the professor for Knowledge-Based Systems in the Computer Science department at the Technical University of Dresden, in Germany. In 2005 he co-created, with Denny Vrandečić, the Semantic MediaWiki extension, for which he served as the project lead for around the next seven years. He also founded, and is still the president of, the Open Semantic Data Association, a German non-profit which, among other things, provides funding support for the annual SMWCon. Markus also provided important early assistance with Wikidata, a site released in 2012.

Links for some of the topics discussed:


Call for Participation: W3C Workshop on Digital Publication Layout and Presentation (from Manga to Magazines)

Published 26 Jun 2018 by Bill McCoy in W3C Blog.

The W3C announced today the latest in a series of workshops exploring the capabilities needed to ensure that the Web delivers on its full potential as a universal platform for digital publishing.

The upcoming technical workshop will be held September 18-19 in Tokyo, Japan. It will focus on evaluating the current status and exploring future directions of visually-rich long-form digital publications based on Web Technologies (particularly CSS, the formatting language of the Web), encompassing both fixed and dynamic layouts. Such “high-design” publications, with complex or sophisticated layout, may be sequential art (Comics, Manga, Bandes-Dessinées, etc.), magazines, picture books, cookbooks, educational materials, etc.

Anyone may request to attend at no charge and the W3C welcomes participation by both speakers and non-speaking attendees with relevant expertise. Early expression of interest in attending is encouraged due to limited space.

The workshop will emphasize the application of theory and technology to meet practical ecosystem needs.  Participants in the workshop will:

Attendees are expected to include:

The Call for Participation is now open.

This W3C Workshop will take place at Keio University’s historic Mita campus, hosted by Keio’s Advanced Publishing Laboratory.


Publishing Business Group Releases RFP for epubcheck Development

Published 25 Jun 2018 by Tzviya Siegman in W3C Blog.

How do you know that you’ve produced an interoperable, functional, and accessible ebook? How do customers know? Or libraries? Or Book distributors? Validation is the cornerstone of the epub publishing process and there is one system on which nearly all epub relies – epubcheck. However, as our standards evolve, our validation has not and epubs meeting the most recent specification requirements aren’t always declared valid by the system of record. In order to make better epubs, we need a better epubcheck.

What is epubcheck?

Epubcheck is the opensource validation tool for the EPUB format. Unlike many validation tools, epubcheck is seen as a gatekeeper for the entire publishing industry. Because many retailers will not accept a file that has not passed epubcheck, it has become the (loveable) bridge troll that determines if a publisher or author’s product is ready to be released for sale. It can detect many types of errors in EPUB: OCF container structure, OPF and OPS markup, and internal reference consistency are all checked and can be run as a standalone command-line tool or used as a Java library. As the tool upon which the whole ebook industry relies to validate ebooks, epubcheck 4.0.2 is anxiously awaiting an upgrade.

How did epubcheck evolve?

Epubcheck was built and has been maintained by volunteer developers. Contributors have come from different organizations and individuals with interests in validating epub. But the last few years have been a developmental dry spell. In 2017 and 2018, I gathered a task force of people involved in epubcheck, EPUB, and testing at W3C to brainstorm about solutions for maintenance and developing the next set of tests to support the current version of the EPUB spec. After many discussions, we concluded that we need a technical lead to determine the technical direction of epubcheck. The result of a volunteer-led effort can be a messy set of tests. We need to clean up the repo, establish tests for EPUB 3.2, and refactor the existing tests so that they are easier to maintain in the long term.

What’s Next for epubcheck?

Eighty-five open issues await review and resolution in the epubcheck repository and as the EPUB Community Group sprints toward the finish line of EPUB 3.2, that list will grow. As a result, The Publishing Business Group of the W3C has put out a request for proposals for epubcheck Development and Maintenance at epubcheck RFP.

Please contact me or the Publishing Steering Committee with questions.


Is riding a motorbike the path to fulfilment?

Published 25 Jun 2018 by in New Humanist Articles and Posts.

If motorcycles are chaotic and potentially deadly, then can learning to master them be a journey to inner serenity?

Day 9: Midpoint reflection

Published 24 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

OK, we're not exactly at the midpoint yet, but this is a better time than never to start a reflection.

In total I think I've interviewed (in depth) with around 10 refugees/migrants, and about 5 people who work in support of them. One topic that constantly comes up (partly because one of my group members keeps asking about it) is that of mental health.

One thing that constantly amazes me is the mental toughness of everyone I speak to. When they describe the incredible horrors that they've been forced to go through, it's unnerving that they do so with a straight face.

I'm a pretty priviledged person, and I think I could probably survive the journey that they had to go through...but only due to my extensive experience and training in camping and wilderness survival. They've had none of that, and made it through.

As I mentioned earlier, they often look and act like their typical selves, but you get a sense that something is wrong. With one boy it was a strained voice, and with another it was the way he talked about his asthma (a very personal subject for me).

At the most recent center we went to, we interviewed a psychologist who served as an educator for the refugees/migrants staying there. She was more comfortable speaking in Italian, so our tour guide (actually the brother of the psychologist, but that's another story), served as a live translator. We'd ask the question in English, she'd answer in Italian, and then he'd translate the answer to English, so we could ask the next question.

She had unique insights into their mental health, but I actually didn't learn the most from her. When we started asking about how they're able to maintain their culture, our translator (mid-40s with children), broke down and started crying. We ended the interview then, but he had inadvertently impressed upon me a very important lesson: this stuff is messed up, and it's OK to show your true feelings.

I ended up quietly crying a bit in the car on the way back, and went to my happy place (Skittles and T. Swift) to calm down.

We're on to a new chapter now, hello Greece.

Sidenote: How did neither the Catania nor Athens airports sell Skittles?


cardiCast episode 33 – Eddie Marcus

Published 24 Jun 2018 by Justine in newCardigan.

Perth April 2018 cardiParty

Recorded live

Eddie Marcus (the sharp mind behind the Dodgy Perth blog) takes us on the shortest heritage pub trail ever, exploring the Greek and Roman architecture of three iconic Northbridge pubs.

There are arches, architects and anecdotes on this entertaining meander through the history of Perth architecture and pubs.

The three stops on this walking tour are The Brass Monkey, PICA Bar, and The Court. Each of the pubs form part of the Heritage Perth pub trails app available to download on Apple devices.

Bad language warning: please note that there are some swear words throughout this episode.

 

newcardigan.org
glamblogs.newcardigan.org

Music by Professor Kliq ‘Work at night’ Movements EP.
Sourced from Free Music Archive under a Creative Commons licence.


Day 8: Ciao Italy!

Published 23 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

Today was effectively our last day in Italy. Tomorrow we're flying to Athens, and will spend the rest of our time in Greece.

We went to see the Valley of the Temples, which, surprise surprise, is not actually a valley! It's on a mountain ridge, which actually makes for better views and sights than if it were in a valley.

My favorite part was probably the statue of Icarus. Yes, I know it's a modern creation, but it's still incredibly cool. And the juxtaposition of the Template of Concordia behind it was fantastic.

Icarus

I have more things I need to write, but I need a bit more time to collect my thoughts, and it's already late. So hopefully I'll write them tomorrow (from Greece!). Ciao Italy!


How to set up database(s) for a wiki family?

Published 23 Jun 2018 by Pyro Newman in Newest questions tagged mediawiki - Stack Overflow.

I have some issues setting up a wiki family with MediaWiki. Currently, I am working on two wikis with the same global settings, Penguin Ice Wikis and Penguiconverter. I also am not able to edit most of the Apache on the web host I run my wiki on. The users at MediaWiki's support desk told me to point the document roots of both wikis at a single place. However, when I make edits to the Penguiconverter wiki, the edits will also appear on the Penguin Ice Wikis wiki as well.

I added the upload location. When I did a test edit on my Penguiconverter wiki, the edit showed up on my Penguin Ice Wikis wiki. What can I do to make pages and edits separate on each wiki when they are pointed at a single place? I also added the database for Penguiconverter, and I got the following message: (Cannot access the database: Access denied for user 'gjlxrtap_penguinicewiki'@'localhost' (using password: YES) (localhost))

How do you fix both issues mentioned in the last paragraph?


Day 7: A short break

Published 22 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

Today closes the first week of our trip, and all I want now is a break. I don't really feel physically tired, mostly just emotionally drained. I'm also running out of Skittles.

We spent most of today just working on existing source material that we had. I finished up a text story, a photo essay, and planned out our natural sound video. I also finally had some time to do my laundry, right as my supply of clean clothes began to run out :)

I had lunch at a nice wine bar that I found on the street. The food prices were pretty cheap, but I assume they expected everyone to buy wine along with their meal (I didn't!). Dinner on the other hand was a disaster, and probably the worst meal I've had in Italy :-(

In the evening there was a celebration of World Refugee Day, with musical, dancing, and acting performances from some of the refugees and migrants. We watched as three of them read out some important parts of the Universal Declaration of Human Rights - it was incredibly moving. I also think it's a testament to Mr. Edwards, who taught me the UDHR so well that I instantly recognized it in Italian.

Looking forward, we have another day in Italy before we head to Greece. It's supposed to mostly be a tourism day, which I hope allows me to collect my thoughts before we jump right back into the fray.

I think the biggest frustration I have right now is that journalists are supposed to stay impartial (rightfully so), while I want to do things, and make change happen.

New segment: things people needed today that I was unprepared for, and didn't have in my backpack: fork/silverware, and napkins.


How 2,000 Droplets Broke the Enigma Code in 13 Minutes

Published 22 Jun 2018 by TC Currie in The DigitalOcean Blog.

How 2,000 Droplets Broke the Enigma Code in 13 Minutes

In late 2017, at the Imperial War Museum in London, developers applied modern artificial intelligence (AI) techniques to break the “unbreakable” Enigma machine used by the Nazis to encrypt their correspondences in World War II. Using AI processes across 2,000 DigitalOcean servers, engineers at Enigma Pattern accomplished in 13 minutes what took Alan Turing years to do—and at a cost of just $7.

I have long been fascinated by the Enigma machine and its impact on World War II. Aside from being a huge history geek, my father-in-law went over to Normandy on D+3 (three days after the Omaha beachhead was established). He served in an advance corps, finding ways for the army to move across the country, and as such, they were the first to come across one of the concentration camps and liberate it. None of that would have been possible without Enigma.

The Enigma Machine

The Enigma machine is a complicated apparatus consisting of a keyboard, a set of rotors, an alphabet ring, and plug connections, all configurable by the operator. For the message to be both encrypted and decrypted, both operators had to know two sets of codes. A daily base code, changed every 24 hours, was published monthly by the Germans. Then, each operator created an individual setting used only for that message. The key to the individual code was sent in the first characters of the message, coded in the base code. This created over 53 billion possible combinations, changing every 24 hours. Because of this, the machine was widely considered unbreakable.

Marian Rejewsky, working with other mathematicians at the Polish Cipher Bureau, cracked an early version of the Enigma machine in 1932 by the tried-and-true method of stealing a few machines and reverse engineering the mechanism. It took him just under a year to figure out the general principle of the German military’s double message setting and the wiring of the rotors, and another year to catalog the settings. After all of that, daily keys could be obtained in under 20 minutes.

But as Germany revved up its war machine, the Nazi navy made the machine more complex with the addition of plugs and more rotors, making it impossible for humans to work through the billions of possible combinations. Enter Bletchley Park in rural England, where Alan Turing, a brilliant English mathematician, gathered a team of cryptographers, puzzle solvers, linguists, and mathematicians in 1939 with the mission of breaking the German codes.

“Enigma gave the foundation to Alan Turing to develop the computer,” explained Rafal Janczyk, a Polish mathematician and CEO and co-founder of Enigma Pattern.

Rejewsky and his team smuggled their cracked Enigma machines out of Poland, and worked their way to Bletchley Park where they donated the machines and their expertise to Turing. Building on Rejewsky’s work, Turing was able to automate the cryptography that could crack the daily code. It took the better part of a year to decrypt their first message. They called their work the Bombe, and it’s widely considered to be the first computer.

But it was more elaborate than simply breaking the code. Because the Nazis changed the rotor settings every 24 hours, each new day brought a new set of 15,354,393,600 password variants that had to be decrypted. Many times they worked through the night only to fail to break the code and have to start over the next day.

It was an exhausting, near-impossible task. And, seven decades later, Enigma Pattern wondered how modern technology like AI could change things, and if they could break the code in a fraction of the time.

Geeking out: Breaking Enigma with Modern AI

“The project started from the question, ‘What would Alan Turing be able to do nowadays if he had the current computing power and all the development around AI,’” said Janczyk. Since AI is still such a new discipline, the company allows their employees to spend 20 percent of their time on side projects of their choice that encourage out-of-the-box uses of AI.

Retracing Turing’s footsteps was a pet project of Lukasz Kuncewicz, Enigma’s Head of Data Science (and another Polish mathematician co-founder). Kuncewicz chose this project to refer to the common history of Brits and Poles using human intelligence to overcome the biggest obstacles of the Second World War. (Their third co-founder, Mike Gibbons, is British).

Kuncewicz decided to recreate the Nazi navy’s version of the machine, which was the most sophisticated. His team started by recreating the machine, rotors, and plugs in Python. Initially, they tried to teach their AI to decode the Enigma code itself, but it didn’t work. Neither did Lambda functions from Amazon.
The problem, he said, was with the amount of computations. “Since the Lambda function from AWS is not very quick, and has some limits regarding execution time, the number of concurrent Lambda calculations was very high. So high that we actually spent more than a week going from one AWS department to another, trying to squeeze a decision from them regarding extending our limit.”

Enter DigitalOcean. “We only use [DigitalOcean] for quick ‘bish bash bosh’ needs—they are very good when we need to have a bigger server run for a few hours,” he said. Enigma Pattern uses DigitalOcean for a variety of things—from learning environments, to quick compute tasks where results will be stored on their internal computers, to prototyping projects when they're not sure yet how many machines will be needed.

When Enigma mentioned the project, DigitalOcean quickly agreed to provide the ML 1-Click Droplets. It fit the company’s developer focus, said Mark Mims, the R&D Engineer who designed the ML 1-Click that launched last year, and demonstrated the ease of use, as an ML 1-Click Droplet can be spun up in a few minutes with (you guessed it) one click. “But if you’re looking to spin up 2,000 servers, you won’t be using the web UI,” said Mims. “That takes a call to the help desk.” Within half a day, DigitalOcean had hydrated the 1,000 droplets used in the testing phase.

The next step for Kuncewicz and his team was training an algorithm to recognize German, which they did by using Grimms Fairy Tales, including Hansel & Gretel, Rapunzel, Cinderella, and Rumpelstiltskin; 200 tales in all. Why children’s stories? Well, it’s not like the AI had to decrypt German philosophy, but instead military telegraphs, which use as few words as possible. Fairy tales are also written in simple language, so it makes sense. And it worked. Interestingly, in the end the AI could not understand German. But it did what machine learning does best: recognize patterns.

How 2,000 Droplets Broke the Enigma Code in 13 Minutes

It took two weeks for the team to train the machines and create the Python code, and another two weeks for the first successful attempt to decrypt a message. But in order to copy Turing’s success, a successful decryption had to be done in less than 24 hours.

Then they decided to try to break it by using sheer computing power, adding another 1,000 Droplets. I’ll let Kuncewicz explain the details:

“First,” he said, “one has to accept the fact, that even if you have 2,000 Droplets, you still have billions of combinations to be checked. And the neural network that we used, however good at spotting the German language, is not a speed demon.

“It's because it uses recurrence, which gives you this boost when dealing with languages, but you pay with the calculation time. So the idea is, you need to separate the wheat from the chaff, and use the network only to check the best possible candidates.

“So for the AI to shine, we actually use 2,000 minions that do the tedious work. Everybody praises AI, but it's actually the minions that do the 99% of work. Life, right?”

“We wrote one minion in Python, and DigitalOcean has this very nice API for storing images. So you create one minion, say ‘DigitalOcean, please save it as an image,’ and then you say ‘DigitalOcean, please create 2,000 copies of it and make them run,’ and you have them.

“The code is really simple. It connects to the bus and gets a first not-yet-taken assignment. The assignment is a package of the gibberish text (the encoded message) and combinations of passwords to run on it. It checks the gibberish against every password, checks if the decoded message sounds like German, and if so, sends it through the same bus for more detailed inspection by the AI.

“And this is exactly what the Droplets do. They get their share of password combinations from RabbitMQ, they take a few letters of the gibberish they need to decode, they decode it using the given passwords, and apply a very crude (but very quick) check if at the end of this pipeline we have something that resembles German.”

If the code looks like German, it’s pushed back to the main server where the AI works its magic.

“The job is not coordinated in any way, each minion doesn't know anything about others—they are fully autonomic. This is great, because it means that we can have 200, 2,000, or 20,000 of them if we like (and if DigitalOcean allows). The more we have, the less time will pass before breaking the Enigma code.”

The 2,000 virtual servers ran through 41 million combinations per second. After 13 minutes of minion work, boom! The new Bombe had broken the code.

How 2,000 Droplets Broke the Enigma Code in 13 Minutes

Enigma Pattern: Who are these People?

“AI is being called the new electricity,” said Janczyk, “because it will be in everything.” Enigma Pattern works with companies that already collect big data but are unsure of the ways to harness its power. “You would be surprised at how many companies store big data but don’t know how to put it to use,” he said. “For example, a coffee chain would rather throw up a new store than delve through the data to determine how to optimize the stores they already have, because they know how to open a new store and don’t know how to dig through the data.”

One of their clients has a fleet of over 10,000 cars on which they collect a variety of raw data. Janczyk and his team sat down with the client to discuss the pain points of the business, how they might use the data they already had to help ease the pain, and how AI could help.

Tires are a significant business cost. In addition to the price of the tires is the cost of maintenance and driver downtime. If you don’t change the tires in time, you’re endangering the life of your drivers. Change them too often, and you lose money. It turns out, you can teach a machine to hear the level of wear on a tire.

“Out of the sound of the spinning tire, we were able to teach the machine the level of wear of the tire,” Janczyk said. “Now the company is able to change tires based on the sound of the wear and automatically schedule downtime to which saves lives and money.”

“With AI and ML, there is such an unlimited amount of possibility, which is what makes it so exciting,” said Janczyk. “That’s what makes my work fascinating,” he said, "finding new uses for AI.”

Who knows what mysteries AI will solve in the future? By appreciating the problems that Enigma presented to previous generations and applying modern techniques, we can expand our vision for what AI can accomplish in today’s world.

To see how Enigma functioned, check out this link or watch it in action on YouTube.

To learn more about Alan Turing and the work done at Bletchley Park, check out Andrew Hodges’ acclaimed biography of the computing legend, titled “Alan Turing: The Enigma.”

You can check out Enigma Pattern's code on GitHub, with a warning from Kuncewicz that it’s a bit messy.

TC Currie is a journalist, storyteller, data geek, poet, body positive activist and occasional lingerie model. After spending 25 years in software development working with data movement and accessibility, she wrote her first novel during National Novel Writing Month and fell in love with writing.


Dead Ringers 22nd June 2018

Published 22 Jun 2018 by BBC Radio 4 in Friday Night Comedy from BBC Radio 4.

The topical satirical show that mixes political vituperation with media mauling and celebrity savaging. The series is written by Private Eye writers Tom Jamieson and Nev Fountain, together with Tom Coles, Ed Amsden, Sarah Campbell, Laurence Howarth, James Bugg, Laura Major, Max Davis and others. The series stars Jon Culshaw, Jan Ravens, Lewis MacLeod, Debra Stephenson and Duncan Wisbey. A BBC Studios Production.

Day 6: Unprepared for heartbreak

Published 22 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece. For privacy reasons, I've changed the name appearing in this post.

In Boy Scouts, we were always taught to Be Prepared. And I thought I had prepared for everything (first aid kit, flashlights, emergency food, etc.) before heading on this trip – that is, until I met Joshua. Joshua is a 17 year old refugee from Sierra Leone.

By his own account, Joshua was a slave. He “worked” for a man who did not pay him. He was just given food, and only once something broke or tore was he given a replacement. He did all the work, but reaped none of the benefits.

Joshua ran away, traveled 150 kilometers on foot, and then worked odd jobs to get rides to cover the rest of the distance. While in the desert, he said some of his friends were bitten by animals and died. He now stays in a center in Italy with other unaccompanied minor boy refugees, living a typical teenage life.

He unsuccessfully tried out for the nearby club soccer team, but was happy for his three friends that made it. Since they’re not adults yet, the boys are required to go to school, and are taken care of by a house-mother who runs the center.

Joshua’s English is better than his Italian these days – he listens to American music, and likes Selena Gomez, but doesn’t care much for Taylor Swift.

But just when you think he might be a normal teenager, you notice the pain in his voice that sets him apart. Joshua looked at us if we were crazy when we asked him if he ever skipped school – he quickly said he wasn’t going to waste any opportunity given to him, especially school.

Since he’ll be an adult soon, Joshua told us he wanted to be a painter. At first we thought he wanted to follow in the footsteps of famous Italian painters like Da Vinci or Michelangelo, but he meant something else entirely.

Joshua wants to paint buildings, like general contractor might. He started to explain to us the different types of stucco and how he would paint them.

We asked if Joshua had any higher aspirations or a dream job, to which he had a simple response: “I will take any job that I can get.”

He credits God with keeping an eye out for him, and is a devout Christian. He attends Church every Sunday, and even joked that it’s just him and “old people”.

But Joshua said that he knows he cannot expect God to provide everything for him – he needs to continue to work hard and take advantage of what’s given to him. He has his official refugee papers, which should make it easier for him to stay in the country and get a job.

Despite all the help and support he’s received in Italy, for which he said he is extremely grateful, he wants to eventually go somewhere else. You see, when we first introduced ourselves and told him we were from California, his face lit up, and he immediately exclaimed, “America! The best country on Earth!”

I did not want to crush his dreams, nor lie to him, so I kept quiet. But that, that was when my heart broke.


cardiParty 2018-07 Melbourne with Adrian Doyle

Published 22 Jun 2018 by Hugh Rundle in newCardigan.

cardiParty 2018.07 (Melbourne) with Adrian Doyle

Join us for a talk with artist Adrian Doyle about his exhibition ‘You Are All The Same!’ and his art practice, at Dark Horse Experiment.

Find out more...


How to add custom function ot User.php in MediaWiki?

Published 21 Jun 2018 by Erik L in Newest questions tagged mediawiki - Stack Overflow.

I added the following custom function to User.php:

public function isUpgraded() {
    return true;
}

and the following in my Foreground.skin.php which is my skin/theme for the wiki to simply access the value that the function returns:

$isUpgraded= $wgUser->isUpgraded();

but I get the following exception:

Fatal error: Uncaught Error: Call to undefined method User::isUpgraded() in /home/siteX/public_html/siteX.com/wiki/skins/foreground/Foreground.skin.php:106 Stack trace: #0 /home/siteX/public_html/siteX.com/wiki/includes/skins/SkinTemplate.php(251): foregroundTemplate->execute() #1 /home/siteX/public_html/siteX.com/wiki/includes/OutputPage.php(2388): SkinTemplate->outputPage() #2 /home/siteX/public_html/siteX.com/wiki/includes/exception/MWExceptionRenderer.php(135): OutputPage->output() #3 /home/siteX/public_html/siteX.com/wiki/includes/exception/MWExceptionRenderer.php(54): MWExceptionRenderer::reportHTML(Object(Error)) #4 /home/siteX/public_html/siteX.com/wiki/includes/exception/MWExceptionHandler.php(75): MWExceptionRenderer::output(Object(Error), 2) #5 /home/siteX/public_html/siteX.com/wiki/includes/exception/MWExceptionHandler.php(149): MWExceptionHandler::report(Object(Error)) #6 /home/siteX/public_html/dev. in /home/siteX/public_html/siteX.com/wiki/skins/foreground/Foreground.skin.php on line 106

Do I need to register the custom function in some other file in order for it to work? It might be worth mentioning that the code worked in MediaWiki 1.23 but I recently updated to 1.31 and can't get the following piece of code to work.


PHPWeekly June 21st 2018

Published 21 Jun 2018 by in PHP Weekly Archive Feed.

PHPWeekly June 21st 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 21st June 2018
Welcome to the latest @phpweekly news.
 
Voting takes place next month on the nominated candidates for the Drupal Association Board. Check out each candidate profile before you make a decision on who gets your vote.
 
Also this week we take a look at the Auth0 Service, allowing you to set up authentication and authorisation features for your apps.
 
php[world] has been announced for November this year in Washington, bringing together several frameworks including Magento, WordPress and Laravel. The Call for Papers is now open.
 
And finally, the latest Full Stack Radio podcast has Derrick Reimer talking about his new communication platform, Level.
 
Have a great weekend,
 
Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

Apache vs Nginx Performance: Optimisation Techniques
Some years ago, the Apache Foundation’s web server, known simply as “Apache”, was so ubiquitous that it became synonymous with the term “web server”. Its daemon process on Linux systems has the name httpd and comes preinstalled in major Linux distributions. Nginx — pronounced engine x — was released in 2004 by Igor Sysoev, with the explicit intent to outperform Apache.

What is WordPress Hosting? Learn More About The World's Most Popular CMS
WordPress has been around since 2003 and is the most popular blogging software on the market, powering almost a third of the known web. It has also now established itself as the content management system (CMS) of choice. Wordpress is already powering a quarter of all websites and we predict no end to its popularity and have explored some of the issues surrounding hosting with WordPress below.

Is Your PHP e-commerce Site Doing Well Enough? The SEO Factors You Should Prioritise to Boost Conversions
The presence of numerous website builders and CMS platform options makes setting up a store online a lot easier than it was before. Therefore, we see a lot of new spicks and span new e-commerce stores with a wide array of products but no customers. Many business owners are often too quick to blame their website template and core code for the lack of traffic. Nonetheless, how responsible can your code infrastructure be if several other stores are using the same code type or the same template?

Meet the Drupal Association 2018 At-Large Board Member Candidates
Did you know you have a say in who is on the Drupal Association Board? Each year, the Drupal community votes in a member who serves two years on the board. It’s your chance to decide which community voice you want to represent you in discussions that set the strategic direction for the Drupal Association.

Tutorials and Talks

Building a PHP Framework: Part 5 – Test Driven Development
In part 4 we laid the foundation for Analyze. Now it’s time to write the very first lines of code!
 
Collector Pattern for Dummies
I wrote Why is Collector Pattern so Awesome a while ago, but I got feeling and feedback that it's way too complicated. The pattern itself is simple, but put in framework context, it might be too confusing to understand. That's why we look on collector pattern in minimalistic plain PHP way today.
 
Creating a Decent Laravel Deploy Script
A good deploy script can save you time and speed up you application, and it only takes a few minutes to set one up. I have a standard deploy script which I use for almost all of my projects, which I'm going to break down and share with you.
 
Doctrine ORM and DDD Aggregates
As I discovered recently, you don't need an edge case to drop Doctrine ORM altogether. But since there are lots of projects using Doctrine ORM, with developers working on them who would like to apply DDD patterns to it, I realized there is probably an audience for a few practical suggestions on storing aggregates (entities and value objects) with Doctrine ORM.
 
Building an Image Gallery Blog with Symfony Flex: The Setup
This article is part of a zero-to-hero project - a multi-image gallery blog - for performance benchmarking and optimisations. (View the repo here.) In this part, we’ll set our project up so we can fine tune it throughout the next few posts, and bring it to a speedy perfection.
 
Scheduling Posts on Github Pages with AWS Lambda Functions
If you are reading this post, it means it worked! I scheduled this post yesterday to automatically publish at 9am the next day, PDT. I’ve been trying to find a solution for this a few times, but most recently realized that with the AWS Lamdba functions it might have finally become possible to do this without managing a whole server.
 
Using API Gateway with Serverless & OpenWhisk
As with all serverless offerings OpenWhisk offers an API Gateway to provide HTTP routing to your serverless actions. This provides a number of advantages over web actions, the most significant of which are routing based on HTTP method, authentication and custom domains (in IBM Cloud).
 
Self-Host Your Team’s Git With Gitolite
Designed in 2005 by Linus Torvalds for the needs of the Linux Kernel development team, the Git source code management system has become widely accepted outside the community. For more info check out A Short History of Git. Free, fast, distributed, feature-rich, and yet simple to use, it has become almost indispensable today for storing, comparing, and collaborating on all types of programming projects, and even for other kinds of documents.
 
Authentication and Authorization Using Auth0 in PHP
In this article, we're going to explore the Auth0 service, which provides authentication and authorization as a service. Auth0 allows you to set up basic authentication and authorization features for your apps in the blink of an eye.
 
5 Usages of Static Keyword in PHP
Static is a PHP keyword with many usages. It is almost universally used, though there are many variations of it. Let’s review all five of them.
 
Automatically Open Files on Artisan “Make” Commands
“Open on Make” is a neat little package by Andrew Huggins that makes it easy to have newly created files open in your editor of choice.
 
The Dangers of PHP's $$
A PHP question I particularly like to ask candidates at a job interview is to explain a bit of code that includes the $$ syntax for variable variables. It’s great if the candidate is already familiar with this feature of PHP; but what’s more important to me is that once the candidate understands how this syntax works that they can describe potential issues with using it.
 
How to Quickly Fix WordPress Mixed Content Warnings (HTTPS/SSL)
Running your WordPress site over HTTPS is no longer optional. 🔒 Not only is it more secure (everything is encrypted, nothing passed in plain text), but it also builds trust, is an SEO ranking factor, and provides more accurate referral data. Performance issues tied to encryption have been fixed for the most part thanks to HTTP/2 and Let’s Encrypt has changed the entire industry by providing you with an easy way to get free SSL certificates.

News and Announcements

Announcing Ensemble
Bringing your Composer dependencies together.

Laravel Conf - July 8th 2018, Taiwan
As the biggest PHP and Laravel community in Taiwan, we are proud to announce LaravelConf Taiwan will take place on July 8, 2018. Come and enjoy inspirational talks and making friends with enthusiastic developers like you!

Northeast PHP Conference - 19th-21st September 2018, Boston
Our event is a community conference intended for networking and collaboration in the developer community. While grounded in PHP, the conference is not just about PHP. Talks on web technology, user experience, and IT management help PHP developers broaden their skill sets. Tickets are on sale now.

Symfony Live - September 27-28th 2018, London
Symfony is proud to organise the 7th edition of the British Symfony conference and to welcome the Symfony community from all over the UK. Join us for 2 days of Symfony to share best practices, experience, knowledge, make new contacts and hear the latest developments with the framework! The Call for Papers is open for another few days, and Early Bird Tickets are on sale now.

php[world] - November 14-15th 2018, Washington DC
PHP as a language and a community has been rapidly changing in the last few years. A staggering 83% of the Web runs on PHP, and those websites are built on frameworks such as Drupal, WordPress, Magento, Symfony, ZF and Laravel, each of which has their own strong community. We created a conference designed to appeal to all these communities and bring them together. Hence, php[world] was born. The Call for Papers is now open.

Podcasts

Three Devs and a Maybe Podcast - PHP Was Not Designed For That?! with Joe Watkins
In this weeks episode we catch-up with Joe Watkins. We start off discussion with a recent blog post he wrote about the unhelpful ‘just because you can, doesn’t mean you should’ response he sees surrounding some of his PHP extensions. From here we move on to highlight a debugger you can ‘composer require’, reasons behind creating such a tool and how it works. This leads us on to mention some updates to uopz for PHP 7 support, a weak references RFC he has recently published and future plans for PHP. Finally, we wrap up by talking about a CommonMark extension he has published, and how CQL provides the ability to efficiently traverse a document.
 
Full Stack Radio Podcast Episode 91: Derrick Reimer - Designing a Calmer Team Communication Platform
In this episode, Adam talks to Derrick Reimer about the product design decisions behind Level, a new team communication platform Derrick is building. They also talk about Derrick's decision to open-source the entire codebase, despite the fact that he's building a real business around it.
 
Topics include Microsoft has reportedly acquired GitHub, and the stakes have never been higher for Apple software.
 
Post Status Draft Podcast - Productizing Your Service Business, with Brian Casel
In this episode, I interview Brian Casel, the owner of Audience Ops, a productized content service he’s built to employ 30 people. He also runs a podcast and course on helping others productize their services.
 
PHP Web Development Podcast Ep #3 - Why Symfony
This week I have the pleasure of speaking to Dan Blows ,Currently a tech lead, he has done some really cool stuff, he's in the top 3% on stack overflow, in the top 10% of PHP developers in Europe, speaking at meet ups , spoke in the European conference in front of 100's of people, training and mentoring junior developers and many more.

Reading and Viewing

Cloudways Interview - Ilona Filipi Sees “More and More Clients Opting for WordPress”
Today we have interviewed Ilona Filipi, founder and managing director at Moove Agency, a London-based web development agency that builds and supports high-performing websites and applications and make global businesses succeed in the digital world. She has an extensive experience of 10 years in the digital field and a working relationship with clients such as BBC, O2, etc.
 
Bizarro Devs - Send In The Drones
A weekly newsletter with all the weird and wonderful tech news.
 
Query builder for JSON, Zend API wrapper for go/golang, modern dockerized LAMP and MEAN stack alternative to XAMPP, simple chat with ReactPHP sockets, searchable field-level encryption for PHP projects, and more. Keep on reading!
 
Fix WordPress Plugins and PHP 7.1 Brokenness.: Mobile-first WordPress Speed (Plugin Surgery: Tips and Tricks Book 3) by Steve Teare - Kindle Edition
A 3,760-word article at WP Elevation is about the pain of producing websites. The article expresses everything we hate about website creation. The thought of building “explosive live hand grenades” stresses us. Just reading the article was stressful. Why?
 
PHP The Right Way: Your Guide to PHP Best Practices, Coding Standards, and Authoritative Tutorials by Phil Sturgeon and Josh Lockhart - Kindle Edition 
If you are getting started with PHP, start with the current stable release of PHP 5.6. PHP has added powerful new features over the last few years. Though the incremental version number difference between 5.2 and 5.6 is small, it represents major improvements. If you are looking for a function or its usage, the documentation on the php.net website will have the answer.
 
PHP 7 Data Structures and Algorithms Complete Self-Assessment Guide by Gerardus Blokdyk - Kindle Edition 
Why are PHP 7 Data Structures and Algorithms skills important? Has the direction changed at all during the course of PHP 7 Data Structures and Algorithms? If so, when did it change and why? Who are the PHP 7 Data Structures and Algorithms improvement team members, including Management Leads and Coaches?

Jobs





Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

firefly-iii
"Firefly III" is a (self-hosted) manager for your personal finances.
 
skeleton-php
A skeleton repository for my packages.
 
atutor
An Open Source Web-based Learning Management System (LMS) used to develop and deliver online courses.
 
sublime-php-grammar
An smart macro PHP plugin for Sublime Text.
 
BehatNoExtension
This Behat extension makes it possible to extend Behat without having to write an extension yourself.
 
php-verge
A basic PHP library to talk to a VERGEd daemon to get you started in your VERGE project!
 
yay
YAY! is a high level parser combinator based PHP preprocessor that allows anyone to augment PHP with PHP.
 
money
A money and currency library for PHP.
 
bladeone
BladeOne is a standalone version of Blade Template Engine that uses a single PHP file and can be ported and used in different projects.
 
tus-php
A pure PHP server and client for the tus resumable upload protocol v1.0.0.
 
catalyst
Catalyst serves to facilitate the process of commissioning through a simple, unified, and mobile-friendly way for artists to easily list their prices, recieve and track commissions, and much more.
 
soap-client
Sick and tired of building crappy SOAP implementations? This package aims to help you with some common SOAP integration pains in PHP. Its goal is to make integrating with SOAP fun again!

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

The Inevitable

Published 20 Jun 2018 by jenimcmillan in Jeni McMillan.

NudeSamothraki2018.jpg

Today I climb a mountain on this remote Greek Island. Beyond the source of the waterfalls, lizards cling to the cliff faces. I test each hand hold before I give my weight to the mountain. The hard volcanic rock has been broken into sharp and unstable shards by the winter elements. Only the lichen-covered rocks are stable. I pick my path. The sky is racing past. A rush of adrenalin hits me. I consider the possibility that I could die here. Why not? It’s a beautiful place where I am completely at peace.

I see a species of ants that I know well from the Australian bush. We have history. Once I saw them carry away bones from a snake carcass. I’ve stood barefoot on their mounds for a dare. They don’t sting but their meat-eating preference makes this a good test of endurance. Sure, it’s crazy, but I had time and it was the days before I carried a laptop and had 305 Facebook friends. Today I feel only completeness. This is not an Italian drama. Perhaps it’s a Greek tragedy? Except there is no family gathering at my feet. I’m grateful. They need a wash.


Day 5: Exhaustion (only a bit)

Published 20 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

It's day 5, I did not expect to be this tired, so quickly. I think I'm missing the siesta time that I'm supposed to get in Italy. But, I'm also having a blast, and at least trying to take every opportunity to explore / learn things. It feels waaaay longer than 5 days.

Today we started out heading to the university, saw some awesome street art (I'm going to be doing a "photo essay" on what we've seen so far) on the way there, and then double backed to get a few photos.

We walked a bit around the port and docks area, picking up b-roll and talking to some people. We went up to the tents where migrants are brought to after getting off the boat that brings them in. To be honest, it was pretty underwhelming.

We had lunch at a nice panini place, drank some Fanta, and then headed back to the hotel to start putting together our assignments. I think our group has started to get into rhythm - I do the writing parts, another person does images, and the last does the photos (generally, it's more nuanced than that in reality), and then we all edit each other's stuff. So far it seems to be working.

There's a bigger meta question starting to loom over my head now: if this is what real reporting work is like, do I want to do this as a career? To which my answer is still the same so far: "Maybe." I think I need more time to make a decision.


The Next Wave: DigitalOcean’s New CEO

Published 20 Jun 2018 by Ben Uretsky in The DigitalOcean Blog.

The Next Wave: DigitalOcean’s New CEO

A few months ago, I announced my plans to find my successor as we approached our next phase of growth. Today, I am very excited to announce that Mark Templeton will be joining us as DigitalOcean’s new CEO.

We were looking for a leader who could scale our operations, evolve our go-to-market strategy, and help us reach our audacious vision of becoming every developer’s cloud platform of choice when deploying software. After spending time with Mark, I knew that he was the perfect fit for us.

From 2001 to 2015, he served as president and CEO of Citrix Systems. While at Citrix, Mark helped grow the business from $15 million in revenue with one product, one customer segment, and one go-to-market path to a global industry leader with more than 100 million users and annual revenue of over $3 billion. He joined the company prior to its initial public offering and served in a leadership capacity throughout his 20-plus years with the organization. Under his leadership, Citrix earned multiple “best places to work” awards and Mark himself was honored with several awards including a coveted spot on Glassdoor’s Highest Rated CEOs list in 2013.

When I asked him what he saw in DigitalOcean, he replied that he was inspired by our unique position in the market and focus on delivering simplicity at scale. He went on to talk about our incredible team, happy customers, and what perfect timing it was to make an enormous impact on the industry. He compared the opportunity to his early days at Citrix — when the company had a singular focus on offering the best remote access technology in the world. That focus was the seed of the Citrix vision of a virtual workplace, inspired by the deep belief that work was not a place.

Mark believes we have an incredible opportunity to serve tens of millions of developers and the digital-first businesses they go on to create. He shares our focus on simplicity and supports our efforts to ensure our cloud is an enabler for a future that accelerates software development and inspires innovation among our customers. Mark will help DigitalOcean operate and scale to a whole new level while doubling down on our strategy to be the world’s simplest cloud experience.

We are so fortunate to gain a leader with Mark’s experience, talent, and vision. DigitalOcean is at an inflection point and we’ve laid the groundwork together for this rocket ship to soar. We now have a $200 million run rate and a community that is more than 3.5 million developers strong. As we enter into our next chapter, I am confident Mark is the right leader to inspire and scale our team, accelerate our business, and most importantly, uphold our commitment to our customers and the developer community at large.

Please join us in welcoming Mark on what promises to be an exciting journey!

Ben Uretsky
Co-Founder, DigitalOcean


Diversity at W3C; launch of TPAC Diversity Scholarship

Published 20 Jun 2018 by Jeff Jaffe in W3C Blog.

Diversity has become a major issue across society. We would like W3C to be a model of supporting diversity. As an international organization we can see the immense value we gain from having expertise from across multiple countries and cultures. Soon 50% of the world will be on the Web. We know we will need to reflect the diversity of the whole of our world as more and more people begin to access, use and continue to create the Web in all its full potential.

During the Spring W3C Advisory Committee Meeting, a panel on diversity focused on progress we have made and how much more is required. I shared graphs on diversity, and the W3C Advisory Committee introduced a Diversity Scholarship.

Content of this post:

Press clippings with diversity headlines

Collected information

Different participants are involved in different ways; with mailing lists and GitHub postings distributed across many locations. As we don’t collect participants’ personal and demographic data to preserve privacy, it was difficult to gather data for different characterizations of diversity, but we were able to focus on gender and geography for several representative bodies (Advisory Board, Technical Architecture Group, W3C Management (W3M)).

W3C Advisory Board

The W3C Advisory Board provides ongoing guidance to the Team on issues of strategy, management, legal matters, process, and conflict resolution. The elected Members of the Advisory Board participate as individual contributors not as representatives of their organizations.

Advisory Board positions are member-nominated. The gender diversity of the AB over the last 20 years has never been great, although the diagram shows that this has been improving recently. We are working on outreach to encourage more women and underrepresented groups to run.

diagram of AB gender spanning 1998-2017

Looking at the Advisory Board by geography, all 9 members during the first two years were from Northern America. Starting in the year 2009 and in subsequent years, we’ve improved the geographical diversity and it’s kept improving over these last few years.

diagram of AB by geography spanning 1998-2017

W3C Technical Architecture Group

The W3C Technical Architecture Group (TAG) is a special working group within the W3C, chartered with stewardship of the Web architecture, to document and build consensus around principles of Web architecture, to resolve issues involving general Web architecture brought to the TAG, and to help coordinate cross-technology architecture developments inside and outside W3C.

TAG positions are member-nominated or appointed by the W3C Director. Gender diversity only improved from 0 to 1 or 2 women on the TAG, and only starting in 2011, in the the 10th year of that group. We need to make more progress here.

diagram of TAG gender spanning 2002-2018

Looking at the TAG by geography, although the Northern American contingent is still pretty strong, improvement in diversity has been happening starting 2013, coinciding with what some in our community have referred to as the TAG reform: outreach from the TAG co-chair and members in search for the right people involved in building the Web in smarter ways.

diagram of TAG by geography spanning 2002-2018

W3C Management

The W3C management team is responsible for the day to day coordination decisions for the team, resource allocation, and strategic planning.

The diagram uses percentages because the number of persons on W3M has changed over the years. There was a period when there was one woman at W3M. It has improved to some extent.

diagram of W3M gender spanning 1999-2017

Looking at W3M by geography is relatively good, still a little tilted towards Northern America, but not as much as before.

diagram of W3M by geography spanning 1999-2017

Concrete next steps to improve diversity at W3C

Promote diversity and inclusion

At its May meeting, the W3C Advisory Committee discussed actions that W3C should take to promote diversity, including:

TPAC diversity scholarship

A W3C Member, Samsung Electronics, proposed and agreed to start funding “Diversity Scholarship” for TPAC attendance, and W3C Members The Paciello Group, Consensus System and Microsoft stepped up to sponsor diversity scholarships.

The Diversity Scholarship includes plane and hotel as eligible expenses.

Applicants must be from a traditionally underrepresented and/or marginalized group in the Web community, including but not limited to: persons identifying as LGBTQ, women, persons of color, and/or persons with disabilities; and be unable to attend without some financial assistance. Applications are due by 15 July, by supplying nominal information to the Team (e.g. under-represented community, which role in what group at TPAC, estimated costs to travel and participate at TPAC, why a subsidy is needed).

We hope to be able to support multiple applicants with scholarships. Therefore, please indicate whether you may be able to potentially share costs on some of the costs that you have mentioned.

W3C Management will decide by 25 July how to allocate the available money based on available funding, number of applicants and information supplied. Applicants will be notified personally and recipients will be able to register in time for TPAC.

If your organization or yourself wishes to become a sponsor, please e-mail us!


The dark side of nature writing

Published 20 Jun 2018 by in New Humanist Articles and Posts.

The recent renaissance in nature writing also revives an overlooked connection with fascism.

Day 4: First round of interviews

Published 20 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

Today we went out onto the streets and started looking for people to talk to. Ideally we were looking for people to talk to us on video, but we knew that everyone would not be comfortable with that.

We have two interviews planned for later this week, which should hopefully give us some good content. We struck out a few times when people said no to us - but after we stopped trying, that's when we got the good stuff.

We started to give up and just shoot some b-roll so the day would not be a full failure, when one of the musicians in the University square walked in front of our camera and started playing for a full minute.

And then when we went to lunch, we found an empty pizzaria, ordered, and noticed that the chef was making the pizzas right in front of us. We quickly set up the tripod and started recording. And after we finished and paid, we asked if he'd be willing to do a quick interview, and his son translated for us. All of his responses are in Italian so we're going to have to translate and subtitle them before being able to publish it.

Later in the day we went to Siracusa and Noto for some touristy activities. Both were just incredible. Every time I go and see anything that old, the question in my head always is "What have I done that will last that long?"

My favorite place was the Ear of Dionysius. We played some music (Shake It Off of course) to try and get the acoustics to work, but couldn't. I don't think my phone speaker was loud enough to get it started. It was at this point that other people in my group were disapointed by the guidebook they paid a few euros for, while the Wikipedia articles I was reading had answers to all of their questions. Yay for free knowledge :-)

On Mastodon (h/t Greg) I saw that the Italian Minister of the Interior had called for the registration of all Roma people in Italy, which really saddened me. Coincidentally, tomorrow is the World Refugee Day, and we'll be going to some event for that.


Day 3: Return to the mountain

Published 18 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

Today we travelled to a few mountain (relatively) towns in Sicily. Ignoring some of the tourist-y stuff, it really reminded me of Esino Lario. The streets, buildings, and elevation gain were all pretty similar.

I got to do a bit of hiking (and just get out of the tourist trap!) when we climbed up a few hundred steps to the top of a peak where there was a monastary (I think, OpenStreetMap wasn't very clear). The view was beautiful, and the hike was totally worth it. We were only two minutes late meeting up with the group - mostly because we saw a lemon tree and were trying to figure out how to grab one even though the tree was three feet above us (we never did in the end).

We had lunch at a, um, interesting restaurant. I'll leave it at that. The food was great, I love trying out all the different types of pizza here. The crust seemed a lot thicker than the pizzas I had in Rome though.

We walked through a few more towns, and even though our van driver was acting as our tour guide, I had fun trying to read the Italian Wikipedia articles for churches and monuments we saw. Spoiler alert: I just looked at the pictures, I didn't understand 95% of the words.

Oh, and the bar in Godfather 2, and the church they got married? We visited both of those. There was a small statue honoring Francis Ford Coppola, which I submitted to OpenStreetMap.

At the end of the day, we went back to Catania and had dinner at an Irish Pub. Coincidentally, England was playing in the World Cup at that time - it was a nail biter to watch until the very end.

Tomorrow we will be going out into Catania and getting interviews and gathering other source material to use in our video assignments.


I am trying to activate the Vector skin in MediaWiki

Published 18 Jun 2018 by N Vora in Newest questions tagged mediawiki - Stack Overflow.

I have set up a wiki on a hosted server. Whenever I go to the wiki, this is what I see:

enter image description here

I have followed the instructions, but the skin still doesn't get installed. What can I do? Thanks!


Why sci-fi and economics have more in common than you think

Published 18 Jun 2018 by in New Humanist Articles and Posts.

Economics isn’t just about describing the world, but imagining alternatives. Science fiction helps show us how.

Day 2: Maintaining eye contact

Published 17 Jun 2018 by legoktm in The Lego Mirror.

Part of a series on my journalism faculty-led program through Italy and Greece.

Today was just a travel day - we're now in Catania, Sicily. It feels like Italy, but a lot more laid back than Rome. I think I would be pretty laid back too if I lived on an Island.

Our plane

Our plane was named after Mozart? Neat.

Since most of our day was taken up by traveling, moving hotels, etc., we didn't have any specific class events today, so a few of us went out exploring after dinner. We walked through most of the tourist areas, and came to the square with the historical buildings of the University of Catania. There were some collaborative art projects happening, as well as one where it looked like people were just staring at each other. My friend and I went closer, and saw the signs (paraphrased, because I forgot to take a picture):

"Are real human connections dead?" "Spend a minute of uninterrupted eye contact"

There were some empty cardboard seats on the floor, so we sat down, and gave it a shot. One set of people next to us looked like they were having a staring contest, and another couple on the other side were deeply looking into each others souls to the point that it seemed like they were engaged in the most PDA I've ever seen with the least amount of touching.

We set a timer for a minute and started talking. After 10 seconds of talking, my eyes seemed to naturally gaze away - I'd have to consiously force them back. Most of the in depth conversations I have happen online, where there is no eye contact that needs maintaining - so this was pretty different. The timer for a minute went off, but since we were in the middle of our conversation, we kept going for about ten minutes (before we realized we needed to meet back up with our other friend!).

I learned a lot of new things about my friend (we have a lot of things in common!) in those ten minutes, which I doubt I would have ever learned or even asked about throughout our trip together. I also learned a bit about myself - I can maintain eye contact for ten minutes, but it takes a conscious effort. I would not say that "real human connections are dead", but I would question whether eye contact is a relevant indicator. I wonder if anyone has done proper research in this area, like having subjects have a conversation without mandatory eye contact, and then with, and see the effect on recall of conversation topics, as well as emotional feelings throughout the conversation. Something for another day :-)


Day 1: Visiting a migrant camp in Rome

Published 17 Jun 2018 by legoktm in The Lego Mirror.

As part of earning my journalism degree at San Jose State, we're required to study abroad. I'm currently on a faculty-led program (FLP) to Italy and Greece to interview migrants and refugees, conduct interviews, document their situation, and gain real world reporting experience. I will try to blog daily for the next three weeks...we'll see if it lasts!

Our trip started in Rome, Italy. Day 0 was meeting at our hotel, getting dinner together, and then enjoying some gelato. The next morning we visited the Colosseum and a few other tourist attractions before the main event for the day: visiting a camp where migrants were staying. Unfortunately, that's all I can write about for now, as I am still working on a full story to publish about our experience at the camp.

In the evening a few of us went to a rally that was protesting the murder of an immigrant, who was a union leader defending workers rights (at least, that's my understanding). There was also the issue of the anti-immigration views of the minister of internal afairs. Aside from not understanding most of what was being said since it was in Italian, I also struggled since there was no article on Unione Sindacale di Base on Wikipedia. It would be great if someone could write one!

Sign at the rally

Take from the rich, and give to the poor!

Assignment of user titles

Published 17 Jun 2018 by @sau226 in Wikimedia Discourse - Latest posts.

I think that users who have their discourse and mediawiki accounts to be proven to be the same should get a user title. That way we can tie their Discourse account into their global account.


Implement discourse as is or modify. What kinds of mods?

Published 17 Jun 2018 by @sau226 in Wikimedia Discourse - Latest posts.

I’d personally request automatic topic closure in certain sections (maybe mailing list sections) after say 30 days so that people can move on and not just necropost.


How to use Discourse

Published 17 Jun 2018 by @sau226 in Wikimedia Discourse - Latest posts.

It is also advisable to run through the new user tutorial @discobot provides for you. It gets you familiarised with basic community functions


Djilba and DDD Perth 2018

Published 17 Jun 2018 by Ashley Aitken in DDD Perth - Medium.

Djilba is the time and theme for DDD Perth 2018

DDD Perth is just around the corner and if you haven’t registered yet, get in quick before tickets sell out, as they did last year, for the best and biggest software community conference in Perth.

The conference is on all day Saturday 4th of August at the Perth Convention and Exhibition Centre with a fantastic line up of speakers and renown keynote speakers from around the world.

Djilba version of the DDD Perth 2018 Logo

What’s interesting is that this date coincides with the start of the Noongar season (August-September) of Djilba. More about that later but did you know the Noongar people have six, not four, seasons?

1. Birak (December to January)

2. Bunuru (February to March)

3. Djeran (April to May)

4. Makuru (June to July)

5. Djilba (August to September)

6. Kambarang (October to November)

For DDD Perth this year we are theming the conference around the Noongar nation season of Djilba because it also aligns with a lot of what we are trying to do and achieve with the conference.

Djilba is a transitional time of year, moving from rainy to sunny days… DDD Perth is reflecting on the past and looking to the future of software and those working in the community.

Acacia Wildflowers

Djilba is the season of conception and when the wildflowers start to bloom… DDD Perth is looking for new ideas, even wild ideas, and new perspectives on all aspects of software.

Moongar Pigface Wildflowers

Djilba coincides with the massive explosion of wildflowers in the South West… DDD Perth is the largest and most diverse community software conference in Western Australia.

Interestingly, Djilba is also the time that magpies start swooping to protect their young… DDD Perth is committed to supporting and developing juniors in the software community.

A Magpie Swooping

Finally, we also acknowledge the traditional custodians of the land we are meeting on, the Whadjuk people of the Noongar nation (which, by the way, means “knowledge”).

We wish to acknowledge and respect their continuing culture and contribution they make to the life of this city and region, and pay our respects to the Elders past, present and emerging.

We are also grateful to the South West Aboriginal Land and Sea Council for their help with the theme and sourcing a “Welcome to Country” for this year’s DDD Perth conference.

So swoop on in like a magpie to register for DDD Perth 2018 (if you haven’t already done so) and come along on the day to let the blooming wildflowers (speakers) prepare you for summer.

Hope to see you there amongst the wildflowers!

For more information on Djilba check out: http://www.bom.gov.au/iwk/nyoongar/djilba.shtml http://www.abc.net.au/local/photos/2015/07/27/4281604.htm

And click here for the correct pronunciation of Djilba: http://www.derbalnara.org.au/_literature_147910/djilba.mp3

P.S. If you would like a sweet conference t-shirt with the Djilba logo on it you can purchase them here.


Djilba and DDD Perth 2018 was originally published in DDD Perth on Medium, where people are continuing the conversation by highlighting and responding to this story.


mediawiki urls contain Chinese characters, how to change the urls creating rules for new pages?

Published 16 Jun 2018 by Edwin Sun in Newest questions tagged mediawiki - Stack Overflow.

I am setting up a Chinese site with Mediawiki, that means it's written in Chinese. but mediawiki creates a url containing Chinese characters for each new page, I want its urls written in English letters, instead of Chinese words. Can anyone help and tell me how could I change its default url rules?

See the image below, its url has Chinese, but I don't like this.

enter image description here


new note (near Fremantle, Western Australia, 6959, Australia)

Published 16 Jun 2018 by in OpenStreetMap Notes.

Comment

Created about 1 month ago
Real estate agent: 'Property Gallery', no 231 south terrace. 2 bike parking racks in front.

Full note

Created about 1 month ago
Real estate agent: 'Property Gallery', no 231 south terrace. 2 bike parking racks in front.

new note (near Fremantle, Western Australia, 6959, Australia)

Published 16 Jun 2018 by in OpenStreetMap Notes.

Comment

Created about 1 month ago
Hairdresser: 'Rock Paper Scissors'. No. 227 South Terrace.

Full note

Created about 1 month ago
Hairdresser: 'Rock Paper Scissors'. No. 227 South Terrace.

new note (near Fremantle, Western Australia, 6959, Australia)

Published 16 Jun 2018 by in OpenStreetMap Notes.

Comment

Created about 1 month ago
Shop: 'Vanilla Gifts', vanillagifs.com.au, no. 229 South Terrace.

Full note

Created about 1 month ago
Shop: 'Vanilla Gifts', vanillagifs.com.au, no. 229 South Terrace.

The River Knows

Published 16 Jun 2018 by jenimcmillan in Jeni McMillan.

DSC_0136

The village is a walk through ferns, following a goat track. I heard the goat herder’s wild animal cries at sunrise and the passing sounds of bells, bleats and hoofs sure-footed on stone. But I have no desire to go to the village. Instead I go to the waterfall to wash the city from my body and remember the sweet caress of the sun.


new note (near Claremont, Perth, Western Australia, 6010, Australia)

Published 16 Jun 2018 by in OpenStreetMap Notes.

Comment

Created about 1 month ago
dome has closed here. is empty place now.

Full note

Created about 1 month ago
dome has closed here. is empty place now.

MediaWiki 1.31 and "Error: your composer.lock file is not up to date"

Published 16 Jun 2018 by jww in Newest questions tagged mediawiki - Webmasters Stack Exchange.

We are trying to upgrade from MediaWiki 1.30 to 1.31. We downloaded mediawiki-1.31.0.tar.gz from the MediaWiki site. The tarball was unpacked overtop of the old MediaWiki installation after backing up files. After the unpack we restored the old LocalSettings.php.

We are at Step 6 of the MediaWiki upgrade instructions:

When we run the update script from the mediawiki directory we get:

# php maintenance/update.php

Notice: Undefined index: SERVER_NAME in /var/www/html/w/includes/GlobalFunctions.php on line 1432

Notice: Undefined index: SERVER_NAME in /var/www/html/w/includes/GlobalFunctions.php on line 1432
MediaWiki 1.31.0 Updater

oojs/oojs-ui: 0.23.0 installed, 0.26.4 required.
pear/mail: not installed, 1.4.1 required.
pear/mail_mime: not installed, 1.10.2 required.
pear/mail_mime-decode: not installed, 1.5.5.2 required.
wikimedia/at-ease: not installed, 1.2.0 required.
wikimedia/html-formatter: 1.0.1 installed, 1.0.2 required.
wikimedia/ip-set: 1.1.0 installed, 1.2.0 required.
wikimedia/object-factory: not installed, 1.0.0 required.
wikimedia/php-session-serializer: 1.0.4 installed, 1.0.6 required.
wikimedia/purtle: 1.0.6 installed, 1.0.7 required.
wikimedia/relpath: 2.0.0 installed, 2.1.1 required.
wikimedia/remex-html: 1.0.1 installed, 1.0.3 required.
wikimedia/running-stat: 1.1.0 installed, 1.2.1 required.
wikimedia/utfnormal: 1.1.0 installed, 2.0.0 required.
wikimedia/wrappedstring: 2.2.0 installed, 2.3.0 required.
Error: your composer.lock file is not up to date. Run "composer update --no-dev" to install newer dependencies

Followed by:

# composer update --no-dev
-bash: composer: command not found

I found one post about it on MediaWiki's help forum: update.php says composer.lock not up to date. It was not helpful.

This is a production web server and it is missing some of the dev tools. In fact, it is a CentOS 7 server with PHP 7.0 from a different repo so I am not even sure we can install the right version of composer.

(We had to use the external repo because the native PHP was 5.7 or 5.8, if I recall correctly. PHP 5.7 or 5.8 only supports MediaWiki 1.24 or so, so we had to update to get the latest MediaWiki with security fixes).

None of us are web developers or web server admins by trade. When problems crop up like a failed upgrade then we struggle if the upgrade notes don't include solutions that work for us.

I guess my first question is, is it possible to download a mediawiki-1.31.0 tarball with everything needed for the upgrade? If so, where is it?

If not, then what else can we do to finish this upgrade?


new note (near Fremantle, Western Australia, 6959, Australia)

Published 15 Jun 2018 by in OpenStreetMap Notes.

Comment

Created about 1 month ago
extra bit of the building here, with Gesha Coffee Co. cafe

Full note

Created about 1 month ago
extra bit of the building here, with Gesha Coffee Co. cafe

How to Debug Common.js in Chrome Dev Tools?

Published 15 Jun 2018 by johny why in Newest questions tagged mediawiki - Stack Overflow.

My MediaWiki:Common.js draws, and attaches an event to, a button.

$('#btnSave').html('<button>Send HTTP Post</button>');

How can i debug Common.js without first stepping through MW core code and jquery code?

I tried placing a debugger; flag in Common.js, but chrome didn't seem to notice it.

$(document).on('click', '#btnSave', function() { 
  debugger;
  $.ajax({
    url:"../api.php?action=edit&title=Portal:TagDescriptions&section=2&summary=Hello%20World",
    type:"POST",
    data:{ Text: "Hello, world.",
          token:"c30460d9159a5e2eccca60944ef286405b2393d1%2B%5C" },
    contentType:"application/x-www-form-urlencoded",
    dataType:"json",
    success: function(data) {
        $('#lblDescription').html(data);
    }
  })
}); 

How to automatically add a button at the end of every sub-heading in mediawiki 1.30?

Published 15 Jun 2018 by Vardaan in Newest questions tagged mediawiki - Stack Overflow.

I'm trying to add a button at the end of every subheading automatically in a mediawiki article. For this, I have decided to add the button code on the mediawiki page code(which is seen by ctrl+u). Now, I'm trying to locate the code for a subheading in the mediawiki directory. In which file is the code for sub-heading (or sub-sections) located? Or is there any extension I can use for the same?


pywikibot fails to upload large files

Published 15 Jun 2018 by Daniel Franklin in Newest questions tagged mediawiki - Stack Overflow.

On a Google Compute Engine Server (Linux instance-1 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1+deb9u1 (2018-05-07) x86_64 GNU/Linux), pywikibot fails to upload large files with the following error:

pywikibot.data.api.APIError: missingparam: One of the parameters "filekey", "file" and "url" is required. [help:See https://chinadigitaltimes.net/space/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt; for notice of API deprecations and breaking changes.] 1 pages read 0 pages written Script terminated successfully.

I need to upload files up to 2GB. How can I do this with pywikibot?


PHPWeekly June 14th 2018

Published 14 Jun 2018 by in PHP Weekly Archive Feed.

PHPWeekly June 14th 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 14th June 2018
Hello to the PHP community, and welcome to PHPweekly.com.

Are you are looking to recruit new staff?
Looking for a high standard of applicant?
Would you like to reach out to the PHP Community to fill your position? 
Where better to advertise your job openings then on phpweekly.com? 

Do you want to entice new talent, or new business, to your business?
How about sponsoring an edition of phpweekly.com?
A stand out advert at the top of our page will catch the eyes of our subscribers.

With our subscriber list nudging 20,000, you could just find exactly who, or what, you are looking for right here.

For more information drop me a line at katie@phpweekly.com.
 
Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

Symfony vs Laravel vs Nette - Which PHP Framework Should You Choose
I have been asked this question over hundred times, in person, as a post request. When to use Symfony? How is Laravel better than Symfony? What are Nette killer features compared to Symfony and Laravel? Today, we look on the answer.

20 Useful Laravel Packages Available on CodeCanyon
If you’re not familiar with the Laravel framework, then it’s time to discover what you’ve been missing by checking out these 20 popular Laravel tools and packages to be found at CodeCanyon.

Preface to idbg
We already have several options for debugging code within the PHP ecosystem. XDebug is extremely mature software, and phpdbg has been slowly gaining traction also, if for no other reason than it's very fast to collect code coverage compared to XDebug.

The Complete Guide to WordPress Performance Optimisation
WordPress can thank its simplicity and a low barrier to entry for this pervasiveness. It’s easy to set up, and requires next to no technical knowledge. Hosting for WordPress can be found for as little as a couple of dollars per month, and the basic setup takes just a half hour of clicking. Free themes for WordPress are galore, some with included WYSIWYG page builders.

Email News After GDPR
GDPR took effect last month, and many organisations sent policy updates to your inbox. We took action on our email lists to acquire explicit consent from all subscribers. You can read about other action we took to prepare for GDPR, but this post is all about what we communicate about through the Drupal email list.

Tutorials and Talks

Continuous Delivery with Jenkins and GitHub
If you can set up a project server once, you can set up Jenkins to deploy that project again and again as you develop, maintain, and expand it. In this post we will set up a multi-stage deploy server and the Jenkins jobs we need for continuous delivery. By the end you will know how to set up a server and Jenkins jobs to automatically deploy successfully built branches into each environment.

Understanding Design Patterns - Composite
Allows you to compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.

Building a PHP Framework: Part 4 – The Foundation
Part 3 was all about action – without actually taking any or writing any code. This installment will actually see the groundwork for the Analyze framework taking shape.

Serverless Laravel
Last week I introduced Bref as a solution to running PHP serverless. Today let’s try to deploy a Laravel application on AWS lambda using Bref. The code shown in this article is available on GitHub.

How to Count the Number of Lines of Code in a PHP Project
I'm giving a talk soon about Laravel and "the enterprise", and the concept of LOC (lines of code) keeps coming up. It turns out that's actually a much harder number to discover than you might think, so I figured I would write up a few options here.

PHP 7.3: A Look at JSON Error Handling
One of the new features coming to PHP 7.3 is better error handling for json_encode() and json_decode(). The RFC was unanimously accepted by a 23 to 0 vote. Let’s take a look at how we handle JSON errors in <= PHP 7.2, and the new improvements coming in PHP 7.3.

Send Emails in PHP Using Swift Mailer
In this article, we're going to explore the Swift Mailer library, which allows you to send emails from PHP applications. Starting with installation and configuration, we'll go through a real-world example that demonstrates various aspects of sending emails using the Swift Mailer library.

Road to Dependency Injection
I've worked with several code bases that were littered with calls to Zend_Registry::get(), sfContext::getInstance(), etc. to fetch a dependency when needed. I'm a little afraid to mention façades here, but they also belong in this list. The point of this article is not to bash a certain framework (they are all lovely), but to show how to get rid of these "centralised dependency managers" when you need to.

Using Composer with Serverless & OpenWhisk
Every PHP project I write has dependencies on components from Packagist and my Serverless OpenWhisk PHP projects are no different. It turns out that adding Composer dependencies is trivial.

How to Migrate From PHP_CodeSniffer to EasyCodingStandard in 7 Steps
Last year, I helped Shopsys Coding Standards and LMC PHP Coding Standard to migrate from PHP_CodeSniffer to EasyCodingStandard. There are a few simple A → B changes, but one has to know about them or will get stuck. Do you also use PHP_CodeSniffer and give it EasyCodingStandard a try? Today we look at how to migrate step by step.
 
Our PHP cheat sheet aims to help anyone trying to get proficient in or improve their knowledge of PHP. The programming language is among the most popular in web development. It lies at the heart of WordPress, the world’s most popular content management system, and also forms the base of other platforms like Joomla and Drupal.

News and Announcements

PHP 7.3.0 Alpha 1 Released
PHP team is glad to announce the release of the first PHP 7.3.0 version, PHP 7.3.0 Alpha 1. This starts the PHP 7.3 release cycle, the rough outline of which is specified in the PHP Wiki. For source downloads of PHP 7.3.0 Alpha 1 please visit the download page. Please carefully test this version and report any issues found in the bug reporting system.

CoderCruise - August 30-September 3rd 2018, Ft. Lauderdale, FL
Tired of the usual web technology conference scene? Want a more inclusive experience that lets you get to know your fellow attendees and make connections? Well, CoderCruise was designed to be just this. It's a polyglot developer conference on a cruise ship! This year we will be taking a 5-day, 4-night cruise out of Ft. Lauderdale, FL that includes stops at Half Moon Cay and Nassau. Tickets are on sale now.

WavePHP Conference - September 19th-21st 2018, San Diego
WavePHP Conference is bringing the wonderful PHP community to the Southwest United States. Designed to be a conference for both professionals and hobbyists alike. Held in beautiful southern California's San Diego County the area has ideal weather and tons of activities. Early Bird Tickets are on sale now.

Pan-Asian PHP Conference - September 26-29th 2018, Singapore
The third pan-Asian PHP conference will take place in September 2018 in Singapore - the Garden City of the East! This is a single track, 2 days Conference, followed by a day of tutorials on 29th September 2018. Come and meet with the fastest growing PHP communities in Asia. More than 300 attendees are expected in this single track conference, with Rasmus Lerdorf and Sebastian Bergmann already confirmed as speakers. Super Early Bird Tickets are on sale now.

Nomad PHP US - July 19th 2018 20:00 CDT
Better and Faster: TDD-ing a Ride-Hailing Application w/ PHPUnit, Symfony and Doctrine
Presented by Chris Holland. Imagine building an application without having to mess with a Web Browser, a REST client or a MySQL client. What if you could build full-blown functionality with realistic data operations within the comfort of a Unit Test Harness? What if this meant shipping code earlier and more frequently than you ever have before? Building upon concepts outlined in this talk: http://bit.ly/tdd-talk-2 , and leveraging an evolving “Kata” for building a “Ride-Hailing Application”, this exercise will walk thru a rapid-development example from a “clean-slate” Symfony3 project, with just enough bootstrapping to enable Test-Driven Development with PHPUnit & Doctrine.

Nomad PHP EU - July 19th 2018 20:00 CEST
The PHP Developer Stack for Building Chatbots. Presented by Christoph Rumpel. Facebook Messenger, WhatsApp, WeChat, Skype, and Telegram have more than three billion active users combined! This led messenger platforms to open their doors for application development on their chats and started the rise of these applications. We all know them today as chatbots. Chatbots are much more than a hype. They change the way we communicate with companies and are bringing customer support and personalisation to a new level. But what does the technology behind look like? In this talk, I will show you all the tools it takes to build a chatbot in PHP. You will see what it’s like developing and testing chatbots for multiple platforms and how NLP (Natural Language Processing) services can help you to understand the user.

Podcasts

Voices of the ElePHPant - Interview with Mike Stowe
Cal Evans Interviews Mike Stowe of Ring Central while at Longhorn PHP 2018.
 
Laravel Podcast Episode 13 - Interview: Adam Wathan, Co-Creator of Tailwind CSS and Laravel Educator
An interview with Adam Wathan, co-creator of the Tailwind CSS library and author and video producer.
 
Full Stack Radio Podcast Episode 90: David Hemphill - Using JSX with Vue.js
In this episode, Adam talks to David Hemphill about using JSX instead of templates in Vue.js, and why you might want to give it a try.

MageTalk Magento Podcast #172 – “The Magento Community Productivity Quotient”
"They thought I did it in Node.js and I did it in jQuery and they emoji'd me to death" Kalen reacts to the livestream and Phillip talks about the SD Accelerator, Magento 2.0 End of Life, long-term support, the coming onslaught of B2B into our Magento builds.

PHP Roundtable Podcast Episode 73: PHP Static Analysis
Static analysis is a fancy word to describe a tool that looks at our code and gives us helpful hints on how to improve it. We'll be discussing what static analysers do, which tools the PHP community has access to, and how we can incorporate the tools into our daily development flow.

PHP Ugly Podcast #108: This is American - Privacy Edition
This month the team discusses privacy and the lack of it, in our current government.

PHP Web Development Podcast Ep #2 - Dan’s Journey to Becoming a Lead Developer
This week I have the pleasure of speaking to Dan Blows ,Currently a tech lead, he has done some really cool stuff, he's in the top 3% on stack overflow, in the top 10% of PHP developers in Europe, speaking at meet ups , spoke in the European conference in front of 100's of people, training and mentoring junior developers and many more.

Reading and Viewing

Announcing Laravel Events
Laravel Events is a brand new community site that I created with the goal of helping keep the community informed of conferences, meetups, and other events. My goal is to pull over the events for the Laravel News homepage and also integrate with the weekly newsletter. If you run a meetup or local event go add your future meetings.

php[architect] Magazine June 2018 - Command and Control
Staying on top of what your code is doing is imperative if you want to keep your sanity. At the start, this means defining how and what your software does. Later, you have to track its evolution as you add features and fix bugs. In this issue, our contributors share techniques and tools to help you do so.

Startup Tips on How to Stay Motivated with Your Business Idea from 9 Key Influencers
Motivation is the Achilles heel for many entrepreneurs and startup owners. You’d assume that the more innovative an entrepreneur is, the more motivated he is to pursue his business or startup idea to fruition, right?

Coding Blocks for WordPress Gutenberg
WordPress is working on a dramatic redesign of their editor. It's called Gutenberg, and it aims to provide a true WYSIWYG experience by breaking up pieces of posts and pages into individual blocks of content. Of course, this brings some big changes for plugin and theme developers!

The Month in WordPress: May 2018
This month saw two significant milestones in the WordPress community — the 15th anniversary of the project, and GDPR-related privacy tools coming to WordPress Core. Read on to find out more about this and everything else that happened in the WordPress community in May.

Jobs





Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

FOSS Project Spotlight: The Codelobster IDE--a Free PHP, HTML, CSS and JavaScript Editor
The Codelobster free web language editor has been available for quite some time and has attracted many fans. It allows you to edit PHP, HTML, CSS and JavaScript files, and it highlights the syntax and provides hints for tags, functions and their parameters. This editor deals with files that contain mixed content easily as well.
 
nolovia
Nolovia is an ad/malware blocking configuration file generator for bind, NSD, and other DNS resolvers.

znframework
The basic principle of ZN Framework is to let users write simple and readable codes. Because of this principle, our libraries are built by using both dynamic and static access methods with a Powerful Autoloading Architecture.

datatables-bundle
This bundle provides convenient integration of the popular DataTables jQuery library for realtime Ajax tables in your Symfony 3.3+ or 4.0+ application.

pestle
A collection of command line scripts for Magento 2 code generation, and a PHP module system for organising command line scripts.

luthier-ci
An awesome set of core improvements for CodeIgniter 3 that makes the development of APIs (and websites in general) more easy!

boinc
Open-source software for volunteer computing and grid computing.

php-swagger-test
A set of tools for test your REST calls based on the swagger documentation using PHPUnit.

inphinit
PHP web application using Inphinit framework.

phpcompatibility
This is a set of sniffs for PHP CodeSniffer that checks for PHP version compatibility. It will allow you to analyse your code for compatibility with higher and lower versions of PHP.

intisp
IntISP is a hosting control panel that is designed to be light and fast. It uses only PHP and HTML with a few shell.

php-time-ago
Simple module, that displays the date in a "time ago" format.

generatedhydrator
A library about high performance transition of data from arrays to objects and from objects to arrays.

redismock
PHP 7.1 library providing a Redis PHP mock for your tests.

tracy
The addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

Funk ‘n Cider Music Finale

Published 14 Jun 2018 by Dave Robertson in Dave Robertson.

Share


Funk ‘n Cider Music Finale

Published 14 Jun 2018 by Dave Robertson in Dave Robertson.

Share


Can't upload files in Mediawiki

Published 13 Jun 2018 by Behiry in Newest questions tagged mediawiki - Stack Overflow.

After I've updated to Mediawiki 1.29.0, I can't upload any file. When I upload a file, I get this error message:

Could not open lock file for "mwstore://local-backend/local-public/b/b0/1.jpg".

I've chmod the folder images and sub-directories to 755, and verified that the folder images/b/b0 is found and writable.

I'm running on Centos 7.5 and PHP 5.6


W3C Strategic Highlights for Spring 2018 and Advisory Committee Meeting

Published 13 Jun 2018 by Jeff Jaffe in W3C Blog.

AC 2018 logo W3C held its annual meeting mid-May in Berlin, Germany. It was a very engaging meeting that many found excellent, with a good range of sessions, a clear structure and good audience participation. The W3C Advisory Board had worked very closely with me, feeling the pulse of the membership, understanding what topics needed conversation. The planning started as early as December, and a great deal of work went into creating the program.

I felt that this was a meeting where the Advisory Committee truly “advised”. There was much time scheduled for open discussion. This would have been boring if noone came to the microphone. But people came! With great input. Differences of opinion. Expressed with passion and respect. Striving for consensus on critical governance issues facing the consortium.

The agenda focused on governance, complemented with demonstrations of new technology and general web issues of the day. Here are a few highlights I would like to share publicly:

Our partnership with WHATWG

W3C management shared a proposal for a joint workmode with WHATWG on HTML, that was developed with the WHATWG Steering Group, and seeks to organize a partnership that has had ebbs and flows over a period of more than a decade. A set of terms were developed, but W3C management had not had an opportunity to socialize it, or get feedback, reaction, and support. A large number of people came to the microphone with diverse viewpoints. There was general support for the overall direction, but quite a few important suggestions about how to make the proposal even better were made and need to be further developed before broader socialization.

Diversity

A panel on diversity focused on progress we have made and how much more is required. A W3C Member came to the microphone to propose and agree to start funding “diversity tickets” for TPAC attendance. We discussed actions that W3C should take to promote diversity: including publishing our diversity statistics, encourage AC reps to nominate a more diverse set of people to run for Advisory Board and Technical Architecture Group Elections. This was further discussed at the AB May face-to-face meeting right after the AC Meeting and the team will help set this up.

I will soon write again about this.

Updates (CEO, TAG, demos, process)

As with any AC meeting part of the objective is to share information. I highlighted breakthrough success – in accessibility, payments, authentication, and fonts – as well as pointing to innovative directions in general. Dan Appelquist focused on the TAG’s continued efforts to address issues coming from many directions; particularly our Working Groups. Natasha Rooney described “W3C Process for Busy People” that intends to make our process more easily understandable.

Propaganda, misinformation and fake news

We had a very interactive panel about propaganda, misinformation and fake news, and the role of standards. Partly this was to inform and engage the AC with a topic currently on our periphery; partly this was to discuss work being incubated in our Community Groups which could become standards in the future; and partly it was to engage leading thinkers in our host country (Germany) in a topic of public interest.

Technical controversy

There has been some controversy in our community since the TAG published its finding on distributed and syndicated content, so we were treated to a dialog between the editor of the document and a leader in the AMP development organization to expose some different viewpoints on this question.

Invited Expert identity program

In conversations at the AC meeting as well as at the AB meeting, there was a feeling that we needed to do more for Invited Experts. At the Advisory Board meeting, they recommended that we raise TPAC registration fees for all registrants by 5% (with an opt-out possibility) to create a fund which would allow IEs with financial challenges to be exempted from registration fees. Additionally, the AB recommended that we create an Invited Expert Identity program, which would consist of a mailing list where to share experiences with each other – to become a community; and inviting this community to send an observer to AC meetings.

I will soon write again about this.

During the meeting we released the Spring 2018 W3C Strategic Highlights which gives an overview of recent highlights and work of consolidation, optimization, enhancement of the existing landscape, innovation, incubation, research. and the Road-map for the Web.


Semantic Media Wiki action=purge alternatives and automation

Published 13 Jun 2018 by Barnes in Newest questions tagged mediawiki - Stack Overflow.

I'm having an issue where pages with #ask queries aren't updating after updating content on other pages. The only way to get them to update seems to be using action=purge. Is there a maintenance script that will preform this across all pages? Which variables can I use to reduce the amount of time a page is cached? I'm having trouble determining which cache's I need to adjust.


Deploying a Multi-region Docker Registry to Improve Performance

Published 12 Jun 2018 by Jeff Zellner in The DigitalOcean Blog.

Deploying a Multi-region Docker Registry to Improve Performance

Over the past several years, containers in general, and Docker specifically, have become quite prevalent across industry. Containerization offers isolated and reproducible build and runtime environments in a simple and developer-friendly form. They make the entire software development process run a bit smoother, from initial development to deploying services in production. Orchestration frameworks like Kubernetes and Mesos offer robust abstractions of service components, which simplifies deployment and management.

Like many other tech companies, DigitalOcean uses containers internally to run production services. Quite a few of our services run inside Kubernetes, and a large slice of those run on an internal platform that we've built to abstract away some of the pain points for developers new to Kubernetes. We also use containers for CI/CD in our build systems, and locally for development. In this post, I’ll describe how we redesigned our Docker registry architecture for better performance. (You can find out more about how DigitalOcean used both containers and Kubernetes in a talk by Joonas Bergius, and more about our internal platform, DOCC, in this talk by Mac Browning.)

Simple beginnings and growing pains

Initially, to host our private Docker images, we set up a single server running the official Docker registry, backed by object storage. This is a common, simple pattern for private registries, and it worked well early on. By relying on a consistent object store for backing storage, the registry itself doesn’t have to worry about consistency. However, with a single registry instance, there are still performance and availability bottlenecks, as well as a dependency on being able to reach the region running the registry.

As our use of containers grew, we started to experience general performance issues such as slow or failing image pushes. A simple solution for this would be to increase the number of registry instances running, but we’d still have a dependency on the single region being available and reachable from every server.

Additionally, the default behavior of the official Docker registry is to serve the actual image data via a redirect to the backing store. This means a request from a client arrives at the registry server, which returns a HTTP redirect to object storage (or whatever remote backend you have configured the registry to use). One unique issue that we encountered was a large deployment of large Docker images (~10GB) spiking bandwidth to our storage backend. Hundreds of clients requested a new, large image at the same time, saturating our connection to storage from our data center. Running multiple instances of the registry wouldn’t solve this issue—all the data would still come from the backing store.

Design goals

We decided it was time to to overhaul our Docker registry architecture, with a few primary goals in mind:

Architecture choices

We operate relatively large Kubernetes clusters in every DigitalOcean region, so using the fundamental building blocks that Kubernetes and our customizations offer was a logical choice. Kubernetes provided us with great primitives like scaling deployments and simple rolling deploys. Additionally, we have lots of internal tooling for running, monitoring, and managing services running inside Kubernetes.

For caching, we decided to take advantage of the Docker registry’s ability to disable redirects. Disabling redirection causes the registry server to retrieve image data, and then send it directly to the client, instead of redirecting the request to the backend store. This adds a bit of latency to the initial response, but enables us to put a caching proxy like Squid in front of the registry and serve cached data without transiting to the backing store on subsequent requests.

At this point, we had a good idea of how to run multiple caching registries in every region, but we still needed a way to direct clients to request Docker images from the registry in their region, instead of a single global one. To accomplish this, we created a new DNS zone that was not shared between regions, so that clients in each region could resolve the DNS address of our registry to the local region's registry deployment, instead of to a single registry located in a different region.

Implementation details

The registry configuration we ended up using was rather standard, using a storage backend configured with access key and secret key. The one important bit, as previously mentioned was disabling redirect:

storage:  
  redirect:
    disable: true

For caching image data locally with the registry, we chose to use Squid. Each instance of the registry would be deployed with its own Squid instance, with its own cache storage. This approach was simple to set up and configure, but does have drawbacks: notably, that each instance of the registry has its own independent cache. This means that in a deployment of multiple instances, multiple identical requests directed to different backing instances could result in several cache misses, one for each instance of the registry and cache. There's room for future improvement here, setting up a larger, shared cache that all registry instances in a region sit behind. Any local caching at all was a big improvement over our original setup, so it was an okay tradeoff to make in our initial work.

To configure Squid, we wrote a simple configuration to listen for HTTPS connections and to send all cache misses to the local registry:

https_port 443 accel defaultsite=dockerregistry no-vhost cert=cert.pem key=key.pem  
...
cache_peer 127.0.0.1 parent 5000 0 no-query originserver no-digest forceddomain=dockerregistry name=upstream login=PASSTHRU ssl  
acl site dstdomain dockerregistry  
http_access allow site  
cache_peer_access upstream allow site  
cache allow site  

Once we had written the registry and Squid configuration, we combined the two pieces of software to run together in a Kubernetes deployment. Each pod would run an instance of the registry and an instance of Squid, with its own temporary disk storage. Deploying this across our regional Kubernetes clusters was straightforward.

apiVersion: extensions/v1beta1  
kind: Deployment  
metadata:  
  name: registry
spec:  
  replicas: 3
  template:
    spec:
      volumes:
        - name: registry-config
          configMap:
            name: registry-config
        - name: squid-config
          configMap:
            name: squid-config
        - name: cache
          emptyDir: {}
      containers:
        - name: registry
          image: registry:2.6.2
          volumeMounts:
            - name: registry-config
              mountPath: /etc/docker/registry/config.yml
              subPath: config.yml
        - name: squid
          image: squid:3.5.12
          ports:
            - containerPort: 443
          volumeMounts:
            - name: squid-config
              mountPath: /etc/squid/squid.conf
              subPath: squid.conf
            - name: cache
              mountPath: /cache

The last bit of remaining work was enabling ingress to our new registry, which we did using our existing HAProxy ingress controllers. We terminate TLS with Squid, so HAProxy is only responsible for forwarding TCP traffic to our deployment.

apiVersion: extensions/v1beta1  
kind: Ingress  
metadata:  
  name: docker
spec:  
  rules:
    - host: dockerregistry
      http:
        paths:
          - path: /
            backend:
              serviceName: docker
              servicePort: 443
  tls:
    - hosts:
        - dockerregistry
      secretName: not_needed

Conclusion

In conclusion, this registry architecture has been working well, providing much quicker pulls and pushes across all of our data centers. With this setup, we now have Docker registries running in all of our regions, and no region depends on reaching another region to serve data. Each registry instance is now backed by a Squid caching proxy, allowing us to keep many requests for the same data entirely in cache, and entirely local to the region. This has enabled larger deploys and much higher pull performance.

Future improvements will be made around metrics instrumentation and monitoring. While we currently compute metrics by scraping the registry logs, we're looking forward to the Docker registry including Prometheus metrics natively. Additionally, creating a shared regional cache for our registry deployments should provide a nice performance boost and reduce the number of cache misses we see in operation.

Jeff Zellner is a Senior Software Engineer on the Delivery team, where he works on providing infrastructure and automation around Kubernetes to the DigitalOcean engineering organization at large. He's a long-time remote worker, startup-o-phile, and incredibly good skier.


Episode 10: Ben Fletcher

Published 12 Jun 2018 by Yaron Koren in Between the Brackets: a MediaWiki Podcast.

Ben Fletcher is a systems architect at the Information Systems and Services (ISS) cluster for the UK Ministry of Defence (MoD). He helped to select MediaWiki for use at the MoD in 2016, and currently does MediaWiki-related work full-time.

Links for some of the topics discussed:


Installing MediaWiki and Configuring It on a Hosted Server

Published 11 Jun 2018 by N Vora in Newest questions tagged mediawiki - Stack Overflow.

I am trying to create a wiki on a hosted server using MediaWiki. I have downloaded and extracted the files from MediaWiki into my server space. I also have Xampp, which comes with PHP 7.2, and I have activated Apache and MySQL using the Xampp Control Panel. We have followed the instructions listed on https://www.mediawiki.org/wiki/Manual:Installing_MediaWiki and am trying to run the installation script as instructed by https://www.mediawiki.org/wiki/Manual:Config_script . However, the installation script is not running, and when I try to open the link that my wiki is supposed to be hosted on, I am presented with this this. What should I do to be able to run the installation script? Thank you very much!


Do Not Track and the GDPR

Published 11 Jun 2018 by Mike O'Neill in W3C Blog.

The Tracking Protection Working Group (TPWG) has been engaged with issues of online data protection, privacy and tracking since 2011. Its Tracking Protection Expression draft recommendation (TPE), substantially completed in 2013, first became a Candidate Recommendation (CR) in August 2015.The main feature of the TPE, the DNT request header, is now implemented by all the major browsers via a general preference setting, with the JavaScript API for registering a site-specific preference implemented by browser extensions, as well as Microsoft’s Internet Explorer and Edge browsers.

The DNT header indicates settings that a user has made within their browser, either directly or mediated by script on a page, to indicate their preference of agreeing or declining to be tracked. Once a “general preference” is configured, browsers add the DNT header to all HTTP requests, including requests to be sent to embedded sub-resources. The header value can either start with “1”, meaning “Do Not Track”, or “0” signifying “this user has agreed to tracking for the purposes explained”. There is a defined JavaScript API letting a browsing context change the DNT setting for its own domain origin, or for the domain origin of its embedded sub-resources – so called “site-specific” consent.

GDPR & ePrivacy

The General Data Protection Regulation (EU) 2016/679, which has just come into force, is important for web privacy because it clarifies what makes for valid user consent in more detail than the Data Protection Directive that preceded it. The existing ePrivacy Directive (introduced in 2002, amended 2009) requires prior user consent for access to storage in browsers, other than for a restricted set of exempted purposes, and now for consent to be valid it must meet its description in the GDPR. Consent must not only be freely given, specific, informed and unambiguous, it must be indicated by the user’s affirmative act – it is no longer enough to display “implied consent” notices, pre-selected checkboxes, or cookie walls, and it must be as easy for users to withdraw consent as to give it.

The GDPR also introduces much larger fines, making data and privacy protection a board level topic.

There is also a new ePrivacy Regulation (ePR) in the works, aimed at replacing the ePrivacy Directive. Although the European Parliament completed its deliberations last year, and voted through its own draft text, the European Council has dragged its feet somewhat. Even so, the important trilogue discussions between the European Parliament, Council and Commission, aimed at finalising the text, are expected to start soon. DNT

DNT

DNT is a highly efficient way to convey user consent to web servers because the header is always present in every request. A JavaScript global property also allows a browsing context, say for an iframe tag or a first-party page, to immediately determine the current setting. Although HTTP cookies can of course also encode a consent signal, there is no way to selectively include them in sub-resource requests, as cookies once stored will always be sent to their respective domain origins (i.e. to access third-party resources on any first-party site), and moreover there is no simple or efficient API a browsing context can use to set cookies for its embedded sub-resource domains.

The TPE also defines a JSON resource, called the Tracking Status Resource (TSR), to be made available by domains that implement DNT, located at a well-known path (/.well-known/dnt/). This resource enables domains to declare their identity, policy for tracking, and other important items, important so that browsers can show users the servers being enlisted to supply content for a page, to support the now legally required transparency. European data protection and privacy law requires that users be able to determine who they may be tracked by, for what purpose, and give their informed and specific consent if they freely choose to.

The Tracking Protection Working Group was chartered in 2017 to demonstrate the viability of TPE to address the requirements for managing cookie and tracking consent that satisfies the requirements of EU privacy legislation”. This resulted in a new CR for the TPE in October 2017 which included improvements for the Javascript API and other elements.

Later further changes in the draft were put forward to meet the requirements for the European Parliament’s agreed text for the EU’s ePrivacy Regulation, and to allow for the communications of agreed purposes requested by the AdTech or “industry side” group members. The API was extended so that a site-specific signal was available to indicate the required right-to-object for permitted “web audience measurement”(A8.1d in the European Parliament’s ePR text), i.e. to send a DNT:1 header to certain domains even if the general preference had not been set, and to define an extension to the header so that a purpose descriptor could be sent when consent had been given, i.e. an extension to the DNT:0 header. A new “purposes” property for the TSR was defined whereby a server can indicate, via a dynamically created web page, the purposes the user has agreed to by decoding the new extension field in the incoming DNT header.

Implementation

Now that the GDPR is in force, and the ePrivacy regulation final text hopefully soon to be agreed, the fact that a CR exists for efficient signalling of user consent may encourage browser providers to implement or update their DNT implementations.

If they do, DNT would offer a much better signalling method for user consent than techniques based on HTTP cookies. Third-party cookies as presently constituted cannot convey site-specific consent1, and it is unlikely that users, once they have been made aware of their right to give their prior consent, will agree if their only option is to be tracked across the entire web. Although the IAB EU’s recently introduced Consent and Transparency Framework (CTF) allows for consent to be recorded in first-party cookies, and so site-specifically, there is no mechanism to persist it within a sub-resource context without using a third-party cookie (or other domain specific storage), which is then incapable of recording the site-specific context. Without persistence the efficiency of indicating consent to third-parties becomes a problem.

In DNT the browser absolutely determines which domain receives the consent signal, within the parameters of the Same Origin Policy and, while it does not need the elaborate encoding of party identity, with its attendant fingerprinting risks, underlying the CTF’s “daisybit” identifier, this can still be incorporated in a consent-based protocol where the “daisybit” is only sent to the parties the user has agreed to. This could give the online advertising industry, the publishers that rely on it, and web users a win-win outcome – good for data protection, privacy and commerce.

Extensions

The architecture of the DNT protocols has been designed to be extensible, and there have been discussions in the TPWG about additions that could help publishers and advertisers improve efficiency by extending the protocols for consent-contingent targeting and privacy-oriented audience measurement. If representatives from publishing and advertising wish to engage with that, the TPE is a great base to build on. We have had a charter extension till September but if new members with a commitment to engage were to appear, we should be able to extend it further.


Mike O’Neill is an Invited Expert in the Tracking Protection WG


Running WikiMedia lua script or expanding API module output

Published 9 Jun 2018 by Andrew in Newest questions tagged mediawiki - Stack Overflow.

I have two specific questions and I hope someone can answer either of them:

  1. Is there a way to provide MediaWiki's mw library to a stand-alone lua script?
  2. Is there an API command or property that exposes the output of a dynamic module?

Background: I am trying to figure out how to access the output of a wiktionary module (in this case, pron-th). This is a module that can be dynamically inserted by editors to show transliteration (pronunciation) of Thai words. For example, whenever an editor has added this line:

 {{th-pron|ไคฺร่}}

...the server will run the Lua script documented found here and outputs a table showing the various transliterations (example). However, this output is specifically excluded when doing API requests (example) and I cannot find an endpoint that includes this data. And running the lua script directly fails because it is missing several imports, such as mw.ustring, mw.text, etc., which I believe are defined in a PHP include higher up their software stack. I have significant PHP experience but none with Lua, so I am sort of at a loss here.

Short of calling up each page directly and scraping the data, I can't think of a way to do this.


localhost/mediawiki-1.30.0/ in browser returns run(); in Firefox and file content in Chromium

Published 9 Jun 2018 by Tommy Pollák in Newest questions tagged mediawiki - Ask Ubuntu.

After updating from Ubuntu 17.10 to 18.04 my Wiki stopped working.

My system looks like:

~$ ls /var/www/html/mediawiki-1.30.0/
api.php                     img_auth.php             phpcs.xml
autoload.php                includes                 profileinfo.php
cache                       index.php                README
CODE_OF_CONDUCT.md          INSTALL                  RELEASE-NOTES-1.30
composer.json               jsduck.json              resources
composer.local.json-sample  languages                serialized
COPYING                     load.php                 skins
CREDITS                     LocalSettings.php        StartProfiler.sample
docs                        LocalSettings.php~       tests
extensions                  maintenance              thumb_handler.php
FAQ                         mediawiki-1.30.0         thumb.php
Gruntfile.js                mediawiki-1.30.0.tar.gz  UPGRADE
HISTORY                     mw-config                vendor
images                      opensearch_desc.php

and directing Firefox to http://localhost/mediawiki-1.30.0/ makes it display run(); whereas Chromium displays:

<?php
/**
 * This is the main web entry point for MediaWiki.
 *
 * If you are reading this in your web browser, your server is probably
 * not configured correctly to run PHP applications!
 *
 * See the README, INSTALL, and UPGRADE files for basic setup instructions
 * and pointers to the online documentation.
 *
 * https://www.mediawiki.org/wiki/Special:MyLanguage/MediaWiki
 *
 * ----------
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 * http://www.gnu.org/copyleft/gpl.html
 *
 * @file
 */

// Bail on old versions of PHP, or if composer has not been run yet to install
// dependencies. Using dirname( __FILE__ ) here because __DIR__ is PHP5.3+.
// @codingStandardsIgnoreStart MediaWiki.Usage.DirUsage.FunctionFound
require_once dirname( __FILE__ ) . '/includes/PHPVersionCheck.php';
// @codingStandardsIgnoreEnd
wfEntryPointCheck( 'index.php' );

require __DIR__ . '/includes/WebStart.php';

$mediaWiki = new MediaWiki();
$mediaWiki->run();

I had this happen before and I got an answer that solved the problem. However, I can not find the answer any longer, thus I must ask the question again.

I think the answer was a configuration item but which? Configuration of apache2, php7.2 or mediawiki?


Where does the MediaWiki software store the database name and password?

Published 9 Jun 2018 by Dale in Newest questions tagged mediawiki - Stack Overflow.

Where does the MediaWiki software store the database name and password?

I've checked the database layout and I couldn't find any information about it.


How to remove categories from the all categories page in MediaWiki?

Published 9 Jun 2018 by Mark in Newest questions tagged mediawiki - Stack Overflow.

I have a MediaWiki website and I was experimenting with categories. When you delete a page it is not shown at the All Pages as desired. However when I delete a category it remains in the All Categories page. So my question is how can I remove categories that have 0-items?


Customizing Wikibase config in the docker-compose example

Published 9 Jun 2018 by addshore in Addshore.

Just over a month ago I setup the Wikibase registry project on Wikimedia Cloud VPS using the docker-compose example provided by Wikibase docker images. The Wikibase registry is the first Wikibase install that I control that uses the Wikibase docker images, so I’ll be using it as an example showing how the docker images can be manipulated to configure MediaWiki, Wikibase, and load custom extensions and skins.

The example docker-compose file at the time of writing this post can be found at https://github.com/wmde/wikibase-docker/blob/5919016eac16c5f0aefc448240fdf6a09bb56bec/docker-compose.yml

Since the last blog post new wikibase image tags have been created (the ‘bundle’ tags) that include some extensions you might want to enable, as well a quickstatements image for the quickstatements service used on Wikidata written by Magnus Manske.

Reloading currently running services

Before we learn how to change configuration and alter the default containers we need to know how to reload them to pull in the changes.

To reload a single service from the docker compose example you can use the following command example from the directory of your docker-compose file, which will create a new container for the wikibase service:

docker-compose up --no-deps -d wikibase

Using volume mounts

Changing basic configuration

Everyone using the wikibase docker images will likely want to change some configuration, be it a logo, website description or a change of language.

For a few configuration settings the ENV vars provided as part of the image can be used, although these generally only cover connecting services together such as DB_SERVER, DB_USER, DB_PASS and DB_NAME. Other ENV vars exist and are documented by the image README file.

For everything else you’ll want to change LocalSettings.php directly. Docker and docker-compose allow you to override files in an image while running a container using volumes.

Example volume mount

The docker-compose example file already contains examples of volume use by mounting persistent volumes into the running containers. For the wikibase image this can be seen in the docker-compose file with the below snippet which mounts a persistent docker volume called ‘mediawiki-images-data’ to /var/www/html/images within the container.

volumes:
      - mediawiki-images-data:/var/www/html/images

If we wanted to have the images directory be mounted from our host disk rather than using a docker volume we could instead change this to the snippet below:

volumes:
      - ./images:/var/www/html/images

Note: If you already had images saved in the ‘mediawiki-images-data’ volume this would not copy them to the local images directory. The directory would start as an empty directory and you would have to copy the files from the docker volume. You will also have to make sure that the correct permissions have been set to allow the user running in the wikibase container to write to the local directory.

Volume mount LocalSettings

The wikibase docker image README file (which in its current version can be found here) provides various files and directories of interest that a user might want to override. These include 2 locations for LocalSettings that may be of interest:

The LocalSettings template continues to get passed through the envsubst command in the container entrypoint in a command similar to the below (with DOLLAR being substituted to a real $):

export DOLLAR='$'
envsubst < /LocalSettings.php.template > /var/www/html/LocalSettings.php

Using the same volume mounting technique described in the section above we can mount local files over these image provided files:

volumes:
      - ./images:/var/www/html/images
      - ./LocalSettings.php.template:/LocalSettings.php.template

The default LocalSettings.php.template can then be provided on your host and modified, for example a logo is added in the configuration below, which can be seen on this github gist:

Using this method all you need to know if the correct MediaWiki or Wikibase configuration option that you wish to change and follow the regular documentation.

Shoehorning in extensions & skins

The volume mounting method can be used to rather ungracefully shoe horn extensions into the image container.

Extensions can be cloned onto disk:

user@wbregistry-01:/srv/wbrdc# git clone https://github.com/wikimedia/mediawiki-extensions-Nuke.git extensions/Nuke
user@wbregistry-01:/srv/wbrdc# git clone https://github.com/wikimedia/mediawiki-extensions-ConfirmEdit.git extensions/ConfirmEdit

Directories can mounted to locations in the containers in the docker-compose file:

volumes:
      - mediawiki-images-data:/var/www/html/images
      - ./LocalSettings.php:/var/www/html/LocalSettings.php:ro
      - ./Nuke:/var/www/html/extensions/Nuke
      - ./ConfirmEdit:/var/www/html/extensions/ConfirmEdit

And configuration added to our LocalSettings (here using the LocalSettings file directly rather than the template):

wfLoadExtension( 'Nuke' );

wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/QuestyCaptcha' ]);
$wgCaptchaQuestions = [
        'Question 1' => 'Response 1',
        'Question 2' => 'Repsonse 2',
];
$wgCaptchaTriggers['create'] = true;

With a quick service reload both extensions should be visible on the MediaWiki Special:Version page.

Custom Dockerfile & image

For a more permanent solution you probably want to create your own Dockerfile and docker images.

Documentation for this process can be found here.

The post Customizing Wikibase config in the docker-compose example appeared first on Addshore.


Is MediaWiki still the main software used to run Wikipedia?

Published 8 Jun 2018 by Jean-Pierre Coffe in Newest questions tagged mediawiki - Stack Overflow.

I was wondering if Wikipedia still uses the last MediaWiki version or does it run on a heavily modified version ?

Especially regarding WikiText and the MediaWiki syntax, I wonder if they are different at all (asides from the templates).


An imperfect migration story

Published 8 Jun 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Over the past six years as a digital archivist at the Borthwick Institute I have carried out a very very small amount of file migration. The focus here has been on getting things 'safe', backed up and documented (along with running a few tools to find out what exactly we have and ensure that what we have doesn't change).

I've been deliberately avoiding file migration because:

  1. there is little time to do this sort of stuff 
  2. we don't have a digital archiving system in place
  3. we don't have a means to record the PREMIS metadata about the migrations (and who wants to create PREMIS by hand?)


The catalyst for a file migration

Recently I had to update my work PC to Windows 10.

Whereas colleagues might be able to just set this upgrade off and get it done while they had lunch, I left myself a big chunk of time to try and manage the process. As a digital archivist I have downloaded and installed lots of tools to help me do my job - some I rely on quite heavily to help me ingest digital content, monitor files over time and understand the born digital archives that I work with.

So, I wanted to spend some time capturing all the information about the tools I use and how I have them set up before I can upgrade, and then more time post-upgrade to get them all installed and configured again.

...so with a bit of thought and preparation, everything should be fine...shouldn't it?

Well it turns out everything wasn't fine.


Backwards compatibility is not always guaranteed

One of the tools I rely on and have blogged about previously is Quick View Plus. I have been using Quick View Plus version 12 for the last 6 years and it is a great tool for viewing a range of files that I might not have the software to read otherwise.

In particular it was invaluable in allowing me to access and identify a set of WordStar 4.0 files from the Marks and Gran archive. These files were not accessible through any of the other software that was available to me (apart from in a version of WordStar I have installed on an old Windows 98 PC that I keep under my desk for special occasions).

But when I tried to install Quick View Plus 12 on my PC after upgrading to Windows 10 I discovered it was not compatible with Windows 10.

This was an opportunity to try out a newer version of the Quick View Plus software, so I duly downloaded an evaluation copy of Quick View Plus 2017. My first impressions were good. It seemed the tool had come along a bit in the last few years and there was some nice new functionality around the display of metadata (a potential big selling point for digital archivists).

However, when I tried to open some of the 120 or so WordStar files we have in our digital archive I discovered they were no longer supported.

They were no longer identified as WordStar 4.0.

They were no longer displaying correctly in the viewer.

They looked just like they do in a basic text processing application

...which isn't ideal because as described in the PRONOM record for WordStar 4.0 files:

"On the surface it's a plain text file, however the format 'shifts' the last byte of each word. Effectively it is 'flipping' the first bit of the ASCII character from 0 to 1. so a lower case 'r' (hex value 0x72) becomes 'ò' (hex value 0xF2); lower case 'd' (hex 0x64) becomes 'ä' (hex 0xE4) and so on."

This means that viewing a WordStar file in an application that doesn't interpret and decode this behaviour can be a bit taxing for the brain.

Having looked back at the product description for Quick View Plus 2017 I discovered that WordStar for DOS is one of their supported file formats. It seems this functionality had not been intentionally deprecated.

I emailed Avantstar Customer Technical Support to report this issue and with a bit of testing they confirmed my findings. However, they were not able to tell me whether this would be fixed or not in a future release.


A 'good enough' rescue

This prompted me to kick off a little rescue mission. Whilst we still had one or two computers in the building on Windows 7, I installed Quick View Plus 12 on one of them and started a colleague off on a basic file migration task to ensure we have a copy of the files that can be more easily accessed on current software.

A two-pronged attack using limited resources is described below:

Files were saved with the same names as the originals (including the use of SHOUTY 1980's upper case) but with new file extensions. Original file extensions were also captured in the names of these migrated files. This is because (as described in a previous post) users of early WordStar for DOS packages were encouraged to make use of the 3 character file extension to add additional contextual information related to the file (gulp!).

The methodology was fully documented and progress has been noted on a spreadsheet. In the absence of a system for me to record PREMIS metadata, all of this information will be stored alongside the migrated files in the digital archive.


Future work

We've still got some work to do. For example some spot checking against the original files in their native WordStar environment - I believe that the text has been captured well but that there are a few formatting issues that I'd like to investigate.

I'd also like to use VeraPDF to check whether the PDF/A files that we have created are actually valid (am keeping my fingers firmly crossed!).

This was possibly not the best thought out migration strategy but as there was little time available my focus was to come up with a methodology that was 'good enough' for enabling continued access to the content of these documents. Of course the original files are also retained and we can go back to these at any time to carry out further (better?) migrations in the future.*

In the meantime, a follow up e-mail from Avantstar Technical Support has given me an alternative solution. Apparently, Quick View Plus version 13 (which our current licence for version 12 enables us to install at no extra cost) is compatible with Windows 10 and will enable me to continue to view WordStar 4.0 files on my PC. Good news!



* I'm very interested in the work carried out at the National Library of New Zealand to convert WordStar to HTML and would be interested in exploring this approach at a later date if resources allow.

An imperfect migration story

Published 8 Jun 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Over the past six years as a digital archivist at the Borthwick Institute I have carried out a very very small amount of file migration. The focus here has been on getting things 'safe', backed up and documented (along with running a few tools to find out what exactly we have and ensure that what we have doesn't change).

I've been deliberately avoiding file migration because:

  1. there is little time to do this sort of stuff 
  2. we don't have a digital archiving system in place
  3. we don't have a means to record the PREMIS metadata about the migrations (and who wants to create PREMIS by hand?)


The catalyst for a file migration

Recently I had to update my work PC to Windows 10.

Whereas colleagues might be able to just set this upgrade off and get it done while they had lunch, I left myself a big chunk of time to try and manage the process. As a digital archivist I have downloaded and installed lots of tools to help me do my job - some I rely on quite heavily to help me ingest digital content, monitor files over time and understand the born digital archives that I work with.

So, I wanted to spend some time capturing all the information about the tools I use and how I have them set up before I can upgrade, and then more time post-upgrade to get them all installed and configured again.

...so with a bit of thought and preparation, everything should be fine...shouldn't it?

Well it turns out everything wasn't fine.


Backwards compatibility is not always guaranteed

One of the tools I rely on and have blogged about previously is Quick View Plus. I have been using Quick View Plus version 12 for the last 6 years and it is a great tool for viewing a range of files that I might not have the software to read otherwise.

In particular it was invaluable in allowing me to access and identify a set of WordStar 4.0 files from the Marks and Gran archive. These files were not accessible through any of the other software that was available to me (apart from in a version of WordStar I have installed on an old Windows 98 PC that I keep under my desk for special occasions).

But when I tried to install Quick View Plus 12 on my PC after upgrading to Windows 10 I discovered it was not compatible with Windows 10.

This was an opportunity to try out a newer version of the Quick View Plus software, so I duly downloaded an evaluation copy of Quick View Plus 2017. My first impressions were good. It seemed the tool had come along a bit in the last few years and there was some nice new functionality around the display of metadata (a potential big selling point for digital archivists).

However, when I tried to open some of the 120 or so WordStar files we have in our digital archive I discovered they were no longer supported.

They were no longer identified as WordStar 4.0.

They were no longer displaying correctly in the viewer.

They looked just like they do in a basic text processing application

...which isn't ideal because as described in the PRONOM record for WordStar 4.0 files:

"On the surface it's a plain text file, however the format 'shifts' the last byte of each word. Effectively it is 'flipping' the first bit of the ASCII character from 0 to 1. so a lower case 'r' (hex value 0x72) becomes 'ò' (hex value 0xF2); lower case 'd' (hex 0x64) becomes 'ä' (hex 0xE4) and so on."

This means that viewing a WordStar file in an application that doesn't interpret and decode this behaviour can be a bit taxing for the brain.

Having looked back at the product description for Quick View Plus 2017 I discovered that WordStar for DOS is one of their supported file formats. It seems this functionality had not been intentionally deprecated.

I emailed Avantstar Customer Technical Support to report this issue and with a bit of testing they confirmed my findings. However, they were not able to tell me whether this would be fixed or not in a future release.


A 'good enough' rescue

This prompted me to kick off a little rescue mission. Whilst we still had one or two computers in the building on Windows 7, I installed Quick View Plus 12 on one of them and started a colleague off on a basic file migration task to ensure we have a copy of the files that can be more easily accessed on current software.

A two-pronged attack using limited resources is described below:

Files were saved with the same names as the originals (including the use of SHOUTY 1980's upper case) but with new file extensions. Original file extensions were also captured in the names of these migrated files. This is because (as described in a previous post) users of early WordStar for DOS packages were encouraged to make use of the 3 character file extension to add additional contextual information related to the file (gulp!).

The methodology was fully documented and progress has been noted on a spreadsheet. In the absence of a system for me to record PREMIS metadata, all of this information will be stored alongside the migrated files in the digital archive.


Future work

We've still got some work to do. For example some spot checking against the original files in their native WordStar environment - I believe that the text has been captured well but that there are a few formatting issues that I'd like to investigate.

I'd also like to use VeraPDF to check whether the PDF/A files that we have created are actually valid (am keeping my fingers firmly crossed!).

This was possibly not the best thought out migration strategy but as there was little time available my focus was to come up with a methodology that was 'good enough' for enabling continued access to the content of these documents. Of course the original files are also retained and we can go back to these at any time to carry out further (better?) migrations in the future.*

In the meantime, a follow up e-mail from Avantstar Technical Support has given me an alternative solution. Apparently, Quick View Plus version 13 (which our current licence for version 12 enables us to install at no extra cost) is compatible with Windows 10 and will enable me to continue to view WordStar 4.0 files on my PC. Good news!



* I'm very interested in the work carried out at the National Library of New Zealand to convert WordStar to HTML and would be interested in exploring this approach at a later date if resources allow.

Mediawiki file upload final steps fail

Published 8 Jun 2018 by arne in Newest questions tagged mediawiki - Server Fault.

I have a mediawiki set up on an IIS7 server. It was set up as described in the manual. I activated file upload as described here. I think I've got the folder permissions right: modify-read-write for the IIS_IUSRS group on the images subdir of the mediawiki install. My php.ini also allows file uploads.

When I try to upload a png image, I can see a temporary file with a name of phpF267.tmp being created in a temp folder that is obviously a png file (magic header). However, Mediawiki tells me that it was unable to open the lock file for mwstore://local-backend/local-public/f/f1/bla.png and does not copy the file. It does not even create the directories f/f1 in the images folder.

Any ideas what might be wrong?


Do Not Track at Read the Docs

Published 7 Jun 2018 by David Fischer in Read the Docs Blog.

Today, we are pleased to announce that Read the Docs honors Do Not Track (DNT). DNT is a browser preference that requests that a user not be tracked across the internet while browsing the web.

While there isn’t a consensus on precisely what DNT should mean, we are following the Electronic Frontier Foundation’s (EFF) guidelines for Do Not Track as we believe that gives a good balance between the privacy expectations of users and the reality of running a business and keeping Read the Docs sustainable.

What we implemented

Not much needed to change to make Read the Docs support DNT and many of these changes were already necessary for the EU’s new privacy regulation.

Here’s a brief list of what we did for Do Not Track:

  • Our logs that store any personal data are deleted after no more than ten days. We do this for all users even those who don’t have DNT enabled.
  • When a user has DNT enabled, we do not send data to our analytics. Based on our initial data, this looks like about a 6% reduction.
  • While this didn’t change, we reiterated that we do not do behavioral ad targeting regardless of DNT preference.

Full details on Do Not Track at Read the Docs can be found in our privacy policy.

What DNT means for our advertising

Advertising at Read the Docs was already built with privacy in mind. With our Ethical Ads, we previously committed to not tracking users, not selling user data, and hosting ads ourselves which all align perfectly with Do Not Track.

Our support for DNT formalizes our commitment to the high standards for privacy produced by the EFF. It also make us one of very few ad networks that honor Do Not Track.

The Ethical Ad Network

In a previous post, we mentioned that we are taking the same developer-centric, privacy-focused advertising we have on Read the Docs and expanding this to a larger ad network for open source infrastructure.

Supporting Do Not Track is an important milestone along the way as it confirms our commitment to privacy in advertising. We believe that ads don’t have to track people to be effective.

Our Ethical Ad network is still in its early stages, but if you want to know more or you know a project that could use it, please get in touch.


Use mediawiki functions in code

Published 7 Jun 2018 by nduser in Newest questions tagged mediawiki - Stack Overflow.

I have mediawiki installed and configured on my machine. I want to use the parse() function in a php script I'm writing in order to convert xml from a file to html. I currently have it working using the meidawiki API, but I want to use mediawiki itself that I've installed, instead of calling the API and using that. How can I use the functions that the mediawiki install provides? (New to this whole thing)


PHPWeekly June 7th 2018

Published 7 Jun 2018 by in PHP Weekly Archive Feed.

PHPWeekly June 7th 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 7th June 2018
Welcome to the latest @phpweekly news.
 
We start this week with a new podcast - the PHP Web Development Podcast with Mathew Kimani. In the first episode Mathew covers current PHP statistics.
 
Also we take a look at using the toolkit Serverless Framework with OpenWhisk PHP.
 
The 20th Oscon takes place next month in Portland. Tickets are currently on sale, with the Early Price discount ending on the 8th June.
 
Plus, if you are interested in Eloquent, we have a new course on connecting to a database with Laravel's Eloquent ORM.
 
And finally, we have an article about why you should be contributing to open source projects in 2018.
 
Enjoy your read!
 
Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

Top 100 PHP Functions
Here is a list of the most used PHP native functions, named and ranked from 1 to 100.

Why You Should Contribute to Open Source Projects in 2018
Open source can change your life. It has changed mine with Corcel, an Open Source project that I started in 2013 which changed who I am and how I live. Read this article to learn more the story of the project and how it became a passion for Open Source projects that is probably like yours.

PHP Developers: 4 Questions To Ask
In recent years, as the online industry has grown, PHP developers are becoming more important and sought after. It is important to know just what you are looking for in a developer and what a PHP programmer can do for your business. The language is seeing popularity steadily trend upwards with no signs of slowing down and the amount of developers that want to get started in the industry are innumerable. Here are 4 questions to ask to help find a PHP developer for your needs.

Tutorials and Talks

Build Your First Symfony Console Application with Dependency Injection Under 4 Files
Series about PHP CLI Apps continues with 3rd part about writing Symfony Console Application with Dependency Injection in the first place. Not last, not second, but the first. Luckily, is easy to start using it and very difficult to
 
Convert your Bootstrap CSS to Tailwind with Tailwindo
I’ve recently been working on converting one of my side projects from Bootstrap to Tailwind and came across awssat/tailwindo. This package does precisely that – automatically converts Bootstrap component classes to Tailwind utility classes.
 
Using Enums in Laravel
I'm a big fan of enums. Having recently worked for a company who use C#, where enums are used extensively, I've got used to being able to reach for them and miss them when they're not available. Futhermore I've created a Laravel package called laravel-enum which allows you access helper functions such as listing keys and values, attaching descriptions to values, and validating requests which are expecting enum values. This guide walks through the process of installing the Laravel package and includes examples of usage and best practice.
 
Using Serverless Framework with OpenWhisk PHP
Serverless Framework is a toolkit to help you manage and deploy a serverless application. (Personally, I’m not a fan of the name as the word “Serverless” already has a meaning in the same space!) It’s a useful tool and supports all the major providers, though AWS Lambda seems to be first-among-equals. The OpenWhisk plugin for Serverless is maintained by the rather excellent James Thomas, so if you have any questions, ping him! As I build more complex PHP based OpenWhisk applications, I thought I’d explore how Serverless makes this easier.
 
Debugging Intermittent Test Failures with Bash and PHPUnit
If you’ve been writing PHPUnit tests for long, you’ve probably run into a time when a test works 90% of the time, but every now and then it throws an unexpected error or failure. If it happens only rarely, you might just get around it by re-running your test suite, but if you’ve got a large test suite or intermittent failures become really common, you probably need to address the issue. Here’s a quick tip for debugging tests like this.
 
Integration with NEM using PHP
We will learn how to use NEM blockchain to create wallets. We will integrate NEM with Laravel Framework and build the web app. You should be familiar with making apps with Laravel framework and you need a fresh Laravel Installation.
 
Boost Your Website Performance With PhpFastCache
In this article, we're going to explore the PhpFastCache library, which allows you to implement caching in your PHP applications. Thus, it helps to improve overall website performance and page load times.
 
Serverless and PHP: Introducing Bref
Serverless basically means “Running apps without worrying about servers”. Obviously there are still servers involved, the main difference is that you do not maintain the servers and reserve their capacity. They are scaled up or down automatically and you pay only for what you use. This article intends to explain what serverless means for web applications and more specifically for PHP.
 
The Art of The Error Message
The concept of “embracing failure” is big in the tech industry. Fail fast, fail often! is almost an industry mantra. But there’s an everyday type of failure that doesn’t get much attention in the product development process. That’s right. The humble error message.
 
Creating Multiple Windows for Slack on Your Mac Using Single-Site Browsers
Tighten is a consultancy. That means we're not just a product company; we also work on other people's applications and sites. Frequently, one or more of our developers will be tasked to work with the same client for months. Every day they wake up, open up Slack--which is the primary tool Tighten, as a remote company, uses to build culture and relationships--and switch to the client's Slack.
 
Exakat 1.2.9 Review
Exakat 1.2.9 is out with a truck load of new analyzers. While we are preparing actively for IPC in Berlin and DPC in Amsterdam, we took time to add no less than 5 new analyzers : Flexible Heredoc Syntax for PHP 7.3, Use the blind var, Inexistent compact, Type hinted reference and Type hint / default mismatch . That’s going to be the longest Exakat 1.2.9 review.

News and Announcements

CakePHP Conference - June 14-17th 2018, Nashville
CakeFest is organised for developers, managers and interested newcomers alike. Bringing a world of unique skill and talent together in a celebration and learning environment around the worlds most popular PHP framework. Celebrating over eleven years of success in the PHP and web development community, CakePHP’s 2018 conference will be an event not to miss. Tickets are on sale now.

Oscon - July 16-19th 2018, Portland
OSCON is the complete convergence of the technologies transforming industries today, and the developers, engineers, and business leaders who make it happen.The 20th Open Source Convention takes place next July. From architecture and performance, to security and data, get expert full stack programming training in open source languages, tools, and techniques. Tickets are on sale now, with the Early Price discount ending tomorrow.

PHP Detroit Conference - July 26-28th 2018, Livonia
PHPDetroit is a two-day, regional PHP conference that brings the community together to learn and grow. We're preceding the conference with a 2 track tutorial day that will feature 4 sessions covering various topics. We will also be running an UnCon alongside the main tracks on Friday and Saturday, where attendees can share unscheduled talks. Tickets are on sale now.

PHP Developer Days - September 21st-22nd 2018, Dresden
After a very successful edition in 2017 we aim to push this community driven conference to the next level in 2018. For the first time we will offer a full day with workshops, so you can get the most out of our excellent trainers. On the second day our international speakers will provide you with great sessions in a single track. We are committed to creating a unique community experience - an event where everyone is among #PHPriends. 

Laracon AU - October 18-19th 2018, Sydney
Two days of learning and networking with the Laravel community in Australia for the first time. The two day conference will see us welcome some of the most prominent Laravel community members including Matt Stauffer, Adam Wathan, and the framework’s author Taylor Otwell as speakers alongside a host of terrific local speaking talent. Tickets are on sale now.

Podcasts

Three Devs and a Maybe Podcast - Software Design with Scott Wlaschin
In this weeks episode we are lucky to have Scott Wlaschin back on the show to discuss design within software. We start off by highlighting leaky abstractions, adopted tool-chains and transpiling languages into JavaScript. From here we move on to talk about what makes ‘good code’, and how evaluating this is heavily reliant on the requirements and context you are in. Finally, we discuss how OO and FP software architectures differ, advantages of being explicit over implicit and information-hiding at API boundaries.
 
This week Cal spoke to Brett Florio and the Foxy.io crew about the history behind the company and the roles each of them has within it.
 
Upon deeper dive into the release of Magento 2.2.4 features Kalen and Phillip as the all-important question: how much bundling of 3rd party integrations in Magento is too much? Is there a line and does the 2.2.4 release cross it? Listen now!
 
PHP Roundtable Podcast Episode 72: Secret Project Revealed!
We finally unveil the super-secret project to the world! Listen in to find out what it is and how you can get your hands on one.
 
PHP Ugly Podcast #107:  Drugs, Tattoos, and Coding (aka PHP: Pot Head Programming)
Topics include solving a 43Mb favourites list and testing FTW.
 
North Meets South Web Podcast Episode 45: Event Sourcing, Auditing and Finite State Machines
Jake and Michael make their return to discuss event sourcing, auditing and reporting, and finite state machines after a busy real life schedule kept them away from recording for a month!
 
PHP Web Development Podcast Ep #1 - PHP Statistics
In this week's episode, Mathew covers current PHP statistics. He will hightlight why developing relationships with good agencies is key to finding good jobs and especially contract and remote jobs.

Reading and Viewing

ZendCon & OpenEnterprise 2018
In case you missed it, ZendCon is coming back to town - and it's going to be quite an exciting one.
 
PHP in 2018
PHP in 2018 is a talk by PHP creator Rasmus Lerdorf, which focuses on new features in PHP 7.2 and 7.3. We have some exciting low-level performance wins coming to PHP 7.3, which should be out late 2018. It’s highly encouraging that PHP’s focus is mainly on performance in the PHP 7.x releases.
 
Building a PHP Framework: Part 3 – Time For Action
In Part 2 of this series I discussed what web frameworks are and, in (very) broad terms, how they worked. Now it’s time to take the first step toward actually building a framework.
 
New Course: Connect to a Database With Laravel's Eloquent ORM
In our new course, Connect to a Database With Laravel's Eloquent ORM, you'll learn all about Eloquent, which makes it easy to connect to relational data in a database and work with it using object-oriented models in your Laravel app. It is simple to set up, easy to use, and packs a lot of power.
 
Cloudways Interview: Dwight Walker on the Challenges of Running a Web Agency
Many of our interviews are focused on digital agency owners, who build websites for clients using specific technologies and tools. Today, however, we wanted to highlight the challenges involved in running a web development agency and the future of PHP.

Jobs





Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

omeka-s
Omeka S is a web publication system for universities, galleries, libraries, archives, and museums. It consists of a local network of independently curated exhibits sharing a collaboratively built pool of items, media, and their metadata.
 
composer-patches
Simple patches plugin for Composer. Applies a patch from a local or remote file to any package required with composer.
 
phpboost
This web application allows everybody without any particular knowledge required in webmastering to create his own website.
 
applicationinsights-php
This project extends the Application Insights API surface to support PHP.
 
freshrss
FreshRSS is a self-hosted RSS feed aggregator. It is at the same time lightweight, easy to work with, powerful and customisable.
 
unit3d
The Nex-Gen Private Torrent Tracker (Aimed For Movie /TV Use).
 
rollbar-php
This library detects errors and exceptions in your application and reports them to Rollbar for alerts, reporting, and analysis.
 
forms
Generating, validating and processing secure forms in PHP. Handy API, fully customisable, server & client side validation and mature design.
 
crypt-gpg
Crypt_GPG is a PHP package to interact with the GNU Privacy Guard (GnuPG).
 
slim-session
A very simple session middleware for Slim Framework 3.
 
projectsend
A free, open source software that lets you share files with your clients, focused on ease of use and privacy. It supports clients groups, system users roles, statistics, multiple languages, detailed logs... and much more!
 
openemr
The most popular open source electronic health records and medical practice management solution. ONC certified with international usage, OpenEMR's goal is a superior alternative to its proprietary counterparts.
 
witycms
A lightweight Content Management System (CMS) in PHP, Model-View-Controller oriented.
 
crunz
Crunz is a framework-agnostic package to schedule periodic tasks (cron jobs) in PHP using a fluent API.

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

You Can Now Automatically Format and Mount Block Storage Volumes

Published 6 Jun 2018 by Priya Chakravarthi in The DigitalOcean Blog.

You Can Now Automatically Format and Mount Block Storage Volumes

Since we launched Block Storage Volumes in 2016, we noticed users searching for our tutorials on partitioning and formatting storage devices and volumes in Linux. At the same time, some users were accidentally formatting already pre-formatted volumes due to the manual process involved in setting up.

This was a cue for us to reduce the friction in the user experience and allow users to simply click to add storage to their Droplets. For example, when you attach a thumb drive to your computer it just works and is ready for use instantly. Why should attaching a volume to your Droplet be different?

In late May, we launched the “automatically format and mount” feature across all regions that support Block Storage Volumes. With this new feature, we reduce human errors and speed up the process of attaching external storage to your Droplets.

You Can Now Automatically Format and Mount Block Storage Volumes

This feature is supported, using the DigitalOcean control panel or API, for Droplets running the following operating systems:

DigitalOcean users can select between two popular Linux filesystems, Ext4 or XFS, for formatting their volumes. To get things going, we provide default mount options and use a default mount point corresponding to your volume name.

To customize these mount options, you can SSH into your Droplet and run commands specific to your Linux distribution. If your company or application dictates the use of a specific filesystem that is not currently supported, or you want to control your mount options or name, our in-product instructions are now customized to the operating system version and can be copied and executed as-is.

You Can Now Automatically Format and Mount Block Storage Volumes

Block Storage Volumes provide the same baseline performance for all sizes, which makes them a great fit for the majority of use cases that require attached storage. (ICYMI, we recently detailed some of the performance improvements we’ve made.) With the new “automatically format and mount” feature, adding high performance block storage becomes a breeze.

Ready to try this out? Add a volume to your Droplet now.


PWG Takes Toronto

Published 6 Jun 2018 by Tzviya Siegman in W3C Blog.

Minutes are published at https://www.w3.org/publishing/groups/publ-wg/Meetings/Minutes/2018/2018-05-30-pwg.html and https://www.w3.org/publishing/groups/publ-wg/Meetings/Minutes/2018/2018-05-31-pwg.html.

The Publishing Working Group gathered in Toronto, Ontario for a 2-day face to face meeting at the Kobo office. This was Kobo’s first time hosting a working group meeting, and they did a great job. Thanks especially to Wendy Reid who organized hotel discounts, restaurant reservations, conference rooms, and many other tiny details. She also learned to scribe :).

Our main goal for the meeting was to get the WP Draft and GitHub repo into a position such that we will be able to release an updated draft within about one month. We made a lot of decisions about both major and minor issues that are getting us closer to Web Publications.

Replacing epub:type

Tzviya Siegman offered a history of the IDPF’s namespaced epub:type structural semantics vocabulary. Many key terms have shifted to DPUB-ARIA. We asked participants to offer information about how epub:type is used today. There were a few examples of uses for internal workflows, such as providing meaningful information about book structure for repurposing content. The implementors in the room made it pretty clear that the only terms in the very long list that they look at are toc, landmarks, pagebreak, pagelist, footnote, and noteref. Consensus is that DPUB-ARIA covers use cases that are beyond internal workflows, but there is a need for education about how to correctly implement ARIA.

Infoset

We reached consensus the minimum infoset. Luc Audrain reviewed the information set as it stands in the current draft, and we agreed that this is a good starting point. We have agreed that we will work in JSON-LD with schema.org as a starting point. We concluded that it is not necessary to list an exhaustive set of resources to define the bounds of the publication, which is defined by the default reading order. We will add a section about boundary determination to the spec. While it is very important to address privacy concerns in our specs, including a privacy policy in the minimum infoset will accomplish nothing. David Wood will add language to the specification regarding privacy and what a UA is expected to do when it encounters a privacy policy.

Manifest Serialization

We have long divided our manifest into descriptive and structural properties. We chose to focus on schema.org for descriptive properties. Using schema.org brings us to the decision to opt for JSON-LD. We discussed specifics of expressing metadata as schema.org properties using a table that Ivan Herman drafted. We will review similar work at Readium, Wiley, and the ScholarlyHTML Community Group to come up with recommendations. There was extensive discussion about topics such as how to ensure accessibility in a cover expressed as JSON-LD. There was much discussion about direction of metadata, titles, and other details to be discussed with the schema.org CG.

Affordances and Use Cases

Benjamin Young explained, “Use cases are a story of what tasks we want to do. Affordances are the things in a document that allow those stories to happen. Mugs afford holding things.” We agreed that we will provide information that allows for affordances, but we will not document such affordances. An example of this is the information of this is specifying the metadata required for a bookshelf but not specify how to create a bookshelf. We then moved through the open issues on Affordances in GitHub and assigned them to members. Each person will use the existing template from the Affordances task force and provide language to add to the specification by 15 June.

Structural Properties

We agreed that URLs in the “manifest” can be represented as either JSON strings or objects, where the string is interpreted directly as a URL. A list of URLs can thus be represented by an array of either strings or objects.

Default Reading Order and TOC

There was extensive discussion about whether the current spec language is clear enough about default reading order and whether it is better and/or good enough for both humans and machines. We eventually resolved that:

(I may have gotten some of these details wrong.) Significant details to come as we work on the spec.

PWP/EPUB 4

We began the discussion asking what the differences in an infoset for PWP as opposed to WP might be. We drifted to a discussion of whether PWP is necessary as a standalone specification if EPUB 4 is simply a packaged WP. To be determined still is whether the packaging format will be the Web Packaging Format in incubation or some other format, such as a simple zip.

We ended the day assigning issues to individuals and planning to revise our documentation over the coming weeks. Thanks to all who traveled and participated, especially Kobo and their glorious doughnuts.

a group of smiling people and a guide dog stands in front of a brick wall nest to a table with computers on it.

Publishing Working Group at the Kobo office


new comment (near Mosman Park, Perth, Western Australia, 6012, Australia)

Published 5 Jun 2018 by Sam Wilson in OpenStreetMap Notes.

Comment

Updated about 1 month ago by Sam Wilson
Road added, but I'm not sure what it's called here between West Meath and McCabe streets.

Full note

Created 9 months ago
Mathieson ave Is linked in a loop
Updated 6 months ago
Mathieson is also linked at this end to McCabe and West Meath Streets. Check the imagery.
Updated about 1 month ago by Sam Wilson
Road added, but I'm not sure what it's called here between West Meath and McCabe streets.

W3C at TU Update

Published 5 Jun 2018 by Ted Guild in W3C Blog.

W3C is pleased to again be participating in TU-Automotive this year. The conference takes place in Novi, Michigan on June 6th and 7th. W3C’s Automotive Lead, Ted Guild, will be participating on two panels.

The annual event covers a range of topics on the future of technology in the automotive industry including Cybersecurity, Electrification, Autonomous vehicles, Smart Cities and Emerging business models these advances make possible.

Collaborating on Standards & Best Practices

“The industry is learning that no one company can solve cybersecurity; with such an intertwined supply chain & global implications if something goes wrong, collaborate to deliver safe & secure vehicles.

W3C has a long track record of creating successful standards, guidelines and best practices for the Open Web Platform. We approach standards from both individual technology viewpoints and specific industry focuses. Ted leads the automotive activity at W3C where we are defining a robust, in-vehicle application ecosystem. Modern vehicles are comprised of many small electronic control units, essentially small computers controlling different functionality, on a local network and providing considerable, digital information.

Initially people are surprised to learn W3C is doing standards for automotive. This should be of less surprise when you consider how there are more web developers writing applications than for any other platform and the automotive industry wants to attract content and service providers to their platform, most of whom are already creating applications using web technologies.

While exposing this telematics information in a consistent manner has been the initial, main focus the group has also been working on media services and libraries, CDN, notifications, location based services, privacy and security, leveraging W3C and others standards for solving automotive big data needs and exploring applying W3C Web Payments specification to automotive use cases such as fueling, recharging, tolls, parking and services.

W3C knows well the benefits of taking a standards approach. Common standards enable innovation, interoperability, creates new business paradigms and there is little arguing how the web has already been transformative across all industries.

V2X: Ensuring Secure Communications

“In the future, vehicles will talk to everything. Ensure that communication channels are secure.

W3C is headquartered at Massachusetts Institute of Technology (MIT) Computer Science and Artificial Intelligence Labs. There Ted has been working with others on connected vehicle cybersecurity as a compliment to the W3C automotive standards work and looking to form a research group with proposed focuses on applications, network interactions and data integrity.

W3C’s vision for “One Web” brings together thousands of dedicated technologists representing more than 400 Member organizations and dozens of industry sectors. W3C is jointly hosted by the MIT Computer Science and Artificial Intelligence Laboratory (MIT CSAIL) in the United States, the European Research Consortium for Informatics and Mathematics (ERCIM) headquartered in France, Keio University in Japan and Beihang University in China. For more information see https://www.w3.org/.


git.legoktm.com registration now open

Published 3 Jun 2018 by legoktm in The Lego Mirror.

git.legoktm.com is now open for hosting free software projects, providing git hosting, issue trackers, and basic wiki functionality. It runs the free software Gogs: "a painless self-hosted Git service".

You're welcome to host any freely licensed projects on git.legoktm.com.

I've been running git.legoktm.com for two years now, mainly using it to host personal projects and things a few friends asked for. I think others will find a friendly git hosting service useful. Nearly all of my major projects can be found on git.legoktm.com, whether they are the canonical repository, or just a mirror (automatically sychronizing about every 10 minutes).

In terms of privacy, you will need to confirm your email before being able to join the site. I collect minimal server logs, and only use IP address information for anti-abuse measures. Mail is handled by FastMail. You should be able to delete your data at any time. Backups are currently running weekly, but I can increase frequency if usage/demand increases.

If you're comfortable with your current git host, feel free to set up a mirror! Git is a great distributed protocol, and mirroring helps increase the right to fork.

If you have any questions, you can contact me on Mastodon, email, IRC, or the git.legoktm.com support tracker.


cardiCast episode 32 Madeline Veitch

Published 3 Jun 2018 by Justine in newCardigan.

newCardigan interviews …

Madeline Veitch

Clare Presser in conversation with Madeline Veitch – Research, Metadata, and Zine Librarian at SUNY New Paltz – in New York for the Art Libraries Society of North America (ARLIS/NA) conference ”Out of Bounds”.

Clare and Madeline discuss all things Zine!

For more information about ARLIS/NA:

@ARLIS_NA

arlisna.org

newcardigan.org
glamblogs.newcardigan.org

Music by Professor Kliq ‘Work at night’ Movements EP.
Sourced from Free Music Archive under a Creative Commons licence.


DDD for Night Owls

Published 2 Jun 2018 by Rob Crowley in DDD Perth - Medium.

Rimma Shafikova wowing the crowd at DDD by Night (DDD by Night Flickr Album)

As a member of the DDD Perth organising committee, it is with a significant degree of pride that I look back and see how the conference has grown and evolved over the past number of years. From the inaugural event held back in 2015 with mainly developer focused content, we have seen the number of attendees almost double year on year and the topics become more diverse to encompass all aspects of software delivery. As an organising committee, we deeply believe in the importance of championing diversity and inclusion in order to grow an even stronger Perth IT community. This year we have taken a number of measures to improve this further, such as providing day care facilities and redefining our Code of Conduct to ensure we create an environment in which everyone feels safe to be themselves. As you can no doubt appreciate, a huge amount of effort goes into organising a conference such as DDD Perth, and it is really a labour of love for all involved. It is far from a selfless act however, the feeling you get when everything comes together on conference day is massively exhilarating. Dare I say even addictive 😊

In 2017 we had over one hundred submissions in response to our call for proposals. While this number was gratifying in and of itself, we as an organising committee were truly thrilled by the variety of the topics and diversity of our wonderful submitters. One of the unique aspects of DDD is that the agenda is democratically chosen by the community. This however does not prevent the organising committee from sharing both the elation and disappointment of our submitters should their session be voted in or narrowly miss out. This was particularly agonizing last year as the quality of submissions was universally excellent (and seeing those that have come through so far, 2018 is going to take it into in the stratosphere). After taking some time to relax after the frantic conference period, the organising committee sat down late last year and considered approaches we could take to showcase some of the speakers that did not have an opportunity to present at the main conference. DDD by Night was born. DDD by Night events are effectively mini DDDs that will be held a number of times throughout the year. Each will see curated topics aligning to our goals of providing diverse thinking, content and opinions to the Perth IT Community. As an added bonus, they also provide another dose of community driven positivity to the DDD crew!

The first DDD by Night event was held in May and saw three amazing talks by three equally amazing speakers. First up, was Mandy Michael, Fenders Perth founder, CSS aficionado and variable font evangelist (I could go on but will stop there, if you couldn’t tell we think Mandy is fantastic!) talking about why CSS is awesome. Next up, was the equally impressive Rimma Shafikova teaching us how we can leverage the capabilities of graph databases to improve the efficiency with which we can learn Mandarin. Rimma’s ability to explain complex topics in an engaging and simple manner was massively impressive. We rounded off the night, with Tony Morris giving a very gentle (thanks Tony!) and engaging introduction to functional programming with Haskell. The recordings and videos from the event are available on YouTube and Flickr respectively, and if you love the content as much as us then please subscribe.

DDD Perth has come a long way in the past three years and the DDD by Night events represent another step on this journey, one that we are incredibly excited about. We look forward to seeing you at the next one.


DDD for Night Owls was originally published in DDD Perth on Medium, where people are continuing the conversation by highlighting and responding to this story.


GLAM Blog Club – June 2018

Published 1 Jun 2018 by Nik McGrath in newCardigan.

In May our theme was Passion.

“Editing Wikipedia articles is a great outlet for my passion for advocating for social justice and inclusion by facilitating access to knowledge/research and promoting the power of play in libraries” – Clare gives a guide to how to get into Wikipedia editing in ’Shut Up and Wiki’ about your passions and hone your passion for facilitating access to diverse knowledge.

Andrew is passionate about the death positivity movement. “Death is a significant part of our profession from record keeping to historical sites and human remains, we need to (if we’re not already) become death positive. Death positivity enables us to reflect on how we handle death in our collections and exhibitions. Do we shy away from stories of death or do we embrace them?” – The GLAMR of Death.

The Specialist’s Passion rubbed off on Clare working with a botany and horticulture collection. “I wonder how many Librarians have assimilated their passions to the collections they are working with, or even the other way around. I mean, surely we all gravitate to the things we love/are passionate about?”

Anne shares her “tips for finding purpose through your passions” in Purpose is passion to a happier librarian.

Alissa is passionate about librarianship above everything else, but acknowledges, “…I owe it to those who’ve helped me get this far to not burn out in a fit of passion” – Sometimes you’ve got to take the hardest line.

Passion guides me, Nathan states that “…the main reason I believe I can work across GLAM is because of my passion and goals”. Nathan shares a vision statement he wrote three years ago which guides him in his work in the GLAM sector.

Lydia’s Some brief reflections on #ICHORA8 / #GLAMblogclub shares her passion for her profession and professional development through her thoughts about the 8th International Conference on the History of Records and Archives.

Hugh is passionate “…about cataloguing, and the consequences of devaluing and unseeing the labour of cataloguers and other metadata experts” in Breaking Things.

Library Snoozer in GLAM Blog Club – Passion shares the passion, perhaps obsession, of “a pre-teen boy and his gaming”.

Sarah’s Passion: a slow burn, or a fiery inferno?: “I see many displays of GLAMourous passion, in people doing amazing things for and with their communities and colleagues, as well as in the active blogging and Twittering communities. Yet a conversation on Twitter this week prompted me to consider the underlying of risk of burnout because the passion was overwhelming, becoming a fiery inferno that destroyed the house instead of being a slow burn keeping the hearth cosy. As an industry if we expect passion, we should only accept a sustainable amount of it.”

Ragamouf’s First, play this song loudly. It’s best in your office explores the author’s past and passion for Gary Wright’s ‘DreamWeaver’ and libraries and learning things.

Clare wrote a second blog about passion this month, Passion and creativity in librarianship and beyond: “It’s been a busy couple of weeks full of passion and creativity, and I’ve been starting to feel more optimistic about librarianship and life, so I thought I’d quickly sneak in another GLAM blog club given the topic this month is passion.”

Thank you for your blogs this month, and sharing your passions.

Many GLAM workers are creative at work, and outside of work. Our theme for June is Create. We look forward to reading your blogs!

Please don’t forget to use the tag GLAM Blog Club in your post, and #GLAMBlogClub for any social media posts linking to it. If you haven’t done so yet, remember to register your blog at Aus GLAM Blogs. Happy blogging!


Why We Chose Ceph to Build Block Storage

Published 31 May 2018 by Anthony D'Atri in The DigitalOcean Blog.

Why We Chose Ceph to Build Block Storage

In January 2013, DigitalOcean became one of the first cloud providers to offer SSD storage. For several years, a slice of the virtualization hypervisor's local drives provided this storage available to Droplets. This approach worked great but had its limitations, such as:

For these and other reasons, we introduced Block Storage in July 2016. Since then, we’ve steadily increased capacity and have deployed into all service regions. In this post, we'll explore the underlying technology behind our Block Storage offering.

Creating Block Storage That Can Scale

In the past, portable, scalable block storage service was usually provided with a traditional SAN (Storage Area Network). These tended to be expensive and difficult to manage and upgrade. Scaling and upgrading could be difficult, and the architecture was susceptible to considerable vendor lock-in.

At DigitalOcean, we love and support open-source software. So when the time came to architect our Block Storage service, we used these guiding criteria:

The best-of-breed solution for all of these criteria is the leader in open and widely-adopted distributed storage: Ceph.

Ceph in Production

In the 15 years since Ceph began, it has steadily grown in popularity, performance, stability, scalability, and features. As GNU Lesser General Public License (LGPL) open-source software, Ceph enjoys a rich community of users and developers, including multiple DigitalOcean engineers who've contributed upstream code to the core Ceph project.

The RBD (RADOS Block Device) service provided by Ceph slots right into the popular KVM QEMU virtualization technology we employ. Droplets enjoy flexible block storage that is presented just like a local drive.

Our Ceph-backed Block Storage service is also 100% SSD-based. Ceph is built for redundancy, and we carefully ensure that the loss of a single drive, server, or even an entire data center rack does not compromise data integrity or availability.

Ceph gracefully heals itself when individual components fail, ensuring continuity of service with uncompromised data protection. Additionally, we use sophisticated monitoring systems built around tools including Icinga, Prometheus, and our own open-source ceph_exporter. These help us respond immediately to any issues with our Ceph infrastructure to ensure continuous availability.

Our Block Storage deployment into each new Droplet region brings hundreds of enterprise-class SSDs managed by the Luminous release of Ceph. We keep three copies of your data to ensure the highest data durability and availability. These replicas are carefully distributed across separate servers and racks to eliminate any single point of failure.

Each Ceph cluster's performance and utilization is carefully monitored so that we can add additional resources as needed. Ceph's flexibility allows us to expand existing storage clusters or even add new ones to a region completely transparently. We are also able to upgrade Ceph and complete other types of fleet-wide maintenance in a rolling fashion, without downtime or other impacts to our valued customers.

It is important to note however that this replication is entirely behind-the-scenes. It prevents us losing your Block Storage volume data, but does not protect your Droplet itself, nor does it allow recovery from accidental deletion on your end. Thus, backups of critical data are still important. See these articles for help on Block Storage volume snapshots and data backups:

And if you haven’t already, create your own Block Storage volume on DigitalOcean.

Anthony D’Atri is a veteran sysadmin who's been working with Ceph for four years, starting with the Dumpling release. He is the co-author, along with Vaibhav Bhembre, of Learning Ceph, which outlines architecting, deploying, and managing Ceph at scale. He enjoys photography and a never ending quest for exotic fruit. He lives in Portland, Oregon with his wife and son.


PHPWeekly May 31st 2018

Published 31 May 2018 by in PHP Weekly Archive Feed.

PHPWeekly May 31st 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 31st May 2018
Hello and welcome to the latest @phpweeklynews.
 
This week the PHP development team has released PHP 7.2.6 and 7.1.18, both available immediately.
 
Also we take a look at Part 2 of the Building a PHP Framework series, looking in greater detail at what web frameworks are and what they do.
 
We have an article that looks to answer the question which is best; PHP or Node.js?
 
And finally, after a couple of months break the That Podcast team makes a welcome return, this week featuring Shawn McCool discussing his open source project Event Sourcery.
 
Have a great weekend,

Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

Is Node.js killing PHP?
In a complex world of programming languages, it is often hard to understand what you really need. In fact, it may lead to holy wars around the question which one is the best. In this article, we are going to address one of such burning arguments – PHP vs Node.js. Their comparison seems necessary, as they both act in the same field, mostly aimed at the web development. Moreover, they are both open source platforms and are often applied for the same web solutions. So, let us see the battle of Node.js vs PHP and define the winner!

What I Make of Adobe’s Magento Acquisition
When Adobe announced that they were going to buy Magento it was with a little bit of envy that I heard the news. During my time at Zend I did a lot of work with the folks at Adobe and I can truly say that it was one of the highlights of my time at Zend.

Invest in Promote Drupal. Get A Special Bonus
The Promote Drupal Initiative is your opportunity to make Drupal - and your business - known and loved by new decision makers. Donate to the Promote Drupal Fund today. Help us help you grow your business. Together, let's show the world just how amazing Drupal is for organisations.

The 52 Best Tools for Freelancers to Scale a Business
People choose to freelance for a number of reasons—but most often, it is because they desire freedom. But, freelancing is not all rainbows and smiles. Check out these tools to make your job easier.

Tutorials and Talks

How I Built The LaravelQuiz Chatbot With BotMan and Laravel
Ever wondered how well you know your favourite PHP framework Laravel? Give the LaravelQuiz Chatbot a try, and you will find out. This article is a step by step guide on how I created this chatbot with BotMan and Laravel.
 
How to Test Private Services in Symfony
Two versions of Symfony are affected by this dissonance between services and tests. Do you use Symfony 3.4 or 4.0? Do you want to test your services, but struggle to get them in a clean way? Today we look at possible solutions.
 
A Package That Makes Event Sourcing in Laravel a Breeze
In most applications you store the state of the application in the database. If something needs to be changed you simply update values in a table. When using event sourcing you'll take a different approach. All changes to application state are stored as a series of events. The key benefit here is that you now have a history of your database.
 
Adding an Auto-Generated Sitemap to Your Jigsaw-based Static Site
I love Tighten's static site generator, Jigsaw. I've tried a few other static site generators, and (of course, I'm biased) I think Jigsaw has the best combination of power and simplicity. Plus, it feels like I'm writing Laravel code - because, essentially, I am.
 
Simple Horizontal Scrolling Menu in Just CSS
I recently visited a site with a horizontally scrolling sub-menu (pictured below) which I really liked. Because of the stigma of horizontal scrolling on desktop fostered from the non-responsive days, I often immediately dismiss it as bad practice but actually I found this pattern to be very usable on my phone.
 
Scheduling MySQL Backups with Laravel
You can export your whole database by running one line in your command line. It’s accessible and useful. But it’s a bit wiser to you automate the entire process. Let’s see how!
 
When and Where to Determine the ID of an Entity
This is a question that always pops up during my workshops: when and where to determine the ID of an entity? There are different answers, no best answer. Well, there are two best answers, but they apply to two different situations.
 
An Introduction to Mongo DB
MongoDB is an open-source, document-oriented, NoSQL database program. If you’ve been involved with the traditional, relational databases for long, the idea of a document-oriented, NoSQL database might indeed sound peculiar. “How can a database not have tables?”, you might wonder. This tutorial introduces you to some of the basic concepts of MongoDB and should help you get started even if you have very limited experience with a database management system.
 
Understanding Design Patterns - Iterator
Provides a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
 
Working with Mutable and Immutable DateTime in PHP
Mutable dates can be the source of confusion and unexpected bugs in your code. My goal isn’t to tell you that DateTime is evil because it’s mutable, but to consider the tradeoffs and benefits of using mutable versus immutable DateTime objects. Either approach warrants a good test suite and an awareness of how modifier methods affect your date objects.

News and Announcements

PHP 7.2.6 Released
The PHP development team announces the immediate availability of PHP 7.2.6. This is a primarily a bugfix release which includes a memory corruption fix for EXIF. PHP 7.2 users are encouraged to upgrade to this version.

PHP 7.1.18 Released
The PHP development team announces the immediate availability of PHP 7.1.18. All PHP 7.1 users are encouraged to upgrade to this version.

Symfony 4.1.0 Released
Symfony 4.1.0 has just been released, with a list of the most important changes.

Mid-Atlantic Developer Conference - July 13-14th 2018, Baltimore
Mid-Atlantic Dev Con is a polyglot event, designed to bring together programmers from the region, regardless of their choice of platform, for two full days of learning from each other and building a stronger regional community. Tickets are on sale now.

Laracon EU - 29-31st August 2018, Amsterdam
Laracon EU is a unique international Laravel event with over 750 attendees. The conference has multiple tracks and is focusing on in-depth technical talks. Come learn about the state of the industry while networking with like-minded and diversely experienced developers. Tickets are on sale now.

ZendCon - 15-17th October 2018, Las Vegas
ZendCon & OpenEnterprise is the premier technology conference designed to teach and share practical experiences from the front lines of enterprise PHP and open source environments. Focused on solving real-world, enterprise-class problems, technical business leaders, strategists, and developers will assemble to discuss case studies and best practices around the application of PHP and open source to transform business. The Call for Papers ends TODAY, and Blind Bird tickets are on sale now.

Podcasts

This week Cal Evans interviews Karen Baker, founder of ShipperHQ and WebShopApps.
 
That Podcast Episode 50: The One Where We Talk to Shawn about Event Sourcery, CQRS, Event Sourcing and GDPR
In this episode, Dave and Beau talk to Shawn McCool about his experiences with CQRS and Event Sourcing, the GDPR, and his recently revealed open source project event sourcery. Event sourcery is a PHP CQRS/ES library with a core principle of keeping it simple, while providing some more advanced technical capabilities, like keeping personal data out of the immutable event streams.
 
Full Stack Radio Podcast Episode 89: Sam Selikoff - Choosing Ember.js in 2018
In this episode, Adam talks to Sam Selikoff about how Ember fits into the JS framework landscape in 2018, and why it might be the right choice for your next project.
 
MageTalk Magento Podcast #170 - “Level Up” Live at Imagine 2018
Phillip and Kalen recap the first day and a half of Imagine 2018, and Kalen remarks how the entire Magento community is being asked to "level up" with a call to higher standards and higher goals from Magento CEO, Mark Lavelle. Listen now!
 
PHP Roundtable Podcast Episode 71: Extra! Extra! PHP 7.2 Released!
The next major version of PHP is here! PHP 7.2 comes with a nice set of upgrades, performance enhancements, and a brand new crypto library right out of the box. We discuss some of the features and breaking changes that we should be aware of before upgrading to PHP 7.2.
 
Laravel News Podcast LN63: The latest Laravel Releases, Editors, Package Development, and Community Packages
Jake and Michael discuss all the latest Laravel releases, tutorials, and happenings in the community.
 
The Laracasts Snippets Episode 84: Basic Financial Literacy
In the United States (and surely many other countries), financial literacy is not taught in schools. You might think that basic investing and a review of compound interest would be profoundly important learning material. But according to the school board, you'd be wrong. Perhaps it's only natural then that those living in the US are deeper in debt than ever in our history.
 
Topics include how a “location API” allows cops to figure out where we all are in real time, and introducing Visual Studio Live Share.
 
Our hosts, Eric van Johnson and John Congdon review Treasure, Old & New which is the May 2018 issue of php[architect] magazine. Share your thoughts on the topics covered and leave a comment below.
 
Post Status Draft Podcast - The History of the Web, and WordPress’s 15th Birthday
In this episode, Brian is joined by Jay Hoffmann — the owner and curator of The History of the Web, a timeline and history of the web — and they discuss the project, as well as WordPress’s 15 year arc of history.

Reading and Viewing

What Are The WordPress PHP Coding Standards?
In this video from my course, Learn PHP for WordPress, you'll learn all about the coding standards and why they're important.
 
Building a PHP Framework: Part 2 – What is a Web Framework?
Part 1 of this series detailed why I have this crazy idea to build a PHP framework. In this post I’ll be discussing what web frameworks are, what they do, and give some initial ideas for Analyze.
 
Cloudways Interview - Success Story of Adam Stone, CEO of Freelancing Startup Speedlancer
Freelancing startup Speedlancer hires qualified freelance designers, writers, and data entry professionals that businesses could employ on a freelance basis. The startup helps businesses save time that was previously wasted on bidding and hiring freelancers so that the jobs gets done as quickly as possible. We spoke with Adam on his journey of becoming a serial entrepreneur and his breakthrough success of Speedlancer in the freelancing industry.
 
This article is Part 2 of my review of the book "Fifty quick ideas to improve your tests". I'll continue to share some of my personal highlights with you.

Jobs





Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

errorheromodule
A Hero for your ZF2, ZF3, and ZF Expressive application to log ( DB and Mail ) and handle php errors & exceptions during Mvc process/between request and response.
 
question2answer
Question2Answer is a free and open source platform for Q&A sites, running on PHP/MySQL.
 
url-shortener
A small set of PHP scripts that will help you in shortening your url. 
 
symfonyinstaller
This is the official installer to start new projects based on the Symfony full-stack framework. The installer is only compatible with Symfony 2 and 3.
 
nukeviet
NukeViet CMS is multi Content Management System, the 1st open source content management system in Vietnam.
 
migration
Simple library writen in PHP without framework dependancy for database version control. Supports Sqlite, MySql, Sql Server and Postgres.
 
php-binance-api
PHP Binance API is an asynchronous PHP library for the Binance API designed to be easy to use.
 
typed
Improvements to PHP's type system in userland: generics, typed lists, tuples and structs.
 
ci-phpunit-test
An easier way to use PHPUnit with CodeIgniter 3.x.
 
ide-stubs
This repo provides the most complete Phalcon Framework stubs which enables auto completion in modern IDEs.
 
skosmos
Skosmos is a web-based tool providing services for accessing controlled vocabularies, which are used by indexers describing documents and searchers looking for suitable keywords.
 
laravel-cookie-consent
Make your Laravel app comply with the crazy EU cookie law.
 
shopware
Shopware 5 is the next generation of open source e-commerce software made in Germany.
 
phpdish
PHPDish is a powerful forum system written in PHP. It is based on the Symfony PHP Framework.

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

Episode 9: Kunal Mehta

Published 29 May 2018 by Yaron Koren in Between the Brackets: a MediaWiki Podcast.

Kunal Mehta (also known as "legoktm") is a developer at the Wikimedia Foundation in the MediaWiki Platform team. He has been involved in MediaWiki development since 2010.

Links for some of the topics discussed:


Introducing CoverMe: find the most called MediaWiki code lacking test coverage

Published 29 May 2018 by legoktm in The Lego Mirror.

CoverMe, hosted on Wikimedia Toolforge

Test coverage is a useful metric, but it can be difficult to figure out exactly where to start. That's where CoverMe is useful - it sorts functions by how often they're called on Wikimedia production servers, and then displays their coverage status.

CoverMe

Try it out! You can filter by Git repository and entry point (index.php, load.php, etc.). So if you look at the api.php entry point, you'll see mostly API related code. If I look at the Linter extension, I can see that the RecordLintJob::run is well covered, while ApiRecordLint::run is not covered at all. If some extensions simply aren't called that frequently, there might not be any function call data at all.

The function call data comes from the daily Xenon logs that are used for profiling FlameGraphs, and the CI test coverage data. CoverMe fetches updated data on the hour if it's available.

The source code is published on Phabricator and licensed under the AGPL v3, or any later version.


cardiParty 2018-06 with Sarah Murphy

Published 28 May 2018 by Andrew Kelly in newCardigan.

Saturday 9 June, 1pm at East Perth Cemeteries.

Find out more...


GDPR is Here, and We've Got You Covered

Published 25 May 2018 by DigitalOcean in The DigitalOcean Blog.

GDPR is Here, and We've Got You Covered

Today, the new European General Data Protection Regulation (GDPR) goes into effect. (You might have received a few emails about it.) There are a lot of moving parts, but it’s an important step in protecting the fundamental right of privacy for European citizens, and it also raises the bar for data protection, security, and compliance in the industry. This post is here to guide you to our GDPR-related resources.

We’ve created a new GDPR section on our website to go over what GDPR means for you and the steps we’ve taken to ensure the protection of your privacy. In this section, you’ll find:

In addition, we updated our Privacy Policy and Terms of Service Agreement to comply with the new requirements of GDPR. If you’re interested in seeing what changed in the Privacy Policy and TOS, check out our GitHub repo where you can compare versions.

We take this new regulation seriously, and we want to get you back to doing what you love—building great software.


GDPR: What it means for Read the Docs

Published 24 May 2018 by David Fischer in Read the Docs Blog.

Your email inbox has probably been bombarded over the last few days and weeks with “Updates to our Privacy Policy”. These emails pertain to an EU law called the General Data Protection Regulation (GDPR) which comes into effect today.

The goal of the GDPR is to put users back in control of their data. It is an important step toward respecting users’ privacy. The days of collecting as much data on as many people as possible without consent and sharing it with anyone willing to pay for it are over.

What changed at Read the Docs

Read the Docs takes privacy seriously (would any company publicly say otherwise) and relatively little changed for us as a result of the GDPR. We intentionally don’t collect much personal information and we only do it with consent.

Still, we did use the GDPR as an excuse to get our data house in order so to speak. Here are a few key points:

A brand new privacy policy
Read the Docs added a new privacy policy that explains the data we collect, from which users we collect it, and why. It enumerates third parties we use for various services and what data we share. The policy also details the data we keep and when it is deleted. Our goal was to make it easy to understand so please give it a read!
Privacy by default
The GDPR mandates “data protection by design and by default”. For us, this meant reducing the scope and duration of the logs and other data we keep. We attempt to collect as little as possible from users merely browsing Read the Docs. When we do collect data, such as when a user creates an account, we protect it.
No difference for EU residents vs. everyone else
Read the Docs applied the stricter protections mandated by the GDPR to all our users. We believe that is the right thing to do. Creating two classes of users and only protecting them when required by law just doesn’t seem right.

While Read the Docs is committed to making sure we comply with the GDPR, we aren’t just doing the minimum needed. We are taking some additional steps to protect users which we will cover in a future post.

Ethical Ads

Arguably the GDPR is a response to pernicious privacy violations by advertising firms so it makes sense to discuss the advertising we show on Read the Docs.

While Read the Docs is an ad-supported website, we didn’t need to make any changes to our Ethical Ads to comply with the GDPR. That’s because:

  • Our advertising is well-targeted without being personal. We ensure our ads are relevant by keeping them developer focused.
  • Ethical Ads are hosted by Read the Docs, not advertisers or a third party network.
  • We don’t share personal data with advertisers.

By enforcing privacy by default, the GDPR shifts the discussion on advertising. We want to create an advertising model that is a win for all parties especially users. We know from our experience that ethical advertising works. It is possible to make money without giving away your users data.

If you want to learn more about Ethical Ads at Read the Docs, please get in touch!


GDPR is here!

Published 24 May 2018 by Bron Gondwana in FastMail blog.

The European Union and the United Kingdom have been leaders in writing regulations to protect something we've long known you value -- your personal information and privacy. We talked about the basics of GDPR protection last month; now it's time to talk about what's changing.

For us, it's been an opportunity to make sure that our practices are in line with our values.

For FastMail, not much is changing. We have high standards for ourselves, and you don't have to change much if you aren't monetizing customers' personal data! Where we've spent the bulk of our time (besides converting our policies from code into words) is thinking about areas where being helpful comes into tension with privacy.

Being helpful vs. protecting your privacy

We pride ourselves on solving unusual problems like buggy mail client behavior, and helping customers out of tough situations (even when that tough situation is something like "my aged parent forgot to pay for their account for two years.") It feels great to go above and beyond for customers! But this process made us think about what kind of personal data might be collected incidentally in the logs we use for debugging, or how long a reasonable person might expect that their information is retained if they choose not to pay for an account.

Reducing our data retention periods, especially in the case where the retained data was likely to contain personal customer information, was one of our biggest changes. We've tried to strike the right balance between making sure you still get the support you expect from us, and protecting your personal information.

You've got rights - know how to use them

We know our new privacy policy is longer. We went with one that sacrificed brevity for coverage, but we hope it has retained clarity and comprehension.

Due to our commitment to open standards, it's always been possible to get your personal data from us in a downloadable, machine-readable format. The privacy policy now includes much more specific language detailing the laws under which those rights are granted - but at FastMail, everyone has them, not just European residents.

What's a DPA, and do I need one?

One of GDPR's other major goals is to try to keep companies from passing the buck in the case of a breach of personal information. As such, corporations that process data on behalf of other people need a contract with all the vendors they use who might hold that information. That contract is a Data Protection Addendum. If you're an individual, you get your services directly from us, and you don't need a DPA.

If you're a corporation, and you do need a DPA, it depends which product you're using, for:

  • FastMail: go to your Policy settings page and
    select a checkbox to have the DPA applied.
  • Pobox: go to your Dashboard and select a checkbox to have the DPA applied.
  • Listbox and Topicbox: due to the nature of the services, the DPA is deemed to automatically apply to all customers, so there's nothing to do.

What's next?

This is not our last revision to our Terms of Service and Privacy Policy. Protecting your data is not something we need a law to push us to do! It did push us to formally name Privacy Officers (who you can contact at privacy@fastmailteam.com). They are staffers who are receiving additional
training on security and privacy considerations, and are explicitly empowered to question decisions we're making in all our products to make sure we're always making good choices around your privacy.

Our revised documents and new related resources:

If you have further questions about GDPR, your data, or your privacy rights, feel free to reach out to our support team for assistance. Thank you for using FastMail!


PHPWeekly May 25th 2018

Published 24 May 2018 by in PHP Weekly Archive Feed.

PHPWeekly May 25th 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 24th May 2018
Hello to the PHP community, and welcome to PHPweekly.com.
 
After several weeks hiatus the PHP Round Table podcast makes a return in this weeks edition, discussing all things Wordpress.

Also this week we take a look at changes made to Homestead to simplify setting it up to serve Apigility, Expressive and Zend Framework projects.

If you want to add user email confirmation to your Laravel projects, we've details on a new package to do just that.

Plus this week Joomla 3.8.8 has been released, addressing 9 security vulnerabilities and over 50 bug fixes.

And finally, Symfony Live returns to London in September over two days. The Call for Papers is open now.

Have a great weekend,

Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

20 Best WPBakery Page Builder Addons & Extensions of 2018
With over a million users worldwide, the popular drag-and-drop page builder, WPBakery Page Builder (formerly Visual Composer), has inspired a legion of developers to create loads of cool and useful addons and extensions that increase its functions and provide virtually unlimited possibilities when it comes to creating the WordPress site of your dreams. Here’re a list of the 20 best of these addons and extensions for 2018 to be found at CodeCanyon.

Investing In the Promote Drupal Fund
The Promote Drupal Initiative is your opportunity to make Drupal - and your business - known and loved by new decision makers. Led by the Drupal Association, we will work with the Drupal business community to hone Drupal’s messaging and create the promotional materials we can all use to amplify the power of Drupal in the marketplace.
 
The Do’s and Don’ts for Hosting WordPress Membership Sites
When it comes to WordPress sites, not all of them can be treated the same in terms of what works best for performance. A simple five-page WordPress site behaves completely different than say a large WooCommerce site (which can be very demanding). WordPress membership and community sites are another type that falls into what we sometimes call this “tricky” category. Today we’ll explore some of the do’s and don’ts for WordPress membership sites and how to best optimise them to ensure optimal performance, scalability, and longevity.
 
PHP Allows For The Design of X
Starting complicated twitter conversations should be avoided, I know this, and yet blurted one out on twitter recently ... This was met with a flurry of responses and I couldn't reasonably reply in tweet form. I'm going to respond to some of those tweets (indirectly) and further explain my original tweet.

Tutorials and Talks

Adding WordPress Admin Notices With Your WordPress Plugin
When you develop a plugin sometimes you need a communication channel with the users that installed the plugin, one easy way to achieve this is showing a WordPress Admin notification on top of pages.

How to Load --config With Services in Symfony Console
In the first post about PHP CLI Apps I wrote about poor DI support in PHP CLI projects. Today we look on the first barrier that leads most people to prefer static over DI - how to load config with services.

Running SQLite in PHP with Docker
SQLite is a great database for getting started on small projects. Unlike traditional SQL databases (like MySQL or Postgres), SQLite stores all your records in a single flat file that you can easily edit, transfer, or even check into version control (if your project warrants it). Another great feature of SQLite is that it’s built into the default PHP images on Docker Hub, so you don’t even have to start up another Docker container, and running a PHP application with a SQLite database is essentially a one-liner. Let’s take a look at how you can incorporate SQLite into your Dockerised PHP apps.

Weird Operators in PHP
If you read the PHP documentation, you will learn about a ton of operators. If you haven’t learnt about PHP operators, go do that first, we’ll wait for you.

Developing Laravel Packages with Local Composer Dependencies
Developing Composer packages locally through a local file symlink speeds up development immensely when you want to create Laravel packages and try them out on a real application. I was reading about a fancy bash alias by Caleb Porzio, which is a bash alias inspired by npm link.

Zend Framework/Homestead Integration
Last year, we wrote about using Laravel Homestead with ZF projects. Today, we contributed some changes to Homestead to simplify setting it up to serve Apigility, Expressive, and Zend Framework projects.

Moving A WordPress Root Install To A Subdirectory Install And Vice Versa
Tell me if this sounds familiar: You pick up a new client who wants you to develop a new theme for their site so you set up a development site and get to work. A few days go by and you’ve laid the groundwork of the new theme and you think it’s about time to pull in their current site’s content so that you can get into the specifics. You set up WP Migrate DB Pro on both sites, pull the database and then realise that your development site was a subdirectory install while the client’s live site was a standard root-directory install and your dev site is totally messed up.

When Empty Is Not Empty
Recently when I was working on a project I got some strange results when using the empty function. Here's what I was debugging. I've simplified the code a bit to share with you.

New in Symfony 4.1: Hidden Services
In Symfony 3.4 we made all Symfony services private by default. This is generally better and makes applications more robust (as explained in the previous post) but it also has some drawbacks.

Add User Email Confirmation to Your Laravel Projects
If you want to add an email verification step to user registration in your Laravel Projects, Marcel Pociot has a new package aptly named laravel-confirm-email. New users are required to confirm their registration through an email to proceed.

Five Useful Laravel Blade Directives
We’re going to look at five Laravel Blade directives you can use to simplify your templates, and learn about some convenient directives that make solving specific problems a cinch! If you’re new to the framework, these tips will help you discover the excellent features of Blade, Laravel’s templating engine.
News and Announcements

Joomla 3.8.8 Release
Joomla 3.8.8 is now available. This is a security release which addresses 9 security vulnerabilities, contains over 50 bug fixes, and includes various security related improvements.

Atlas.Query: Simple. Sensible. SQL.
I am happy to announce that Atlas.Query is now stable and ready for production use! Installaton is as easy as composer require atlas/query ~1.0.

Statamic 2.9 is Now Released
Statamic is a flat file CMS built on Laravel and Vue.js and they’ve just launched v2.9 that includes a host of new features, enhancements, and improvements to enhance the developer experience.

International PHP Conference - June 4-8th 2018, Berlin
The International PHP Conference is the world’s first PHP conference and stands since more than a decade for top-notch pragmatic expertise in PHP and web technologies. Internationally renowned experts from the PHP industry meet up with PHP users and developers from large and small companies. Here is the place where concepts emerge and ideas are born - the IPC signifies knowledge transfer at highest level. All delegates of the International PHP Conference have, in addition to PHP program, free access to the entire range of the webinale taking place at the same time. Tickets are on sale now.

Dutch PHP Conference - June 7-9th 2018, Amsterdam
Ibuildings is proud to organise the eleventh Dutch PHP Conference on June 8th and 9th, plus a pre-conference tutorial day on June 7. Both programs will be completely in English so the only Dutch thing about it is the location. Keywords for these days: Know-how, Technology, Best Practices, Networking, Tips & Tricks. The target audience for this conference are PHP and Mobile Web Developers of all levels, software architects, and even managers. Beginners will find many talks aimed at helping them become better developers, while more experienced developers will come away inspired to do even better and with knowledge about the latest tools and methodologies. Tickets are on sale now.

WavePHP Conference - September 19th-21st 2018, San Diego
WavePHP Conference is bringing the wonderful PHP community to the Southwest United States. Designed to be a conference for both professionals and hobbyists alike. Held in beautiful southern California's San Diego County the area has ideal weather and tons of activities. Early Bird Tickets are on sale now.

Northeast PHP Conference - 19th-21st September 2018, Boston
Our event is a community conference intended for networking and collaboration in the developer community. While grounded in PHP, the conference is not just about PHP. Talks on web technology, user experience, and IT management help PHP developers broaden their skill sets. Early Bird Tickets are on sale now.

Symfony Live - September 27-28th 2018, London
Symfony is proud to organise the 7th edition of the British Symfony conference and to welcome the Symfony community from all over the UK. Join us for 2 days of Symfony to share best practices, experience, knowledge, make new contacts and hear the latest developments with the framework! The Call for Papers is now open, and Early Bird Tickets are on sale now.

Podcasts

Voices of the ElePHPant - Interview with Margaret Staples
Cal Evans sits down with Margaret Staples of Twilio to talk community.
 
MageTalk Magento Podcast #169 - An Evening with Eric Hileman
Eric Hileman from MageMojo and Mojo Stratus fame join us to get down and dirty in the nitties and the gritties about what makes scaling on AWS so difficult, and how running Magento in the cloud takes more expertise now than ever before. Listen now!

PHP Roundtable Podcast Episode 70: All Things WordPress
We chat about backwards compatibility, Gutenberg, and the WordPress ecosystem. 

PHP Ugly Podcast #105: Exposed Source
This weeks topics include stack overflow for teams and who controls glibc?
 
Post Status Draft Podcast - Making WordPress and WordSesh
In this episode, Brian and Brian discuss the upcoming WordSesh schedule and go spelunking through make.wordpress.org to surface some recent gems making their way to WordPress.org – both the project and the website.

Laravel Podcast Episode 12 - Interview: Samantha Geitz
Interview with Samantha Geitz, Senior Developer at Tighten.

Reading and Viewing

Book Review: Fifty Quick Ideas to Improve Your Tests - Part 1
"Fifty Quick Ideas to Improve Your Tests" is written by Gojko Adzic, David Evans, Tom Roden and Nikola Korac. After being asked if he knew about good resources on how to write good acceptance test scenarios, Matthias Noback read and subsequently reviewed this book.

Cloudways Interview - Success Story Of Evan Wong, CEO Of Australian Fintech Startup Checkbox
The fintech industry, which aims to apply digital innovations to existing financial modes of operations in order to improve the quality of financial services, is growing immensely in popularity thanks to the efforts of several startup incubators down under. Checkbox, the brainchild of CEO Evan Wong, is a standout venture that digitises complex regulations into automated cloud software without requiring developer coding. In this post, we highlight the success story of Evan Wong and his Checkbox startup.
 
Building a PHP Framework: Part 1 – Why? Seriously, Why?
There are a tremendous amount of great PHP frameworks. Off the top of my head I can think of several. Yet, for every Laravel there are probably five lesser-known, high quality frameworks. So with all of that being said, it begs the question: why on Earth would you want to do this?

First-timer at DrupalCon: The Non-Tech Girl Experience
There’s the book about givers and takers that I’m reading right now. Adam Grant, the author, claims the good will conquer the evil, a poor girl will find her prince, the givers will triumph over the takers and exchangers. That sounds too sweet, but Adam wins me step by step with his statistics and researchers. Here’s my little feedback on what I’ve seen during 4 days at DrupalCon Nashville: as a volunteer and a grant receiver, as an attendee and a Drupal team member. The little feedback on the Community of givers. 

Jobs





Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

msphpsql
The Microsoft Drivers for PHP for Microsoft SQL Server are PHP extensions that allow for the reading and writing of SQL Server data from within PHP scripts.

easy-digital-downloads
Selling digital downloads is something that not a single one of the large WordPress ecommerce plugins has ever gotten really right. This plugin aims to fix that. 

ethereum-php
PHP interface to Ethereum JSON-RPC API. Fully typed Web3 for PHP 7.X.

lifterlms
LifterLMS, the #1 WordPress LMS solution, makes it easy to create, sell, and protect engaging online courses.

matamo
Matomo is the leading open alternative to Google Analytics that gives you full control over your data.

sourcebans-pp
Admin, ban, and comms management system for the Source engine.

tus-php
A pure PHP server and client for the tus resumable upload protocol v1.0.0.

boinc
Open-source software for volunteer computing and grid computing.
 
security
The Security component provides a complete security system for your web application.

piWallet
A popular secure opensource online altcoin wallet that works with practically any altcoin. piWallet uses PHP, mySQL, JavaScript and Bootstrap meaning it's quite simple to setup.

router
A barebones router for PHP. Automatic get variable based on handler function parameter list. Support to compile router callback handlers into plain array source code.

luya
The Yii 2 wrapper to build beautiful and easy editable websites pretty fast! 

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

cardiParty 2018.06 - Melbourne Birthday cardiParty!

Published 22 May 2018 by Hugh Rundle in newCardigan.

6:30pm, Friday 8 June at the Upper Terrace room, Duke of Wellington Hotel.

Find out more...


A Message About Intel’s Latest Security Findings

Published 21 May 2018 by Josh Feinblum in The DigitalOcean Blog.

In response to Intel’s statement today regarding new vulnerabilities, we wanted to share all the information we have to date with our customers and community.

Current information does not suggest that this latest vulnerability, Variant 4, would allow Droplets to gain access to the host hypervisor, or access to other Droplets. We also do not believe that we will need to reboot our entire fleet of hypervisors, as was necessary to mitigate impact from the initial Spectre and Meltdown vulnerabilities. However, there is a remote potential for exploit and we are working with Intel to validate microcode to patch for the vulnerabilities. We are accelerating the fix, but applying these updates takes coordination and time.

Our security and engineering teams are monitoring our hypervisors and following this issue closely. We remain in communication with our contacts at Intel regarding any new developments. The security of our users’ data is one of our highest priorities, and we are ready to take action if and when appropriate. At this time, we strongly recommend ensuring that you have the latest packages from your distributions, and you use the latest browser versions with fixes for Variant 4.

We will update this blog as more information becomes available. In addition to posting here, we will notify customers directly if there is a need to take action.


May Community Doers: Open Source Contributors

Published 21 May 2018 by Daniel Zaltsman in The DigitalOcean Blog.

May Community Doers: Open Source Contributors

Since DigitalOcean came to be, the founders believed that the developer community is far greater than the sum of its parts. Six years later we continue to learn and grow thanks to the tireless work of our global community. Instrumental to increasing collaboration and ease-of-use, the Projects section of the Community received its first submission four years ago and today boasts a total of 186 apps, wrappers, and integrations using the DigitalOcean API.

In this month’s “Doers” spotlight, we highlight three builders who continue to maintain technology that makes a difference for users in the DigitalOcean ecosystem. When they are not working on software engineering and DevOps, they give back in a way that enriches the community. Please join us in recognizing May’s featured Doers:

Jeevanandam M. (@myjeevablog)

When he is not building out and supporting aah, the secure, flexible, and rapid Go web framework, Jeeva has been making valuable contributions that enable developers to use DigitalOcean. Since early 2014, he has maintained a widely used DigitalOcean API client library written in Java. The client is used by the Jenkins DigitalOcean plugin, powering a large quantity of CI use cases on top of DigitalOcean. We are immensely thankful for Jeeva’s commitment to quality and community and believe this recognition is long due.

Lorenzo Setale (@koalalorenzo)

Lorenzo is a Copenhagen-based Italian developer of ideas who has been involved in the community since 2012. Anyone who has spun up Droplets using the python-digitalocean Python library will be familiar with tireless Lorenzo’s work. He has long authored and maintained one of the most used and best supported DigitalOcean API libraries. A playground for experimentation for some is a tool to build someone’s first project, thanks to Lorenzo for the technology that keeps on giving.

Peter Souter (@petersouter)

Peter is an open source citizen that leads by example, noting on his blog that “as long as people are interested I will keep maintaining and helping with open source software I maintain.” with regards to his work on Tugboat, a CLI that predates doctl. Previously at Puppet, Peter currently works at HashiCorp out of London and we’re proud to say he's been around our community for a long time. In addition to being the main contributor to tugboat, he's had a few contributions to droplet_kit, the Ruby API client. Thanks for all your work, we appreciate it all.

Jeeva, Lorenzo, and Peter showcase the qualities we are proud to see in our community and we hope that they inspire others as well. We’re grateful to have this opportunity to recognize our amazing community contributors and if you’re interested in getting more involved in the DigitalOcean community, here are a few places to start:

Want to recognize someone in the community? Leave their name in the comments or reach out to Doers [at] DigitalOcean [.] com.


From Another View in Geraldton

Published 21 May 2018 by carinamm in State Library of Western Australia Blog.

The From Another View project team visited Geraldton, opened a pop-up exhibition at the Museum of Geraldton and conducted a Storylines session at the Geraldton Regional Library.

Looking_MuseumGeraldton

Pop up exhibition at Museum of Geraldton (c) State Library of Western Australia, 2018

At the opening of the exhibition, Pop Robert Ronan welcomed audience members to Southern Yamaji country, the land of the Nhanhagardi, Wilunyu and Amangu. Robert reminisced about life in Geraldton, and as a younger man sitting near the John Forrest statue on the foreshore. Robert recollected wondering about what it might be like for the expedition party to travel his country.

dscf2163.jpg

Museum of Geraldton (c) State Library of Western Australia 2018

Members of the Museums of Geraldton Site Advisory committee, and the Walkaway Station Museum attended. In later life, Lady Forrest (Margaret Elvire Hammersley), John Forrest’s wife lived in Georgina near Walkaway. Some of Lady Forrest’s belongings were donated to the Walkaway Station Museum.

The project team helped a number of families reconnect with photographs of family during the two day visit. Here are some of the stories.

FredMallard

Fred Mallard and Con Kelly and some of the children camped at Galena. Taken at Galena on 2nd October, 1937, at about 6 p.m. by F.I. Bray, D.C.N.A. (Deputy Commissioner [Dept. of] Native Affairs. https://storylines.slwa.wa.gov.au/archive-store/view/6/1403

Charlie Cameron

Mr & Mrs Charlie Cameron at Cue. Photograph taken on 30/9/37 by F.I. Bray, D.C.N.A. https://storylines.slwa.wa.gov.au/archive-store/view/6/1408

During the Storylines session, Trudi Cornish from the Geraldton Regional Library explained that the story of the woman in the photograph is known, however her name is not. The woman was a contemporary of King Billy and ‘gave as good as she got’ when people would mock her with the name ‘Ugly Legs’ due to some scars she had.

Photograph of “Ugly Legs”, Geraldton 1900 https://storylines.slwa.wa.gov.au/archive-store/view/6/9854)

The project team is packed up and ready for the onward journey to Wiluna to conduct a Storylines session and pop-up exhibition on Thursday 24 May 2018 at Tjukurba Art Gallery. The team will then head out to Martu, Birriliburu country along the Canning Stock Route and Gunbarrel Highway to the Mangkili Claypans, with two groups of traditional owners.

Onward

(c) State Library of Western Australia, 2018

Artist Bill Gannon will stop at Pia Wadjarri and visit the school, to discuss his artwork and John Forrest’s trek. Then he will travel to Wiluna via Mt Gould.

Looking at the map. Museum of Geraldton exhibition. (c) State Library of Western Australia, 2018


Update on Ad Blocking and Acceptable Ads

Published 20 May 2018 by David Fischer in Read the Docs Blog.

A few weeks ago, we shared about the challenge ad blocking presented to our sustainability and what we were doing about it. On May 4th, Read the Docs was added to the Acceptable Ads list meaning that our visitors running ad blockers who choose to allow unintrusive advertising will see our ads again. The impact to our ad views, clicks, and revenue was immediate.

Data on our inclusion in the Acceptable Ads list

Impact of ad blocking and acceptable ads at Read the Docs
32% of Read the Docs visitors run an ad blocker
Estimates around the web vary regarding what percentage of people run ad blockers and it varies heavily by industry. We discussed this figure a bit in our previous post.
It took a month from application to inclusion in the list

We discovered about our inclusion in the EasyList ad blocker list within a couple days and immediately applied to the Acceptable Ads program. No changes were required of us to meet the Acceptable Ads criteria and we also qualified for Acceptable Ads without third-party tracking.

While Eyeo, the company behind AdBlock Plus, derives most of their revenue from the Acceptable Ads initiative by charging large entities, Read the Docs did not pay for inclusion on the list.

Over half of those running an ad blocker allow acceptable ads
Given our more tech-savvy and privacy-focused audience, we didn’t know what to expect. Not every ad blocker allows acceptable ads by default and even then users can choose to turn them off.
People running ad blockers DO click on ads
We can definitively say this is true of our audience. Our click-through rate did not change based on ad blocking or our inclusion in the acceptable ads list at all.

Of the ad views and clicks blocked by ad blockers, inclusion in the Acceptable Ads list meant that 55-60% of our ad-blocking visitors choose to allow our ads. This directly translated into revenue toward our sustainability.

Building our Ethical Ads

The Acceptable Ads list is definitely a step in the right direction for us. We share the goal of unintrusive advertising that respects our audience.

People understand that advertising funds much of the web. As ads got larger, more annoying, and ad networks stored more information on millions of people, however, many people finally decided to install ad blockers. This is the largest boycott in human history and blaming users isn’t the answer.

Based on our experience with ad blocking and the Acceptable Ads list, it is clear that visitors will allow advertising that doesn’t disrupt user experience and doesn’t track people.

We are glad to have made progress toward regaining our sustaining revenue. Read the Docs is continuing on our experiment to fund open source infrastructure in a way that is a win/win for all parties, and we are glad you’re following along with us.


cardiCast episode 31 Reece Harley

Published 18 May 2018 by Justine in newCardigan.

Perth February 2018 cardiParty

Recorded live

The Museum of Perth chronicles the social, cultural, political and architectural history of Perth. Their exhibition space serves as a meeting place of ideas and stories, a retail space, micro-cinema and a cultural hub in a forgotten part of the city.

For our March Perth cardiParty, Reece Harley, Executive Director and founder, gave an introductory talk about Museum of Perth, covering background info about the museum and the current exhibition.

The Museum is an initiative of the Perth History Association Inc, a not-for-profit organisation founded in 2015.

newcardigan.org
glamblogs.newcardigan.org

Music by Professor Kliq ‘Work at night’ Movements EP.
Sourced from Free Music Archive under a Creative Commons licence.

 


The News Quiz - 18.05.2018

Published 18 May 2018 by BBC Radio 4 in Friday Night Comedy from BBC Radio 4.

Miles Jupp is joined by Jeremy Hardy, Zoe Lyons, Simon Evans and journalist Francis Wheen

UK Archivematica meeting at Westminster School

Published 18 May 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Yesterday the UK Archivematica user group meeting was held in the historic location of Westminster School in central London.

A pretty impressive location for a meeting!
(credit: Elizabeth Wells)


In the morning once fuelled with tea, coffee and biscuits we set about talking about our infrastructures and workflows. It was great to hear from a range of institutions and how Archivematica fits into the bigger picture for them. One of the points that lots of attendees made was that progress can be slow. Many of us were slightly frustrated that we aren't making faster progress in establishing our preservation infrastructures but I think it was a comfort to know that we were not alone in this!

I kicked things off by showing a couple of diagrams of our proposed and developing workflows at the University of York. Firstly illustrating our infrastructure for preserving and providing access to research data and secondly looking at our hypothetical workflow for born digital content that comes to the Borthwick Institute.

Now our AtoM upgrade is complete and that Archivematica 1.7 has been released, I am hoping that colleagues can set up a test instance of AtoM talking to Archivematica that I can start to play with. In a parallel strand, I am encouraging colleagues to consider and document access requirements for digital content. This will be invaluable when thinking about what sort of experience we are trying to implement for our users. The decision is yet to be made around whether AtoM and Archivematica will meet our needs on their own or whether additional functionality is needed through an integration with Fedora and Samvera (the software on which our digital library runs)...but that decision will come once we better understand what we are trying to achieve and what the solutions offer.

Elizabeth Wells from Westminster School talked about the different types of digital content that she would like Archivematica to handle and different workflows that may be required depending on whether it is born digital or digitised content, whether a hybrid or fully digital archive and whether it has been catalogued or not. She is using Archivematica alongside AtoM and considers that her primary problems are not technical but revolve around metadata and cataloguing. We had some interesting discussion around how we would provide access to digital content through AtoM if the archive hadn't been catalogued.

Anna McNally from the University of Westminster reminded us that information about how they are using Archivematica is already well described in a webinar that is now available on YouTube: Work in Progress: reflections on our first year of digital preservation. They are using the PERPETUA service from Arkivum and they use an automated upload folder in NextCloud to move digital content into Archivematica. They are in the process of migrating from CALM to AtoM to provide access to their digital content. One of the key selling points of AtoM for them is it's support for different languages and character sets.

Chris Grygiel from the University of Leeds showed us some infrastructure diagrams and explained that this is still very much a work in progress. Alongside Archivematica, he is using BitCurator to help appraise the content and EPrints and EMU for access.

Rachel MacGregor from Lancaster University updated us on work with Archivematica at Lancaster. They have been investigating both Archivematica and Preservica as part of the Jisc Research Data Shared Service pilot. The system that they use has to be integrated in some way with PURE for research data management.

After lunch in the dining hall (yes it did feel a bit like being back at school),
Rachel MacGregor (shouting to be heard over the sound of the bells at Westminster) kicked off the afternoon with a presentation about DMAonline. This tool, originally created as part of the Jisc Research Data Spring project, is under further development as part of the Jisc Research Data Shared Service pilot.

It provides reporting functionality for a range of systems in use for research data management including Archivematica. Archivematica itself does not come with advanced reporting functionality - it is focused on the primary task of creating an archival information package (AIP).

The tool (once in production) could be used by anyone regardless of whether they are part of the Jisc Shared Service or not. Rachel also stressed that it is modular - though it can gather data from a whole range of systems, it could also work just with Archivematica if that is the only system you are interested in reporting on.

An important part of developing a tool like this is to ensure that communication is clear - if you don’t adequately communicate to the developers what you want it to do, you won’t get what you want. With that in mind, Rachel has been working collaboratively to establish clear reporting requirements for preservation. She talked us through these requirements and asked for feedback. They are also available online for people to comment on:


Sean Rippington from the University of St Andrews talked us through some testing he has carried out, looking at how files in SharePoint could be handled by Archivematica. St Andrews are one of the pilot organisations for the Jisc Research Data Shared Service, and they are also interested in the preservation of their corporate records. There doesn’t seem to be much information out there about how SharePoint and Archivematica might work together, so it was really useful to hear about Sean’s work.

He showed us inside a sample SharePoint export file (a .cmp file). It consisted of various office documents (the documents that had been put into SharePoint) and other metadata files. The office documents themselves had lost much of their original metadata - they had been renamed with a consecutive number and given a .DAT file extension. The date last modified had changed to the date of export from SharePoint. However, all was not lost, a manifest file was included in the export and contained lots of valuable metadata, including the last modified date, the filename, the file extension and the name of the person who created file and last modified it.

Sean tried putting the .cmp file through Archivematica to see what happens. He found that Archivematica correctly identified the MS Office files (regardless of change of file extension) but obviously the correct (original) metadata was not associated with the files. This continued to be stored in the associated manifest file. This has potential for confusing future users of the digital archive - the metadata gives useful context to the files and if hidden in a separate manifest file it may not be discovered.

Another approach he took was to use the information in the manifest file to rename the files and assign them with their correct file extensions before pushing them into Archivematica. This might be a better solution in that the files that will be served up in the dissemination information package (DIP) will be named correctly and be easier for users to locate and understand. However, this was a manual process and probably not scalable unless it could be automated in some way.

He ended with lots of questions and would be very glad to hear from anyone who has done further work in this area.

Hrafn Malmquist from the University of Edinburgh talked about his use of Archivematica’s appraisal tab and described a specfic use case for Archivematica which had specific requirements. The records of the University court have been deposited as born digital since 2007 and need to be preserved and made accessible with full text searching to aid retrieval. This has been achieved using a combination of Archivematica and DSpace and by adding a package.csv file containing appropriate metadata that can be understood by DSpace.

Laura Giles from the University of Hull described ongoing work to establish a digital archive infrastructure for the Hull City of Culture archive. They had an appetite for open source and prior experience with Archivematica so they were keen to use this solution, but they did not have the in-house resource to implement it. Hull are now working with CoSector at the University of London to plan and establish a digital preservation solution that works alongside their existing repository (Fedora and Samvera) and archives management system (CALM). Once this is in place they hope to use similar principles for other preservation use cases at Hull.

We then had time for a quick tour of Westminster School archives followed by more biscuits before Sarah Romkey from Artefactual Systems joined us remotely to update us on the recent new Archivematica release and future plans. The group is considering taking her up on her suggestion to provide some more detailed and focused feedback on the appraisal tab within Archivematica - perhaps a task for one of our future meetings.

Talking of future meetings ...we have agreed that the next UK Archivematica meeting will be held at the University of Warwick at some point in the autumn.


UK Archivematica meeting at Westminster School

Published 18 May 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Yesterday the UK Archivematica user group meeting was held in the historic location of Westminster School in central London.

A pretty impressive location for a meeting!
(credit: Elizabeth Wells)


In the morning once fuelled with tea, coffee and biscuits we set about talking about our infrastructures and workflows. It was great to hear from a range of institutions and how Archivematica fits into the bigger picture for them. One of the points that lots of attendees made was that progress can be slow. Many of us were slightly frustrated that we aren't making faster progress in establishing our preservation infrastructures but I think it was a comfort to know that we were not alone in this!

I kicked things off by showing a couple of diagrams of our proposed and developing workflows at the University of York. Firstly illustrating our infrastructure for preserving and providing access to research data and secondly looking at our hypothetical workflow for born digital content that comes to the Borthwick Institute.

Now our AtoM upgrade is complete and that Archivematica 1.7 has been released, I am hoping that colleagues can set up a test instance of AtoM talking to Archivematica that I can start to play with. In a parallel strand, I am encouraging colleagues to consider and document access requirements for digital content. This will be invaluable when thinking about what sort of experience we are trying to implement for our users. The decision is yet to be made around whether AtoM and Archivematica will meet our needs on their own or whether additional functionality is needed through an integration with Fedora and Samvera (the software on which our digital library runs)...but that decision will come once we better understand what we are trying to achieve and what the solutions offer.

Elizabeth Wells from Westminster School talked about the different types of digital content that she would like Archivematica to handle and different workflows that may be required depending on whether it is born digital or digitised content, whether a hybrid or fully digital archive and whether it has been catalogued or not. She is using Archivematica alongside AtoM and considers that her primary problems are not technical but revolve around metadata and cataloguing. We had some interesting discussion around how we would provide access to digital content through AtoM if the archive hadn't been catalogued.

Anna McNally from the University of Westminster reminded us that information about how they are using Archivematica is already well described in a webinar that is now available on YouTube: Work in Progress: reflections on our first year of digital preservation. They are using the PERPETUA service from Arkivum and they use an automated upload folder in NextCloud to move digital content into Archivematica. They are in the process of migrating from CALM to AtoM to provide access to their digital content. One of the key selling points of AtoM for them is it's support for different languages and character sets.

Chris Grygiel from the University of Leeds showed us some infrastructure diagrams and explained that this is still very much a work in progress. Alongside Archivematica, he is using BitCurator to help appraise the content and EPrints and EMU for access.

Rachel MacGregor from Lancaster University updated us on work with Archivematica at Lancaster. They have been investigating both Archivematica and Preservica as part of the Jisc Research Data Shared Service pilot. The system that they use has to be integrated in some way with PURE for research data management.

After lunch in the dining hall (yes it did feel a bit like being back at school),
Rachel MacGregor (shouting to be heard over the sound of the bells at Westminster) kicked off the afternoon with a presentation about DMAonline. This tool, originally created as part of the Jisc Research Data Spring project, is under further development as part of the Jisc Research Data Shared Service pilot.

It provides reporting functionality for a range of systems in use for research data management including Archivematica. Archivematica itself does not come with advanced reporting functionality - it is focused on the primary task of creating an archival information package (AIP).

The tool (once in production) could be used by anyone regardless of whether they are part of the Jisc Shared Service or not. Rachel also stressed that it is modular - though it can gather data from a whole range of systems, it could also work just with Archivematica if that is the only system you are interested in reporting on.

An important part of developing a tool like this is to ensure that communication is clear - if you don’t adequately communicate to the developers what you want it to do, you won’t get what you want. With that in mind, Rachel has been working collaboratively to establish clear reporting requirements for preservation. She talked us through these requirements and asked for feedback. They are also available online for people to comment on:


Sean Rippington from the University of St Andrews talked us through some testing he has carried out, looking at how files in SharePoint could be handled by Archivematica. St Andrews are one of the pilot organisations for the Jisc Research Data Shared Service, and they are also interested in the preservation of their corporate records. There doesn’t seem to be much information out there about how SharePoint and Archivematica might work together, so it was really useful to hear about Sean’s work.

He showed us inside a sample SharePoint export file (a .cmp file). It consisted of various office documents (the documents that had been put into SharePoint) and other metadata files. The office documents themselves had lost much of their original metadata - they had been renamed with a consecutive number and given a .DAT file extension. The date last modified had changed to the date of export from SharePoint. However, all was not lost, a manifest file was included in the export and contained lots of valuable metadata, including the last modified date, the filename, the file extension and the name of the person who created file and last modified it.

Sean tried putting the .cmp file through Archivematica to see what happens. He found that Archivematica correctly identified the MS Office files (regardless of change of file extension) but obviously the correct (original) metadata was not associated with the files. This continued to be stored in the associated manifest file. This has potential for confusing future users of the digital archive - the metadata gives useful context to the files and if hidden in a separate manifest file it may not be discovered.

Another approach he took was to use the information in the manifest file to rename the files and assign them with their correct file extensions before pushing them into Archivematica. This might be a better solution in that the files that will be served up in the dissemination information package (DIP) will be named correctly and be easier for users to locate and understand. However, this was a manual process and probably not scalable unless it could be automated in some way.

He ended with lots of questions and would be very glad to hear from anyone who has done further work in this area.

Hrafn Malmquist from the University of Edinburgh talked about his use of Archivematica’s appraisal tab and described a specfic use case for Archivematica which had specific requirements. The records of the University court have been deposited as born digital since 2007 and need to be preserved and made accessible with full text searching to aid retrieval. This has been achieved using a combination of Archivematica and DSpace and by adding a package.csv file containing appropriate metadata that can be understood by DSpace.

Laura Giles from the University of Hull described ongoing work to establish a digital archive infrastructure for the Hull City of Culture archive. They had an appetite for open source and prior experience with Archivematica so they were keen to use this solution, but they did not have the in-house resource to implement it. Hull are now working with CoSector at the University of London to plan and establish a digital preservation solution that works alongside their existing repository (Fedora and Samvera) and archives management system (CALM). Once this is in place they hope to use similar principles for other preservation use cases at Hull.

We then had time for a quick tour of Westminster School archives followed by more biscuits before Sarah Romkey from Artefactual Systems joined us remotely to update us on the recent new Archivematica release and future plans. The group is considering taking her up on her suggestion to provide some more detailed and focused feedback on the appraisal tab within Archivematica - perhaps a task for one of our future meetings.

Talking of future meetings ...we have agreed that the next UK Archivematica meeting will be held at the University of Warwick at some point in the autumn.


Forrest’s Exploration Diaries now online

Published 17 May 2018 by carinamm in State Library of Western Australia Blog.

Artist Bill Gannon and surveyor Rod Schlenker, visited the State Library to see the original diaries of John and Alexander Forrest’s 1874 expedition from Geraldton to Adelaide. The diaries, which are held in the State Library collections, are now accessible online through the catalogue.(ACC 1241A)

073_Forrest Diaries_16-5-18.jpg

From Another View Project Coordinator Tui Raven with Rod Schlenker and Bill Gannon as they look at the diaries. (C) State Library of Western Australia, 2018. 

This week Bill Gannon and a team from the State Library will embark on a on a trip to engage with Aboriginal communities and visit key locations along the 1874 trek route.  This artistic and community engagement is part of the ‘From Another View’ project, a collaboration between the State Library and Minderoo Foundation.  The project considers the trek ‘from another view’, or rather from many views, incorporating various creative and Aboriginal community perspectives.

Explore some of the camp locations referenced in John and Alexander Forrest’s diaries through the Google map.

056_Forrest Diaries_16-5-18.jpg

Forrest’s Expedition to Central Australia, State Library of Western Australia, ACC 1241A

For more information about the From Another View project go to: https://fromanotherview.blog/  Follow the From Another View blog to keep updated with the project.

 


PHPWeekly May 17th 2018

Published 17 May 2018 by in PHP Weekly Archive Feed.

PHPWeekly May 17th 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 17th May 2018
Here we are again PHP fans, with your latest edition of phpweekly.com.
 
This week we take a look at creating a custom settings panel in WooCommerce.
 
We also have Part 1 of a workflow series on deploying WordPress.
 
PHP Conference Asia has been announced, taking place in Singapore in September. Already confirmed to speak is Rasmus Lerdorf and Sebastian Bergmann. Super Early Bird tickets are on sale now.
 
Plus the latest Full Stack Radio podcast is all about Vuex, and using it to manage your applications state.
 
And finally, find out about upcoming events and releases across the WordPress project in The Month in WordPress: April 2018.

Have a great weekend, and enjoy your read.

Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

Progress and Next Steps for Governance of the Drupal Community
One of the things I love the most about my new role as Community Liaison at the Drupal Association is being able to facilitate discussion amongst all the different parts of our Drupal Community. I have extraordinary privilege of access to bring people together and help work through difficult problems. The governance of the Drupal project has evolved along with the project itself for the last 17 years. I’m determined in 2018 to help facilitate the next steps in evolving the governance for our growing, active community.

I'm Starting a Newsletter
For the past few months, I've been looking for a new home to share articles, projects, podcasts, or other things that leave an impression on me.

Diversity Initiative: The CARE Team
Adopting a Code of Conduct was a great step forward for the Symfony community. Now, if a community member encounters an issue of harassment or other unwanted behaviour, they need to be able to report it and get support. This is one of the roles of the CARE team.

10 Best WordPress Event Management Plugins (Calendars, Ticketing, RSVPs)
If you’ve ever tried to install a calendar plugin you know that it’s not exactly the same as a fully functional event management tool. Calendars display dates of events, while the best WordPress event management plugins offer functions like ticketing, RSVPs, guest management, automated email notifications, booking forms and more. In order to achieve some of the more advanced calendar features, a WordPress event management plugin is required. What’s great is that you have dozens of options to choose from, and the best ones are affordable, powerful, and easy to understand.

Tutorials and Talks

Rectify: Turn All Action Injects to Constructor Injection in Your Symfony Application
Action Injections are much fun, but it can turn your project to legacy very fast. How to refactor out of the legacy back to constructor injection and still keep that smile on your face?

How to Create a Custom Settings Panel in WooCommerce
One of the reasons for WooCommerce's popularity is its extendability. Like WordPress itself, WooCommerce is packed full of actions and filters that developers can hook into if they want to extend WooCommerce's default functionality.

How To Send JSON Data From a Drupal 8 Site
Imagine a situation: your mobile application needs to get some information from your site on Drupal 8 using JSON. Why JSON? Why not XML? In this article you will learn how to do it without much effort and installing additional modules, how to change the JSON array programmatically, and send the JSON data with and without using Views.

Understanding Design Patterns - Template Method
Defines the skeleton of an algorithm in a method, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithms structure.

Extending WordPress WP Forms Plugin Functionality
WP Forms plugin is a great form plugin that bundles a friendly and useful visual form builder. As a developer I want to use the form builder editor to allow users be independent creating the forms but I also want to save the form submission in it’s own database structure, therefore did a little research on the plugin code and found a neat way to do this.

Running Magento 2 API Tests Via Postman
In a current Magento 2 project we are focusing on building a headless instance that communicates with a kind of PWA application. In such an environment testing the APIs via Postman makes sense and since the Magento 2 API is documented via Swagger, one can easily import the API definition into Postman. Here is how to do it with httpie.

WordPress Deployment Part 1: Preparing WordPress
Welcome to the first post in a workflow series on deploying WordPress. In this series, we’re going to look at how you can set up automated deployments for your WordPress site in a range of different ways. But before we get into the “how”, first we’re going to look at why you should consider setting up automated deployments for WordPress and how you can prepare your site for automated deployments.

Testing Your Code with Multiple Versions of PHP Using Docker
About a year ago, I spent some time working with an open source project called PHP Crud API. The project creates a RESTful API from a relational database using a single PHP script. It’s quite an impressive feat of engineering, but as I started working on the project, I realised I needed a reliable way to test my changes in different versions of PHP. That’s where Docker comes in.

How To Do PHP Continuous Integration With Travis CI
Code versioning has become a standard practice in development circles, with GitHub being a popular platform for hosting code repos. However, a common issue is the testing of the code as it is pushed by a team member. As the volume of commits increases, ensuring the quality and accuracy of code becomes a challenge.

Monitoring File Changes Using NodeJS
During script runs – that change files – I frequently need to check which files have been modified by the scripts, especially in CRON automated tasks. This allows me to take appropriate actions depending on the file state change. The following post shows how we can monitor file state changes in nodejs.

Introducing View Components in Laravel, An Alternative to View Composers
In software development, one of the “best practices” is to create reusable code that can be implemented in different parts of your application if needed.

Mocking with Anonymous Classes
PHP7 gave us some cool features, including anonymous classes. These are classes that you can define on the fly, associate with a variable and instantiate whenever you like. In a well built application you might think there are limited use cases for these, with all classes you need having their own file and specific place in the application, but what about classes that are incredibly custom, few lines long and barely used?
 
Getting Lucky With Crystal in Homestead
I’m going to open this post with an apology for anyone who’s corporate firewall gets triggered by this URL, but I just couldn’t resist the title.
News and Announcements

Atlas 3.x (“Cassini”) and PHPStorm Completion
I’m proud to announce the release of Atlas.Orm 3.0.0-beta1, along with releases of the supporting Mapper, Table, Query, Cli, and Pdo packages. (Atlas is a data-mapper for your persistence model, not your domain model, in PHP.)

php[tek] Conference - May 31st-June 1st 2018, Atlanta
php[tek] 2018 is the premier PHP conference and annual homecoming for the PHP Community. This conference will be our 13th annual, and php[architect] and One for All Events are excited to continue to host the event in Atlanta! Tickets are on sale now.

Oscon - July 16-19th 2018, Portland
OSCON is the complete convergence of the technologies transforming industries today, and the developers, engineers, and business leaders who make it happen.The 20th Open Source Convention takes place next July. From architecture and performance, to security and data, get expert full stack programming training in open source languages, tools, and techniques. Tickets are on sale now.

PHP Detroit Conference - 26-28th July 2018, Livonia
PHPDetroit is a two-day, regional PHP conference that brings the community together to learn and grow. We're preceding the conference with a 2 track tutorial day that will feature 4 sessions covering various topics. We will also be running an UnCon alongside the main tracks on Friday and Saturday, where attendees can share unscheduled talks. Tickets are on sale now.

CoderCruise - August 30-September 3rd 2018, Ft. Lauderdale, FL
Tired of the usual web technology conference scene? Want a more inclusive experience that lets you get to know your fellow attendees and make connections? Well, CoderCruise was designed to be just this. It's a polyglot developer conference on a cruise ship! This year we will be taking a 5-day, 4-night cruise out of Ft. Lauderdale, FL that includes stops at Half Moon Cay and Nassau. Tickets are on sale now.

Pan-Asian PHP Conference - September 26-29th 2018, Singapore
The third pan-Asian PHP conference will take place in September 2018 in Singapore - the Garden City of the East! This is a single track, 2 days Conference, followed by a day of tutorials on 29th September 2018. Come and meet with the fastest growing PHP communities in Asia. More than 300 attendees are expected in this single track conference, with Rasmus Lerdorf and Sebastian Bergmann already confirmed as speakers. The Call for Papers is now open, and Super Early Bird Tickets are on sale now.

Podcasts

Laravel News Podcast LN62: Caching, Bots, and Async Programming
Jake and Michael discuss all the latest Laravel releases, tutorials, and happenings in the community, which this week featured a lot of caching.

Voices of the ElePHPant - Interview with TJ Gamble
Cal Evans and TJ Gamble sit down and talk Magento, PWAs, and Imagine.

Full Stack Radio Podcast Episode 88: Blake Newman - Vue.js State Management with Vuex
In this episode, Adam talks to Blake Newman about getting started with Vuex, and how you would use it to manage your applications state using several practical real-world examples. 

MageTalk Magento Podcast #168 - “You’re Already Connected to Your Sister”
We hope you like talking about GDPR because this one is ALL. ABOUT. GDPR. Buckle up, buttercup.

PHP Ugly Podcast #104: We Lose Our Free Will
Topics include the Twitter mass password reset and how dark patterns trick you online.

Post Status Draft Podcast - The Meta Episode
In this episode, Brian and Brian discuss meta data in WordPress, including the challenge of implementing data into new tools, such as the REST API and the Gutenberg editor.

Reading and Viewing

Book Review: Discovery - Explore Behaviour Using Examples
I've just finished reading "Discovery - Explore behaviour using examples" by Gáspár Nagy and Seb Rose. It's the first in a series of books about BDD (Behavior-Driven Development). The next parts are yet to be written/published. 

Why WordPress Uses PHP
Why does WordPress use PHP? In this video from my course, Learn PHP for WordPress, you'll get a detailed answer to this question. I'll give you an introduction to what PHP is and then show you why it's used in WordPress.

The PHP Developer Stack for Building Chatbots
On July 19th 20:00 CEST, I will join a Nomad PHP meeting to talk about The PHP Developer Stack for Building Chatbots. I am super excited to present my new talk, and I want to tell you a little bit more about it.

PHP Versions Stats - 2018.1 Edition
It's stats o'clock! See 2014, 2015, 2016.1, 2016.2, 2017.1 and 2017.2 for previous similar posts.

The Month in WordPress: April 2018
This past month saw a lot of preparation for upcoming events and releases across the WordPress project. Read on to find out more about these plans, and everything else that happened around the community in April.

Jobs

German Speaking PHP Developer (m/f)
You’re proud to call yourself a nerd and consider programming in PHP to be more than just a job? You’d like to help us make our shop better and faster while simultaneously providing our customers with an unparalleled and flawless shopping experience? If you feel like this describes you and also happen to have a weakness for new technology, you’re just the person we’re looking for!




Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

psalm
A static analysis tool for finding errors in PHP applications.

subrion
A Content Management System (CMS) which allows you to build websites for any purpose. Yes, from blog to corporate mega portal.

laravel-ecommerce
AvoRed E Commerce is an Laravel Open Source Shopping Cart.

easy-digital-downloads
Sell digital downloads through WordPress.

dv-php-core
Devless is a ready-made back-end for development of web or mobile applications. 

mantisbt
Mantis Bug Tracker

bulk-delete
Bulk Delete is a WordPress Plugin that allows you to delete posts, pages and users in bulk based on different conditions and filters.

applicationinsights-php
This project extends the Application Insights API surface to support PHP.

php-invoker
Invoke PHP callables with a timeout.

aimeos-core
Aimeos PHP e-commerce framework for high performance online shops.

backdrop
Backdrop is a full-featured content management system that allows non-technical users to manage a wide variety of content. 

phpstan
PHP Static Analysis Tool - discover bugs in your code without running it!

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

Social Version Control Log in

Published 16 May 2018 by David Fischer in Read the Docs Blog.

Today we are announcing the ability to log in or sign up to Read the Docs with your favorite version control hosting services like GitHub, BitBucket, or GitLab. This was one of our most requested features and it has been something we’ve been meaning to launch for a long time.

For new Read the Docs users

For new users, the sign up process is significantly streamlined. There’s no new password to remember and when you’re ready to start building your docs, Read the Docs will be ready with a list of your repositories to get started.

Click the “Sign Up” button on the Read the Docs home page and then click the button for your favorite version control hosting service.

For existing Read the Docs users

If you’ve already connected your GitHub, BitBucket or GitLab account, you can use it to log in with Read the Docs instead of your password. If you haven’t connected your account previously, you will have to log in normally and connect your account to use it to log in.

You can always see and manage which accounts you have connected in your profile (log in required).

As always, if you notice anything strange with your build, feel free to raise an issue on our issue tracker.


Block Storage Volumes Gets a Performance Burst

Published 15 May 2018 by Priya Chakravarthi in The DigitalOcean Blog.

Block Storage Volumes Gets a Performance Burst

At DigitalOcean, we’ve been rapidly adding new products and features on our mission to simplify cloud computing, and today we're happy to announce our latest enhancement.

Over the first half of 2018, we've improved performance for Block Storage Volumes with backend upgrades that reduce cluster latency by 50% and provide new burst support for higher performance for spiky workloads.

Burst Performance Characteristics

Block Storage Volumes have a wide variety of use cases, like database reads and writes as well as storing logs, static assets, backups, and more. The performance expectations from a particular volume will depend on how it's used.

Database workloads, for example, need single-digit millisecond latency. Most workloads in the cloud today are bursty, however, and don't require sustained high performance at all times. Use cases like web servers, backups, and data warehousing can require higher performance due to short increases in traffic or a temporary need for more bandwidth.

To meet the need for very low latency, we upgraded Ceph to its latest version, Luminous v12.2.2, in all regions containing Block Storage. This reduced our cluster latency by 50% and provides the infrastructure you need to manage databases with Block Storage Volumes.

To support spiky workloads, we added burst support, which automatically increases Block Storage Volumes' IOPS and bandwidth rates for short periods of time (60 seconds) before returning to baseline performance to cool off (60 seconds).

Here's a summary of the burst performance characteristics, which compares a Standard Droplet (SD) plan and an Optimized Droplet (OD) plan:

Droplet Plan
SD OD
Baseline
IOPS
(in IOPS/volume)
5000 7500
Baseline BW
(in MB/s)
200 300
Burst IOPS
(in IOPS/volume)
7500 10000
Burst BW
(in MB/s)
300 350
Avg Latency <10 ms <10 ms

We don't scale performance by the size of the volume you create, so every Block Storage Volume is configured to provide the same level of performance for your applications. However, your application needs to be written to realize these limits, and the kind of performance you get will depend on your app's configuration and a number of other parameters.

Performance and Latency Benchmarking

To learn more about the performance you're getting, we wrote How To Benchmark DigitalOcean Volumes, which explains not only how to benchmark your volumes but also how to interpret the results.

We then ran some of these tests internally to share the numbers and performance of our offering. You can find all the details in the tutorial, but here's a sample of results, which shows typical performance based on the queue depth (QD) of the application and the block size (on the x-axis) versus IOPS (on the y-axis).

Block Storage Volumes Gets a Performance Burst

Block Storage Volumes Gets a Performance Burst

These graphs show that the IOPS rate increases as queue depth increases until we hit our practical IOPS cap. Smaller block sizes tend to be IOPS limited, while larger block sizes tend to be bandwidth limited.

What about latency? Most real-world customer applications won't run the same kind of workload often used as a baseline (QD = 1 4K I/O), so these graphs show latency in µsec (or microseconds) as we add load to the cluster.

Block Storage Volumes Gets a Performance Burst

Block Storage Volumes Gets a Performance Burst

We see the same behavior in reads and writes. Because of how the backend storage stores the data, our results show that 16K has better latency at high queue depth, so we recommend you tune for 16K workloads if possible.

What's Next?

The performance improvements aren’t the only thing we have in store. There are several QoS features and infrastructure investments in the pipeline to improve your experience of Block Storage Volumes. (Ready to get started? Create a Volume now.)

We'd love to hear your thoughts, questions, and feedback. Feel free to leave a comment here or reach out to us through our UserVoice.


Episode 8: BTB Digest 1

Published 15 May 2018 by Yaron Koren in Between the Brackets: a MediaWiki Podcast.

The best of episodes 1-5! Well, not really the best, but the most relevant (and maybe interesting) parts of the first five episodes, condensed into a short(-ish) 30 minute digest.


DDD Perth Survival Tips

Published 13 May 2018 by Derek in DDD Perth - Medium.

So, you are going to DDD Perth, it’s your first time at a conference and you need some help navigating the uncharted territory. Well you have come to the right place, if you have 5 minutes to spare please take the time to read this survival guide and it will hopefully help you get the most out of the conference.

TIP 1 #earlybirdie

At conferences, registration queues can be long, the waits can be lengthy and anxiety levels are often at their maximum.

At DDD Perth we endeavour to make this wait as fun and action packed as possible. However why not simply avoid the queues altogether and turn up early. Early birds not only avoid queues, they get first dibs on any swag being offered out by sponsors (Hint: the best laptop stickers go early), get to the coffee purveyors before anyone else and so find themselves fully caffeinated and ready for the first keynote. (Note: at DDD we champion diversity we also encourage non-coffee addicts to stay ‘hydrated’ … )

TIP 2 #beprepared

Being prepared for a conference at first glance seems a bit odd — after all it’s a day off work and being prepared sounds a bit like work !! But nooooo, being prepared will enhance your experience more than 3D glasses at the latest Avenger movie. Here is a checklist to help:

  1. Get your hands on the running order Before The Event ( website the night before is your best option as it’s the most up to date )
  2. Bring a BackPack — very important for swag
  3. Put your laptop in it — if you want to break out and build something cool
  4. Don’t forget a portable charger for your phone — for mobile PUBG perhaps
  5. Bring a small snack — see #stayfuelled
  6. Bring a jumper — a hoody for that Rami Malek in ‘Mr Robot’ hacker look

TIP 3 #planyourday

“All good plans never survive first contact with the enemy” — does not mean it is not a good idea to have one. Below is a quick list you can checkoff when preparing your DDD Perth plan. They may seem like no brainers but then again most plans are (Note: not a dig at project managers)

  1. Know the Venue’s location — be familiar with how you are going to get to DDD Perth (and home after the after party)
  2. Pick your talks — it’s good to have a chosen talk and a reserve talk for a each time slot, cause life.
  3. Research your speakers — finding out about your chosen speakers adds to the talk as it gives you some possible insight into their talk.
  4. Get a good seat — be early to your chosen talks — standing for 40 min talks isn’t fun.

TIP 4 #volunteerlove
DDD is a not for profit event, it is run by people who give up their time and use personal compute cycles to make sure you have a most awesome time. Please be kind and generous with your time when dealing with them. They will be easily recognised by the multi sponsor emblazoned green t-shirts, grimacing and sweating, red faces… trust me they are having fun. Without these giant Oompa Loompas this event wouldn’t happen. ( Note: some sport luxurious beards and should be treated like any other animal at the zoo … )

TIP 5 #stayfueled

There is a lot of information to take in and digest at DDD Perth, staying fuelled throughout is important. Luckily we thought of that and the event will be fully catered, however always handy to bring a snack when your feel sugar levels heading towards dangerous (sleepy) levels.

TIP 6 #schmoozing

We are all introverted nerds who, beset with imposter syndrome don’t like venturing beyond our keyboards. This is true, but the beauty of DDD is we are ALL introverted nerds beset by imposter syndrome (even the speakers!)

So, get out there and mingle, make connections. Start conversations with complete strangers, safe in the knowledge that they feel exactly like you… It’s a pretty unique situation, be a shame to waste it. Who knows what cool stuff you might find out about, just by talking to the introverted nerd beside you — it might even be me.

tl;dr — respect your peers and have an awesome time at DDD Perth !!


DDD Perth Survival Tips was originally published in DDD Perth on Medium, where people are continuing the conversation by highlighting and responding to this story.


Untitled

Published 10 May 2018 by Sam Wilson in Sam's notebook.

It is time I think (5AM on a Friday) to finally try to get the Flicker2Piwigo CLI script working. Small job before breakfast?


Restore a corrupted mediaWiki, to a newer verison of mediaWiki

Published 10 May 2018 by G_G in Newest questions tagged mediawiki - Webmasters Stack Exchange.

A working installation of mediawiki was corrupted by a user "touching" all files under the dir structure, ending in all files having the same exact permissions, and modify dates. I'm not sure which of the above had caused the wiki to stop working, but in fact - that's what happened.

The mediaWiki is version 1.26 - currently out of support, so I know.

Every single file of the wiki is available, and the dir' structure is indeed intact. The wiki's DB is not longer available. However the images/media (if indeed stored using the DB), are not as critical to the user as the actual page text content.

Is there a way to save this wiki ? I've looked into restoring mediaWiki, but then it's assumed the wiki has been backed up properly, and this is not our case, unfortunately.

Thank you.


PHPWeekly May 10th 2018

Published 10 May 2018 by in PHP Weekly Archive Feed.

PHPWeekly May 10th 2018
Curated news all about PHP.  Here's the latest edition
PHP Weekly 10th May 2018
Welcome to the latest @phpweekly newsletter.

With the 30 Days of Testing challenge underway, second on the list was about reading and sharing E-commerce testing articles. Learn all about WooCommerce here.

Also this week, with Drupal 8 maturing and Drupal ever evolving, the Drupal Association Board continues to evolve with it. 
With this is mind there are two At-large positions on the Association Board of Directors. Self nominations from 1st-11th June, 2018, with voting taking place in July.

We have the second part of Lessons from Laracasts, a collection of tips taken from the Let's Build A Forum with Laravel and TDD tutorial. 

Plus Cal Evans interviewed Nils Aldermann and Jordi Boggiano in the latest Voices of the ElePHPant podcast.

And finally, the first Laracon Australia takes place in October, in Sydney. Speakers already confirmed include Matt Stauffer and the frameworks author Taylor Otwell. Get your early bird tickets now.

Enjoy your read, 

Cheers
Ade and Katie

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.

Articles

Testing Your E-commerce PHP Application
I'm participating (as much as possible) in the #30daysoftesting challenge organised by Ministry of Testing and SauceLabs. If you're interested, read the full 30 Days of E-Commerce Testing article and join this fun and educational challenge. The 2nd challenge on the list was to read and share interesting blog articles about E-commerce testing. Since I'm working as a PHP professional I thought it would be great if I oriented my focus on testing PHP based E-commerce platforms. I picked WooCommerce as it's an easy to install and use E-commerce solution. For Magento, PrestaShop and others I've added useful links at the bottom of this article. 

Programming = Climbing a Huge Mountain
Let's take a break after 2 long code-posts from last week and enjoy bit of philosophy. I apply the mountain climber in programming for last 2 years and it really helps me to overcome difficult spots. Today we'll climb together.

Drupal Association Board Elections 2018
Now that Drupal 8 is maturing, it is an exciting time to be on the Drupal Association Board. With Drupal always evolving, the Association must evolve with it so we can continue providing the right kind of support. And, it is the Drupal Association Board who develops the Association’s strategic direction by engaging in discussions around a number of strategic topics throughout their term. As a community member, you can be part of this important process by becoming an At-large Board Member.

A Good Issue
Maintaining a number of open source projects comes with a number of issues. Reporting a good issue will result in a more engaged approach from project maintainers. Don't forget: there's a human behind every project.

Tutorials and Talks

Understanding Design Patterns - Command
Encapsulates a request as an object, thereby letting you parameterise other objects with different requests, queue or log requests, and support undoable operations.

Querying and Eager Loading Complex Relations in Laravel
Laravel is a PHP framework that uses Eloquent, a powerful and amazing ORM that allows you to do complex SQL queries in a very easy way. But sometimes you need more, and here I’m gonna give you an interesting tip that can bring you a lot of flexibility.

Notifications in Laravel
In this article, we're going to explore the notification system in the Laravel web framework. The notification system in Laravel allows you to send notifications to users over different channels. Today, we'll discuss how you can send notifications over the mail channel.

Introducing New Symfony Polyfills for PHP 7.3 and Ctype
Symfony Polyfills provide some features from PHP core and PHP extensions implemented as PHP 5.3 code, so you can use them in your applications regardless of the PHP version being run on your system.

How to Create a PayPal Donate Button for Your WordPress Site
From non-profit organisations to churches, and political campaigns to bloggers who need early support, several situations warrant asking for donations. Several WordPress plugins are available for collecting donations, but more often than not all you need is a simple PayPal Donate button.

Sending Email Asynchronously With ReactPHP Child Processes
In PHP the most of libraries and native functions are blocking and thus they block an event-loop. For example, each time we make a database query with PDO, or check a file with file_exists() our asynchronous application is being blocked and waits. Things often become challenging when we want to integrate some synchronous code in an asynchronous application. This problem can be solved in two ways.

PHP Application Logging with Amazon CloudWatch Logs and Monolog
Logging and information debugging can be approached from a multitude of different angles. Whether you use an application framework or coding from scratch it’s always comforting to have familiar components and tools across different projects. In our examples today, I am going to enable Amazon CloudWatch Logs logging with a PHP application.

Speed Up Laravel on Top of Swoole
Swoole is a production-grade async programming framework for PHP. It is a PHP extension written in pure C language, which enables PHP developers to write high-performance, scalable, concurrent TCP, UDP, Unix socket, HTTP, WebSocket services in PHP without too much knowledge of the non-blocking I/O programming and low-level Linux kernel. You can think of Swoole as something like NodeJS but for PHP, with higher performance.

How to Install Laravel on Amazon Cloud (AWS EC2)
Laravel is a popular framework that has become the standard development toolkit for many PHP projects. In many cases, developers prefer to develop their project in Laravel because of the many features and tools that ensure streamlined development experience.

How Laravel Broadcasting Works
Today, we are going to explore the concept of broadcasting in the Laravel web framework. It allows you to send notifications to the client side when something happens on the server side. In this article, we are going to use the third-party Pusher library to send notifications to the client side.

[Entry] Appointment Scheduler
This scheduler allows you to create appointments to be scheduled in different rooms. You can create rooms, create appointments to be added directly to the scheduler, move appointments between rooms and time slots on the scheduler, schedule appointments without a time to be added later (drag and drop them on).
News and Announcements

Joomla 3.9 and Joomla 3.10
As you most probably know, the General Data Protection Regulation (GDPR) will enter into force on 25 May, 2018. Joomla, listening to its users, intends to integrate a Privacy Tool Suite in the Joomla CMS to facilitate the compliance of your sites and to make developers’ life easier to get their extensions compliant.

CakePHP Conference - June 14-17th 2018, Nashville
CakeFest is organised for developers, managers and interested newcomers alike. Bringing a world of unique skill and talent together in a celebration and learning environment around the worlds most popular PHP framework. Celebrating over eleven years of success in the PHP and web development community, CakePHP’s 2018 conference will be an event not to miss. Tickets are on sale now.

Mid-Atlantic Developer Conference - July 13-14th 2018, Baltimore
Mid-Atlantic Dev Con is a polyglot event, designed to bring together programmers from the region, regardless of their choice of platform, for two full days of learning from each other and building a stronger regional community. Early Bird tickets sales end in two days.

Laracon EU - 29-31st August 2018, Amsterdam
Laracon EU is a unique international Laravel event with over 750 attendees. The conference has multiple tracks and is focusing on in-depth technical talks. Come learn about the state of the industry while networking with like-minded and diversely experienced developers. Tickets are on sale now.

ZendCon - 15-17th October 2018, Las Vegas
ZendCon & OpenEnterprise is the premier technology conference designed to teach and share practical experiences from the front lines of enterprise PHP and open source environments. Focused on solving real-world, enterprise-class problems, technical business leaders, strategists, and developers will assemble to discuss case studies and best practices around the application of PHP and open source to transform business. The Call for papers is now open, and Blind Bird tickets are on sale now.

Laracon AU - October 18-19th 2018, Sydney
Two days of learning and networking with the Laravel community in Australia for the first time. The two day conference will see us welcome some of the most prominent Laravel community members including Matt Stauffer, Adam Wathan, and the framework’s author Taylor Otwell as speakers alongside a host of terrific local speaking talent. Early Bird Tickets are on sale now.

Nomad PHP US - June 21st 2018 20:00 CDT
Win Big, Cache Out. Presented by Ashley Hutson. Caching can be a very complicated and loaded topic in Computer Science. There are many factors to consider from query caching, results caching, SQL caching, partial content caching, and full page caching. Look forward to finding out typically when, what, and where you should be caching and the best practices in implementing and how in PHP with various caching technologies(Redis, Memcached, and cloud based solutions). Always remember that you can over cache, so it is important to not go overboard as well.

Nomad PHP EU - June 21st 2018 20:00 CEST
Solving Problems Using Trees. Presented by Tomasz Kowalczyk. The tree is one of the most important data structures available in Computer Science. If you know how to describe a problem using trees, you can significantly improve the speed and quality of the developed solution. In this talk, I’d like to show what kind of problems can be solved with trees and show examples how I did that in several non-trivial situations.

Podcasts

Voices of the ElePHPant - Interview with Nils Adermann and Jordi Boggiano
In this episode, Cal talks with Nils Adermann and Jordi Boggiano about composer and packagist.

Three Devs and a Maybe Podcast - Site Reliability Engineering with Niall Murphy
In this week’s episode we are lucky to be joined by Niall Murphy to discuss the discipline of Site Reliability Engineering.

MageTalk Magento Podcast #167 - The Left Hand of Agreement / The Right Hand of Discord
What happens when Phillip forgets his headphones? Terrible audio quality, that's what! Recorded 30 days before Imagine 2018 and never released, this episode held up production due to its never-ending issues and basically almost never saw the light of day.

The Laracasts Snippets Episode 83: Stream of Consciousness
While most episodes generally focus on one central idea, today is more a stream of consciousness. We'll discuss everything from the struggles of running a business, to Metroid, to social media addiction, to Cobra Kai. Grab a drink and let's hang out.

PHP Ugly Podcast #103: The Longhorn Peace Summit
Topics include the Coinbase Blog and photos from LonghornPHP.

Post Status Draft Podcast - All About You(r Privacy)
In this episode, the two Brians discuss the current conversations and controversy surrounding data collection and visitor privacy on the web.

Reading and Viewing

Vienna PHP Meetup – Blackfire Talk
This blog post as been written by Emir Beganović, an active community member and speaker at PHP meetups. He reached out to us for some support on making a great meetup talk about Blackfire.

Bizarro Devs
A curated newsletter with all the cool, wacky and the obscure tech news delivered on a weekly basis (you’ll get it on Tuesdays). It’s free and will help you earn the most Slack reactions in your office. See the latest issue here, featuring phpweekly.com!

Cloudways Interview - Zvonimir Burić Talks About Magento Development Workflows
Learn what Zvonimir Burić, Technical Lead & Magento Developer, has to say about the future of Magento 1 and 2, ecommerce trends, and Magento development principles and workflows in our one-to-one session.

What's New in Laravel 5.6
Laravel 5.6 is upon us! While it's true that this release isn't quite as flashy, there are still a number of incredibly useful new additions and updates. Let's review them together.

Exakat PHP Index of Coding (May 2018)
Not using @ is the poster child of good practices. It’s also looked upon, as an impossible goal. Did you know that the @ operator is only merely used by 50% of PHP applications ? Same for parenthesis with include (and co) : don’t use them, like 50% of the developpers. This is how the Exakat PHP Index of coding was born.

Lessons From Laracasts, Part 2
This is part 2 of my collection of tips I've taken from Let's Build a Forum with Laravel and TDD, the mega-tutorial (102 lessons) by Jeffrey Way on his Laracasts site. Part 1 is here. This post contains 51 tips, covering lessons 43-102.

Jobs

German Speaking PHP Developer (m/f)
You’re proud to call yourself a nerd and consider programming in PHP to be more than just a job? You’d like to help us make our shop better and faster while simultaneously providing our customers with an unparalleled and flawless shopping experience? If you feel like this describes you and also happen to have a weakness for new technology, you’re just the person we’re looking for!




Do you have a position that you would like to fill? PHP Weekly is ideal for targeting developers and the cost is only $50/week for an advert.  Please let me know if you are interested by emailing me at katie@phpweekly.com

Interesting Projects, Tools and Libraries

intl
A PHP 5.5+ internationalisation library, powered by CLDR data.

lazer-database
PHP flat-file database to store data with JSON.

php-slang
The place where PHP meets Functional Programming.

auth0-PHP
The Auth0 PHP SDK provides straight-forward and tested methods for accessing Authentication and Management API endpoints.

dephpugger
Dephpugger (read depugger) is an open source lib to make a debug in php direct in terminal, without necessary configure an IDE.

coding-standard
Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.

zentaopms
Zentao is an agile(scrum) project management system/tool, Free Upgrade Forever.

phpegg
A multi application mode php framework, support web page, rest api, jsonrpc, grpc applications.

fortnite-php
Interact with the official Fortnite API using PHP.

jedy
Jedy CMS Multi-language is created with Symfony 3.

php-audit
PhpAudit is a tool for creating and maintaining audit tables and triggers for creating audit trails of data changes in MySQL databases.

phlex
A super-sexy voice interface for the Plex HTPC.

Please help us by clicking to our sponsor:

encrypt php scripts 
Protect your PHP Code
Why not try SourceGuardian 11. Click here to download a 14 Day Trial copy. Protect your code using Windows, Linux or Mac and run everywhere with our free Loaders.
 

So, how did you like this issue?

Like us on FacebookFollow us on Twitter
We are still trying to grow our list. If you find PHP Weekly useful please tweet about us! Thanks.
Also, if you have a site or blog related to PHP then please link through to our site.

unsubscribe from this list | update subscription preferences 
 
Copyright © 2018 PHP Weekly, All rights reserved.
Email Marketing Powered by MailChimp

Introducing Updates for Load Balancers

Published 8 May 2018 by Tyler Crandall in The DigitalOcean Blog.

Introducing Updates for Load Balancers

In February 2017, we launched Load Balancers, our highly available and managed load balancing service. Thousands of users rely on them to distribute traffic across Web and application servers.

Today, we’re announcing significant upgrades to Load Balancers, including Let's Encrypt integration and HTTP/2 support. All users now have access to these features at no additional cost and with no action required. In fact, all existing Load Balancers already have been upgraded.

Let’s Encrypt Integration

Load Balancers now support a simple method to generate, manage, and maintain SSL certificates using Let’s Encrypt.

With a couple of clicks, you can add a free Let’s Encrypt SSL certificate to your Load Balancer to secure your traffic and offload SSL processing. Certificates will automatically renew, so you don't have to worry about a thing.

Introducing Updates for Load Balancers

HTTP/2

Load Balancers now also support the HTTP/2 protocol, which is a major update to HTTP/1.x designed primarily to reduce page load time and resource usage. You can find this under the Forwarding Rules dropdown in your Load Balancer settings.

Load Balancers can additionally terminate HTTP/2 client connections to act as a gateway to HTTP/1.x applications, allowing you to take advantage of HTTP/2's performance and security improvements without upgrading your backend servers.

Keep a look out for more performance-focused announcements in the coming months.

Our improved Load Balancers are available in all regions for the same price of $20/month. For more information about Load Balancers, please check out our website and these community articles:

Happy coding,
Tyler Crandall
Product Manager


Building the best group email for teams – an interview with our COO

Published 8 May 2018 by David Gurvich in FastMail blog.

Building the best group email for teams – an interview with our COO
Building the best group email for teams – an interview with our COO

Topicbox launched in August 2017 and since then we’ve been busy creating the best group email product we can for teams, whatever that team looks like.

We recently sat down with Helen Horstmann-Allen, Topicbox COO and Head of Product to talk about the history of Topicbox, the future of email and how group email can help a wide range of teams be more productive and organized than ever before.

Helen has worked in tech and email for more than 20 years and is still in love with email today.


Firstly, tell us a bit about your background in email and tech?

Helen: I got started with Pobox, which is an email forwarding service (and now part of the FastMail family) in 1995, the world’s first lifetime email address, and having ‘one address for life’ was our initial concept.

And like many companies, we started getting feedback from customers right away asking us for more features they wish we would add. And a very early feature request was group email, colloquially known as ‘listserves’.

The most popular open source product at that point in time was a program called MajorDoMo, and so majordomo.pobox.com launched in early 1996. We had tons of people sign up for it and we very quickly decided that it actually should be its own product, Listbox, which we launched late in 1996.

Listbox is still around today, but it went through many iterations. Initially it was just people who wanted to talk to each other, over email, which was so novel back then!

Over time we expanded the service offering to include email marketing and newsletters, but my first passion was always the group email product.

I think email is a tool that everybody has access to. It is one of the only pieces of technology that is almost truly universal. It’s accessible to almost everyone and when you talk about the value of email as a discussion tool it’s incredibly inclusive.

In 2015 I sold my business (which had created Pobox and Listbox) to FastMail and when we started talking about what we could do together, group email was one of the first things we both thought sounded like a really interesting idea.

Listserves have been around for a very, very, very long time. They are one of the foundational technologies of the internet, but nobody does them really well. And we thought what a great opportunity. If we could make a great group email solution, could we change the way people use all their email?

After quite a bit of work and many iterations we launched Topicbox. Topicbox was originally built to serve people at a pretty large size and as we started working on it, and we started testing it with people, we discovered that in fact even very small groups can get a lot of benefit out of group email.

What were some of the other challenges in creating Topicbox?

Helen: Email is one of those technologies that people love to hate. There’s a lot of challenges in it and most of them have to do not with the sending of email but the receiving and the organizing.

There are always the clients, or the products or the projects that you absolutely positively need to hear everything about the moment it happens. There are other things where you just need to kind of know stuff is going on but you don’t need to be interrupted by it all day long. And then there are plenty of projects that other people are working on, you need to be aware of maybe and you might need access to it in the future but you don’t need to actually see it now.

If Topicbox could take all that information – some of which you get today and you’re frustrated with; and lots of which you don’t get today and then you don’t have that information when you need it – and put it one place that everyone in your organization can share then how much of your team’s best knowledge could we make accessible to you?

How can Topicbox help teams communicate better?

Helen: In many ways using Topicbox is just like using your regular email. The only difference is instead of sending it one-to-one, or CCing a whole group of people, you send it to your group.

The group can be predefined, either by you when you create it, or by someone else who is running the project, and that’s really it. You still send the same information but you get it to the right audience.

I use Topicbox just by myself sometimes, just for one-to-one correspondence because I know that some day, someone besides me is going to need to read it and it is somewhere they can now get at it.

We use it for groups of two or three people. Instead of some people getting CCd on some messages and not others and they have an incomplete history … a Topicbox group lets you have a complete history for everyone to see, even if they end up joining a project later.

And then of course for big groups it makes perfect sense. You don’t want to have to have your ‘All company’ messages in one place, you want to have one central tool that you use for everything.

Where does Topicbox sit amongst a suite of modern communication tools such as more traditional email, instant messaging and CRMs?

Helen: Topicbox is something that almost every company who uses email can use. If in your company today you CC people then you probably should be using Topicbox.

Imagine Topicbox as a tool to put the control and the flow of messages into the hands of the people who receive it.

Chat is terrific, but it’s kind of like a replacement for a telephone call or walking by a group. When you have a really active chat platform it can feel like reading a transcript of everything that happened in your office over the course of a day. That’s too much information for lots of people. And it’s not a great way to get oversight over an organization.

If you feel overwhelmed by the volume of chat, moving your important discussions up to Topicbox is a wonderful solution and a great add-on to those existing tools.

But if you’re using regular email in almost any way, if you ever CC somebody, a Topicbox group is going to help you retain that information in a more useful, more searchable and more categorized way. And that helps when you bring more people on, it helps when you transition people out, it helps when you start up a new project and it helps when you retire that project.

You can say all that information is now gone to one contained place and we’ll start a new group to discuss a new thing and we don’t have to have our history backlog littered with information about old projects that you get when you’re re-using a lot of tools.

What’s your favourite Topicbox feature?

Helen: I love the Daily Summary! I love getting one message that I can quickly skim through and just see what other people are working on who aren’t necessarily my department, or aren’t necessarily in my team. It’s definitely not what I am working on but it gives me a little oversight into what everybody else has got going on, and [gives me insights] if something important is happening in an area of the company that I’m not dealing with.

I also love organization-wide search. Who hasn’t found themselves in the position of knowing that something has been discussed, not necessarily knowing where to look for it? Topicbox helps you find what you are looking for and then immediately places you in the context where you can also see what else has happened around there very, very quickly.

How else has Topicbox improved your own business communication?

Helen: One of my favourite places to use it is with clients. When you are dealing with any type of external organization you may have one, two or three different touchpoints there and you may also have multiple people on your staff who need to deal with them.

Creating a Topicbox group is a really easy way to make sure that everybody is on the same page all the time.

Do you use Topicbox through the web browser, mobile or your email program?

Helen: I started out using Topicbox almost exclusively through email and as time went on I found myself more often going to the website and using the Message Composer to respond to old threads.

And what’s great about that is then I know I can just go back to my inbox and throw away everything because now I know it’s in Topicbox so I don’t have to hold onto it myself.

What is planned for Topicbox in 2018?

Helen: We’ve got some big things planned so stay tuned! I can’t share anything just yet but we’re currently looking at more ways to make Topicbox even better for teams.

We also love hearing from our customers, so if you have any feedback or feature wishes please let us know via Twitter or contact us directly.


Berlin Underground

Published 6 May 2018 by jenimcmillan in Jeni McMillan.

UBahn

It’s 3.19 am. Berlin time. I am dancing in the underground. Sweet violin plays the strings of my heart. Ride of the Valkyries. My soul in question.


Our Journey towards Diversity

Published 6 May 2018 by Rebecca Waters in DDD Perth - Medium.

DDD Perth 2017 Speakers

DDD Perth has a tagline that reads:

DDD Perth is an inclusive non-profit event for the Perth software community. Our goal is to create an approachable conference that anyone can attend or speak at, especially people that don’t normally get to attend / speak at conferences.

It’s an admirable mission statement, if I do say so myself! DDD Perth aims to do this by adhering to a few golden DDD rules, and a few more that are DDD Perth-ified:

Focussing on creating a safe and inclusive environment where everyone is welcome

The last line I’ve called out here is one I want to spend a bit of time on. In 2016, the conference was into it’s second year. The inaugural conference in 2015 went well. The founders, Matt Davies and Rob Moore might have had minor personal breakdowns and maxxed their personal credit cards to finance the venture, but on the whole they pulled it off and were ready for the challenge of a repeat performance.

So off on the conference train it went! The ticket price stayed as a low as possible. The event was on a Saturday. The Call for Presentations was broad and the voting democratic. There was a code of conduct and it was followed by all attendees.

It was also a fantastic conference. Held at the Mecure Inn, the conference ran 3 tracks, was attended by 200 people and simply was a great day. From talks on Authentication, to presenters drinking growlers on stage, the day was a success. This was the first time I managed to get to the conference and I was in awe of how enjoyable the day was.

The thing is, the safe and inclusive environment was welcoming for sure, but the agenda didn’t feature a single woman. It was something that the organisers saw, the attendees saw, the speakers saw. I’m also proud to say that in his opening address, Rob stood up and owned it. He made a pledge to do something about it for 2017.

In 2017, I joined the organising committee, as did many other talented and motivated folks.

When we came to reflect on the 2016 conference and look ahead to 2017, we set our sights on changing that.

We weren’t sure where to start, but we decided that the next step towards an inclusive conference was addressing gender diversity in speakers. There are other diversity and inclusion points to address, but as a group of volunteers, we recognised that if we were to be successful, we needed to concentrate our efforts, so we focussed on gender diversity.

As I talk about gender diversity in this post, I want to make mention of non-binary genders. In 2017, DDD Perth had no attendees or speakers that identified as anything except Female or Male. Our registration questionnaire allowed for ‘other’ genders to be included, but did not feature a free text field.

We asked our contacts in the Perth community who had experience in this area, and put that advice together with our own ideas.

We looked at two parts of forming an agenda; submissions and selection.

Submissions

When we looked at where our submissions were coming from, it was pretty evident early on that we didn’t have a big reach into the software community.

The number of submissions jumped from 48 in 2016 to 104 in 2017

Reaching Out

We reached out through our contacts to as many community groups and companies as we could. The feeling was that a bigger reach would naturally result in submissions from women.

We also spearheaded a grass roots campaign to increase diversity in submissions. We all knew of impressive women in software in Perth — who doesn’t — so we asked them to submit, and we asked them to convince their peers too as well.

Michelle Sandford, one of Microsoft’s Top Social Media Influencers worldwide, had previously mentioned how much she enjoyed the conference, and agreed to help us promote submissions from women. Fenders, with the incomparable Mandy Michael, helped spread the word. There are many others who helped promote DDD Perth in 2017.

Flexibility in Submissions

Donna Edwards, State Delivery Manager at Readify, makes a great point in her 2017 DDD Perth talk about criteria and the willingness of women to apply. She’s talking about attraction strategies in the workplace; looking back we applied similar thinking to our conference submission process. (I should have put a spoiler alert on this paragraph as to our success in attracting women speakers, huh?)

We took a long look at our conference submission criteria. We looked from the eyes of a first time presenter, from women, from minority groups in our community, and ultimately we removed what we thought were two barriers to submission: unconscious bias and length of talk.

The thought was that for a first time presenter, a 45 minute talk could be intimidating. We introduced 20 minute talk lengths to encourage people who maybe thought they didn’t have enough content for a long talk to still consider submitting.

37% of 2017 talk submissions were 20 minutes in length

Unconscious Bias is an ugly thing to think about, isn’t it? Still, we forced ourselves to think on this point. Quite possibly, the people voting recognised some names and voted for those talks based on notoriety (be that fame, unconscious gender bias, unconscious race bias…the list goes on). We recognised that this could lead to our conference getting old very quick, should we only hear from the same 10 presenters every year. We decided that we would introduce anonymous voting.

I mention this whilst talking about Submissions, because we said upfront on the submission page that all identifying information would be hidden come voting time. We felt that in order to remove the barrier, we needed to be upfront about our intent. Being transparent about our process was important to us.

21% of submissions in 2017 included a presenter who identified as female

Selection

DDD Perth, as with all DDD conferences, has a democratically chosen agenda. What this means is that anyone is able to influence the agenda during our one week voting window.

I’ve already mentioned our anonymous voting changes. We stripped identifying information such as names and pronouns, but left experience and credentials.

However, we didn’t prohibit people mentioning the title of their talk on social media. This was a point of discussion for us; would it detract from the anonymous voting? Would it unfairly advantage those people with a following already?

Look, the answer to that is Yes. There was an advantage for people who vocally encouraged their networks to vote for them. This worked for both male and female speakers. However we felt that as well as being impossible to police, the promotion of the conference was a good byproduct. It also allowed our allies, such as Michelle, to promote the submissions by women she admired.

When it came time to tally the votes, we found that the process employed had yielded positive results.

A quarter of speakers in 2017 identified as female

I also want to mention our Code of Conduct. On securing speakers, we required each person explicitly agreed to our enforceable Code of Conduct. We discussed what to do on the day if this became an issue and every volunteer knew what to do and who to contact.

Uncomfortable as confrontation is, I’m glad we spent time discussing the possibility of expelling people from the conference. It hasn’t been required yet, but that doesn’t take away from the need to be prepared.

Not there yet

As you can see in the above statistics, DDD Perth is improving, but we’re not there yet. That’s why in 2018, we have a dedicated champion, Matt Ward, to help focus our efforts, not only in gender diversity.

We’re concentrating on achieving better representation in gender, seniority, ethnicity, accessibility and role. This isn’t an exhaustive list, nor will 2018 be the perfect conference. We just hope it’s another step forward.


Our Journey towards Diversity was originally published in DDD Perth on Medium, where people are continuing the conversation by highlighting and responding to this story.


How to create sitemaps with only non-www URLs in MediaWiki website?

Published 5 May 2018 by Arnb in Newest questions tagged mediawiki - Webmasters Stack Exchange.

I usually prefer the non-www URL for my website (http://example.com, not http://www.example.com). While submitting the site to Google one needs to set a preferred domain by choosing either the www or the non-www version of URL. Then, during submitting the sitemap, only the sitemap containing the preferred version of URL should be submitted to Google search console.

I have a website run by MediaWiki software. It uses a PHP script (named generateSitemap.php, it is bundled with the MediaWiki installation package) to create the sitemaps. One can set cron jobs to automate the process of updating sitemap at regular intervals.

The problem is my sitemap are being generated containing the www version of the webpages.

How should I instruct the programs to generate sitemaps without www in the URLs?


The anatomy of an AtoM upgrade

Published 4 May 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Yesterday we went live with our new upgraded production version of AtoM.

We've been using AtoM version 2.2 since we first unveiled the Borthwick Catalogue to the world two years ago. Now we have finally taken the leap to version 2.4.

We are thrilled to benefit from some of the new features - including the clipboard, being able to search by date range and the full width treeview. Of course we are also keen to test the work we jointly sponsored last year around exposing EAD via OAI-PMH for harvesting.

But what has taken us so long you might ask?

...well, upgrading AtoM has been a new experience for us and one that has involved a lot of planning behind the scenes. The technical process of upgrading has been ably handled by our systems administrator. Much of his initial work behind the scenes has been on 'puppetising' AtoM to make it easier to manage multiple versions of AtoM going forward. In this post though I will focus on the less technical steps we have taken to manage the upgrade and the decisions we have made along the way.

Checking the admin settings

One of the first things I did when I was given a test version of 2.4 to play with was to check out all of the admin settings to see what had changed.

All of our admin settings for AtoM are documented in a spreadsheet alongside a rationale for our decisions. I wanted to take some time to understand the new settings, read the documentation and decide what would work for us.

Some of these decisions were taken to a meeting for a larger group of staff to discuss. I've got a good sense of how we use AtoM but I am not really an AtoM user so it was important that others were involved in the decision making.

Most decisions were relatively straightforward and uncontroversial but the one that we spent most time on was deciding whether or not to change the slugs...

Slugs

In AtoM, the 'slug' is the last element of the url for each individual record within the catalogue - it has to be unique so that all the urls go to the right place. In previous versions of AtoM the slugs were automatically generated from the title of each record. This led to some interesting and varied urls.


Slugs are therefore hard to predict ...and it is not always possible to look at a slug and know which archive it refers to.

This possibly doesn't matter, but could become an issue for us in the future should we wish to carry out more automated data manipulation or system integrations.

AtoM 2.4 now allows you to choose which fields your slugs are generated from. We have decided that it would be better if ours were generated from the identifier of the record rather than the title. The reason being that identifiers are generally quite short and sweet and of course should be unique (though we recently realised that this isn't enforced in AtoM).

But of course this is not a decision that can be taken lightly. Our catalogue has been live for 2 years now and users will have set up links and bookmarks to particular records within it. On balance we decided that it would be better to change the slugs and do our best to limit the impact on users.

So, we have changed the admin setting to ensure future slugs are generated using the identifier. We have run a script provided by Artefactual Systems that changed all the slugs that are already in the database. We have set up a series of redirects from all the old urls of top level descriptions in the catalogue to the new urls (note that having had a good look at the referrer report in Google Analytics it was apparent that external links to the catalogue generally point at top level descriptions).

Playing and testing

It was important to do a certain amount of testing and playing around with AtoM 2.4 and it was important that it wasn't just myself who did this - I encouraged all my colleagues to also have a go.

First I checked the release notes for versions 2.3 and 2.4 so I had a good sense of what had changed and where I should focus my attention. I was then able to test these new features and direct colleagues to them as appropriate for further testing or discussion.

While doing so, I tried to think about whether any of these changes would necessitate changes in our workflows and processes or updates to our staff handbook.

As an example - it was noted that there was a new field to record occupations for authority records. Rather than letting individuals to decide how to use this field, it is important to agree an institutional approach and consider an appropriate methodology or taxonomy. As it happens, we have decided not to use this field for the time being and this will be documented accordingly.

Assessing known bugs

Being a bit late to the upgrade party gives us the opportunity to assess known bugs and issues with a release. I spent some time looking at Artefactual's issues log for AtoM and establish if any of them were going to cause us major problems or required a workaround to be put in place.

There are lots of issues recorded and I looked through many of them (but not all!). Fortunately, very few looked like they would have an impact on us. Most related to functionality we don't utilise - such as the ability to use AtoM with multiple institutions or translate it into multiple languages.

The one bug that I thought would be irritating for us was related to the accessions counter which was not incrementing in version 2.4. Having spent a bit of time testing, it seemed that this wasn't a deal breaker for us and there was a workaround we could put in place to enable staff to continue to create accession records with a unique identifier relatively easily.

Testing local workarounds

Next I tested one of the local workarounds we have for AtoM. We use a CSS print stylesheet to help us to generate an accessions report to send donors and depositors to confirm receipt of an archive. This still worked in the new version of AtoM with no issues. Hoorah!

Look and feel

We gave a bit of thought to how AtoM should be styled. Two years ago we went live with a slightly customised version of the Dominion theme. This had been styled to look similar to our website (which at the time was branded orange).

In the last year, the look and feel of the University website has changed and we are no longer orange! Some thought needed to be given to whether we should change the look of our catalogue now to keep it consistent with our website. After some discussion it was agreed that our existing AtoM theme should be maintained for the time being.

We did however think it was a good idea to adopt the font of the University website, but when we tested this out on our AtoM instance it didn't look as clear...so that decision was quickly reversed.

Usability testing

When we first launched our catalogue we carried out a couple of rounds of user testing (read about it here and here) but this was quite a major piece of work and took up a substantial amount of staff time.

With this upgrade we were keen to give some consideration to the user experience but didn't have resource to invest in more user testing.

Instead we recruited the Senior User Experience Designer at our institution to cast his eye over our version of AtoM 2.4 and give us some independent feedback on usability and accessibility. It was really useful to get a fresh pair of eyes to look at our site, but as this could be a whole blog post in itself so I won't say anymore here...watch this space!

Updating our help pages

Another job was to update both the text and the screenshots on our static help pages within AtoM. There have been several changes since 2.2 and some of these are reflected in the look and feel of the interface. 

The advanced search looks a bit different in version 2.4 - here is the refreshed screenshot for our help pages

We were also keen to add in some help for our users around the clipboard feature and to explain how the full width treeview works.

The icons for different types of information within AtoM have also been brought out more strongly in this version, so we also wanted to flag up what these meant for our users.


...and that reminds me, we really do need a less Canada-centric way to indicate place!

Updating our staff handbook

Since we adopted AtoM a few years ago we have developed a whole suite of staff manuals which record how we use AtoM, including tips for carrying out certain procedures and information about what to put in each field. With the new changes brought in with this upgrade, we of course had to update our internal documentation.

When to upgrade?

As we drew ever closer to our 'go live' date for the upgrade we were aware that Artefactual were busy preparing their 2.4.1 bug fix release. We were very keen to get the bug fixes (particularly for that accessions counter bug that I mentioned) but were not sure how long we were prepared to wait.

Luckily with helpful advice from Artefactual we were able to follow some instructions from the user forum and install from the GitHub code repository instead of the tarball download on the website. This meant we could benefit from those bug fixes that were already stable (and pull others to test as they become available) without having to wait for the formal 2.4.1 release.

No need to delay our upgrade further!

As it happens it was good news we upgraded when we did. The day before the upgrade we hit a bug in version 2.2 during a re-index of elasticsearch. Nice to know we had a nice clean version of 2.4 ready to go the next day!

Finishing touches

On the 'go live' date we'd put word around to staff not to edit the catalogue while we did the switch. Our systems administrator got all the data from our production version of 2.2 freshly loaded into 2.4, ran the scripts to change the slugs and re-indexed the database. I just needed to do a few things before we asked IT to do the Domain Name System switch.

First I needed to check all the admin settings were right - a few final tweaks were required here and there. Second I needed to load up the Borthwick logo and banner to our archival institution record. Thirdly I needed to paste the new help and FAQ text into the static pages (I already had this prepared and saved elsewhere).

Once the DNS switch was done we were live at last! 

Sharing the news

Of course we wanted to publicise the upgrade to our users and tell them about the new features that it brings.

We've put AtoM back on the front page of our website and added a news item.

Let's tell the world all about it, with a catalogue banner and news item

My colleague has written a great blog post aimed at our users and telling them all about the new features, and of course we've all been enthusiastically tweeting!


...and a whole lot of tweeting

Future work

The upgrade is done but work continues. We need to ensure harvesting to our library catalogue still works and of course test out the new EAD harvesting functionality. Later today we will be looking at Search Engine Optimisation (particularly important since we changed our slugs). We also have some remaining tasks around finding aids - uploading pdfs of finding aids for those archives that aren't yet fully catalogued in AtoM using the new functionality in 2.4.

But right now I've got a few broken links to fix...


The anatomy of an AtoM upgrade

Published 4 May 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Yesterday we went live with our new upgraded production version of AtoM.

We've been using AtoM version 2.2 since we first unveiled the Borthwick Catalogue to the world two years ago. Now we have finally taken the leap to version 2.4.

We are thrilled to benefit from some of the new features - including the clipboard, being able to search by date range and the full width treeview. Of course we are also keen to test the work we jointly sponsored last year around exposing EAD via OAI-PMH for harvesting.

But what has taken us so long you might ask?

...well, upgrading AtoM has been a new experience for us and one that has involved a lot of planning behind the scenes. The technical process of upgrading has been ably handled by our systems administrator. Much of his initial work behind the scenes has been on 'puppetising' AtoM to make it easier to manage multiple versions of AtoM going forward. In this post though I will focus on the less technical steps we have taken to manage the upgrade and the decisions we have made along the way.

Checking the admin settings

One of the first things I did when I was given a test version of 2.4 to play with was to check out all of the admin settings to see what had changed.

All of our admin settings for AtoM are documented in a spreadsheet alongside a rationale for our decisions. I wanted to take some time to understand the new settings, read the documentation and decide what would work for us.

Some of these decisions were taken to a meeting for a larger group of staff to discuss. I've got a good sense of how we use AtoM but I am not really an AtoM user so it was important that others were involved in the decision making.

Most decisions were relatively straightforward and uncontroversial but the one that we spent most time on was deciding whether or not to change the slugs...

Slugs

In AtoM, the 'slug' is the last element of the url for each individual record within the catalogue - it has to be unique so that all the urls go to the right place. In previous versions of AtoM the slugs were automatically generated from the title of each record. This led to some interesting and varied urls.


Slugs are therefore hard to predict ...and it is not always possible to look at a slug and know which archive it refers to.

This possibly doesn't matter, but could become an issue for us in the future should we wish to carry out more automated data manipulation or system integrations.

AtoM 2.4 now allows you to choose which fields your slugs are generated from. We have decided that it would be better if ours were generated from the identifier of the record rather than the title. The reason being that identifiers are generally quite short and sweet and of course should be unique (though we recently realised that this isn't enforced in AtoM).

But of course this is not a decision that can be taken lightly. Our catalogue has been live for 2 years now and users will have set up links and bookmarks to particular records within it. On balance we decided that it would be better to change the slugs and do our best to limit the impact on users.

So, we have changed the admin setting to ensure future slugs are generated using the identifier. We have run a script provided by Artefactual Systems that changed all the slugs that are already in the database. We have set up a series of redirects from all the old urls of top level descriptions in the catalogue to the new urls (note that having had a good look at the referrer report in Google Analytics it was apparent that external links to the catalogue generally point at top level descriptions).

Playing and testing

It was important to do a certain amount of testing and playing around with AtoM 2.4 and it was important that it wasn't just myself who did this - I encouraged all my colleagues to also have a go.

First I checked the release notes for versions 2.3 and 2.4 so I had a good sense of what had changed and where I should focus my attention. I was then able to test these new features and direct colleagues to them as appropriate for further testing or discussion.

While doing so, I tried to think about whether any of these changes would necessitate changes in our workflows and processes or updates to our staff handbook.

As an example - it was noted that there was a new field to record occupations for authority records. Rather than letting individuals to decide how to use this field, it is important to agree an institutional approach and consider an appropriate methodology or taxonomy. As it happens, we have decided not to use this field for the time being and this will be documented accordingly.

Assessing known bugs

Being a bit late to the upgrade party gives us the opportunity to assess known bugs and issues with a release. I spent some time looking at Artefactual's issues log for AtoM and establish if any of them were going to cause us major problems or required a workaround to be put in place.

There are lots of issues recorded and I looked through many of them (but not all!). Fortunately, very few looked like they would have an impact on us. Most related to functionality we don't utilise - such as the ability to use AtoM with multiple institutions or translate it into multiple languages.

The one bug that I thought would be irritating for us was related to the accessions counter which was not incrementing in version 2.4. Having spent a bit of time testing, it seemed that this wasn't a deal breaker for us and there was a workaround we could put in place to enable staff to continue to create accession records with a unique identifier relatively easily.

Testing local workarounds

Next I tested one of the local workarounds we have for AtoM. We use a CSS print stylesheet to help us to generate an accessions report to send donors and depositors to confirm receipt of an archive. This still worked in the new version of AtoM with no issues. Hoorah!

Look and feel

We gave a bit of thought to how AtoM should be styled. Two years ago we went live with a slightly customised version of the Dominion theme. This had been styled to look similar to our website (which at the time was branded orange).

In the last year, the look and feel of the University website has changed and we are no longer orange! Some thought needed to be given to whether we should change the look of our catalogue now to keep it consistent with our website. After some discussion it was agreed that our existing AtoM theme should be maintained for the time being.

We did however think it was a good idea to adopt the font of the University website, but when we tested this out on our AtoM instance it didn't look as clear...so that decision was quickly reversed.

Usability testing

When we first launched our catalogue we carried out a couple of rounds of user testing (read about it here and here) but this was quite a major piece of work and took up a substantial amount of staff time.

With this upgrade we were keen to give some consideration to the user experience but didn't have resource to invest in more user testing.

Instead we recruited the Senior User Experience Designer at our institution to cast his eye over our version of AtoM 2.4 and give us some independent feedback on usability and accessibility. It was really useful to get a fresh pair of eyes to look at our site, but as this could be a whole blog post in itself so I won't say anymore here...watch this space!

Updating our help pages

Another job was to update both the text and the screenshots on our static help pages within AtoM. There have been several changes since 2.2 and some of these are reflected in the look and feel of the interface. 

The advanced search looks a bit different in version 2.4 - here is the refreshed screenshot for our help pages

We were also keen to add in some help for our users around the clipboard feature and to explain how the full width treeview works.

The icons for different types of information within AtoM have also been brought out more strongly in this version, so we also wanted to flag up what these meant for our users.


...and that reminds me, we really do need a less Canada-centric way to indicate place!

Updating our staff handbook

Since we adopted AtoM a few years ago we have developed a whole suite of staff manuals which record how we use AtoM, including tips for carrying out certain procedures and information about what to put in each field. With the new changes brought in with this upgrade, we of course had to update our internal documentation.

When to upgrade?

As we drew ever closer to our 'go live' date for the upgrade we were aware that Artefactual were busy preparing their 2.4.1 bug fix release. We were very keen to get the bug fixes (particularly for that accessions counter bug that I mentioned) but were not sure how long we were prepared to wait.

Luckily with helpful advice from Artefactual we were able to follow some instructions from the user forum and install from the GitHub code repository instead of the tarball download on the website. This meant we could benefit from those bug fixes that were already stable (and pull others to test as they become available) without having to wait for the formal 2.4.1 release.

No need to delay our upgrade further!

As it happens it was good news we upgraded when we did. The day before the upgrade we hit a bug in version 2.2 during a re-index of elasticsearch. Nice to know we had a nice clean version of 2.4 ready to go the next day!

Finishing touches

On the 'go live' date we'd put word around to staff not to edit the catalogue while we did the switch. Our systems administrator got all the data from our production version of 2.2 freshly loaded into 2.4, ran the scripts to change the slugs and re-indexed the database. I just needed to do a few things before we asked IT to do the Domain Name System switch.

First I needed to check all the admin settings were right - a few final tweaks were required here and there. Second I needed to load up the Borthwick logo and banner to our archival institution record. Thirdly I needed to paste the new help and FAQ text into the static pages (I already had this prepared and saved elsewhere).

Once the DNS switch was done we were live at last! 

Sharing the news

Of course we wanted to publicise the upgrade to our users and tell them about the new features that it brings.

We've put AtoM back on the front page of our website and added a news item.

Let's tell the world all about it, with a catalogue banner and news item

My colleague has written a great blog post aimed at our users and telling them all about the new features, and of course we've all been enthusiastically tweeting!


...and a whole lot of tweeting

Future work

The upgrade is done but work continues. We need to ensure harvesting to our library catalogue still works and of course test out the new EAD harvesting functionality. Later today we will be looking at Search Engine Optimisation (particularly important since we changed our slugs). We also have some remaining tasks around finding aids - uploading pdfs of finding aids for those archives that aren't yet fully catalogued in AtoM using the new functionality in 2.4.

But right now I've got a few broken links to fix...


New subscription form

Published 3 May 2018 by Pierrick Le Gall in The Piwigo.com Blog.

Piwigo.com subscription form gets a full redesign, with 3 goals in mind: improve VAT management, give choice between Individual and Enterprise plans, make it possible to subscribe for several years.

1) VAT and european laws

Piwigo.com hosting service is managed by a French company. Clients are coming from all over the world, among more than 70 countries. Depending on your country, the VAT (Value Added Tax) does not apply in the same way. Furthermore, if you or your organisation has a VAT number, other rules apply. No need to go further into technical details. Keep in mind that we need to collect a few data to accurately give VAT back to appropriate countries.

Piwigo.com subscription: we need a few data from you!

Piwigo.com subscription: we need a few data from you!

As long as we don’t have them, the subscription will keep asking for a few data.

Piwigo.com subscription: give your country and your VAT number, if you have one.

Piwigo.com subscription: give your country and your VAT number, if you have one.

Side note: this new rule dates back from 2016 and we were not always asking for your country/VAT number. Until now, we guessed your country based on your IP address and we considered Enterprise clients had a VAT number and Individual clients had none. From now on we won’t have to guess anymore!

2) Choice between Individual and Enterprise plans

Piwigo.com subscription: are you an individual or an organisation?

Piwigo.com subscription: are you an individual or an organisation?

In its early days Piwigo.com was only selling a 39 euros (per year) plan, for individuals. Since 2017, Piwigo.com Enterprise plans, now official! Enterprise clients still had to contact us to create an order. The new subscription form gives organisations the power to create Enterprise orders by themselves, without needing help from Piwigo.com support.

Piwigo.com subscriptions: several options for the Enterprise plan

Piwigo.com subscriptions: several options for the Enterprise plan

3) Directly subscribe for 2 or 3 years

Piwigo.com subscription for Individual plan: select your duration

Piwigo.com subscription for Individual plan: select your duration

Interesting for Piwigo.com: it will obviously give us the opportunity to increase our available cash. More cash in the bank makes some investments possible, like recruitment.

Interesting for clients: by taking 2 years, you get a 10% discount, or 8€ less on your bill. By taking 3 years, discount is 20%, meaning 23€ kept in your pocket. As it is very usual our clients stay 5 years or more, we think it is a good deal!


New tool: Wikimedia APT browser

Published 2 May 2018 by legoktm in The Lego Mirror.

I've created a new tool to make it easier for humans to browse Wikimedia's APT repository: apt.wikimedia.org. Wikimedia's servers run Debian (Ubuntu is nearly phased out), and for the most part use the standard packages that Debian provides. But in some cases we use software that isn't in the official Debian repositories, and distribute it via our own APT repository.

For a while now I've been working on different things where it's helpful for me to be able to see which packages are provided for each Debian version. I was unable to find any existing, reusable HTML browsers for APT repositories (most people seem to use the commandline tools), so I quickly wrote my own.

Introducing the Wikimedia APT browser. It's a short (less than 100 lines) Python and Flask application that reads from the Package/Release files that APT uses, and presents them in a simple HTML page. You can see the different versions of Debian and Ubuntu that are supported, the different sections in each one, and then the packages and their versions.

There's nothing really Wikimedia-specific about this, it would be trivial to remove the Wikimedia branding and turn it into something general if people are interested.

The source code is published on Phabricator and licensed under the AGPL v3, or any later version.


Simplify Container Orchestration: Announcing Early Access to DigitalOcean Kubernetes

Published 2 May 2018 by Jamie Wilson in The DigitalOcean Blog.

Simplify Container Orchestration: Announcing Early Access to DigitalOcean Kubernetes

Over the last 18 months, we’ve delivered many cloud primitives to serve developers and their teams in our unique DO-Simple way. We introduced Load Balancers, Monitoring and Alerts, Cloud Firewalls, Spaces, CPU-Optimized Droplets, a new Dashboard, and new Droplet pricing plans. We extended the availability of Block Storage to all regions. All of these primitives make it easier to go from an idea to production without the overhead and complexity of managing cloud infrastructure.

Today, we’re excited to build on those primitives and announce DigitalOcean Kubernetes, a simple and cost-effective way to deploy, orchestrate, and manage container workloads. Deploying workloads as containers provides many benefits for developers, from rapid deployment to isolation and security. But orchestrating those workloads comes with additional layers of complexity that can be difficult for development teams to manage.

Kubernetes has become the leading open source platform for orchestration, with thousands of contributors in the last year alone. DigitalOcean has been running large workloads on Kubernetes over the past two years, and we’re excited to bring our learnings and expertise to our customers.

We designed DigitalOcean Kubernetes with developers and their teams in mind, so you can save time and deploy your container workloads without needing to configure everything from scratch. Automatic deployment of load balancers, block storage, firewalls, ingress controllers, and more makes configuring your cluster on DigitalOcean as simple as deploying a Droplet.

We understand having your data close to your cluster is essential, so you’ll have the option to deploy a private container registry to your cluster with no configuration, and store the images on DigitalOcean Spaces.

In addition to offering Kubernetes on our platform, we are also upgrading our CNCF membership to Gold. We’re committed to contributing to and supporting the open source technologies around containers, and are looking forward to working with CNCF members to continue the evolution of these and related technologies.

The DigitalOcean Kubernetes Early Access Program sign-up starts today, and access for select users begins next month. If you’re part of the program, your cluster will be free through September 2018.

Simplify Container Orchestration: Announcing Early Access to DigitalOcean Kubernetes

UPDATE: June 21, 2018

Since we announced DigitalOcean Kubernetes in May, we've received 20,000 sign-ups for early access. We’re excited to announce our first phase of early access, and want to take this opportunity to share more about our plans.

We will be sending out early access invitations in two phases:

We want to keep everyone up to date on our progress, so we’ll also provide email updates during early access as new product functionality is added, and as our Community team creates new Kubernetes content. Finally, look out for a webinar invitation where we’ll walk you through the early access product as we’d love to hear your feedback through this process.

Happy Coding,
DigitalOcean Kubernetes Product Team


Ads and Ad blockers

Published 1 May 2018 by David Fischer in Read the Docs Blog.

Last time, we shared how ethical advertising works to keep Read the Docs sustainable without creepy ad targeting. This time, we will share about one of our biggest challenges with advertising. At the beginning of April, Read the Docs was added to one of the most popular ad block lists: the Easylist.

Ad blocker fallout

Effect of ad blocking on Read the Docs ad views

Getting added to the EasyList had a significant and immediate impact on the bottom line at Read the Docs. Right around April 1, 32% of our ad views simply vanished. At first, we thought we had done something horribly wrong but then we discovered that this was due entirely to ad blocking. Our actual traffic wasn’t down at all.

Users’ browsers were simply downloading the updated EasyList which blocked ads on Read the Docs. In terms of ad viewership, weekdays – our busiest days and the peaks in the graph – became more like weekends and weekends fell off a cliff. We had always guessed what percentage of our user base ran ad blockers. Now we know. We knew this day would come as we became more successful but we had hoped it was a ways off considering we weren’t part of a large ad network.

This directly affected our operations and staff. Our operating costs didn’t go down in any significant way, but revenue sure did. Advertising is by far the largest source of revenue at Read the Docs and it just dropped by about a third. This meant that we had to cut some costs where we could and slow down some hiring plans. While Read the Docs is not a non-profit company, all the revenue is reinvested into the project itself, paying maintainers, and other places in the open source ecosystem. The situation is not dire by any means, but it was certainly disappointing that we ended up on the same list with popup advertisers who couldn’t care less about privacy.

All about ad blockers

Ad blockers fulfill a legitimate need to mitigate the significant downsides of advertising from tracking across the internet, security implications of third-party code, and impacting the UX and performance of sites.

At Read the Docs, we specifically didn’t want those things. That’s why we built the ad network we wanted to exist with only relevant ads and no creepy behavioral targeting.

According to a 2017 report from PageFair (pdf), a company that specializes in quantifying ad blocking, 11% of global web users run an ad blocker. Considering that Read the Docs’ core audience is tech-savvy, privacy-conscious developers, it should be no surprise that our number is higher.

What are we doing about it

It will be an uphill battle to get back to where we were in terms of revenue and sustaining Read the Docs, here are a few things we are working on:

  • We applied to the acceptable ads list, an ad block list enabled on many ad blockers by default that enables some unobtrusive advertising. We are very hopeful here but it does take quite a bit longer to get on this list than it does to get blocked.
  • Nagging users into allowing ads on Read the Docs. We are envisioning more of a polite nag in a similar vein to jsfiddle rather than an “adblock wall” which prevents usage of Read the Docs until it’s allowed.
  • Blogging and raising awareness of how ad blocking affects us and other open source projects.

While we could simply change our CSS and ad API to avoid blocking since we host our ads ourselves, we decided not to engage in a cat and mouse game since this work would not benefit users.

Advertising funds much of the web and many people recognize that while there are plenty of bad actors in the ad industry – think pop-under ad networks or ads that navigate your browser for you – some advertising is necessary to power the web we know and love especially when it comes to open source software which has unique funding challenges.

Update: On May 4th, Read the Docs was added to the acceptable ads list! We will collect data over the next couple weeks and have a follow-up post on what effects this had on advertising.

Open source advertising list

At Read the Docs, we also discovered that we are not the only open source project that got our advertising blocked by ad blockers. Many open source projects that fund themselves through advertising get blocked and some of them don’t have the resources to navigate the acceptable ads program or understand the inner workings of ad blockers.

Likewise, some web users may not want to allow all acceptable ads which includes many ads from the big networks but we are hoping they would be willing to accept ads that benefit their community of software developers.

We are launching a new initiative to allow advertising that benefits open source software. We encourage you to subscribe to the this list and support open source. If you run an open source project affected by ad blockers, we would love to help you too.

Advertisers

If you are an advertiser interested in reaching a 100% developer audience who cares deeply about privacy, we would love to hear from you too.


Episode 7: Dan Barrett

Published 1 May 2018 by Yaron Koren in Between the Brackets: a MediaWiki Podcast.

Dan Barrett is a longtime developer and project manager who worked for fifteen years at Vistaprint, where he created, and oversaw the development and maintenance of, the MediaWiki installation. He has also written numerous technical books for O'Reilly, including the 2008 book MediaWiki: Wikipedia and Beyond.   Links for some of the topics discussed:  

Mediawiki - How to disable diacritic/special characters in the URL

Published 1 May 2018 by Magorzata Mrwka Zielona Mrwka in Newest questions tagged mediawiki - Webmasters Stack Exchange.

My mediawiki page is in Polish and the mediawiki converts page titles to url in 1:1 style - it means that page named Truteń will have url that contains Truteń with the Polish diacritic character "ń".

This causes code 400 error to appear when I'm trying to preview pages that contain polish diacritic letters (ąęćśźżółń) in Facebook Sharing debbuger. Those also do not display informations from extensions (excerpts from pages while sharing). Miracously main page works, even though it has diacritic character in its url ("Strona główna").

How can I disable those characters? I can also add that I'm almost total newbie and am using OVH services (the cheapest plan they had). Here is an example page - http://wiki.mrowki.ovh/index.php?title=Truteń


GLAM Blog Club – May 2018

Published 1 May 2018 by Nik McGrath in newCardigan.

Andrew kicked off on the theme of control with Joy Division’s She’s Lost Control. Play the track and read on… And she gave away the secrets of her past… Andrew argues for and against copyright in the case of researchers accessing special collections. Control measures by some libraries are put in place preventing digital copies of donor material being made without donor permission. Should libraries take a risk, like some do, and place the onus or control back in the hands of the user to do the right thing, making digital copies for reference but trusting users not to break copyright?

Phillipa, a PhD student, took time off from her PhD to care for her daughter who was diagnosed with Stage 4 lymphatic cancer. “I am outwardly an organised student, but library books were the last thing on my mind as I struggled to appear normal and in control”. The tale of 23 Overdue Books is about feeling out of control, receiving a $1000 library fine, and ultimately the compassion of a librarian who waived the fine.

Michelle’s blog Controlling your online data and privacy gives some fantastic tips about how to protect your privacy online. “You don’t need these companies to control all your data for you…”

Control your files, Niamh states: “Control over your files does take a little time to set up, but the benefits are that your information will be searchable, backed up, restorable and reusable.” “Try to leave your files in a state that the future version of you can use.” Walk the talk.

Hugh is the technical genius behind newCardigan’s systems. In his blog Building our own house Hugh describes the journey to setup systems protecting the privacy of our members and participants. “We’re not quite running our own servers in the spare room, but I’m pretty happy with how far we’ve managed to move towards running our own systems so we don’t force members and participants to hand over data to third parties just so they can socialise with other GLAM people. As much as possible, it’s newCardigan members, or at worst, newCardigan as an organisation, in control.”

Control those tabs, Kathryn gives a guide on how to setup preferences with Chrome for websites that you access daily.

Sam’s blog Getting to “good enough”: thoughts on perfectionism is an honest analysis and reflection on the negative aspects of perfectionism in the workplace.

Libraries becoming the new park, Melly argues for the need for librarians and library technicians to continue to manage public libraries, arguing against the trend in public libraries for using library spaces for other purposes and understaffing with the notion that customers can serve their own needs within the library. “If public parks cannot control human behaviour, what about libraries without staff?”

Amy challenges us to control our present, future, environment, thoughts, voice and relationships in her blog Taking control of the small things.

Want to be a happier librarian? You’re in control! Anne believes that happiness is something we control: “It doesn’t help to get upset or anxious about things you can’t control so focus on the things that you can.”

Sarah’s Control of GLAMR information … in my inbox is all about taking control of the subscriptions that overload us with information in our inbox, in this case GLAMR information! What is still relevant, and what is information Sarah receives in other ways.

GLAM Blog Club – Control Kara acknowledges that control of her career is difficult to attain, but perhaps it’s important to celebrate the small wins. I think most people often feel out of control of their career, but joining the conversation here is definitely a win! Thanks Kara.

My blog Democratisation in action, I argue that: “Although it’s important that archivists maintain control of the systems that ensure items are trackable and findable, it is also important that archivists enable access. Raising the profile of archival collections and awareness of the content available within collections provides more opportunities for individuals from diverse backgrounds to interpret archival material in new and interesting ways. This is democratisation in action.”

Matthew’s Custodial Control of Digital Assets makes a compelling argument for case by case consideration in collecting born digital items: “…you cannot always control what you receive when it comes to digital collections. Standards are there for guidance and sometimes decisions need to be made on whether to allow something into the collection that does not meet them. The intrinsic value of the object, its uniqueness and rarity may very well trump the technical requirements for digital collecting. When dealing with born-digital photographs for example, where some institutions prefer a Camera Raw or uncompressed TIFF file format, a low resolution JPEG would also be accepted under the right circumstances.”

The terror and value of asking for feedback, Stacey gives advice that feedback is valuable, so it’s worth giving up control by: “Putting things out there and asking for feedback…”

Queerying the catalogue: Control, classification, chaos, curiosity, care and communities, Clare is “reflecting on the problematic histories of classification in librarianship and in psychology, particularly in relation to LGBTIQA+ communities, my complicated relationship with labels, and the power of play to help librarians become more comfortable with letting go of at least some of our control and authority, find courage in chaos, embrace fluidity, and change the system.”

Associate, collocate, disambiguate, infuriate, Alissa on her thoughts on “…relinquishing some of my control over the form and display of titles within a catalogue.”

GLAM Blog Club – Control, Rebecca questions: “So what happens when you put a control freak into the world of museums?” Weekly goal lists, problem solving skills and throwing yourself into the deep end, will help you no end.

Authority Control – Can I haz it? Clare on the world of cataloguing and control vocabs, putting theory into practice.

Thank you for your blogs on control, it proved to be a popular theme!

Have you ever walked into a gallery and cried at the sight of a painting? Felt waves of emotion reading a letter in the archives? Have you reacted passionately about something you care deeply about in a meeting at work?

Passion is our theme for GLAM Blog Club this month.

Some might argue that passion is the opposite of control. We anticipate a lovely contrast between last month and this month’s blogs.

Please don’t forget to use the tag GLAM Blog Club in your post, and #GLAMBlogClub for any social media posts linking to it. If you haven’t done so yet, remember to register your blog at Aus GLAM Blogs. Happy blogging!


Wikibase of Wikibases

Published 30 Apr 2018 by addshore in Addshore.

The Wikibase registry was one of the outcomes of the first in a series of Federated wikibase workshops organised in partnership with the European research council.

The aim of the registry is to act as a central point for details of public Wikibase installs hosted around the web. Data held about the installs currently includes the URL for the home page, Query frontend URL and SPARQL API endpoint URL (if a query service exists).

During the workshop an initial data set was added, and this can be easily seen using the timeline view of the query service and a query that is explained within this post.

Setting up the Wikibase install

The registry is running on the WMF Cloud infrastructure using the wikibase and query service docker images on a single m1.medium VPS with 2 CPUs, 4GB RAM and 40GB disk.

The first step was to request the creation of a project for the install. The current process for this is to create a Phabricator ticket, and that ticket can be seen here.

Once the project was created I could head to horizon (the openstack management interface) and create a VPS to host the install.

I chose the m1.medium flavour for the 4GB memory allowance. As is currently documented in the wikibase-docker docker-compose example readme the setup can fail with less than 3GB memory due to the initial spike in memory usage when setting up the collection of docker services.

Once the machine was up and running I could install docker and docker-compose by following the docker docs for Debian (the OS I chose during the machine creation step).

With docker and docker-compose installed it was time to craft my own docker-compose.yml file based on the example currently present in the wikibase-docker repo.

The key environment variables to change were:

The docs for the environment variables are visible in the README for each image use for the service. For example the ‘wikibase’ image docs can be found in this README.
Once created it was time to start running the services using the following command:

user@wbregistry-01:~/wikibase-registry# docker-compose up -d
Creating network "wikibase-registry_default" with the default driver
Creating volume "wikibase-registry_mediawiki-mysql-data" with default driver
Creating volume "wikibase-registry_mediawiki-images-data" with default driver
Creating volume "wikibase-registry_query-service-data" with default driver
Creating wikibase-registry_mysql_1 ... done
Creating wikibase-registry_wdqs_1     ... done
Creating wikibase-registry_wikibase_1   ... done
Creating wikibase-registry_wdqs-proxy_1   ... done
Creating wikibase-registry_wdqs-updater_1  ... done
Creating wikibase-registry_wdqs-frontend_1 ... done

The output of the command stated that everything correctly started, and I double checked using the following:

user@wbregistry-01:~/wikibase-registry# docker-compose ps
              Name                             Command               State          Ports
-------------------------------------------------------------------------------------------------
wikibase-registry_mysql_1           docker-entrypoint.sh mysqld      Up      3306/tcp
wikibase-registry_wdqs-frontend_1   /entrypoint.sh nginx -g da ...   Up      0.0.0.0:8282->80/tcp
wikibase-registry_wdqs-proxy_1      /bin/sh -c "/entrypoint.sh"      Up      0.0.0.0:8989->80/tcp
wikibase-registry_wdqs-updater_1    /entrypoint.sh /runUpdate.sh     Up      9999/tcp
wikibase-registry_wdqs_1            /entrypoint.sh /runBlazegr ...   Up      9999/tcp
wikibase-registry_wikibase_1        /bin/sh /entrypoint.sh           Up      0.0.0.0:8181->80/tcp

Wikibase and the query service UI were exposed on ports 8181 and 8282 on the machine respectively, but the openstack firewall rules would block any access from outside the project by default, so I created 2 new rules allowing ingress from within the labs network (range 10.0.0.0/8).

I could then setup a web proxy in horizon to map some domains to the exposed ports on the machine.

With the proxies created the 2 services were then accessible to the outside world:

Adding some initial data

The first version of this repository was planned to just hold Items for Wikibase installs. The initial list of properties could be pretty straight forward. A link to the homepage of the wiki is of course useful, and enables navigating to the site. Sites may not expose a query service in a uniform way, so a property would also be needed for this. The SPARQL endpoint used by the query service could also differ thus another property would be needed. And finally to be able to display the initial data on a timeline, and initial creation date would be needed. I added a property for install logo to make the timeline a little prettier.

The properties created initially to describe Wikibase installs with (with example data values for wikidata.org) can be seen below:

Some other properties were also created:

I then added all other wikibase instances run by the WMF which included test and beta Wikidata sites. Wikiba.se also contains a list of Wikibase installs (although out of date). I also managed to find some new installs from wikiapiary looking at the Wikibase Repo extension usage. And of course some of the people in the room had instances to add to the list.

I based the creation date on the rough creation of the first item, or an official inception date. All of the creation date statements should probably have references.

The timeline query

The below SPARQL queries show the creation of a federated timeline query crossing the local wikibase query service (for the registry) and also the wikidata.org query service.

1) Select all Items with our date property (P5):

SELECT ?item ?date
WHERE {
    ?item wdt:P5 ?date .
}

2) Use the label service to select the Item Labels instead of IDs:

SELECT ?itemLabel ?date
WHERE {
    ?item wdt:P5 ?date .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
}

3) Also select the logo (P8) if it exists:

SELECT ?itemLabel ?date ?logo
WHERE {
    ?item wdt:P5 ?date .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
    OPTIONAL { ?item wdt:P8 ?logo }
}

4) Display the results on a timeline by default:

#defaultView:Timeline
SELECT ?itemLabel ?date ?logo
WHERE{
    ?item wdt:P5 ?date .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
    OPTIONAL { ?item wdt:P8 ?logo }
}

5) Also include some results from the wikidata.org query service (using federated queries) to show the WikidataCon events:

In this query new prefixes are needed for wikidata.org as the default “wd” and “wdt” prefixes point to the local wikibase install.
Q37807168 on wikidata.org is “WikidataCon” and P31 is “instance of”.

#defaultView:Timeline

PREFIX wd-wd: <http://www.wikidata.org/entity/>
PREFIX wd-wdt: <http://www.wikidata.org/prop/direct/>

SELECT ?itemLabel ?date (SAMPLE(?logo) AS ?image)
WHERE
{
  {
   ?item wdt:P5 ?date .
   SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
   OPTIONAL { ?item wdt:P8 ?logo }
  }
 UNION
  {
   SERVICE <https://query.wikidata.org/sparql> {
    ?item wd-wdt:P31 wd-wd:Q37807168 .
    ?item wd-wdt:P580 ?date .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en" }
    OPTIONAL { ?item wd-wdt:P154 ?logo }
   } 
  }
}
GROUP BY ?itemLabel ?date

This generates the timeline that you see at the top of the post.

Other issues noticed during setup

Some of the issues were known before this blog post, but others were fresh. Nonetheless if you are following along the following issues and tickets may be of help:

The post Wikibase of Wikibases appeared first on Addshore.


GDPR, FastMail and you

Published 24 Apr 2018 by Bron Gondwana in FastMail blog.

Following on from December’s blog post our executive team has been hard at work for the past few months making preparations for the upcoming GDPR. Current customers, no matter where you are located, should expect to receive notices soon about changes.

GDPR has been a great opportunity for us to confirm everything we believe about our products. Your data is yours, and we should be able to clearly articulate how we touch it.

What is GDPR?

General Data Protection Regulation (GDPR) is a new set of rules from the European Union (EU) and sets a standard for how companies use and protect people’s personal data. It comes into effect on May 25, 2018.

While aimed specifically at EU citizens, we feel it aligns closely with our own privacy values (you are our customer, not the product) and we will be providing the same transparency and protection for all our customers, regardless of where they live or their country of citizenship.

It covers:

  • Clarifying what is personal data.
  • Ensuring customers can always take their data with them: no more vendor lock-in. This is something we have always provided, and we continue to work on open standards to make sure we can advocate for transparency for our customers.
  • Customers have the right to be forgotten: they can request to have all their personal data removed from a service.
  • Making sure that customers are suitably informed in clear language, and have actively consented, to how their data is used and accessed in the course of providing service.
  • That notification of your data being accessed illegally (a data breach) is timely and appropriate.

What does “personal data” mean?

Anything that can help identify an individual is personal data.

Some examples: your email address, your IP address, your physical address, appointments you might have coming up, where you work, who your family members are.

There are some obvious personal information that we collect for users of any of our products (FastMail, Topicbox, Pobox, Listbox): your email address, billing information, and IP address. But any email content is also considered personal information because it can contain anything. We can’t know what you might have put in your email, so we must treat it as personal data.

What this regulation means for you

FastMail is serious about protecting your privacy. It is one of our core values. We believe that security is more than a checkbox.

We will be updating our policies before GDPR comes into effect, and we continue our commitment to plain language and a clear outline of what you can expect from us and any data processing vendors we use.

You control your data, when it comes to email, contacts and calendars. We provide processing of that data in order to supply you with an email service. Our job is to execute your wishes faithfully, efficiently, and with low friction so you can get on with your day.

We process your data to ensure we can deliver your mail, to keep your mailbox free from spam and to make it easy to search.

Our support team do not have access to your email content beyond what’s minimally necessary to supply you with service, unless you explicitly provide consent for the purposes of resolving a support issue.

We periodically profile data in aggregate to test and validate the design of software to ensure we can handle size, scale, and throughput of our customer base.

There are only two ways we use your information for anything other than directly providing the email service you pay us for:

  1. If you opt-in to our newsletters, you occasionally will receive information about changes to our service, company news, or surveys to help us find out how we can help our customers.
  2. Information in aggregate for marketing purposes to better understand the people interested in our service and how we can better meet their needs.

How is FastMail preparing for GDPR?

Because of our longstanding commitment to your privacy, this is a problem we’ve given a lot of thought. We are continuing to review our processes and data to make sure that the only staff who have access to your information are the ones who need it in order to provide you with the service you pay us for.

We are ensuring that in meeting our obligations, we don't get in your way: our service will remain fast, and easy to use. We believe that your privacy is a right, not a chore.

You have the “right to be forgotten” under the GDPR. This means you can request that we delete all your personal data off our platform, without exposing a potential security risk for a malicious attack. You can request your account be removed off our platform and the data will be cleared after a waiting period (just in case a hacker was the one who closed your account).

Our work through open standards means your data has always been portable and you can download it at any time.

We are working with our vendors who help us provide our service to ensure that they, too, are upholding the GDPR and updating our contracts as necessary.

We are preparing Data Protection Agreements (DPAs) for customers to sign, where needed.

We are appointing a Privacy Officer (and you can contact them at privacy@fastmail.com). Their role is to manage FastMail’s compliance with the GDPR regulation, with the help of an externally appointed Data Protection Officer.

Stay tuned

Customers can expect a policy update soon. More information will be published on our blog and help pages as we complete the steps necessary to guarantee compliance.

If you have any questions or concerns not addressed here, please contact privacy@fastmail.com.


Together

Published 20 Apr 2018 by Matthew Roth in code.flickr.com.

Flickr is excited to be joining SmugMug!

We’re looking forward to some interesting and challenging engineering projects in the next year, and would love to have more great people join the team!

We want to talk to people who are interested in working on an inclusive, diverse team, building large-scale systems that are backing a much-loved product.

You can reach us by email at: iwanttowork@flickr.com

Read our announcement blog post and our extended Q&A for more details.

~The Flickr Team


2017 Year Review

Published 20 Apr 2018 by addshore in Addshore.

2017 has been a great year with continued work at WMDE on both technical wishes projects and also Wikibase / Wikidata related areas. Along the way I shared a fair amount of this through this blog, although not as much as I would have liked. Hopefully I’ll be slightly more active in 2018. Here are some fun stats:

Top 5 posts by page views in 2017 were:

  1. Guzzle 6 retry middleware
  2. Misled by PHPUnit at() method
  3. Wikidata Map July 2017
  4. Add Exif data back to Facebook images
  5. Github release download count &#8211; Chrome Extension

To make myself feel slightly better we can have a look at github and the apparent 1,203 contributions in 2017:

The post 2017 Year Review appeared first on Addshore.


The 2nd UK AtoM user group meeting

Published 20 Apr 2018 by Jenny Mitcham in Digital Archiving at the University of York.

I was pleased to be able to host the second meeting of the UK AtoM user group here in York at the end of last week. AtoM (or Access to Memory) is the Archival Management System that we use here at the Borthwick Institute and it seems to be increasing in popularity across the UK.

We had 18 attendees from across England, Scotland and Wales representing both archives and service providers. It was great to see several new faces and meet people at different stages of their AtoM implementation.

We started off with introductions and everyone had the chance to mention one recent AtoM triumph and one current problem or challenge. A good way to start the conversation and perhaps a way of considering future development opportunities and topics for future meetings.

Here is a selection of the successes that were mentioned:

  • Establishing a search facility that searches across two AtoM instances
  • Getting senior management to agree to establishing AtoM
  • Getting AtoM up and running
  • Finally having an online catalogue
  • Working with authority records in AtoM
  • Working with other contributors and getting their records displaying on AtoM
  • Using the API to drive another website
  • Upgrading to version 2.4
  • Importing legacy EAD into AtoM
  • Uploading finding aids into AtoM 2.4
  • Adding 1000+ urls to digital resources into AtoM using a set of SQL update statements

...and here are some of the current challenges or problems users are trying to solve:
  • How to bar code boxes - can this be linked to AtoM?
  • Moving from CALM to AtoM
  • Not being able to see the record you want to link to when trying to select related records
  • Using the API to move things into an online showcase
  • Advocacy for taking the open source approach
  • Working out where to start and how best to use AtoM
  • Sharing data with the Archives Hub
  • How to record objects alongside archives
  • Issues with harvesting EAD via OAI-PMH
  • Building up the right level of expertise to be able to contribute code back to AtoM
  • Working out what to do when AtoM stops working
  • Discovering that AtoM doesn't enforce uniqueness in identifiers for archival descriptions

After some discussion about some of the issues that had been raised, Louise Hughes from the University of Gloucestershire showed us her catalogue and talked us through some of the decisions they had made as they set this up. 

The University of Gloucestershire's AtoM instance

She praised the digital object functionality and has been using this to add images and audio to the archival descriptions. She was also really happy with the authority records, in particular, being able to view a person and easily see which archives relate to them. She discussed ongoing work to enable records from AtoM to be picked up and displayed within the library catalogue. She hasn't yet started to use AtoM for accessioning but hopes to do so in the future. Adopting all the functionality available within AtoM needs time and thought and tackling it one step at a time (particularly if you are a lone archivist) makes a lot of sense.

Tracy Deakin from St John's College, Cambridge talked us through some recent work to establish a shared search page for their two institutional AtoM instances. One holds the catalogue of the college archives and the other is for the Special Collections Library. They had taken the decision to implement two separate instances of AtoM as they required separate front pages and the ability to manage the editing rights separately. However, as some researchers will find it helpful to search across both instances a search page has been developed that accesses the Elasticsearch index of each site in order to cross search.

The interface for a shared search across St John's College AtoM sites

Vicky Phillips from the National Library of Wales talked us through their processes for upgrading their AtoM instance to version 2.4 and discussed some of the benefits of moving to 2.4. They are really happy to have the full width treeview and the drag and drop functionality within it.

The upgrade has not been without it's challenges though. They have had to sort out some issues with invalid slugs, ongoing issues due to the size of some of their archives (they think the XML caching functionality will help with this) and sometimes find that MySQL gets overwhelmed with the number of queries and needs a restart. They still have some testing to do around bilingual finding aids and have also been working on testing out the new functionality around OAI PMH harvesting of EAD.

Following on from this I gave a presentation on upgrading AtoM to 2.4 at the Borthwick Institute. We are not quite there yet but I talked about the upgrade plan and process and some decisions we have made along the way. I won't say any more for the time being as I think this will be the subject of a future blog post.

Before lunch my colleague Charles Fonge introduced VIAF (Virtual International Authority File) to the group. This initiative will enable Authority Records created by different organisations across the world to be linked together more effectively. Several institutions may create an authority record about the same individual and currently it is difficult to allow these to be linked together when data is aggregated by services such as The Archives Hub. It is worth thinking about how we might use VIAF in an AtoM context. At the moment there is no place to store a VIAF ID in AtoM and it was agreed this would be a useful development for the future.

After lunch Justine Taylor from the Honourable Artillery Company introduced us to the topic of back up and disaster recovery of AtoM. She gave the group some useful food for thought, covering techniques and the types of data that would need to be included (hint: it's not solely about the database). This was particularly useful for those working in small institutions who don't have an IT department that just does all this for them as a matter of course. Some useful and relevant information on this subject can be found in the AtoM documentation.

Max Communications are a company who provide services around AtoM. They talked through some of their work with institutions and what services they can offer.  As well as being able to provide hosting and support for AtoM in the UK, they can also help with data migration from other archival management systems (such as CALM). They demonstrated their crosswalker tool that allows archivists to map structured data to ISAD(G) before import to AtoM.

They showed us an AtoM theme they had developed to allow Vimeo videos to be embedded and accessible to users. Although AtoM does have support for video, the files can be very large in size and there are large overheads involved in running a video server if substantial quantities are involved. Keeping the video outside of AtoM and managing the permissions through Vimeo provided a good solution for one of their clients.

They also demonstrated an AtoM plugin they had developed for Wordpress. Though they are big fans of AtoM, they pointed out that it is not the best platform for creating interesting narratives around archives. They were keen to be able to create stories about archives by pulling in data from AtoM where appropriate.

At the end of the meeting Dan Gillean from Artefactual Systems updated us (via Skype) about the latest AtoM developments. It was really interesting to hear about the new features that will be in version 2.5. Note, that none of this is ever a secret - Artefactual make their road map and release notes publicly available on their wiki - however it is still helpful to hear it enthusiastically described.

The group was really pleased to hear about the forthcoming audit logging feature, the clever new functionality around calculating creation dates, and the ability for users to save their clipboard across sessions (and share them with the searchroom when they want to access the items). Thanks to those organisations that are funding this exciting new functionality. Also worth a mention is the slightly less sexy, but very valuable work that Artefactual is doing behind the scenes to upgrade Elasticsearch.

Another very useful meeting and my thanks go to all who contributed. It is certainly encouraging to see the thriving and collaborative AtoM community we have here in the UK.

Our next meeting will be in London in the autumn.

The 2nd UK AtoM user group meeting

Published 20 Apr 2018 by Jenny Mitcham in Digital Archiving at the University of York.

I was pleased to be able to host the second meeting of the UK AtoM user group here in York at the end of last week. AtoM (or Access to Memory) is the Archival Management System that we use here at the Borthwick Institute and it seems to be increasing in popularity across the UK.

We had 18 attendees from across England, Scotland and Wales representing both archives and service providers. It was great to see several new faces and meet people at different stages of their AtoM implementation.

We started off with introductions and everyone had the chance to mention one recent AtoM triumph and one current problem or challenge. A good way to start the conversation and perhaps a way of considering future development opportunities and topics for future meetings.

Here is a selection of the successes that were mentioned:

  • Establishing a search facility that searches across two AtoM instances
  • Getting senior management to agree to establishing AtoM
  • Getting AtoM up and running
  • Finally having an online catalogue
  • Working with authority records in AtoM
  • Working with other contributors and getting their records displaying on AtoM
  • Using the API to drive another website
  • Upgrading to version 2.4
  • Importing legacy EAD into AtoM
  • Uploading finding aids into AtoM 2.4
  • Adding 1000+ urls to digital resources into AtoM using a set of SQL update statements

...and here are some of the current challenges or problems users are trying to solve:
  • How to bar code boxes - can this be linked to AtoM?
  • Moving from CALM to AtoM
  • Not being able to see the record you want to link to when trying to select related records
  • Using the API to move things into an online showcase
  • Advocacy for taking the open source approach
  • Working out where to start and how best to use AtoM
  • Sharing data with the Archives Hub
  • How to record objects alongside archives
  • Issues with harvesting EAD via OAI-PMH
  • Building up the right level of expertise to be able to contribute code back to AtoM
  • Working out what to do when AtoM stops working
  • Discovering that AtoM doesn't enforce uniqueness in identifiers for archival descriptions

After some discussion about some of the issues that had been raised, Louise Hughes from the University of Gloucestershire showed us her catalogue and talked us through some of the decisions they had made as they set this up. 

The University of Gloucestershire's AtoM instance

She praised the digital object functionality and has been using this to add images and audio to the archival descriptions. She was also really happy with the authority records, in particular, being able to view a person and easily see which archives relate to them. She discussed ongoing work to enable records from AtoM to be picked up and displayed within the library catalogue. She hasn't yet started to use AtoM for accessioning but hopes to do so in the future. Adopting all the functionality available within AtoM needs time and thought and tackling it one step at a time (particularly if you are a lone archivist) makes a lot of sense.

Tracy Deakin from St John's College, Cambridge talked us through some recent work to establish a shared search page for their two institutional AtoM instances. One holds the catalogue of the college archives and the other is for the Special Collections Library. They had taken the decision to implement two separate instances of AtoM as they required separate front pages and the ability to manage the editing rights separately. However, as some researchers will find it helpful to search across both instances a search page has been developed that accesses the Elasticsearch index of each site in order to cross search.

The interface for a shared search across St John's College AtoM sites

Vicky Phillips from the National Library of Wales talked us through their processes for upgrading their AtoM instance to version 2.4 and discussed some of the benefits of moving to 2.4. They are really happy to have the full width treeview and the drag and drop functionality within it.

The upgrade has not been without it's challenges though. They have had to sort out some issues with invalid slugs, ongoing issues due to the size of some of their archives (they think the XML caching functionality will help with this) and sometimes find that MySQL gets overwhelmed with the number of queries and needs a restart. They still have some testing to do around bilingual finding aids and have also been working on testing out the new functionality around OAI PMH harvesting of EAD.

Following on from this I gave a presentation on upgrading AtoM to 2.4 at the Borthwick Institute. We are not quite there yet but I talked about the upgrade plan and process and some decisions we have made along the way. I won't say any more for the time being as I think this will be the subject of a future blog post.

Before lunch my colleague Charles Fonge introduced VIAF (Virtual International Authority File) to the group. This initiative will enable Authority Records created by different organisations across the world to be linked together more effectively. Several institutions may create an authority record about the same individual and currently it is difficult to allow these to be linked together when data is aggregated by services such as The Archives Hub. It is worth thinking about how we might use VIAF in an AtoM context. At the moment there is no place to store a VIAF ID in AtoM and it was agreed this would be a useful development for the future.

After lunch Justine Taylor from the Honourable Artillery Company introduced us to the topic of back up and disaster recovery of AtoM. She gave the group some useful food for thought, covering techniques and the types of data that would need to be included (hint: it's not solely about the database). This was particularly useful for those working in small institutions who don't have an IT department that just does all this for them as a matter of course. Some useful and relevant information on this subject can be found in the AtoM documentation.

Max Communications are a company who provide services around AtoM. They talked through some of their work with institutions and what services they can offer.  As well as being able to provide hosting and support for AtoM in the UK, they can also help with data migration from other archival management systems (such as CALM). They demonstrated their crosswalker tool that allows archivists to map structured data to ISAD(G) before import to AtoM.

They showed us an AtoM theme they had developed to allow Vimeo videos to be embedded and accessible to users. Although AtoM does have support for video, the files can be very large in size and there are large overheads involved in running a video server if substantial quantities are involved. Keeping the video outside of AtoM and managing the permissions through Vimeo provided a good solution for one of their clients.

They also demonstrated an AtoM plugin they had developed for Wordpress. Though they are big fans of AtoM, they pointed out that it is not the best platform for creating interesting narratives around archives. They were keen to be able to create stories about archives by pulling in data from AtoM where appropriate.

At the end of the meeting Dan Gillean from Artefactual Systems updated us (via Skype) about the latest AtoM developments. It was really interesting to hear about the new features that will be in version 2.5. Note, that none of this is ever a secret - Artefactual make their road map and release notes publicly available on their wiki - however it is still helpful to hear it enthusiastically described.

The group was really pleased to hear about the forthcoming audit logging feature, the clever new functionality around calculating creation dates, and the ability for users to save their clipboard across sessions (and share them with the searchroom when they want to access the items). Thanks to those organisations that are funding this exciting new functionality. Also worth a mention is the slightly less sexy, but very valuable work that Artefactual is doing behind the scenes to upgrade Elasticsearch.

Another very useful meeting and my thanks go to all who contributed. It is certainly encouraging to see the thriving and collaborative AtoM community we have here in the UK.

Our next meeting will be in London in the autumn.

Back to the classroom - the Domesday project

Published 20 Apr 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Yesterday I was invited to speak to a local primary school about my job. The purpose of the event was to inspire kids to work in STEM subjects (science, technology, engineering and maths) and I was faced with an audience of 10 and 11 year old girls.

One member of the audience (my daughter) informed me that many of the girls were only there because they had been bribed with cake.

This could be a tough gig!

On a serious note, there is a huge gender imbalance in STEM careers with women only making up 23% of the workforce in core STEM occupations. In talking to the STEM ambassador who was at this event, it was apparent that recruitment in engineering is quite hard, with not enough boys OR girls choosing to work in this area. This is also true in my area of work and is one of the reasons we are involved in the "Bridging the Digital Gap" project led by The National Archives. They note in a blog post about the project that:

"Digital skills are vital to the future of the archives sector ...... if archives are going to keep up with the pace of change, they need to attract members of the workforce who are confident in using digital technology, who not only can use digital tools, but who are also excited and curious about the opportunities and challenges it affords."

So why not try and catch them really young and get kids interested in our profession?

There were a few professionals speaking at the event and subjects were varied and interesting. We heard from someone who designed software for cars (who knew how many different computers are in a modern car?), someone who had to calculate exact mixes of seed to plant in Sites of Special Scientific Interest in order to encourage the right wild birds to nest there, a scientist who tested gelatin in sweets to find out what animal it was made from, an engineer who uses poo to heat houses....I had some pretty serious competition!

I only had a few minutes to speak so my challenge was to try and make digital preservation accessible, interesting and relevant in a short space of time. You could say that this was a bit of an elevator pitch to school kids.

Once I got thinking about this I had several ideas of different angles I could take.

I started off looking at the Mount School Archive that is held at the Borthwick. This is not a digital archive but was a good introduction to what archives are all about and why they are interesting and important. Up until 1948 the girls at this school created their own school magazine that is beautifully illustrated and gives a fascinating insight into what life was like at the school. I wanted to compare this with how schools communicate and disseminate information today and discuss some of the issues with preserving this more modern media (websites, twitter feeds, newsletters sent to parents via email).

Several powerpoint slides down the line I realised that this was not going to be short and snappy enough.

I decided to change my plans completely and talk about something that they may already know about, the Domesday Book.

I began by asking them if they had heard of the Domesday Book. Many of them had. I asked what they knew about it. They thought it was from 1066 (not far off!), someone knew that it had something to do with William the Conqueror, they guessed it was made of parchment (and they knew that parchment was made of animal skin). They were less certain of what it was actually for. I filled in the gaps for them.

I asked them whether they thought this book (that was over 900 years old) could still be accessed today and they weren't so sure about this. I was able to tell them that it is being well looked after by The National Archives and can still be accessed in a variety of ways. The main barrier to understanding the information is that it is written in Latin.

I talked about what the Domesday Book tells us about our local area. A search on Open Domesday tells us that Clifton only had 12 households in 1086. Quite different from today!

We then moved forward in time, to a period of history known as 'The 1980's' (a period that the children had recently been studying at school - now that makes me feel old!). I introduced them to the BBC Domesday Project of 1986. Without a doubt one of digital preservation's favourite case studies!

I explained how school children and communities were encouraged to submit information about their local areas. They were asked to include details of everyday life and anything they thought might be of interest to people 1000 years from then. People took photographs and wrote information about their lives and their local area. The data was saved on to floppy disks (what are they?) and posted to the BBC (this was before email became widely available). The BBC collated all the information on to laser disc (something that looks a bit like a CD but with a diameter of about 30cm).

I asked the children to consider the fact that the 900 year old Domesday Book is still accessible and  think about whether the 30 year old BBC Domesday Project discs were equally accessible. In discussion this gave me the opportunity to finally mention what digital archivists do and why it is such a necessary and interesting job. I didn't go into much technical detail but all credit to the folks who actually rescued the Domesday Project data. There is lots more information here.

Searching the Clifton and Rawcliffe area on Domesday Reloaded


Using the Domesday Reloaded website I was then able to show them what information is recorded about their local area from 1986. There was a picture of houses being built, and narratives about how a nearby lake was created. There were pieces written by a local school child and a teacher describing their typical day. I showed them a piece that was written about 'Children's Crazes' which concluded with:

" Another new activity is break-dancing
 There is a place in York where you can
 learn how to break-dance. Break     
 dancing means moving and spinning on
 the floor using hands and body. Body-
 popping is another dance craze where
 the dancer moves like a robot."


Disappointingly the presentation didn't entirely go to plan - my powerpoint only partially worked and the majority of my carefully selected graphics didn't display.

A very broken powerpoint presentation

There was thus a certain amount of 'winging it'!

This did however allow me to make the point that working with technology can be challenging as well as perhaps frustrating and exciting in equal measure!


Back to the classroom - the Domesday project

Published 20 Apr 2018 by Jenny Mitcham in Digital Archiving at the University of York.

Yesterday I was invited to speak to a local primary school about my job. The purpose of the event was to inspire kids to work in STEM subjects (science, technology, engineering and maths) and I was faced with an audience of 10 and 11 year old girls.

One member of the audience (my daughter) informed me that many of the girls were only there because they had been bribed with cake.

This could be a tough gig!

On a serious note, there is a huge gender imbalance in STEM careers with women only making up 23% of the workforce in core STEM occupations. In talking to the STEM ambassador who was at this event, it was apparent that recruitment in engineering is quite hard, with not enough boys OR girls choosing to work in this area. This is also true in my area of work and is one of the reasons we are involved in the "Bridging the Digital Gap" project led by The National Archives. They note in a blog post about the project that:

"Digital skills are vital to the future of the archives sector ...... if archives are going to keep up with the pace of change, they need to attract members of the workforce who are confident in using digital technology, who not only can use digital tools, but who are also excited and curious about the opportunities and challenges it affords."

So why not try and catch them really young and get kids interested in our profession?

There were a few professionals speaking at the event and subjects were varied and interesting. We heard from someone who designed software for cars (who knew how many different computers are in a modern car?), someone who had to calculate exact mixes of seed to plant in Sites of Special Scientific Interest in order to encourage the right wild birds to nest there, a scientist who tested gelatin in sweets to find out what animal it was made from, an engineer who uses poo to heat houses....I had some pretty serious competition!

I only had a few minutes to speak so my challenge was to try and make digital preservation accessible, interesting and relevant in a short space of time. You could say that this was a bit of an elevator pitch to school kids.

Once I got thinking about this I had several ideas of different angles I could take.

I started off looking at the Mount School Archive that is held at the Borthwick. This is not a digital archive but was a good introduction to what archives are all about and why they are interesting and important. Up until 1948 the girls at this school created their own school magazine that is beautifully illustrated and gives a fascinating insight into what life was like at the school. I wanted to compare this with how schools communicate and disseminate information today and discuss some of the issues with preserving this more modern media (websites, twitter feeds, newsletters sent to parents via email).

Several powerpoint slides down the line I realised that this was not going to be short and snappy enough.

I decided to change my plans completely and talk about something that they may already know about, the Domesday Book.

I began by asking them if they had heard of the Domesday Book. Many of them had. I asked what they knew about it. They thought it was from 1066 (not far off!), someone knew that it had something to do with William the Conqueror, they guessed it was made of parchment (and they knew that parchment was made of animal skin). They were less certain of what it was actually for. I filled in the gaps for them.

I asked them whether they thought this book (that was over 900 years old) could still be accessed today and they weren't so sure about this. I was able to tell them that it is being well looked after by The National Archives and can still be accessed in a variety of ways. The main barrier to understanding the information is that it is written in Latin.

I talked about what the Domesday Book tells us about our local area. A search on Open Domesday tells us that Clifton only had 12 households in 1086. Quite different from today!

We then moved forward in time, to a period of history known as 'The 1980's' (a period that the children had recently been studying at school - now that makes me feel old!). I introduced them to the BBC Domesday Project of 1986. Without a doubt one of digital preservation's favourite case studies!

I explained how school children and communities were encouraged to submit information about their local areas. They were asked to include details of everyday life and anything they thought might be of interest to people 1000 years from then. People took photographs and wrote information about their lives and their local area. The data was saved on to floppy disks (what are they?) and posted to the BBC (this was before email became widely available). The BBC collated all the information on to laser disc (something that looks a bit like a CD but with a diameter of about 30cm).

I asked the children to consider the fact that the 900 year old Domesday Book is still accessible and  think about whether the 30 year old BBC Domesday Project discs were equally accessible. In discussion this gave me the opportunity to finally mention what digital archivists do and why it is such a necessary and interesting job. I didn't go into much technical detail but all credit to the folks who actually rescued the Domesday Project data. There is lots more information here.

Searching the Clifton and Rawcliffe area on Domesday Reloaded


Using the Domesday Reloaded website I was then able to show them what information is recorded about their local area from 1986. There was a picture of houses being built, and narratives about how a nearby lake was created. There were pieces written by a local school child and a teacher describing their typical day. I showed them a piece that was written about 'Children's Crazes' which concluded with:

" Another new activity is break-dancing
 There is a place in York where you can
 learn how to break-dance. Break     
 dancing means moving and spinning on
 the floor using hands and body. Body-
 popping is another dance craze where
 the dancer moves like a robot."


Disappointingly the presentation didn't entirely go to plan - my powerpoint only partially worked and the majority of my carefully selected graphics didn't display.

A very broken powerpoint presentation

There was thus a certain amount of 'winging it'!

This did however allow me to make the point that working with technology can be challenging as well as perhaps frustrating and exciting in equal measure!


Slim 3.10.0 released

Published 19 Apr 2018 by in Slim Framework Blog.

We are delighted to release Slim 3.10.0. This version has a couple of minor new features and a couple of bug fixes.

The most noticeable improvement is that we now support $app->redirect('/from', '/to') to allow quick and easy redirecting of one path to another without having to write a route handler yourself. We have also added support for the SameSite flag in Slim\Http\Cookies

As usual, there are also some bug fixes, particularly we no longer override the Host header in the request if it’s already defined.

The full list of changes is here


MediaWiki with two database servers

Published 18 Apr 2018 by Sam Wilson in Sam's notebook.

I’ve been trying to replicate locally a bug with MediaWiki’s GlobalPreferences extension. The bug is about the increased number of database reads that happen when the extension is loaded, and the increase happens not on the database table that stores the global preferences (as might be expected) but rather on the ‘local’ tables. However, locally I’ve had all of these running on the same database server, which makes it hard to watch the standard monitoring tools to see differences; so, I set things up on two database servers locally.

Firstly, this was a matter of starting a new MySQL server in a Docker container (accessible at 127.0.0.1:3305 and with its data in a local directory so I could destroy and recreate the container as required):

docker run -it -e MYSQL_ROOT_PASSWORD=pwd123 -p3305:3306 -v$PWD/mysqldata:/var/lib/mysql mysql

(Note that because we’re keeping local data, root’s password is only set on the first set-up, and so the MYSQL_ROOT_PASSWORD can be left off future invocations of this command.)

Then it’s a matter of setting up MediaWiki to use the two servers:

$wgLBFactoryConf = [
	'class' => 'LBFactory_Multi',
	'sectionsByDB' => [
		// Map of database names to section names.
		'mediawiki_wiki1' => 's1',
		'wikimeta' => 's2',
	],
	'sectionLoads' => [
		// Map of sections to server-name/load pairs.
		'DEFAULT' => [ 'localdb'  => 0 ],
		's1' => [ 'localdb'  => 0 ],
		's2' => [ 'metadb' => 0 ],
	],
	'hostsByName' => [
		// Map of server-names to IP addresses (and, in this case, ports).
		'localdb' => '127.0.0.1:3306',
		'metadb' => '127.0.0.1:3305',
	],
	'serverTemplate' => [
		'dbname'        => $wgDBname,
		'user'          => $wgDBuser,
		'password'      => $wgDBpassword,
		'type'          => 'mysql',
		'flags'         => DBO_DEFAULT,
		'max lag'       => 30,
	],
];
$wgGlobalPreferencesDB = 'wikimeta';

Episode 6: Daren Welsh and James Montalvo

Published 17 Apr 2018 by Yaron Koren in Between the Brackets: a MediaWiki Podcast.

Daren Welsh and James Montalvo are flight controllers and instructors at the Extravehicular Activity (EVA) group at the Johnson Space Center at NASA. They first set up MediaWiki for their group in 2011; since then, they have overseen the spread of MediaWiki throughout the flight operations directorate at Johnson Space Center. They have also done a significant amount of MediaWiki development, including, most recently, the creation of Meza, a Linux-based tool that allows for easy installation and maintenance of MediaWiki.

Links for some of the topics discussed:


Ethical Advertising Works

Published 15 Apr 2018 by Eric Holscher in Read the Docs Blog.

It has been two years since we first launched ads on Read the Docs. We figured it was time to report on the results that we’ve seen, and say thanks to those who have helped us along the way.

The Results

To put it simply:

Ethical Advertising works.

In Q1 2018, our estimated revenue from advertising is $75,000. This is enough to fund our small team of 4 people to work on Read the Docs full-time.

When we started building our ethical advertising model, we didn’t know how it would work out. We didn’t know much about the ad industry, and we were doing things different than everyone else.

We are happy to report that you can build advertising that is a win/win/win for all parties:

  • Read the Docs wins because we generate revenue, allowing us to sustain our operations
  • Advertisers win because they are able to reach our audience of developers, helping to grow their business.
  • Users win because their privacy is maintained, and they continue to have access to our service.

Ethical advertising on Read the Docs has not been without its challenges, which we will cover in future posts.

Tracking users isn’t required

Along the way we’ve been trying to prove a simple thesis:

We can have successful advertising without tracking our users. So much of the trouble facing the ad industry these days is because of this massive databases of user data.

We have been able to show that we can show ads without knowing exactly who our users are. The content they are reading is enough to show them targeted ads, without knowing anything about them. Specifically:

  • We do not let advertisers run 3rd party code on Read the Docs. Ad images and javascript is all hosted by us.
  • We do not provide advertisers with data dumps, except aggregated reports on the clicks and views their ads got.
  • We target our ads based only on geography and the details of the page being visited, not on a profile of the user.

We’re now taking a look at what we’ve learned, and how we might help more infrastructure projects reach sustainability with an ethical advertising approach.

Towards an Ethical Ad Network

We have shown that an advertising business model that respects users can also sustain critical open source infrastructure. We hope that we can act as an example for other projects that depend on ads. You can make money without giving away your users data.

Developers have the power to shift the ad industry to respect user privacy. We must start with our own projects, leading by example. We need to have all the ads in the open source ecosystem respect user privacy, and then we can start to apply pressure to other parts of the tech industry.

We realize that not every open source project can do all the work that we’ve done. We want to explore how we can build an Ethical Ad Network, where user data isn’t sent to us, but each project doesn’t need to do ad sales.

Our ethical ad network is still in the planning phases, but if you know a project that might be interested in being a beta tester, please get in touch.

Thanks

I’d like to thank all of companies who have believed in our ethical ads initiative. You can only sell something if people buy it, and I’d like to give credit to the folks who have believed in our concept:

  • Twilio
  • Sentry
  • Rollbar
  • Stream
  • Intel
  • Data Dog
  • Mongo
  • Hosted Graphite
  • Level 12
  • Pyup
  • Triplebyte
  • Linode
  • Digital Impact Alliance
  • Digital Ocean
  • Exoscale
  • Nginx
  • Odoo
  • CircleCI
  • Cherry Servers
  • Uniregistry
  • OSCON

Want your company to be on the list? You can get more information on our advertising page.


Firefox Add-on to skip mobile Wikipedia redirect

Published 14 Apr 2018 by legoktm in The Lego Mirror.

Skip Mobile Wikipedia on Firefox Add-ons

Lately, I've been reading Wikipedia on my phone significantly more than I used to. I get 15 minutes on the train each morning, which makes for some great reading time. But when I'm on my phone, Wikipedia redirects to the mobile website. I'm sure there are some people out there who love it, but it's not for me.

There's a "Desktop" button at the bottom of the page, but it's annoying and inconvenient. So I created my first Firefox Add-on, "Skip Mobile Wikipedia". It rewrites all requests to the mobile Wikipedia website to the standard canonical domain, and sets a cookie to prevent any further redirects. It works on the standard desktop Firefox and on Android.

Install the Add-on and view the source code.


Untitled

Published 10 Apr 2018 by Sam Wilson in Sam's notebook.

I find autogenerated API docs for Javascript projects (e.g.) so much more useful than those for PHP projects.


Morning joy

Published 9 Apr 2018 by Sam Wilson in Sam's notebook.

I love the morning time, while the brain is still sharp enough to focus on one thing and get it done, but dull enough not to remember the other things and derail everything with panic about there being too much to do. The morning is when the world properly exists, and is broad and friendly.


Email doesn’t disappear

Published 9 Apr 2018 by Bron Gondwana in FastMail blog.

More and more often we are seeing stories like this one from Facebook about who has control over your messages on closed platforms.

I keep saying in response: email is your electronic memory. Your email is your copy of a conversation. Nobody, from the lowliest spammer to the grand exulted CEO of a massive company, can remove or change the content of an email message they have sent to you.

At first glance, Facebook Messenger seems to work the same way. You can delete your copy of any message in a conversation, but the other parties keep their unchanged copy. However, it turns out that insiders with privileged access can change history for somebody else, creating an effect similar to gaslighting where you can no longer confirm your recollection of what was once said.

In short, centralised social networks are not a safe repository for your electronic memory. They can change their policies and retroactively change messages underneath you.

With email, it’s all based on open standards, and you can choose a provider you trust to retain messages for you.

FastMail is a provider you can trust

We have built our business on a very simple proposition: we proudly charge money in exchange for providing a service. This means our loyalties are not split. We exist to serve your needs.

Our top three values are all about exactly this. You are our customer, your data belongs to you, we are good stewards of your data.

The right to remember, and the right to forget

We provide tools to allow you to implement rules around retention (for example, you can have your Trash folder automatically purge messages after 30 days), but we don’t ever remove messages without your consent and intent.

If you do delete messages, we don’t destroy them immediately, because our experience has shown that people make mistakes. We allow a window of between one and two weeks in which deleted messages can be recovered (see technical notes at the end of this post for exact details).

Since 2010, our self-service tool has allowed you to restore those recently deleted messages. We don't charge using this service, it’s part of making sure that decisions about your data are made by you, and helping you recover gracefully from mistakes.

Because we only scan message content to build the indexes that power our great search tools and (on delivery) for spam protection – once messages are deleted, they’re really gone. You have the right to forget emails you don’t want to keep.

You’re in control

Thanks as always to our customers who choose what to remember, and what to forget. It’s your email, and you are in control of its lifecycle. Our role is to provide the tools to implement your will.

Nobody else decides how long you keep your email for, and nobody can take back a message they’ve sent you. Your email, your memory, your choice.

An Update

Since I started drafting this article, Facebook have doubled down on the unsend feature, saying that they will make it possible for anybody to remove past messages.

While it's definitely more equitable, I still don't think this is a good idea. People will work around it by screenshotting conversations, and it just makes the platform more wasteful of everybody's time and effort. Plus it's much easier to fake a screenshot than to fake up a live Facebook Messenger interface while scrolling back to show messages.

There are really a lot of bad things about unreliable messaging systems, which is exactly what Wired has to say about this rushed and poorly thought-out feature. Stick with email for important communications.


Technical notes:

We currently purge messages every Sunday when the server load is lowest – and only messages which were deleted over a week ago. Therefore the exact calculation for message retention is one week plus the time until the next Sunday plus however long it takes the server to get to your mailbox as it scans through all the mailboxes containing purged messages. Deleting files is surprisingly expensive on most filesystems, which is why we save it until the servers are least busy.

We also have backups, which may retain deleted messages for longer based on repack schedules, but which can’t be automatically restored with messages that were deleted longer than two weeks ago.


Wikidata Map March 2018

Published 6 Apr 2018 by addshore in Addshore.

It’s time for the first 2018 installation of the Wikidata Map. It has been roughly 4 months since the last post, which compared July 2017 to November 2017. Here we will compare November 2017 to March 2018. For anyone new to this series of posts you can check back at the progression of these maps by looking at the posts on the series page.

Each Wikidata Item with a Coordinate Location(P625)will have a single pixel dot. The more Items present, the more pixel dots and the more the map will glow in that area. The pixel dots are plotted on a totally black canvas, so any land mass outline simply comes from the mass of dots. You can find the raw data for these maps and all historical maps on Wikimedia Tool Labs.

Looking at the two maps below (the more recent map being on the right) it is hard to see the differences by eye, which is why I’ll use ImageMagik to generate a comparison image. Previous comparisons have used Resemble.js.

ImageMagik has a compare script that can highlight areas of change in another colour, and soften the unchanged areas of the image. The image below highlights the changed areas in violet while fading everything that remains unchanged between the two images. As a result all areas highlighted in violet have either had Items added or removed. These areas can then be compared with the originals to confirm that these areas are in fact additions.