Built at night

Art Map London is where Adrian Raudaschl cut his teeth building websites. This is how that went, told mostly by the notes he left himself along the way.

Jenny knew the art world. Adrian knew a bit of PHP and, by his own account, very little about art. He joined in 2014 as co-founder and the person responsible for everything with a plug on it, and has said since that the project became the place where I really learned to love and appreciate art. It was also where he learned to build for the web, in public, with real galleries waiting on the other end.

The form that would not take a picture

The early site ran on WordPress, which was fine for a blog and wrong for what Art Map London needed most: a way for any gallery to send in an event, with a picture, without emailing Jenny. So Adrian started building one by hand.

A plain web form headed Art Map London, with fields for event name, description, date, address and email, a Choose File button, a reCAPTCHA box and a blue Submit Event button
The prototype, August 2015. Adrian's note with it: Got the shiny new ArtMap London form working with Ajax and Bootstrap but for the love of me can't get file uploads working. Grrr!

Everything a listing needed is already there: the name, the date, the address, the postcode. So is the I'm not a robot box. The picture is the part that didn't work, and it went on not working for some time.

2017: starting again

In January 2017 he threw out WordPress and began the site again from nothing in Laravel. The first note in the history, on 21 January, reads CRUD test. There are 550 in his name over the next five years, and 431 of them are from the first.

02040608020172018201920202021202270
See the numbers
January 20174
February 20179
March 201747
April 201742
May 201770
June 201719
July 201736
August 201745
September 201728
October 201748
November 201749
December 201734
January 201812
February 20182
March 20187
April 20189
May 201824
June 20187
July 20185
August 20181
September 20180
October 201812
November 20181
December 20187
January 20190
February 20191
March 20190
April 20190
May 20190
June 20190
July 20190
August 20190
September 20190
October 20190
November 20190
December 20190
January 20200
February 20200
March 20200
April 20200
May 20200
June 20200
July 20200
August 20200
September 20200
October 20200
November 20200
December 20200
January 202128
February 20210
March 20210
April 20210
May 20210
June 20210
July 20210
August 20210
September 20210
October 20210
November 20210
December 20210
January 20220
February 20222
March 20221

It was built around a day job. 68% of those commits were made after eight in the evening and 45% at the weekend. The busiest hour of the whole project was ten to eleven at night.

05010015012am3am6am9am12pm3pm6pm9pm121
See the numbers
12am29
1am0
2am0
3am0
4am0
5am0
6am0
7am1
8am2
9am9
10am3
11am3
12pm1
1pm12
2pm12
3pm26
4pm23
5pm15
6pm31
7pm37
8pm53
9pm68
10pm121
11pm104

By spring the new site had what the old one never did: accounts for galleries, a queue where every submission was checked before it went up, search, and a page per event that worked when you shared it. At its busiest, Adrian reckons, five to ten events arrived every day and about a hundred people came to look.

Forty commits about one form

The submission form went live in March 2017 and was never really finished. 40 commits mention the form, submissions or uploads. Read in order they are a small history of everything that can go wrong when strangers are allowed to send you things.

  1. added event submit
  2. Added new form submit
  3. set file size limit on image upload and updated blade for upload
  4. fixed upload
  5. Made jenny changes on form styling
  6. Fixed event submission form
  7. Put restrictions on file upload
  8. Added new checks to make sure images over 3000px can not be uploaded
  9. Updated submit event to remove any tags or paragraphs which may be causing formatting issues

Photographs arrived straight off the camera, too big for the server to shrink without running out of memory. Pasted text brought its formatting with it and broke the page. Addresses had to be tidied before a map could place them. Each of those became an evening.

The bots

A public form with an upload button is an invitation, and within two months of launch things that were not galleries had accepted it.

  1. Added htmlpurifier to remove nefarious submissions
  2. Added hidden email field to fool bots with validation
  3. added botscout for future ip address filtering
  4. removed botscout
  5. Added recaptcha

The hidden field is an old trick: add a box that people can't see, and throw away anything that fills it in. It held for a while. A service that checked visitors against a list of known bots lasted eleven days before it came out again. In the end the answer was the same I'm not a robot box that had been sitting in the 2015 prototype. It went in on 15 February 2019, and it is the last change anyone made to the site for almost two years.

They got through anyway. The last years of the archive are dotted with conferences that had nothing to do with art, a neurology congress in Kuala Lumpur among them, and clearing those out was one of the first jobs when we rebuilt it.

The pictures

Every listing came with an image, and getting thousands of them to appear quickly and at the right size took most of October 2017. 41 commits mention images. Some days the history is just this:

  1. image test
  2. final test for image
  3. another image test
  4. reset image system
  5. testing image
  6. experiment image again
  7. increased memory limit for image manipulation

The originals were kept in a storage bucket, away from the server. That decision is the reason this archive has pictures at all. When the server and its database went, the bucket carried on, and every image you see here was still sitting in it years later.

The parts people remember

The Art Map London listings page in September 2019: events for Saturday 21 September with times, venues, round pictures and tube and train walking times, beside a calendarThe map view from the same day: event cards on the left and a map of central London with red pins on the right
The site as it looked in September 2019: the daily list, and the same day on the map.
  • The map. Pins that grouped together as you zoomed out arrived in October 2017, and the side-by-side list and map that December.
  • The Sunday email. A newsletter that wrote itself from the week's listings first went out in November 2017. One commit from that week reads Removed weak point that sends out all newsletter emails, which is as much as we are going to say about that.
  • The tube. Nearest station and minutes on foot, for every event, from October 2018.
  • Search. Built on a hosted search service in February 2017 and rewritten six weeks later to do without it.

Keeping it alive

The listings stopped in 2020 and the code began to rot, the way code does when the things it depends on move on without it. Adrian went back twice.

  1. debug save event
  2. debug change
  3. debug move
  4. Disabled event submissions
  5. Failed attempt at dockerising (requires a newer version of laravel). Got it working locally on homestead virtualbox!
  6. Re-enabled the event submission and the event page seems to work!

In January 2021 saving an event started to fail and, after an evening of commits called debug, he switched submissions off. A year later he spent three weeks of evenings getting the whole thing to run on a modern machine, and on 6 February 2022 turned the form back on. The last three listings in the database are his own tests from that evening; one is called Artmap Returns. His notes for the day end: Successful day!

It was the last one. Some time after that the server went, and the database with it.

This version

The site you are reading has no database, no accounts and no server to fall over. It is a few thousand plain pages, rebuilt from what we could recover, and it should outlast us without anyone having to go back in at ten at night.

Two things survive from the old code. The pink is the same pink. And the guestbook, the one place here where strangers can still send us things, is guarded by a hidden field that people can't see.