Diag| Considering item [https://blogs.ed.ac.uk/edwardenejoh/?p=11] "Why Food Is the Ultimate Bridge: A Tale of Two Cultures"
Diag========| SQL: SELECT wp_30_posts.ID, wp_30_posts.guid, wp_30_posts.post_modified_gmt, wp_30_posts.post_name
FROM wp_30_posts LEFT JOIN wp_30_postmeta EO_META ON EO_META.meta_key = 'ease_only' AND EO_META.post_id = wp_30_posts.ID
WHERE 1=1 AND ((guid = 'https://blogs.ed.ac.uk/edwardenejoh/?p=11'))
ORDER BY wp_30_posts.post_date DESC
Diag====| Item [https://blogs.ed.ac.uk/edwardenejoh/?p=11] "Why Food Is the Ultimate Bridge: A Tale of Two Cultures" is a NEW POST.
Diag========| CHECK existence of category: "Events" with result: null
Diag========| CHECK existence of post_tag: "Events" with result: null
Diag========| CHECKED familiarity of term "Events" across {"1":"category","2":"post_tag"} with result: false
Diag====| Assigned category "Events" by feed; checking {"1":"category","2":"post_tag"} with result: null
Diag====| Category: MAPPED term names ["Events"] to IDs: null
Diag====| Category: MAPPED term names [] to IDs: null
Diag| Considering item [https://blogs.ed.ac.uk/edwardenejoh/2024/09/10/welcome/] "Volunteer Day: Making a Difference Beyond the Desk"
Diag========| SQL: SELECT wp_30_posts.ID, wp_30_posts.guid, wp_30_posts.post_modified_gmt, wp_30_posts.post_name
FROM wp_30_posts LEFT JOIN wp_30_postmeta EO_META ON EO_META.meta_key = 'ease_only' AND EO_META.post_id = wp_30_posts.ID
WHERE 1=1 AND ((guid = 'https://blogs.ed.ac.uk/edwardenejoh/2024/09/10/welcome/'))
ORDER BY wp_30_posts.post_date DESC
Diag====| Item [https://blogs.ed.ac.uk/edwardenejoh/2024/09/10/welcome/] "Volunteer Day: Making a Difference Beyond the Desk" is a duplicate of an existing post.
Diag====| HTTP [https://blogs.ed.ac.uk/mediahopper/feed/] ⌉ array(6) {
["headers"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#975 (1) {
["data":protected]=>
array(12) {
["content-type"]=>
string(34) "application/rss+xml; charset=UTF-8"
["date"]=>
string(29) "Fri, 15 May 2026 09:20:23 GMT"
["server"]=>
string(6) "Apache"
["x-powered-by"]=>
string(10) "PHP/8.3.30"
["expires"]=>
string(29) "Thu, 19 Nov 1981 08:52:00 GMT"
["cache-control"]=>
string(35) "no-store, no-cache, must-revalidate"
["pragma"]=>
string(8) "no-cache"
["link"]=>
string(71) "<https://blogs.ed.ac.uk/mediahopper/wp-json/>; rel="https://api.w.org/""
["set-cookie"]=>
array(3) {
[0]=>
string(62) "PHPSESSID=ncipl513vh8dcqrttkbpqlejvr; path=/; secure; HttpOnly"
[1]=>
string(134) "spo_201_fa=971e57e158fd4a5340f44852bfb286f0; expires=Fri, 15 May 2026 09:50:23 GMT; Max-Age=1800; path=/mediahopper/; Secure; HttpOnly"
[2]=>
string(125) "RCKBMHKB=027ff8be59-56fd-48ArMHh_FupaG8O1C08qOgcUkp9Mwcl2Vmz0OFKyySwBvdzITU0Vfx4t2OUTigESFtkuQ; path=/; SameSite=None; Secure"
}
["last-modified"]=>
string(29) "Thu, 14 Dec 2023 17:57:08 GMT"
["etag"]=>
string(34) ""45cf9c638f115d3823aeba3d2008b07b""
["vary"]=>
string(15) "Accept-Encoding"
}
}
["body"]=>
string(26397) "<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:cc="http://creativecommons.org/ns#" >
<channel>
<title>Media Hopper</title>
<atom:link href="https://blogs.ed.ac.uk/mediahopper/feed/" rel="self" type="application/rss+xml" />
<link>https://blogs.ed.ac.uk/mediahopper</link>
<description>Articles and ramblings on Media Hopper Create & Media Hopper Replay, as well as DIY Film School and Apple Podcasts</description>
<lastBuildDate>Thu, 14 Dec 2023 17:57:08 +0000</lastBuildDate>
<language>en-GB</language>
<sy:updatePeriod>
hourly </sy:updatePeriod>
<sy:updateFrequency>
1 </sy:updateFrequency>
<generator>https://wordpress.org/?v=6.8.5</generator>
<cc:license >Creative Commons Attribution CC BY 3.0</cc:license><dc:rights >Creative Commons Attribution CC BY 3.0</dc:rights> <item>
<title>Using Chat GPT to refine narratives</title>
<link>https://blogs.ed.ac.uk/mediahopper/2023/12/13/using-chat-gpt-to-refine-narratives/</link>
<comments>https://blogs.ed.ac.uk/mediahopper/2023/12/13/using-chat-gpt-to-refine-narratives/#respond</comments>
<dc:creator><![CDATA[Liam Duffy]]></dc:creator>
<pubDate>Wed, 13 Dec 2023 12:11:21 +0000</pubDate>
<category><![CDATA[AI]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/mediahopper/?p=120</guid>
<description><![CDATA[2023 has been the year of chatting with robots. Not in a fun-and-hijinks ‘Short Circuit’ way, but in a less...]]></description>
<content:encoded><![CDATA[<p>2023 has been the year of chatting with robots. Not in a fun-and-hijinks ‘Short Circuit’ way, but in a less hilarity-inducing ‘lets spend 20 minutes phrasing this perfectly so I actually get something useful’ way. A lot of companies have been working on growing ‘large language models’ for use in AI for a while, but the one that really captured people’s attention in 2023 has been OpenAI’s ChatGPT.</p>
<p>There are many other flavours of AI chatty-Cathy’s out there with colourful names such as Bard, Claude, Grok, LLaMA, Bothan, and Ernie Bot (one of those I made up*), but ChatGPT has become the go-to chatbot for a lot of people, with over 100 million users registered on the service. In the past 12 months, the top 2 fastest-rising search terms on Google from the UK are ‘ChatGPT’ and ‘Chat GPT’.</p>
<p><img decoding="async" class="alignnone size-medium wp-image-121" src="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/Screenshot-2023-12-13-at-09.38.55-300x253.png" alt="" width="300" height="253" srcset="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/Screenshot-2023-12-13-at-09.38.55-300x253.png 300w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/Screenshot-2023-12-13-at-09.38.55.png 585w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>While there are a lot of uses for ChatGPT and similar AI services, one that has some people worried about its potential impact is its use for creative purposes. The use of AI-generated images and music has raised questions about whether human artists will get shut out of the process if it’s quicker and cheaper to ask a bot to create art, and the recent SAG-AFTRA and WGA strikes that took Hollywood to a grinding halt earlier this year was at least in part because of the actors and writer’s unions wanting to ensure there were protections in updated contracts to limit AI’s impact on filmmaking.</p>
<p>While we’re likely at least a few years away from the best original screenplay Academy Award going to ChatBot_182.432.1REV3, ChatGPT can be used as a tool in a lot of ways for narrative storytelling. It certainly can write a full story for you, but it can go off in pretty wild places with some… <em>interesting </em>narrative choices.</p>
<p>With the simple prompt ‘Hey ChatGPT, write me a story’, I got a 450 word tale of a character named Luna who lived in a ‘Blade Runner’-esque neon city worked as a librarian by day, and by night used her supernatural powers to turn the books on her shelves in to magical realms. She proceeds to find a kingdom in peril, talk to a wise old owl and a mischievous sprite, solve puzzles, go through enchanted forests, and save the day using the power of imagination. That’s a lot to cram in to 450 words. <em>You can read the full story here with the password LunasMidnightOdyssey – <a href="https://blogs.ed.ac.uk/mediahopper/lunas-midnight-odyssey/">full story</a></em></p>
<p>This is one of the problems with just giving ChatGPT free reign to do what it ‘wants’ when being creative, it doesn’t really understand scale or that just throwing every plot point it can generate in to a list doesn’t really make a story.</p>
<figure id="attachment_130" aria-describedby="caption-attachment-130" style="width: 700px" class="wp-caption aligncenter center"><img decoding="async" class="aligncenter size-large wp-image-130" src="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-1024x684.jpg" alt="" width="700" height="468" srcset="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-1024x684.jpg 1024w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-300x200.jpg 300w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-768x513.jpg 768w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-1140x761.jpg 1140w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c.jpg 1536w" sizes="(max-width: 700px) 100vw, 700px" /><figcaption id="caption-attachment-130" class="wp-caption-text">Old College by Playfair, William, University of Edinburgh is available under a CC BY 3.0 Unported licence. https://images.is.ed.ac.uk/luna/servlet/s/m671gu</figcaption></figure>
<p>ChatGPT’s really power for creating narrative, at least in its current state, is in using it to refine a story, or to help work through ideas. Let’s say I’m trying create a new video for Media Hopper Create about the history of Old College, and want to write a voice over. Here’s a quick draft:</p>
<blockquote><p>Old College its part of The University of Edinburgh and was mostly built from the late 18th to early 19th century. Originally named ‘New College’, it is a Category A listed building located on South Bridge. The original design was by Robert Adam, with the modern design being completed by William Henry Playfair. The dome was added to the building in 1887, with a gilded statue of Youth by John Hutchinson.</p>
<ul>
<li>Original version</li>
</ul>
</blockquote>
<p>I wrote this in about 5 minutes with information culled from <a href="https://en.wikipedia.org/wiki/Old_College,_University_of_Edinburgh">Wikipedia</a>, and while perfectly serviceable, it’s possibly a little perfunctory. I asked ChatGPT what it thought of my script, and it decided (unprompted) to re-write it for me to make it more ‘engaging’:</p>
<blockquote><p>Welcome to Old College, a majestic structure nestled within the heart of The University of Edinburgh. Originally named ‘New College,’ this architectural gem traces its roots back to the late 18th century. Designed by the renowned Robert Adam, its timeless elegance was later completed by William Henry Playfair in the 19th century.</p>
<p>Situated on South Bridge, Old College stands as a Category A listed building, a testament to its historical and architectural significance. In 1887, a crowning touch was added to the structure in the form of a magnificent dome. Adorning the pinnacle is a gilded statue of Youth, a creation by the skilled hands of John Hutchinson.</p>
<p>As you stand in awe of Old College, it’s not just a building; it’s a living testament to the evolution of academia and architecture. The melding of the past and present, with each stone whispering stories of the scholars who once walked its halls. Today, Old College continues to be a symbol of academic excellence and a revered landmark in the vibrant tapestry of The University of Edinburgh.</p>
<ul>
<li>Revision from ChatGPT</li>
</ul>
</blockquote>
<p>This new version does feel more like a narrative than just a list of facts, and the language use is definitely more descriptive, it goes a bit overboard with the use of evocative metaphors. To try and rein it in a bit, I added this prompt: “That’s a little bit over the top with descriptive language, can you scale it back a little?”. This is the new version:</p>
<blockquote><p>Old College, part of The University of Edinburgh, has a rich history dating back to the late 18th century. Originally called ‘New College,’ its design, led by Robert Adam and later completed by William Henry Playfair, stands as a testament to architectural craftsmanship.</p>
<p>Situated on South Bridge, this Category A listed building gained its distinctive dome in 1887, crowned with a gilded statue of Youth by John Hutchinson. Today, Old College preserves the charm of its past, serving as a key landmark in the University’s legacy.</p>
<p>Explore the echoes of academia within Old College’s walls, where each brick tells a story of the scholars who once roamed its corridors. This historic structure, with its timeless design, remains an enduring symbol of The University of Edinburgh’s journey through time.</p>
<ul>
<li>Revision 2 by ChatGPT</li>
</ul>
</blockquote>
<p>This time it removed some of the descriptive language of the building itself, but it replaced a metaphor of it being ‘a revered landmark in the vibrant tapestry’ of the university with one about ‘each brick telling a story’. Let’s try refining it one more time – here’s the latest version with my prompt “How about you remove some of the metaphors, but give more descriptive language?”:</p>
<blockquote><p>Old College, integral to The University of Edinburgh, has a fascinating history rooted in the late 18th century. Originally christened ‘New College,’ it boasts an architectural legacy shaped by Robert Adam and later refined by William Henry Playfair.</p>
<p>Nestled on South Bridge, this distinguished Category A listed building acquired its iconic dome in 1887, adorned with a gilded statue of Youth crafted by John Hutchinson. Old College serves as both witness and custodian to the University’s journey through time.</p>
<p>Step into its storied corridors and be transported to an era when scholars traversed its halls. Each brick and beam narrates tales of academic pursuits and intellectual growth. Old College stands today, not just as a historic landmark, but as a living tribute to The University of Edinburgh’s enduring academic tradition.</p></blockquote>
<p>At this point it feels like ChatGPT is stuck just reiterating on a specific style of writing. This is one of the issues I hit when looking to use a chatbot for anything creative – the model it’s using to generate text has a specific style and there isn’t an easy way to break out of that. While ChatGPT is great for helping point you in the right direction, most of the time things will still need to be edited and refined manually to fit the exact purpose you need it for.</p>
<p>How about we experiment with this further, and see how well it handles a change in tone. I added the a new prompt to change the genre, but not the content: “What if this was the Voice Over for a horror film?”</p>
<blockquote><p>“Deep within the shadows of The University of Edinburgh lies Old College, a structure steeped in a history that echoes with whispers of the supernatural. Once named ‘New College,’ its unsettling evolution began in the late 18th century under the design of Robert Adam, later twisted by the hands of William Henry Playfair.</p>
<p>Perched ominously on South Bridge, this foreboding Category A listed building acquired an eerie dome in 1887, crowned by a gilded statue of Youth, a macabre creation by the twisted artist John Hutchinson. Old College, now a haunting relic, conceals not only the secrets of academia but a darker, malevolent force.</p>
<p>As you traverse its desolate corridors, the air thickens with the chilling tales of scholars who met untimely fates within its haunted walls. Every brick, every step resonates with an otherworldly presence. Old College stands not as a symbol of knowledge, but as a portal to the supernatural, where the past lingers, and the spirits of the damned find no rest.”</p>
<ul>
<li>ChatGPT’s voice over for a horror film</li>
</ul>
</blockquote>
<p>Ok, a lot to unpack… not only is this now borderline defamatory calling famed sculptor John Hutchinson a ‘twisted artist’ who created ‘macabre creations’, claims that Old College is where ‘the spirits of the damned find no rest’ and is literally a ‘portal to the supernatural’, but it is <em>still</em> using that metaphor of ‘every brick tells a story’.</p>
<p>While overly flowery language can be a bit of a handful to prune back, this last revision shows where the creative ‘choices’ ChatGPT uses can start to turn truth in to pure fabrication. The original core of the facts from my initial script are still there (the dates, the people involved, the legacy), it uses those to create completely a fictitious narrative.</p>
<p>The creative uses for ChatGPT are vast, but as an AI it has no concept of how it <strong>should</strong> use the information in your prompts, only what it <strong>can</strong> do. Chat bots can be a useful tool, but just remember to keep it on a short leash.</p>
<p> </p>
<p>*’Bothan’ is actually a lesser-known species from Star Wars: <a href="https://en.wikipedia.org/wiki/List_of_Star_Wars_species_(A–E)#Bothan">https://en.wikipedia.org/wiki/List_of_Star_Wars_species_(A–E)#Bothan</a></p>
<span class="uoe-published-time uoe-seo-hidden-area">
<time datetime="2023-12-13" itemprop="dateModified">Dec 13, 2023</time>
</span>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/mediahopper/2023/12/13/using-chat-gpt-to-refine-narratives/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>What is 360º Video? – The Early Days…</title>
<link>https://blogs.ed.ac.uk/mediahopper/2019/02/18/what-is-360o-video-the-early-days/</link>
<comments>https://blogs.ed.ac.uk/mediahopper/2019/02/18/what-is-360o-video-the-early-days/#respond</comments>
<dc:creator><![CDATA[Liam Duffy]]></dc:creator>
<pubDate>Mon, 18 Feb 2019 16:24:53 +0000</pubDate>
<category><![CDATA[DIY Film School]]></category>
<category><![CDATA[360º]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/mediahopper/?p=56</guid>
<description><![CDATA[This is part of a series of posts exploring 360º videos, going from its roots in expositions and theme parks,...]]></description>
<content:encoded><![CDATA[<p><i>This is part of a series of posts exploring 360º videos, going from its roots in expositions and theme parks, to how it can be recorded using your mobile phone and used in education.</i></p>
<h2>Cinéorama</h2>
<p>The Exposition Universelle, or better known as the 1900 Paris Exposition in English, was part of France’s drive to enter the 20th century with a reignited sense of cultural and national pride after devastation of the Great War. For nearly a decade before the exhibition grounds were due to open, countries around the world were invited to bring their greatest achievements and display their cultures on an international stage, part of the event’s bigger themes of unifying people.</p>
<p><figure style="width: 4195px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/c/c2/La_porte_monumentale%2C_Exposition_Universelle_1900.jpg" alt="" width="4195" height="2678" /><figcaption class="wp-caption-text">Brown University Library [Public domain]</figcaption></figure>Some of the highlights of the Exposition included a giant refracting telescope (60 meters long with a diameter of 1.5 meters), a display of photographs showing African American’s contributions to American society organised by sociologists and activists Booker Washington and <a href="https://en.wikipedia.org/wiki/W.E.B._Du_Bois">W.E.B. Du Bois</a> , and in a fit of what I can only imagine was either reckless abandonment or an over-eagerness to please the visiting crowds, a Russian sparkling wine won the “Grand Prix de Champagne” beating several French vintners. The first Olympic Games outside of Greece took place during the Exposition, with the winners receiving 100 francs, a tie pin, and a commemorative pencil.</p>
<p>One of the biggest draws of the Exposition was the introduction of two of the great innovations in the world of cinema: the first wide-scale demonstration of recorded sound synced with moving image, and 360º panoramic projections. Obviously the latter of the two had the greater impact in the history of entertainment. I mean, come on, how many people actually watch films with audio?</p>
<p>Oh, what’s that? Most people do? Pretty much every piece of commercial film created in the last 80 years has had synchronised sound? Nobody uses 360º panoramic video projections beyond some very limited applications? Hmm.</p>
<p>The French Cinéorama was designed and constructed specifically for the Exposition by <a href="Raoul Grimoin-Sanson">Raoul Grimoin-Sanson</a>, with the intention being to replicate a ride on a hot air balloon over Paris using ten synchronised projectors housed under the ‘basket’ of the stationary balloon model.</p>
<p><figure style="width: 1199px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/a/a6/Cineorama.jpg" alt="" width="1199" height="850" /><figcaption class="wp-caption-text">Louis Poyet [Public domain]</figcaption></figure>Built on the technology that English inventor <a href="https://en.wikipedia.org/wiki/Robert_W._Paul">Robert Paul</a> had been working on in the late 1890’s to project moving image on a screen (which was in turn based on designs stolen from Thomas Edison’s single-viewer Kinetoscope machine), the Cinéorama would project moving images onto 10 screens, each 9×9 meters, arranged in a circle around the viewer. The film was shot using 10 cameras pointing outwards from a central point which housed the cranking mechanism that wound all of the cameras at the same time – early cinema cameras were usually hand-cranked, so this made sure that the image was captured at the same speed on each camera. This rig was then attached to a real hot air balloon as it flew 400 meters about the Tuileries Gardens, filming the ascent.</p>
<p><figure style="width: 600px" class="wp-caption alignleft"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ec/Cineorama_camera.jpg" alt="" width="600" height="1019" /><figcaption class="wp-caption-text">Louis Poyet [Public domain]</figcaption></figure>People would board a giant hot air balloon model in the middle of the screens, the basket of which was big enough to hold 200 people, complete with rigging and the bottom half of a balloon suspended from the ceiling. Once ‘boarded’ the spectators would look out at the screens as the projectors showed the balloon take off. Once the experience had finished, they used some cinema magic to show the balloon landing again (they played the film backwards).</p>
<p>The Cinéorama lasted a glorious whole 3 days before the police shut it down due to safety concerns – one of the workmen had fainted from the immense heat of the arc lamps used in the projectors, and as these were housed directly beneath the viewing platform, it was considered an extreme fire hazard to the spectators. After the show was shut down in the middle of day 4, it has never been shown again.</p>
<p>Things didn’t faire much better for the Exposition Universelle – due the unexpectedly high running costs of the Exposition as a whole, it ended costing the organisers about 600 francs (around £2,000 in 2018) <i>more</i> per person than the cost of admission. This was the end of this streak of Parisian international fairs.</p>
<h2>Circle-Vision 360º</h2>
<p>The rebirth of commercial 360º panoramic films came with the opening of 1955’s ‘CIRCARAMA’ cinema in Disneyland, California, showing the short film A Tour of the West, soon followed by America The Beautiful.</p>
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/rmv_P_wcZG4?start=801" width="660" height="544" frameborder="0" allowfullscreen></iframe></p>
<p>The system used in Disneyland, named ‘Circle-Vision 360°’, improved on Grimoin-Sanson’s Cinéorama system in a number of ways, with the biggest difference being that instead of having the film projectors mounted under the audience’s feet (and causing a lot of fire-risks at the same time) an odd number of screens and projectors are used – this means that each projector is placed between the screens on the opposite wall of the purpose-built circular auditorium:</p>
<figure style="width: 2320px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://patentimages.storage.googleapis.com/3e/df/f2/ef5b770a26468d/US2942516-drawings-page-2.png" alt="" width="2320" height="3408" /><figcaption class="wp-caption-text">Walter E Disney, Iwerks Ub (1956). US Patent No. US2942516A. Retrieved from https://patents.google.com/patent/US2942516</figcaption></figure>
<p>This clever bit of mathematics allows the bulky projector systems to be hidden behind the ring of screens, providing more a more immersive experience to the audience.</p>
<p>The camera system used to record the footage, however, is remarkably similar Cinéorama’s – nine cameras are arranged around a central point facing outwards, with an internal mechanism keeping the cameras in sync.</p>
<p><figure style="width: 2364px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/5/59/Circle-Vision_360_camera_%2829638534777%29_%28cropped%29.jpg" alt="" width="2364" height="1965" /><figcaption class="wp-caption-text">elisfkc from Orlando, FL, United States [CC BY-SA 2.0 (https://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons</figcaption></figure>The camera rig can be attached to the roof of a car or the underside of a helicopter. Given there was an intentional gap between each screen for the projectors to fit, later films used these to split-up the action between sections of the room. For example, they could show a full 360º film to start with, then fade the screens on one half of the room to show standard film footage on each screen, while maintaining the panorama on the other. This allowed for greater creative freedom, and removed the reliance of using the expensive Circle-Vision 360º cameras to capture all the footage.</p>
<p>Over the years, 5 different Disney theme parks have used Circle-Vision 360º for their attractions, and while the original has now closed at Disneyland in California, and it’s international variants at Tokyo Disneyland and Disneyland Paris closing in the early 21st century, there are 2 theatres still operating at Epcot – ‘Reflections of China’ and ‘Oh Canada!’ At each of their respective country’s pavilions in the World Showcase.</p>
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/SdUKRTeyKfU" width="660" height="544" frameborder="0" allowfullscreen></iframe> <em>Interestingly, you can actually watch this version in 360º using Google Cardboard or by clicking and dragging your mouse around the frame</em></pre>
<p> </p>
<p>Both of these act as quasi-tourism videos showing off the landscapes and cultural landmarks of each country …and the Canadian one also serves as a showcase for Martin Short’s comedic talents, so there’s that.</p>
<p>This idea of pure spectacle makes sense as a use for this pretty unique form of film-making, but it does highlight two of the biggest drawbacks of 360º cinema in an auditorium setting:</p>
<p>The first being the cost involved would make it prohibitive to film more than a few minutes worth of footage, both in terms of capturing using 9 high-quality cameras and running the multiple necessary projectors all day.</p>
<p>The second, and possibly most difficult to overcome: trying to craft a story where the viewer needs to constantly be turning their heads. Both of the 360º cinema formats mentioned here rely on the viewer being free to stand and turn all the way around to find and follow points of interest. Indicating where a person should be looking at all times is tricky when it might be behind them. Constantly having your characters announce themselves and give time for people to move around and look in their direction could kill the tension in your drama.</p>
<p><em>Thank you for coming along on our first journey in to 360º video. In our next article we’ll be diving in to the world of modern film and content creation for 360º and VR, and how this can be used in education.</em></p>
<span class="uoe-published-time uoe-seo-hidden-area">
<time datetime="2019-02-18" itemprop="dateModified">Feb 18, 2019</time>
</span>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/mediahopper/2019/02/18/what-is-360o-video-the-early-days/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
</channel>
</rss>
"
["response"]=>
array(2) {
["code"]=>
int(200)
["message"]=>
string(2) "OK"
}
["cookies"]=>
array(3) {
[0]=>
object(WP_Http_Cookie)#2451 (7) {
["name"]=>
string(9) "PHPSESSID"
["value"]=>
string(26) "ncipl513vh8dcqrttkbpqlejvr"
["expires"]=>
NULL
["path"]=>
string(1) "/"
["domain"]=>
string(14) "blogs.ed.ac.uk"
["port"]=>
NULL
["host_only"]=>
bool(true)
}
[1]=>
object(WP_Http_Cookie)#2450 (7) {
["name"]=>
string(10) "spo_201_fa"
["value"]=>
string(32) "971e57e158fd4a5340f44852bfb286f0"
["expires"]=>
int(1778838623)
["path"]=>
string(13) "/mediahopper/"
["domain"]=>
string(14) "blogs.ed.ac.uk"
["port"]=>
NULL
["host_only"]=>
bool(true)
}
[2]=>
object(WP_Http_Cookie)#2452 (7) {
["name"]=>
string(8) "RCKBMHKB"
["value"]=>
string(85) "027ff8be59-56fd-48ArMHh_FupaG8O1C08qOgcUkp9Mwcl2Vmz0OFKyySwBvdzITU0Vfx4t2OUTigESFtkuQ"
["expires"]=>
NULL
["path"]=>
string(1) "/"
["domain"]=>
string(14) "blogs.ed.ac.uk"
["port"]=>
NULL
["host_only"]=>
bool(true)
}
}
["filename"]=>
NULL
["http_response"]=>
object(WP_HTTP_Requests_Response)#976 (5) {
["data"]=>
NULL
["headers"]=>
NULL
["status"]=>
NULL
["response":protected]=>
object(WpOrg\Requests\Response)#979 (10) {
["body"]=>
string(26397) "<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:cc="http://creativecommons.org/ns#" >
<channel>
<title>Media Hopper</title>
<atom:link href="https://blogs.ed.ac.uk/mediahopper/feed/" rel="self" type="application/rss+xml" />
<link>https://blogs.ed.ac.uk/mediahopper</link>
<description>Articles and ramblings on Media Hopper Create & Media Hopper Replay, as well as DIY Film School and Apple Podcasts</description>
<lastBuildDate>Thu, 14 Dec 2023 17:57:08 +0000</lastBuildDate>
<language>en-GB</language>
<sy:updatePeriod>
hourly </sy:updatePeriod>
<sy:updateFrequency>
1 </sy:updateFrequency>
<generator>https://wordpress.org/?v=6.8.5</generator>
<cc:license >Creative Commons Attribution CC BY 3.0</cc:license><dc:rights >Creative Commons Attribution CC BY 3.0</dc:rights> <item>
<title>Using Chat GPT to refine narratives</title>
<link>https://blogs.ed.ac.uk/mediahopper/2023/12/13/using-chat-gpt-to-refine-narratives/</link>
<comments>https://blogs.ed.ac.uk/mediahopper/2023/12/13/using-chat-gpt-to-refine-narratives/#respond</comments>
<dc:creator><![CDATA[Liam Duffy]]></dc:creator>
<pubDate>Wed, 13 Dec 2023 12:11:21 +0000</pubDate>
<category><![CDATA[AI]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/mediahopper/?p=120</guid>
<description><![CDATA[2023 has been the year of chatting with robots. Not in a fun-and-hijinks ‘Short Circuit’ way, but in a less...]]></description>
<content:encoded><![CDATA[<p>2023 has been the year of chatting with robots. Not in a fun-and-hijinks ‘Short Circuit’ way, but in a less hilarity-inducing ‘lets spend 20 minutes phrasing this perfectly so I actually get something useful’ way. A lot of companies have been working on growing ‘large language models’ for use in AI for a while, but the one that really captured people’s attention in 2023 has been OpenAI’s ChatGPT.</p>
<p>There are many other flavours of AI chatty-Cathy’s out there with colourful names such as Bard, Claude, Grok, LLaMA, Bothan, and Ernie Bot (one of those I made up*), but ChatGPT has become the go-to chatbot for a lot of people, with over 100 million users registered on the service. In the past 12 months, the top 2 fastest-rising search terms on Google from the UK are ‘ChatGPT’ and ‘Chat GPT’.</p>
<p><img decoding="async" class="alignnone size-medium wp-image-121" src="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/Screenshot-2023-12-13-at-09.38.55-300x253.png" alt="" width="300" height="253" srcset="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/Screenshot-2023-12-13-at-09.38.55-300x253.png 300w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/Screenshot-2023-12-13-at-09.38.55.png 585w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>While there are a lot of uses for ChatGPT and similar AI services, one that has some people worried about its potential impact is its use for creative purposes. The use of AI-generated images and music has raised questions about whether human artists will get shut out of the process if it’s quicker and cheaper to ask a bot to create art, and the recent SAG-AFTRA and WGA strikes that took Hollywood to a grinding halt earlier this year was at least in part because of the actors and writer’s unions wanting to ensure there were protections in updated contracts to limit AI’s impact on filmmaking.</p>
<p>While we’re likely at least a few years away from the best original screenplay Academy Award going to ChatBot_182.432.1REV3, ChatGPT can be used as a tool in a lot of ways for narrative storytelling. It certainly can write a full story for you, but it can go off in pretty wild places with some… <em>interesting </em>narrative choices.</p>
<p>With the simple prompt ‘Hey ChatGPT, write me a story’, I got a 450 word tale of a character named Luna who lived in a ‘Blade Runner’-esque neon city worked as a librarian by day, and by night used her supernatural powers to turn the books on her shelves in to magical realms. She proceeds to find a kingdom in peril, talk to a wise old owl and a mischievous sprite, solve puzzles, go through enchanted forests, and save the day using the power of imagination. That’s a lot to cram in to 450 words. <em>You can read the full story here with the password LunasMidnightOdyssey – <a href="https://blogs.ed.ac.uk/mediahopper/lunas-midnight-odyssey/">full story</a></em></p>
<p>This is one of the problems with just giving ChatGPT free reign to do what it ‘wants’ when being creative, it doesn’t really understand scale or that just throwing every plot point it can generate in to a list doesn’t really make a story.</p>
<figure id="attachment_130" aria-describedby="caption-attachment-130" style="width: 700px" class="wp-caption aligncenter center"><img decoding="async" class="aligncenter size-large wp-image-130" src="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-1024x684.jpg" alt="" width="700" height="468" srcset="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-1024x684.jpg 1024w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-300x200.jpg 300w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-768x513.jpg 768w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-1140x761.jpg 1140w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c.jpg 1536w" sizes="(max-width: 700px) 100vw, 700px" /><figcaption id="caption-attachment-130" class="wp-caption-text">Old College by Playfair, William, University of Edinburgh is available under a CC BY 3.0 Unported licence. https://images.is.ed.ac.uk/luna/servlet/s/m671gu</figcaption></figure>
<p>ChatGPT’s really power for creating narrative, at least in its current state, is in using it to refine a story, or to help work through ideas. Let’s say I’m trying create a new video for Media Hopper Create about the history of Old College, and want to write a voice over. Here’s a quick draft:</p>
<blockquote><p>Old College its part of The University of Edinburgh and was mostly built from the late 18th to early 19th century. Originally named ‘New College’, it is a Category A listed building located on South Bridge. The original design was by Robert Adam, with the modern design being completed by William Henry Playfair. The dome was added to the building in 1887, with a gilded statue of Youth by John Hutchinson.</p>
<ul>
<li>Original version</li>
</ul>
</blockquote>
<p>I wrote this in about 5 minutes with information culled from <a href="https://en.wikipedia.org/wiki/Old_College,_University_of_Edinburgh">Wikipedia</a>, and while perfectly serviceable, it’s possibly a little perfunctory. I asked ChatGPT what it thought of my script, and it decided (unprompted) to re-write it for me to make it more ‘engaging’:</p>
<blockquote><p>Welcome to Old College, a majestic structure nestled within the heart of The University of Edinburgh. Originally named ‘New College,’ this architectural gem traces its roots back to the late 18th century. Designed by the renowned Robert Adam, its timeless elegance was later completed by William Henry Playfair in the 19th century.</p>
<p>Situated on South Bridge, Old College stands as a Category A listed building, a testament to its historical and architectural significance. In 1887, a crowning touch was added to the structure in the form of a magnificent dome. Adorning the pinnacle is a gilded statue of Youth, a creation by the skilled hands of John Hutchinson.</p>
<p>As you stand in awe of Old College, it’s not just a building; it’s a living testament to the evolution of academia and architecture. The melding of the past and present, with each stone whispering stories of the scholars who once walked its halls. Today, Old College continues to be a symbol of academic excellence and a revered landmark in the vibrant tapestry of The University of Edinburgh.</p>
<ul>
<li>Revision from ChatGPT</li>
</ul>
</blockquote>
<p>This new version does feel more like a narrative than just a list of facts, and the language use is definitely more descriptive, it goes a bit overboard with the use of evocative metaphors. To try and rein it in a bit, I added this prompt: “That’s a little bit over the top with descriptive language, can you scale it back a little?”. This is the new version:</p>
<blockquote><p>Old College, part of The University of Edinburgh, has a rich history dating back to the late 18th century. Originally called ‘New College,’ its design, led by Robert Adam and later completed by William Henry Playfair, stands as a testament to architectural craftsmanship.</p>
<p>Situated on South Bridge, this Category A listed building gained its distinctive dome in 1887, crowned with a gilded statue of Youth by John Hutchinson. Today, Old College preserves the charm of its past, serving as a key landmark in the University’s legacy.</p>
<p>Explore the echoes of academia within Old College’s walls, where each brick tells a story of the scholars who once roamed its corridors. This historic structure, with its timeless design, remains an enduring symbol of The University of Edinburgh’s journey through time.</p>
<ul>
<li>Revision 2 by ChatGPT</li>
</ul>
</blockquote>
<p>This time it removed some of the descriptive language of the building itself, but it replaced a metaphor of it being ‘a revered landmark in the vibrant tapestry’ of the university with one about ‘each brick telling a story’. Let’s try refining it one more time – here’s the latest version with my prompt “How about you remove some of the metaphors, but give more descriptive language?”:</p>
<blockquote><p>Old College, integral to The University of Edinburgh, has a fascinating history rooted in the late 18th century. Originally christened ‘New College,’ it boasts an architectural legacy shaped by Robert Adam and later refined by William Henry Playfair.</p>
<p>Nestled on South Bridge, this distinguished Category A listed building acquired its iconic dome in 1887, adorned with a gilded statue of Youth crafted by John Hutchinson. Old College serves as both witness and custodian to the University’s journey through time.</p>
<p>Step into its storied corridors and be transported to an era when scholars traversed its halls. Each brick and beam narrates tales of academic pursuits and intellectual growth. Old College stands today, not just as a historic landmark, but as a living tribute to The University of Edinburgh’s enduring academic tradition.</p></blockquote>
<p>At this point it feels like ChatGPT is stuck just reiterating on a specific style of writing. This is one of the issues I hit when looking to use a chatbot for anything creative – the model it’s using to generate text has a specific style and there isn’t an easy way to break out of that. While ChatGPT is great for helping point you in the right direction, most of the time things will still need to be edited and refined manually to fit the exact purpose you need it for.</p>
<p>How about we experiment with this further, and see how well it handles a change in tone. I added the a new prompt to change the genre, but not the content: “What if this was the Voice Over for a horror film?”</p>
<blockquote><p>“Deep within the shadows of The University of Edinburgh lies Old College, a structure steeped in a history that echoes with whispers of the supernatural. Once named ‘New College,’ its unsettling evolution began in the late 18th century under the design of Robert Adam, later twisted by the hands of William Henry Playfair.</p>
<p>Perched ominously on South Bridge, this foreboding Category A listed building acquired an eerie dome in 1887, crowned by a gilded statue of Youth, a macabre creation by the twisted artist John Hutchinson. Old College, now a haunting relic, conceals not only the secrets of academia but a darker, malevolent force.</p>
<p>As you traverse its desolate corridors, the air thickens with the chilling tales of scholars who met untimely fates within its haunted walls. Every brick, every step resonates with an otherworldly presence. Old College stands not as a symbol of knowledge, but as a portal to the supernatural, where the past lingers, and the spirits of the damned find no rest.”</p>
<ul>
<li>ChatGPT’s voice over for a horror film</li>
</ul>
</blockquote>
<p>Ok, a lot to unpack… not only is this now borderline defamatory calling famed sculptor John Hutchinson a ‘twisted artist’ who created ‘macabre creations’, claims that Old College is where ‘the spirits of the damned find no rest’ and is literally a ‘portal to the supernatural’, but it is <em>still</em> using that metaphor of ‘every brick tells a story’.</p>
<p>While overly flowery language can be a bit of a handful to prune back, this last revision shows where the creative ‘choices’ ChatGPT uses can start to turn truth in to pure fabrication. The original core of the facts from my initial script are still there (the dates, the people involved, the legacy), it uses those to create completely a fictitious narrative.</p>
<p>The creative uses for ChatGPT are vast, but as an AI it has no concept of how it <strong>should</strong> use the information in your prompts, only what it <strong>can</strong> do. Chat bots can be a useful tool, but just remember to keep it on a short leash.</p>
<p> </p>
<p>*’Bothan’ is actually a lesser-known species from Star Wars: <a href="https://en.wikipedia.org/wiki/List_of_Star_Wars_species_(A–E)#Bothan">https://en.wikipedia.org/wiki/List_of_Star_Wars_species_(A–E)#Bothan</a></p>
<span class="uoe-published-time uoe-seo-hidden-area">
<time datetime="2023-12-13" itemprop="dateModified">Dec 13, 2023</time>
</span>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/mediahopper/2023/12/13/using-chat-gpt-to-refine-narratives/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>What is 360º Video? – The Early Days…</title>
<link>https://blogs.ed.ac.uk/mediahopper/2019/02/18/what-is-360o-video-the-early-days/</link>
<comments>https://blogs.ed.ac.uk/mediahopper/2019/02/18/what-is-360o-video-the-early-days/#respond</comments>
<dc:creator><![CDATA[Liam Duffy]]></dc:creator>
<pubDate>Mon, 18 Feb 2019 16:24:53 +0000</pubDate>
<category><![CDATA[DIY Film School]]></category>
<category><![CDATA[360º]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/mediahopper/?p=56</guid>
<description><![CDATA[This is part of a series of posts exploring 360º videos, going from its roots in expositions and theme parks,...]]></description>
<content:encoded><![CDATA[<p><i>This is part of a series of posts exploring 360º videos, going from its roots in expositions and theme parks, to how it can be recorded using your mobile phone and used in education.</i></p>
<h2>Cinéorama</h2>
<p>The Exposition Universelle, or better known as the 1900 Paris Exposition in English, was part of France’s drive to enter the 20th century with a reignited sense of cultural and national pride after devastation of the Great War. For nearly a decade before the exhibition grounds were due to open, countries around the world were invited to bring their greatest achievements and display their cultures on an international stage, part of the event’s bigger themes of unifying people.</p>
<p><figure style="width: 4195px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/c/c2/La_porte_monumentale%2C_Exposition_Universelle_1900.jpg" alt="" width="4195" height="2678" /><figcaption class="wp-caption-text">Brown University Library [Public domain]</figcaption></figure>Some of the highlights of the Exposition included a giant refracting telescope (60 meters long with a diameter of 1.5 meters), a display of photographs showing African American’s contributions to American society organised by sociologists and activists Booker Washington and <a href="https://en.wikipedia.org/wiki/W.E.B._Du_Bois">W.E.B. Du Bois</a> , and in a fit of what I can only imagine was either reckless abandonment or an over-eagerness to please the visiting crowds, a Russian sparkling wine won the “Grand Prix de Champagne” beating several French vintners. The first Olympic Games outside of Greece took place during the Exposition, with the winners receiving 100 francs, a tie pin, and a commemorative pencil.</p>
<p>One of the biggest draws of the Exposition was the introduction of two of the great innovations in the world of cinema: the first wide-scale demonstration of recorded sound synced with moving image, and 360º panoramic projections. Obviously the latter of the two had the greater impact in the history of entertainment. I mean, come on, how many people actually watch films with audio?</p>
<p>Oh, what’s that? Most people do? Pretty much every piece of commercial film created in the last 80 years has had synchronised sound? Nobody uses 360º panoramic video projections beyond some very limited applications? Hmm.</p>
<p>The French Cinéorama was designed and constructed specifically for the Exposition by <a href="Raoul Grimoin-Sanson">Raoul Grimoin-Sanson</a>, with the intention being to replicate a ride on a hot air balloon over Paris using ten synchronised projectors housed under the ‘basket’ of the stationary balloon model.</p>
<p><figure style="width: 1199px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/a/a6/Cineorama.jpg" alt="" width="1199" height="850" /><figcaption class="wp-caption-text">Louis Poyet [Public domain]</figcaption></figure>Built on the technology that English inventor <a href="https://en.wikipedia.org/wiki/Robert_W._Paul">Robert Paul</a> had been working on in the late 1890’s to project moving image on a screen (which was in turn based on designs stolen from Thomas Edison’s single-viewer Kinetoscope machine), the Cinéorama would project moving images onto 10 screens, each 9×9 meters, arranged in a circle around the viewer. The film was shot using 10 cameras pointing outwards from a central point which housed the cranking mechanism that wound all of the cameras at the same time – early cinema cameras were usually hand-cranked, so this made sure that the image was captured at the same speed on each camera. This rig was then attached to a real hot air balloon as it flew 400 meters about the Tuileries Gardens, filming the ascent.</p>
<p><figure style="width: 600px" class="wp-caption alignleft"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ec/Cineorama_camera.jpg" alt="" width="600" height="1019" /><figcaption class="wp-caption-text">Louis Poyet [Public domain]</figcaption></figure>People would board a giant hot air balloon model in the middle of the screens, the basket of which was big enough to hold 200 people, complete with rigging and the bottom half of a balloon suspended from the ceiling. Once ‘boarded’ the spectators would look out at the screens as the projectors showed the balloon take off. Once the experience had finished, they used some cinema magic to show the balloon landing again (they played the film backwards).</p>
<p>The Cinéorama lasted a glorious whole 3 days before the police shut it down due to safety concerns – one of the workmen had fainted from the immense heat of the arc lamps used in the projectors, and as these were housed directly beneath the viewing platform, it was considered an extreme fire hazard to the spectators. After the show was shut down in the middle of day 4, it has never been shown again.</p>
<p>Things didn’t faire much better for the Exposition Universelle – due the unexpectedly high running costs of the Exposition as a whole, it ended costing the organisers about 600 francs (around £2,000 in 2018) <i>more</i> per person than the cost of admission. This was the end of this streak of Parisian international fairs.</p>
<h2>Circle-Vision 360º</h2>
<p>The rebirth of commercial 360º panoramic films came with the opening of 1955’s ‘CIRCARAMA’ cinema in Disneyland, California, showing the short film A Tour of the West, soon followed by America The Beautiful.</p>
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/rmv_P_wcZG4?start=801" width="660" height="544" frameborder="0" allowfullscreen></iframe></p>
<p>The system used in Disneyland, named ‘Circle-Vision 360°’, improved on Grimoin-Sanson’s Cinéorama system in a number of ways, with the biggest difference being that instead of having the film projectors mounted under the audience’s feet (and causing a lot of fire-risks at the same time) an odd number of screens and projectors are used – this means that each projector is placed between the screens on the opposite wall of the purpose-built circular auditorium:</p>
<figure style="width: 2320px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://patentimages.storage.googleapis.com/3e/df/f2/ef5b770a26468d/US2942516-drawings-page-2.png" alt="" width="2320" height="3408" /><figcaption class="wp-caption-text">Walter E Disney, Iwerks Ub (1956). US Patent No. US2942516A. Retrieved from https://patents.google.com/patent/US2942516</figcaption></figure>
<p>This clever bit of mathematics allows the bulky projector systems to be hidden behind the ring of screens, providing more a more immersive experience to the audience.</p>
<p>The camera system used to record the footage, however, is remarkably similar Cinéorama’s – nine cameras are arranged around a central point facing outwards, with an internal mechanism keeping the cameras in sync.</p>
<p><figure style="width: 2364px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/5/59/Circle-Vision_360_camera_%2829638534777%29_%28cropped%29.jpg" alt="" width="2364" height="1965" /><figcaption class="wp-caption-text">elisfkc from Orlando, FL, United States [CC BY-SA 2.0 (https://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons</figcaption></figure>The camera rig can be attached to the roof of a car or the underside of a helicopter. Given there was an intentional gap between each screen for the projectors to fit, later films used these to split-up the action between sections of the room. For example, they could show a full 360º film to start with, then fade the screens on one half of the room to show standard film footage on each screen, while maintaining the panorama on the other. This allowed for greater creative freedom, and removed the reliance of using the expensive Circle-Vision 360º cameras to capture all the footage.</p>
<p>Over the years, 5 different Disney theme parks have used Circle-Vision 360º for their attractions, and while the original has now closed at Disneyland in California, and it’s international variants at Tokyo Disneyland and Disneyland Paris closing in the early 21st century, there are 2 theatres still operating at Epcot – ‘Reflections of China’ and ‘Oh Canada!’ At each of their respective country’s pavilions in the World Showcase.</p>
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/SdUKRTeyKfU" width="660" height="544" frameborder="0" allowfullscreen></iframe> <em>Interestingly, you can actually watch this version in 360º using Google Cardboard or by clicking and dragging your mouse around the frame</em></pre>
<p> </p>
<p>Both of these act as quasi-tourism videos showing off the landscapes and cultural landmarks of each country …and the Canadian one also serves as a showcase for Martin Short’s comedic talents, so there’s that.</p>
<p>This idea of pure spectacle makes sense as a use for this pretty unique form of film-making, but it does highlight two of the biggest drawbacks of 360º cinema in an auditorium setting:</p>
<p>The first being the cost involved would make it prohibitive to film more than a few minutes worth of footage, both in terms of capturing using 9 high-quality cameras and running the multiple necessary projectors all day.</p>
<p>The second, and possibly most difficult to overcome: trying to craft a story where the viewer needs to constantly be turning their heads. Both of the 360º cinema formats mentioned here rely on the viewer being free to stand and turn all the way around to find and follow points of interest. Indicating where a person should be looking at all times is tricky when it might be behind them. Constantly having your characters announce themselves and give time for people to move around and look in their direction could kill the tension in your drama.</p>
<p><em>Thank you for coming along on our first journey in to 360º video. In our next article we’ll be diving in to the world of modern film and content creation for 360º and VR, and how this can be used in education.</em></p>
<span class="uoe-published-time uoe-seo-hidden-area">
<time datetime="2019-02-18" itemprop="dateModified">Feb 18, 2019</time>
</span>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/mediahopper/2019/02/18/what-is-360o-video-the-early-days/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
</channel>
</rss>
"
["raw"]=>
string(27255) "HTTP/1.1 200 OK
Content-Type: application/rss+xml; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Date: Fri, 15 May 2026 09:20:23 GMT
Server: Apache
X-Powered-By: PHP/8.3.30
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Link: <https://blogs.ed.ac.uk/mediahopper/wp-json/>; rel="https://api.w.org/"
Set-Cookie: PHPSESSID=ncipl513vh8dcqrttkbpqlejvr; path=/; secure; HttpOnly
Set-Cookie: spo_201_fa=971e57e158fd4a5340f44852bfb286f0; expires=Fri, 15 May 2026 09:50:23 GMT; Max-Age=1800; path=/mediahopper/; Secure; HttpOnly
Last-Modified: Thu, 14 Dec 2023 17:57:08 GMT
ETag: "45cf9c638f115d3823aeba3d2008b07b"
Vary: Accept-Encoding
Set-Cookie: RCKBMHKB=027ff8be59-56fd-48ArMHh_FupaG8O1C08qOgcUkp9Mwcl2Vmz0OFKyySwBvdzITU0Vfx4t2OUTigESFtkuQ; path=/; SameSite=None; Secure
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:cc="http://creativecommons.org/ns#" >
<channel>
<title>Media Hopper</title>
<atom:link href="https://blogs.ed.ac.uk/mediahopper/feed/" rel="self" type="application/rss+xml" />
<link>https://blogs.ed.ac.uk/mediahopper</link>
<description>Articles and ramblings on Media Hopper Create & Media Hopper Replay, as well as DIY Film School and Apple Podcasts</description>
<lastBuildDate>Thu, 14 Dec 2023 17:57:08 +0000</lastBuildDate>
<language>en-GB</language>
<sy:updatePeriod>
hourly </sy:updatePeriod>
<sy:updateFrequency>
1 </sy:updateFrequency>
<generator>https://wordpress.org/?v=6.8.5</generator>
<cc:license >Creative Commons Attribution CC BY 3.0</cc:license><dc:rights >Creative Commons Attribution CC BY 3.0</dc:rights> <item>
<title>Using Chat GPT to refine narratives</title>
<link>https://blogs.ed.ac.uk/mediahopper/2023/12/13/using-chat-gpt-to-refine-narratives/</link>
<comments>https://blogs.ed.ac.uk/mediahopper/2023/12/13/using-chat-gpt-to-refine-narratives/#respond</comments>
<dc:creator><![CDATA[Liam Duffy]]></dc:creator>
<pubDate>Wed, 13 Dec 2023 12:11:21 +0000</pubDate>
<category><![CDATA[AI]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/mediahopper/?p=120</guid>
<description><![CDATA[2023 has been the year of chatting with robots. Not in a fun-and-hijinks ‘Short Circuit’ way, but in a less...]]></description>
<content:encoded><![CDATA[<p>2023 has been the year of chatting with robots. Not in a fun-and-hijinks ‘Short Circuit’ way, but in a less hilarity-inducing ‘lets spend 20 minutes phrasing this perfectly so I actually get something useful’ way. A lot of companies have been working on growing ‘large language models’ for use in AI for a while, but the one that really captured people’s attention in 2023 has been OpenAI’s ChatGPT.</p>
<p>There are many other flavours of AI chatty-Cathy’s out there with colourful names such as Bard, Claude, Grok, LLaMA, Bothan, and Ernie Bot (one of those I made up*), but ChatGPT has become the go-to chatbot for a lot of people, with over 100 million users registered on the service. In the past 12 months, the top 2 fastest-rising search terms on Google from the UK are ‘ChatGPT’ and ‘Chat GPT’.</p>
<p><img decoding="async" class="alignnone size-medium wp-image-121" src="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/Screenshot-2023-12-13-at-09.38.55-300x253.png" alt="" width="300" height="253" srcset="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/Screenshot-2023-12-13-at-09.38.55-300x253.png 300w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/Screenshot-2023-12-13-at-09.38.55.png 585w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>While there are a lot of uses for ChatGPT and similar AI services, one that has some people worried about its potential impact is its use for creative purposes. The use of AI-generated images and music has raised questions about whether human artists will get shut out of the process if it’s quicker and cheaper to ask a bot to create art, and the recent SAG-AFTRA and WGA strikes that took Hollywood to a grinding halt earlier this year was at least in part because of the actors and writer’s unions wanting to ensure there were protections in updated contracts to limit AI’s impact on filmmaking.</p>
<p>While we’re likely at least a few years away from the best original screenplay Academy Award going to ChatBot_182.432.1REV3, ChatGPT can be used as a tool in a lot of ways for narrative storytelling. It certainly can write a full story for you, but it can go off in pretty wild places with some… <em>interesting </em>narrative choices.</p>
<p>With the simple prompt ‘Hey ChatGPT, write me a story’, I got a 450 word tale of a character named Luna who lived in a ‘Blade Runner’-esque neon city worked as a librarian by day, and by night used her supernatural powers to turn the books on her shelves in to magical realms. She proceeds to find a kingdom in peril, talk to a wise old owl and a mischievous sprite, solve puzzles, go through enchanted forests, and save the day using the power of imagination. That’s a lot to cram in to 450 words. <em>You can read the full story here with the password LunasMidnightOdyssey – <a href="https://blogs.ed.ac.uk/mediahopper/lunas-midnight-odyssey/">full story</a></em></p>
<p>This is one of the problems with just giving ChatGPT free reign to do what it ‘wants’ when being creative, it doesn’t really understand scale or that just throwing every plot point it can generate in to a list doesn’t really make a story.</p>
<figure id="attachment_130" aria-describedby="caption-attachment-130" style="width: 700px" class="wp-caption aligncenter center"><img decoding="async" class="aligncenter size-large wp-image-130" src="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-1024x684.jpg" alt="" width="700" height="468" srcset="https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-1024x684.jpg 1024w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-300x200.jpg 300w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-768x513.jpg 768w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c-1140x761.jpg 1140w, https://blogs.ed.ac.uk/mediahopper/wp-content/uploads/sites/201/2023/12/0078862c.jpg 1536w" sizes="(max-width: 700px) 100vw, 700px" /><figcaption id="caption-attachment-130" class="wp-caption-text">Old College by Playfair, William, University of Edinburgh is available under a CC BY 3.0 Unported licence. https://images.is.ed.ac.uk/luna/servlet/s/m671gu</figcaption></figure>
<p>ChatGPT’s really power for creating narrative, at least in its current state, is in using it to refine a story, or to help work through ideas. Let’s say I’m trying create a new video for Media Hopper Create about the history of Old College, and want to write a voice over. Here’s a quick draft:</p>
<blockquote><p>Old College its part of The University of Edinburgh and was mostly built from the late 18th to early 19th century. Originally named ‘New College’, it is a Category A listed building located on South Bridge. The original design was by Robert Adam, with the modern design being completed by William Henry Playfair. The dome was added to the building in 1887, with a gilded statue of Youth by John Hutchinson.</p>
<ul>
<li>Original version</li>
</ul>
</blockquote>
<p>I wrote this in about 5 minutes with information culled from <a href="https://en.wikipedia.org/wiki/Old_College,_University_of_Edinburgh">Wikipedia</a>, and while perfectly serviceable, it’s possibly a little perfunctory. I asked ChatGPT what it thought of my script, and it decided (unprompted) to re-write it for me to make it more ‘engaging’:</p>
<blockquote><p>Welcome to Old College, a majestic structure nestled within the heart of The University of Edinburgh. Originally named ‘New College,’ this architectural gem traces its roots back to the late 18th century. Designed by the renowned Robert Adam, its timeless elegance was later completed by William Henry Playfair in the 19th century.</p>
<p>Situated on South Bridge, Old College stands as a Category A listed building, a testament to its historical and architectural significance. In 1887, a crowning touch was added to the structure in the form of a magnificent dome. Adorning the pinnacle is a gilded statue of Youth, a creation by the skilled hands of John Hutchinson.</p>
<p>As you stand in awe of Old College, it’s not just a building; it’s a living testament to the evolution of academia and architecture. The melding of the past and present, with each stone whispering stories of the scholars who once walked its halls. Today, Old College continues to be a symbol of academic excellence and a revered landmark in the vibrant tapestry of The University of Edinburgh.</p>
<ul>
<li>Revision from ChatGPT</li>
</ul>
</blockquote>
<p>This new version does feel more like a narrative than just a list of facts, and the language use is definitely more descriptive, it goes a bit overboard with the use of evocative metaphors. To try and rein it in a bit, I added this prompt: “That’s a little bit over the top with descriptive language, can you scale it back a little?”. This is the new version:</p>
<blockquote><p>Old College, part of The University of Edinburgh, has a rich history dating back to the late 18th century. Originally called ‘New College,’ its design, led by Robert Adam and later completed by William Henry Playfair, stands as a testament to architectural craftsmanship.</p>
<p>Situated on South Bridge, this Category A listed building gained its distinctive dome in 1887, crowned with a gilded statue of Youth by John Hutchinson. Today, Old College preserves the charm of its past, serving as a key landmark in the University’s legacy.</p>
<p>Explore the echoes of academia within Old College’s walls, where each brick tells a story of the scholars who once roamed its corridors. This historic structure, with its timeless design, remains an enduring symbol of The University of Edinburgh’s journey through time.</p>
<ul>
<li>Revision 2 by ChatGPT</li>
</ul>
</blockquote>
<p>This time it removed some of the descriptive language of the building itself, but it replaced a metaphor of it being ‘a revered landmark in the vibrant tapestry’ of the university with one about ‘each brick telling a story’. Let’s try refining it one more time – here’s the latest version with my prompt “How about you remove some of the metaphors, but give more descriptive language?”:</p>
<blockquote><p>Old College, integral to The University of Edinburgh, has a fascinating history rooted in the late 18th century. Originally christened ‘New College,’ it boasts an architectural legacy shaped by Robert Adam and later refined by William Henry Playfair.</p>
<p>Nestled on South Bridge, this distinguished Category A listed building acquired its iconic dome in 1887, adorned with a gilded statue of Youth crafted by John Hutchinson. Old College serves as both witness and custodian to the University’s journey through time.</p>
<p>Step into its storied corridors and be transported to an era when scholars traversed its halls. Each brick and beam narrates tales of academic pursuits and intellectual growth. Old College stands today, not just as a historic landmark, but as a living tribute to The University of Edinburgh’s enduring academic tradition.</p></blockquote>
<p>At this point it feels like ChatGPT is stuck just reiterating on a specific style of writing. This is one of the issues I hit when looking to use a chatbot for anything creative – the model it’s using to generate text has a specific style and there isn’t an easy way to break out of that. While ChatGPT is great for helping point you in the right direction, most of the time things will still need to be edited and refined manually to fit the exact purpose you need it for.</p>
<p>How about we experiment with this further, and see how well it handles a change in tone. I added the a new prompt to change the genre, but not the content: “What if this was the Voice Over for a horror film?”</p>
<blockquote><p>“Deep within the shadows of The University of Edinburgh lies Old College, a structure steeped in a history that echoes with whispers of the supernatural. Once named ‘New College,’ its unsettling evolution began in the late 18th century under the design of Robert Adam, later twisted by the hands of William Henry Playfair.</p>
<p>Perched ominously on South Bridge, this foreboding Category A listed building acquired an eerie dome in 1887, crowned by a gilded statue of Youth, a macabre creation by the twisted artist John Hutchinson. Old College, now a haunting relic, conceals not only the secrets of academia but a darker, malevolent force.</p>
<p>As you traverse its desolate corridors, the air thickens with the chilling tales of scholars who met untimely fates within its haunted walls. Every brick, every step resonates with an otherworldly presence. Old College stands not as a symbol of knowledge, but as a portal to the supernatural, where the past lingers, and the spirits of the damned find no rest.”</p>
<ul>
<li>ChatGPT’s voice over for a horror film</li>
</ul>
</blockquote>
<p>Ok, a lot to unpack… not only is this now borderline defamatory calling famed sculptor John Hutchinson a ‘twisted artist’ who created ‘macabre creations’, claims that Old College is where ‘the spirits of the damned find no rest’ and is literally a ‘portal to the supernatural’, but it is <em>still</em> using that metaphor of ‘every brick tells a story’.</p>
<p>While overly flowery language can be a bit of a handful to prune back, this last revision shows where the creative ‘choices’ ChatGPT uses can start to turn truth in to pure fabrication. The original core of the facts from my initial script are still there (the dates, the people involved, the legacy), it uses those to create completely a fictitious narrative.</p>
<p>The creative uses for ChatGPT are vast, but as an AI it has no concept of how it <strong>should</strong> use the information in your prompts, only what it <strong>can</strong> do. Chat bots can be a useful tool, but just remember to keep it on a short leash.</p>
<p> </p>
<p>*’Bothan’ is actually a lesser-known species from Star Wars: <a href="https://en.wikipedia.org/wiki/List_of_Star_Wars_species_(A–E)#Bothan">https://en.wikipedia.org/wiki/List_of_Star_Wars_species_(A–E)#Bothan</a></p>
<span class="uoe-published-time uoe-seo-hidden-area">
<time datetime="2023-12-13" itemprop="dateModified">Dec 13, 2023</time>
</span>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/mediahopper/2023/12/13/using-chat-gpt-to-refine-narratives/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>What is 360º Video? – The Early Days…</title>
<link>https://blogs.ed.ac.uk/mediahopper/2019/02/18/what-is-360o-video-the-early-days/</link>
<comments>https://blogs.ed.ac.uk/mediahopper/2019/02/18/what-is-360o-video-the-early-days/#respond</comments>
<dc:creator><![CDATA[Liam Duffy]]></dc:creator>
<pubDate>Mon, 18 Feb 2019 16:24:53 +0000</pubDate>
<category><![CDATA[DIY Film School]]></category>
<category><![CDATA[360º]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/mediahopper/?p=56</guid>
<description><![CDATA[This is part of a series of posts exploring 360º videos, going from its roots in expositions and theme parks,...]]></description>
<content:encoded><![CDATA[<p><i>This is part of a series of posts exploring 360º videos, going from its roots in expositions and theme parks, to how it can be recorded using your mobile phone and used in education.</i></p>
<h2>Cinéorama</h2>
<p>The Exposition Universelle, or better known as the 1900 Paris Exposition in English, was part of France’s drive to enter the 20th century with a reignited sense of cultural and national pride after devastation of the Great War. For nearly a decade before the exhibition grounds were due to open, countries around the world were invited to bring their greatest achievements and display their cultures on an international stage, part of the event’s bigger themes of unifying people.</p>
<p><figure style="width: 4195px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/c/c2/La_porte_monumentale%2C_Exposition_Universelle_1900.jpg" alt="" width="4195" height="2678" /><figcaption class="wp-caption-text">Brown University Library [Public domain]</figcaption></figure>Some of the highlights of the Exposition included a giant refracting telescope (60 meters long with a diameter of 1.5 meters), a display of photographs showing African American’s contributions to American society organised by sociologists and activists Booker Washington and <a href="https://en.wikipedia.org/wiki/W.E.B._Du_Bois">W.E.B. Du Bois</a> , and in a fit of what I can only imagine was either reckless abandonment or an over-eagerness to please the visiting crowds, a Russian sparkling wine won the “Grand Prix de Champagne” beating several French vintners. The first Olympic Games outside of Greece took place during the Exposition, with the winners receiving 100 francs, a tie pin, and a commemorative pencil.</p>
<p>One of the biggest draws of the Exposition was the introduction of two of the great innovations in the world of cinema: the first wide-scale demonstration of recorded sound synced with moving image, and 360º panoramic projections. Obviously the latter of the two had the greater impact in the history of entertainment. I mean, come on, how many people actually watch films with audio?</p>
<p>Oh, what’s that? Most people do? Pretty much every piece of commercial film created in the last 80 years has had synchronised sound? Nobody uses 360º panoramic video projections beyond some very limited applications? Hmm.</p>
<p>The French Cinéorama was designed and constructed specifically for the Exposition by <a href="Raoul Grimoin-Sanson">Raoul Grimoin-Sanson</a>, with the intention being to replicate a ride on a hot air balloon over Paris using ten synchronised projectors housed under the ‘basket’ of the stationary balloon model.</p>
<p><figure style="width: 1199px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/a/a6/Cineorama.jpg" alt="" width="1199" height="850" /><figcaption class="wp-caption-text">Louis Poyet [Public domain]</figcaption></figure>Built on the technology that English inventor <a href="https://en.wikipedia.org/wiki/Robert_W._Paul">Robert Paul</a> had been working on in the late 1890’s to project moving image on a screen (which was in turn based on designs stolen from Thomas Edison’s single-viewer Kinetoscope machine), the Cinéorama would project moving images onto 10 screens, each 9×9 meters, arranged in a circle around the viewer. The film was shot using 10 cameras pointing outwards from a central point which housed the cranking mechanism that wound all of the cameras at the same time – early cinema cameras were usually hand-cranked, so this made sure that the image was captured at the same speed on each camera. This rig was then attached to a real hot air balloon as it flew 400 meters about the Tuileries Gardens, filming the ascent.</p>
<p><figure style="width: 600px" class="wp-caption alignleft"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ec/Cineorama_camera.jpg" alt="" width="600" height="1019" /><figcaption class="wp-caption-text">Louis Poyet [Public domain]</figcaption></figure>People would board a giant hot air balloon model in the middle of the screens, the basket of which was big enough to hold 200 people, complete with rigging and the bottom half of a balloon suspended from the ceiling. Once ‘boarded’ the spectators would look out at the screens as the projectors showed the balloon take off. Once the experience had finished, they used some cinema magic to show the balloon landing again (they played the film backwards).</p>
<p>The Cinéorama lasted a glorious whole 3 days before the police shut it down due to safety concerns – one of the workmen had fainted from the immense heat of the arc lamps used in the projectors, and as these were housed directly beneath the viewing platform, it was considered an extreme fire hazard to the spectators. After the show was shut down in the middle of day 4, it has never been shown again.</p>
<p>Things didn’t faire much better for the Exposition Universelle – due the unexpectedly high running costs of the Exposition as a whole, it ended costing the organisers about 600 francs (around £2,000 in 2018) <i>more</i> per person than the cost of admission. This was the end of this streak of Parisian international fairs.</p>
<h2>Circle-Vision 360º</h2>
<p>The rebirth of commercial 360º panoramic films came with the opening of 1955’s ‘CIRCARAMA’ cinema in Disneyland, California, showing the short film A Tour of the West, soon followed by America The Beautiful.</p>
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/rmv_P_wcZG4?start=801" width="660" height="544" frameborder="0" allowfullscreen></iframe></p>
<p>The system used in Disneyland, named ‘Circle-Vision 360°’, improved on Grimoin-Sanson’s Cinéorama system in a number of ways, with the biggest difference being that instead of having the film projectors mounted under the audience’s feet (and causing a lot of fire-risks at the same time) an odd number of screens and projectors are used – this means that each projector is placed between the screens on the opposite wall of the purpose-built circular auditorium:</p>
<figure style="width: 2320px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://patentimages.storage.googleapis.com/3e/df/f2/ef5b770a26468d/US2942516-drawings-page-2.png" alt="" width="2320" height="3408" /><figcaption class="wp-caption-text">Walter E Disney, Iwerks Ub (1956). US Patent No. US2942516A. Retrieved from https://patents.google.com/patent/US2942516</figcaption></figure>
<p>This clever bit of mathematics allows the bulky projector systems to be hidden behind the ring of screens, providing more a more immersive experience to the audience.</p>
<p>The camera system used to record the footage, however, is remarkably similar Cinéorama’s – nine cameras are arranged around a central point facing outwards, with an internal mechanism keeping the cameras in sync.</p>
<p><figure style="width: 2364px" class="wp-caption alignnone"><img loading="lazy" decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/5/59/Circle-Vision_360_camera_%2829638534777%29_%28cropped%29.jpg" alt="" width="2364" height="1965" /><figcaption class="wp-caption-text">elisfkc from Orlando, FL, United States [CC BY-SA 2.0 (https://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons</figcaption></figure>The camera rig can be attached to the roof of a car or the underside of a helicopter. Given there was an intentional gap between each screen for the projectors to fit, later films used these to split-up the action between sections of the room. For example, they could show a full 360º film to start with, then fade the screens on one half of the room to show standard film footage on each screen, while maintaining the panorama on the other. This allowed for greater creative freedom, and removed the reliance of using the expensive Circle-Vision 360º cameras to capture all the footage.</p>
<p>Over the years, 5 different Disney theme parks have used Circle-Vision 360º for their attractions, and while the original has now closed at Disneyland in California, and it’s international variants at Tokyo Disneyland and Disneyland Paris closing in the early 21st century, there are 2 theatres still operating at Epcot – ‘Reflections of China’ and ‘Oh Canada!’ At each of their respective country’s pavilions in the World Showcase.</p>
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/SdUKRTeyKfU" width="660" height="544" frameborder="0" allowfullscreen></iframe> <em>Interestingly, you can actually watch this version in 360º using Google Cardboard or by clicking and dragging your mouse around the frame</em></pre>
<p> </p>
<p>Both of these act as quasi-tourism videos showing off the landscapes and cultural landmarks of each country …and the Canadian one also serves as a showcase for Martin Short’s comedic talents, so there’s that.</p>
<p>This idea of pure spectacle makes sense as a use for this pretty unique form of film-making, but it does highlight two of the biggest drawbacks of 360º cinema in an auditorium setting:</p>
<p>The first being the cost involved would make it prohibitive to film more than a few minutes worth of footage, both in terms of capturing using 9 high-quality cameras and running the multiple necessary projectors all day.</p>
<p>The second, and possibly most difficult to overcome: trying to craft a story where the viewer needs to constantly be turning their heads. Both of the 360º cinema formats mentioned here rely on the viewer being free to stand and turn all the way around to find and follow points of interest. Indicating where a person should be looking at all times is tricky when it might be behind them. Constantly having your characters announce themselves and give time for people to move around and look in their direction could kill the tension in your drama.</p>
<p><em>Thank you for coming along on our first journey in to 360º video. In our next article we’ll be diving in to the world of modern film and content creation for 360º and VR, and how this can be used in education.</em></p>
<span class="uoe-published-time uoe-seo-hidden-area">
<time datetime="2019-02-18" itemprop="dateModified">Feb 18, 2019</time>
</span>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/mediahopper/2019/02/18/what-is-360o-video-the-early-days/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
</channel>
</rss>
"
["headers"]=>
object(WpOrg\Requests\Response\Headers)#2424 (1) {
["data":protected]=>
array(12) {
["content-type"]=>
array(1) {
[0]=>
string(34) "application/rss+xml; charset=UTF-8"
}
["date"]=>
array(1) {
[0]=>
string(29) "Fri, 15 May 2026 09:20:23 GMT"
}
["server"]=>
array(1) {
[0]=>
string(6) "Apache"
}
["x-powered-by"]=>
array(1) {
[0]=>
string(10) "PHP/8.3.30"
}
["expires"]=>
array(1) {
[0]=>
string(29) "Thu, 19 Nov 1981 08:52:00 GMT"
}
["cache-control"]=>
array(1) {
[0]=>
string(35) "no-store, no-cache, must-revalidate"
}
["pragma"]=>
array(1) {
[0]=>
string(8) "no-cache"
}
["link"]=>
array(1) {
[0]=>
string(71) "<https://blogs.ed.ac.uk/mediahopper/wp-json/>; rel="https://api.w.org/""
}
["set-cookie"]=>
array(3) {
[0]=>
string(62) "PHPSESSID=ncipl513vh8dcqrttkbpqlejvr; path=/; secure; HttpOnly"
[1]=>
string(134) "spo_201_fa=971e57e158fd4a5340f44852bfb286f0; expires=Fri, 15 May 2026 09:50:23 GMT; Max-Age=1800; path=/mediahopper/; Secure; HttpOnly"
[2]=>
string(125) "RCKBMHKB=027ff8be59-56fd-48ArMHh_FupaG8O1C08qOgcUkp9Mwcl2Vmz0OFKyySwBvdzITU0Vfx4t2OUTigESFtkuQ; path=/; SameSite=None; Secure"
}
["last-modified"]=>
array(1) {
[0]=>
string(29) "Thu, 14 Dec 2023 17:57:08 GMT"
}
["etag"]=>
array(1) {
[0]=>
string(34) ""45cf9c638f115d3823aeba3d2008b07b""
}
["vary"]=>
array(1) {
[0]=>
string(15) "Accept-Encoding"
}
}
}
["status_code"]=>
int(200)
["protocol_version"]=>
float(1.1)
["success"]=>
bool(true)
["redirects"]=>
int(0)
["url"]=>
string(40) "https://blogs.ed.ac.uk/mediahopper/feed/"
["history"]=>
array(0) {
}
["cookies"]=>
object(WpOrg\Requests\Cookie\Jar)#978 (1) {
["cookies":protected]=>
array(3) {
["PHPSESSID"]=>
object(WpOrg\Requests\Cookie)#2442 (5) {
["name"]=>
string(9) "PHPSESSID"
["value"]=>
string(26) "ncipl513vh8dcqrttkbpqlejvr"
["attributes"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2431 (1) {
["data":protected]=>
array(4) {
["path"]=>
string(1) "/"
["secure"]=>
bool(true)
["httponly"]=>
bool(true)
["domain"]=>
string(14) "blogs.ed.ac.uk"
}
}
["flags"]=>
array(4) {
["creation"]=>
int(1778836823)
["last-access"]=>
int(1778836823)
["persistent"]=>
bool(false)
["host-only"]=>
bool(true)
}
["reference_time"]=>
int(1778836823)
}
["spo_201_fa"]=>
object(WpOrg\Requests\Cookie)#2439 (5) {
["name"]=>
string(10) "spo_201_fa"
["value"]=>
string(32) "971e57e158fd4a5340f44852bfb286f0"
["attributes"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2444 (1) {
["data":protected]=>
array(6) {
["expires"]=>
int(1778838623)
["max-age"]=>
int(1778838623)
["path"]=>
string(13) "/mediahopper/"
["secure"]=>
bool(true)
["httponly"]=>
bool(true)
["domain"]=>
string(14) "blogs.ed.ac.uk"
}
}
["flags"]=>
array(4) {
["creation"]=>
int(1778836823)
["last-access"]=>
int(1778836823)
["persistent"]=>
bool(false)
["host-only"]=>
bool(true)
}
["reference_time"]=>
int(1778836823)
}
["RCKBMHKB"]=>
object(WpOrg\Requests\Cookie)#2449 (5) {
["name"]=>
string(8) "RCKBMHKB"
["value"]=>
string(85) "027ff8be59-56fd-48ArMHh_FupaG8O1C08qOgcUkp9Mwcl2Vmz0OFKyySwBvdzITU0Vfx4t2OUTigESFtkuQ"
["attributes"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2447 (1) {
["data":protected]=>
array(4) {
["path"]=>
string(1) "/"
["samesite"]=>
string(4) "None"
["secure"]=>
bool(true)
["domain"]=>
string(14) "blogs.ed.ac.uk"
}
}
["flags"]=>
array(4) {
["creation"]=>
int(1778836823)
["last-access"]=>
int(1778836823)
["persistent"]=>
bool(false)
["host-only"]=>
bool(true)
}
["reference_time"]=>
int(1778836823)
}
}
}
}
["filename":protected]=>
NULL
}
}
Diag| Considering item [https://blogs.ed.ac.uk/mediahopper/?p=120] "Using Chat GPT to refine narratives"
Diag========| SQL: SELECT wp_30_posts.ID, wp_30_posts.guid, wp_30_posts.post_modified_gmt, wp_30_posts.post_name
FROM wp_30_posts LEFT JOIN wp_30_postmeta EO_META ON EO_META.meta_key = 'ease_only' AND EO_META.post_id = wp_30_posts.ID
WHERE 1=1 AND ((guid = 'https://blogs.ed.ac.uk/mediahopper/?p=120'))
ORDER BY wp_30_posts.post_date DESC
Diag====| Item [https://blogs.ed.ac.uk/mediahopper/?p=120] "Using Chat GPT to refine narratives" is a duplicate of an existing post.
Diag| Considering item [https://blogs.ed.ac.uk/mediahopper/?p=56] "What is 360º Video? – The Early Days…"
Diag========| SQL: SELECT wp_30_posts.ID, wp_30_posts.guid, wp_30_posts.post_modified_gmt, wp_30_posts.post_name
FROM wp_30_posts LEFT JOIN wp_30_postmeta EO_META ON EO_META.meta_key = 'ease_only' AND EO_META.post_id = wp_30_posts.ID
WHERE 1=1 AND ((guid = 'https://blogs.ed.ac.uk/mediahopper/?p=56'))
ORDER BY wp_30_posts.post_date DESC
Diag====| Item [https://blogs.ed.ac.uk/mediahopper/?p=56] "What is 360º Video? – The Early Days…" is a NEW POST.
Diag========| CHECK existence of category: "DIY Film School" with result: null
Diag========| CHECK existence of post_tag: "DIY Film School" with result: null
Diag========| CHECKED familiarity of term "DIY Film School" across {"1":"category","2":"post_tag"} with result: false
Diag====| Assigned category "DIY Film School" by feed; checking {"1":"category","2":"post_tag"} with result: null
Diag========| CHECK existence of category: "360\u00ba" with result: null
Diag========| CHECK existence of post_tag: "360\u00ba" with result: null
Diag========| CHECKED familiarity of term "360\u00ba" across {"1":"category","2":"post_tag"} with result: false
Diag====| Assigned category "360\u00ba" by feed; checking {"1":"category","2":"post_tag"} with result: null
Diag====| Category: MAPPED term names ["DIY Film School","360\u00ba"] to IDs: null
Diag====| Category: MAPPED term names [] to IDs: null
Diag====| HTTP [https://blogs.ed.ac.uk/egreen2/feed] ⌉ array(6) {
["headers"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2470 (1) {
["data":protected]=>
array(12) {
["content-type"]=>
string(34) "application/rss+xml; charset=UTF-8"
["date"]=>
string(29) "Fri, 15 May 2026 09:20:24 GMT"
["server"]=>
string(6) "Apache"
["x-powered-by"]=>
string(10) "PHP/8.3.30"
["expires"]=>
string(29) "Thu, 19 Nov 1981 08:52:00 GMT"
["cache-control"]=>
string(35) "no-store, no-cache, must-revalidate"
["pragma"]=>
string(8) "no-cache"
["link"]=>
string(67) "<https://blogs.ed.ac.uk/egreen2/wp-json/>; rel="https://api.w.org/""
["set-cookie"]=>
string(132) "spo_11412_fa=28eaa669476d6d37877032232b6ac7d3; expires=Fri, 15 May 2026 09:50:24 GMT; Max-Age=1800; path=/egreen2/; Secure; HttpOnly"
["last-modified"]=>
string(29) "Mon, 20 Apr 2026 09:57:28 GMT"
["etag"]=>
string(34) ""4433056675204c526f9cc2cc038c81d8""
["vary"]=>
string(15) "Accept-Encoding"
}
}
["body"]=>
string(15797) "<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
<channel>
<title>Ed Green Blog</title>
<atom:link href="https://blogs.ed.ac.uk/egreen2/feed/" rel="self" type="application/rss+xml" />
<link>https://blogs.ed.ac.uk/egreen2</link>
<description></description>
<lastBuildDate>Mon, 20 Apr 2026 09:57:28 +0000</lastBuildDate>
<language>en-GB</language>
<sy:updatePeriod>
hourly </sy:updatePeriod>
<sy:updateFrequency>
1 </sy:updateFrequency>
<generator>https://wordpress.org/?v=6.8.5</generator>
<item>
<title>PHPUK 2026</title>
<link>https://blogs.ed.ac.uk/egreen2/2026/04/17/phpuk-2026/</link>
<comments>https://blogs.ed.ac.uk/egreen2/2026/04/17/phpuk-2026/#respond</comments>
<dc:creator><![CDATA[Edward Green]]></dc:creator>
<pubDate>Fri, 17 Apr 2026 15:08:58 +0000</pubDate>
<category><![CDATA[Conference]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/egreen2/?p=21</guid>
<description><![CDATA[This February I was back at the PHPUK conference in London. The venue this year was 1 America Square with a historic wall through the middle of one of the rooms. There were three tracks to follow so unfortunately we couldn’t go to all the talks, but managed to cover two thirds. It Depends – […]]]></description>
<content:encoded><![CDATA[
<p>This February I was back at the PHPUK conference in London. The venue this year was 1 America Square with a historic wall through the middle of one of the rooms. There were three tracks to follow so unfortunately we couldn’t go to all the talks, but managed to cover two thirds.</p>
<h2 class="wp-block-heading">It Depends – Gary Hockin</h2>
<p>After a short welcome to the conference (and the new venue), Gary Hockin gave a talk about how decisions that we make every day have different outcomes based on the context. There are always trade-offs to consider for every choice we make and because one option is not chosen in one instance, it doesn’t mean it is unsuitable for all situations.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/w5Ja7Gysm_w?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Know Your Enemies: Live Exploit of a PHP Engine Security Breach – Alexandre Daubois</h2>
<p>Alexandre presented an interesting talk on real exploits or attempted exploits in PHP. The most interesting example to me was an attempt to add malicious code that would allow executing any code on a server running PHP as long as it’s connected to the internet. This was done by interpreting a specific header on incoming requests as code to run when given a certain prefix. It even made it to a release candidate before it was noticed by other contributors. This was done by exploiting a vulnerability in the version control server that allowed the malicious actor to submit the code changes under a different user. Luckily the code was spotted and removed before becoming widely available in a full release. This also influenced the decision to move the code into GitHub, so maintainers didn’t have to worry as much about the security of the code.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/jXkBWNLUO2M?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Packets, Protocols and PHP: Networking Fundamentals for Developers – Jessica Smith</h2>
<p>This next talk discussed what happens behind the scenes whenever a network request is made over the internet. Jessica covered a lot during the 45 minutes and even though it isn’t knowledge that I’d usually consider a key part to my job, I think it is very useful to understand what is happening in the background when users are accessing your website. It still amazes me how we can send information across the world in seconds (or less) over the internet. Even with an explanation on how data is split into packets and how they are routed, it’s still hard to comprehend.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/Z-sYEwWdBrM?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">The Four Pillars of Observability – Florian Engelhardt</h2>
<p>Next came a guide to monitoring live applications and how to quickly find when something is wrong with Florian. I found a lot of the tips to be relevant to websites I have worked on within the university such as the Short Courses Platform (SCP). Occasionally we have a bug in the site, and it can be very difficult to find what the actual cause of it is. Using metrics, logging, tracing, and profiling we can get a better idea of what is causing an issue and why it has started happening. As a developer, I’m used to using logs and error messages to get an idea about what is going wrong when something breaks, but Florian gave some interesting ideas that aren’t completely code related like monitoring live sales (or course enrolments for the SCP) and visualising them. If the numbers start to drop rapidly, then something has probably broken which means people can’t use the website properly.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/DVSq54wZL00?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Saving Time by Using a Debugger – Derick Rethans</h2>
<p>Derick gave a demonstration on ways to use Xdebug to improve developer efficiency. Once setup, it can be a useful tool for stepping through PHP code and inspecting the current state of the web application to find out what is happening. Personally, I have used debuggers with C# and C++ code and found it useful there since I don’t have to recompile anything to add in some logs and inspect data. In interpreted languages like PHP, this isn’t something I have considered before, however I will definitely be finding it useful in my future work. Even though some technical issues disrupted the live demonstrations, Derick still managed to inspire me to check out Xdebug for myself and use with both personal and work projects.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/FsHP4zGg4Ss?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Stepping away from the code… but not quite… – Wim Godden</h2>
<p>This was one of my favourite talks of the day from Wim about how stakeholders in a project should approach the code, particularly emphasising when people in management or non-development roles need to <em>step away from the code</em> and let developers do their job. He talked about how people from outside of development teams, especially those with development experience, can often try to dictate the implementation of a feature rather than what the result of having that feature should be which can cause issues with development and often makes the process of adding a feature take longer. Providing high quality user stories that have good coverage of what the users need to be able to do on the application will be far more valuable to developers. He also talked about how the career progression of a developer doesn’t have to be continuously upwards within an organisation. Instead, it’s ok to move up and down or stay where we’re comfortable.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/Fa2WywiwFik?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Escaping the Code Maze – Yannick Chenot</h2>
<p>To finish off the day, Yannick discussed how we can make our code easier to understand by reducing the assumptions that can be made. Some languages are already stricter on some of the methods of explaining code such as providing types to variables with static types, whereas languages like PHP don’t enforce many rules like this. He demonstrated a few PHP classes and how the assumptions can be reduced by making simple changes that can greatly improve the readability of the code.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/0emNLJAsfcM?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">In conclusion</h2>
<p>There were lots of interesting topic discussed throughout the day and plenty to think about afterwards. I will definitely be looking into Xdebug and different tools for monitoring and observing web applications. I found Wim Godden’s talk about how we should see code in different roles across an organisation interesting. I’d highly recommend watching/listening to the recording as this one is also relevant to less technical people who work with developers.</p>
<h2 class="wp-block-heading">Elephants </h2>
<p>I’ve also started a collection of PHP elephants with two from this conference.</p>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/egreen2/2026/04/17/phpuk-2026/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>PHPUK Conference 2025</title>
<link>https://blogs.ed.ac.uk/egreen2/2025/08/19/phpuk-conference-2025/</link>
<comments>https://blogs.ed.ac.uk/egreen2/2025/08/19/phpuk-conference-2025/#respond</comments>
<dc:creator><![CDATA[Edward Green]]></dc:creator>
<pubDate>Tue, 19 Aug 2025 11:09:19 +0000</pubDate>
<category><![CDATA[Uncategorised]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/egreen2/?p=7</guid>
<description><![CDATA[In February, a colleague and I got the chance to attend the PHPUK conference 2025. Throughout the day, we attended talks from various contributors to the PHP community. The conference had two tracks, which allowed us to split up and cover as much as possible with plenty of breaks to discuss what we’ve learnt about. […]]]></description>
<content:encoded><![CDATA[<p>In February, a colleague and I got the chance to attend the PHPUK conference 2025. Throughout the day, we attended talks from various contributors to the PHP community. The conference had two tracks, which allowed us to split up and cover as much as possible with plenty of breaks to discuss what we’ve learnt about.</p>
<p>Before splitting into separate tracks, Daniel Terhorst-North gave a talk on behaviour driven development (BDD) and the 20 years of history behind it. He showed how even though it was started by one person, the community has kept it going.</p>
<p>The next speaker I listened to was Wim Godden who spoke about deploying software at both small and large scales and automating the processes behind it as much as possible. He showed a real-world example of deploying software to rental lockers for a Belgium based company. They used a tool called Ansible to remotely connect to each computer and run tasks for setting up the computer, installing software, and running the company’s software that operates the lockers. This talk felt especially relevant to the Short Courses Platform I am currently working on, since we are also using Ansible to deploy the website onto multiple servers and update it when required.</p>
<p>After a quick break and discussion about the talks we’d listened to, I attended a talk about how large codebases can be compared to onions from Katy Ereira. She explained how large systems can be broken down into smaller, more understandable parts and comparing them to different parts of an onion to help understand their function.</p>
<p>Nils Adermann gave a talk on securing software supply chains. When most people add a library to their codebase, they don’t always think about the security of the library itself, and especially not the dependencies required by it. However, a dependency of a dependency of a library used for something as simple as logging messages could have a security vulnerability that affects the whole codebase. Nils talked about ways to protect against that using tools like GitHub Dependabot or Conductor, which Private Packagist is currently developing. He also revealed how many widely used and often open source libraries receive extremely little funding, which can make it difficult finding volunteers to maintain security.</p>
<p>Over lunch, we discussed the speakers we had listened to and spoke to other attendees of the conference.</p>
<p>Next was a talk from Gina Banyard about discovering edge cases in the PHP language. As a PHP core maintainer, they had an interesting perspective on how bugs are diagnosed and discussions about the expected functionality. Some examples of recently addressed bugs were demonstrated, along with how PHP now handles them.</p>
<p>After the final break, I attended a talk about OpenAPI from Lorna Mitchell, which discussed what the OpenAPI specification is and how it can benefit both developers and users of APIs. The specification assists developers in designing APIs and creating extensive documentation for them through a schema written in either JSON or YAML. Since it is language agnostic, it can be applied to any API.</p>
<p>The conference provided some interesting perspectives and ideas that I will be sharing with other colleagues and may encourage us to consider in current or future projects. Many of the talks were not just relevant to PHP, so can be applied to other projects such as the short courses platform, which already uses Ansible for deployment.</p>
<p> </p>
<p>Information about all the speakers and recordings of the talks can be found on the <a href="https://www.phpconference.co.uk/" target="_blank" rel="noopener">PHPUK Conference website</a></p>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/egreen2/2025/08/19/phpuk-conference-2025/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
</channel>
</rss>
"
["response"]=>
array(2) {
["code"]=>
int(200)
["message"]=>
string(2) "OK"
}
["cookies"]=>
array(3) {
[0]=>
object(WP_Http_Cookie)#2484 (7) {
["name"]=>
string(9) "PHPSESSID"
["value"]=>
string(26) "hc3h45dq3jobo6tt386vit3qjt"
["expires"]=>
NULL
["path"]=>
string(1) "/"
["domain"]=>
string(14) "blogs.ed.ac.uk"
["port"]=>
NULL
["host_only"]=>
bool(true)
}
[1]=>
object(WP_Http_Cookie)#2486 (7) {
["name"]=>
string(12) "spo_11412_fa"
["value"]=>
string(32) "28eaa669476d6d37877032232b6ac7d3"
["expires"]=>
int(1778838624)
["path"]=>
string(9) "/egreen2/"
["domain"]=>
string(14) "blogs.ed.ac.uk"
["port"]=>
NULL
["host_only"]=>
bool(true)
}
[2]=>
object(WP_Http_Cookie)#2485 (7) {
["name"]=>
string(8) "RCKBMHKB"
["value"]=>
string(85) "027ff8be59-56fd-484WduC3cbuJIfh6vMcFB8QggQ9co4XNy7Rmthiwm1FYrEh36xPykKy1vGET05U1ZkYdQ"
["expires"]=>
NULL
["path"]=>
string(1) "/"
["domain"]=>
string(14) "blogs.ed.ac.uk"
["port"]=>
NULL
["host_only"]=>
bool(true)
}
}
["filename"]=>
NULL
["http_response"]=>
object(WP_HTTP_Requests_Response)#2469 (5) {
["data"]=>
NULL
["headers"]=>
NULL
["status"]=>
NULL
["response":protected]=>
object(WpOrg\Requests\Response)#2482 (10) {
["body"]=>
string(15797) "<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
<channel>
<title>Ed Green Blog</title>
<atom:link href="https://blogs.ed.ac.uk/egreen2/feed/" rel="self" type="application/rss+xml" />
<link>https://blogs.ed.ac.uk/egreen2</link>
<description></description>
<lastBuildDate>Mon, 20 Apr 2026 09:57:28 +0000</lastBuildDate>
<language>en-GB</language>
<sy:updatePeriod>
hourly </sy:updatePeriod>
<sy:updateFrequency>
1 </sy:updateFrequency>
<generator>https://wordpress.org/?v=6.8.5</generator>
<item>
<title>PHPUK 2026</title>
<link>https://blogs.ed.ac.uk/egreen2/2026/04/17/phpuk-2026/</link>
<comments>https://blogs.ed.ac.uk/egreen2/2026/04/17/phpuk-2026/#respond</comments>
<dc:creator><![CDATA[Edward Green]]></dc:creator>
<pubDate>Fri, 17 Apr 2026 15:08:58 +0000</pubDate>
<category><![CDATA[Conference]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/egreen2/?p=21</guid>
<description><![CDATA[This February I was back at the PHPUK conference in London. The venue this year was 1 America Square with a historic wall through the middle of one of the rooms. There were three tracks to follow so unfortunately we couldn’t go to all the talks, but managed to cover two thirds. It Depends – […]]]></description>
<content:encoded><![CDATA[
<p>This February I was back at the PHPUK conference in London. The venue this year was 1 America Square with a historic wall through the middle of one of the rooms. There were three tracks to follow so unfortunately we couldn’t go to all the talks, but managed to cover two thirds.</p>
<h2 class="wp-block-heading">It Depends – Gary Hockin</h2>
<p>After a short welcome to the conference (and the new venue), Gary Hockin gave a talk about how decisions that we make every day have different outcomes based on the context. There are always trade-offs to consider for every choice we make and because one option is not chosen in one instance, it doesn’t mean it is unsuitable for all situations.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/w5Ja7Gysm_w?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Know Your Enemies: Live Exploit of a PHP Engine Security Breach – Alexandre Daubois</h2>
<p>Alexandre presented an interesting talk on real exploits or attempted exploits in PHP. The most interesting example to me was an attempt to add malicious code that would allow executing any code on a server running PHP as long as it’s connected to the internet. This was done by interpreting a specific header on incoming requests as code to run when given a certain prefix. It even made it to a release candidate before it was noticed by other contributors. This was done by exploiting a vulnerability in the version control server that allowed the malicious actor to submit the code changes under a different user. Luckily the code was spotted and removed before becoming widely available in a full release. This also influenced the decision to move the code into GitHub, so maintainers didn’t have to worry as much about the security of the code.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/jXkBWNLUO2M?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Packets, Protocols and PHP: Networking Fundamentals for Developers – Jessica Smith</h2>
<p>This next talk discussed what happens behind the scenes whenever a network request is made over the internet. Jessica covered a lot during the 45 minutes and even though it isn’t knowledge that I’d usually consider a key part to my job, I think it is very useful to understand what is happening in the background when users are accessing your website. It still amazes me how we can send information across the world in seconds (or less) over the internet. Even with an explanation on how data is split into packets and how they are routed, it’s still hard to comprehend.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/Z-sYEwWdBrM?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">The Four Pillars of Observability – Florian Engelhardt</h2>
<p>Next came a guide to monitoring live applications and how to quickly find when something is wrong with Florian. I found a lot of the tips to be relevant to websites I have worked on within the university such as the Short Courses Platform (SCP). Occasionally we have a bug in the site, and it can be very difficult to find what the actual cause of it is. Using metrics, logging, tracing, and profiling we can get a better idea of what is causing an issue and why it has started happening. As a developer, I’m used to using logs and error messages to get an idea about what is going wrong when something breaks, but Florian gave some interesting ideas that aren’t completely code related like monitoring live sales (or course enrolments for the SCP) and visualising them. If the numbers start to drop rapidly, then something has probably broken which means people can’t use the website properly.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/DVSq54wZL00?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Saving Time by Using a Debugger – Derick Rethans</h2>
<p>Derick gave a demonstration on ways to use Xdebug to improve developer efficiency. Once setup, it can be a useful tool for stepping through PHP code and inspecting the current state of the web application to find out what is happening. Personally, I have used debuggers with C# and C++ code and found it useful there since I don’t have to recompile anything to add in some logs and inspect data. In interpreted languages like PHP, this isn’t something I have considered before, however I will definitely be finding it useful in my future work. Even though some technical issues disrupted the live demonstrations, Derick still managed to inspire me to check out Xdebug for myself and use with both personal and work projects.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/FsHP4zGg4Ss?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Stepping away from the code… but not quite… – Wim Godden</h2>
<p>This was one of my favourite talks of the day from Wim about how stakeholders in a project should approach the code, particularly emphasising when people in management or non-development roles need to <em>step away from the code</em> and let developers do their job. He talked about how people from outside of development teams, especially those with development experience, can often try to dictate the implementation of a feature rather than what the result of having that feature should be which can cause issues with development and often makes the process of adding a feature take longer. Providing high quality user stories that have good coverage of what the users need to be able to do on the application will be far more valuable to developers. He also talked about how the career progression of a developer doesn’t have to be continuously upwards within an organisation. Instead, it’s ok to move up and down or stay where we’re comfortable.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/Fa2WywiwFik?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Escaping the Code Maze – Yannick Chenot</h2>
<p>To finish off the day, Yannick discussed how we can make our code easier to understand by reducing the assumptions that can be made. Some languages are already stricter on some of the methods of explaining code such as providing types to variables with static types, whereas languages like PHP don’t enforce many rules like this. He demonstrated a few PHP classes and how the assumptions can be reduced by making simple changes that can greatly improve the readability of the code.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/0emNLJAsfcM?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">In conclusion</h2>
<p>There were lots of interesting topic discussed throughout the day and plenty to think about afterwards. I will definitely be looking into Xdebug and different tools for monitoring and observing web applications. I found Wim Godden’s talk about how we should see code in different roles across an organisation interesting. I’d highly recommend watching/listening to the recording as this one is also relevant to less technical people who work with developers.</p>
<h2 class="wp-block-heading">Elephants </h2>
<p>I’ve also started a collection of PHP elephants with two from this conference.</p>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/egreen2/2026/04/17/phpuk-2026/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>PHPUK Conference 2025</title>
<link>https://blogs.ed.ac.uk/egreen2/2025/08/19/phpuk-conference-2025/</link>
<comments>https://blogs.ed.ac.uk/egreen2/2025/08/19/phpuk-conference-2025/#respond</comments>
<dc:creator><![CDATA[Edward Green]]></dc:creator>
<pubDate>Tue, 19 Aug 2025 11:09:19 +0000</pubDate>
<category><![CDATA[Uncategorised]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/egreen2/?p=7</guid>
<description><![CDATA[In February, a colleague and I got the chance to attend the PHPUK conference 2025. Throughout the day, we attended talks from various contributors to the PHP community. The conference had two tracks, which allowed us to split up and cover as much as possible with plenty of breaks to discuss what we’ve learnt about. […]]]></description>
<content:encoded><![CDATA[<p>In February, a colleague and I got the chance to attend the PHPUK conference 2025. Throughout the day, we attended talks from various contributors to the PHP community. The conference had two tracks, which allowed us to split up and cover as much as possible with plenty of breaks to discuss what we’ve learnt about.</p>
<p>Before splitting into separate tracks, Daniel Terhorst-North gave a talk on behaviour driven development (BDD) and the 20 years of history behind it. He showed how even though it was started by one person, the community has kept it going.</p>
<p>The next speaker I listened to was Wim Godden who spoke about deploying software at both small and large scales and automating the processes behind it as much as possible. He showed a real-world example of deploying software to rental lockers for a Belgium based company. They used a tool called Ansible to remotely connect to each computer and run tasks for setting up the computer, installing software, and running the company’s software that operates the lockers. This talk felt especially relevant to the Short Courses Platform I am currently working on, since we are also using Ansible to deploy the website onto multiple servers and update it when required.</p>
<p>After a quick break and discussion about the talks we’d listened to, I attended a talk about how large codebases can be compared to onions from Katy Ereira. She explained how large systems can be broken down into smaller, more understandable parts and comparing them to different parts of an onion to help understand their function.</p>
<p>Nils Adermann gave a talk on securing software supply chains. When most people add a library to their codebase, they don’t always think about the security of the library itself, and especially not the dependencies required by it. However, a dependency of a dependency of a library used for something as simple as logging messages could have a security vulnerability that affects the whole codebase. Nils talked about ways to protect against that using tools like GitHub Dependabot or Conductor, which Private Packagist is currently developing. He also revealed how many widely used and often open source libraries receive extremely little funding, which can make it difficult finding volunteers to maintain security.</p>
<p>Over lunch, we discussed the speakers we had listened to and spoke to other attendees of the conference.</p>
<p>Next was a talk from Gina Banyard about discovering edge cases in the PHP language. As a PHP core maintainer, they had an interesting perspective on how bugs are diagnosed and discussions about the expected functionality. Some examples of recently addressed bugs were demonstrated, along with how PHP now handles them.</p>
<p>After the final break, I attended a talk about OpenAPI from Lorna Mitchell, which discussed what the OpenAPI specification is and how it can benefit both developers and users of APIs. The specification assists developers in designing APIs and creating extensive documentation for them through a schema written in either JSON or YAML. Since it is language agnostic, it can be applied to any API.</p>
<p>The conference provided some interesting perspectives and ideas that I will be sharing with other colleagues and may encourage us to consider in current or future projects. Many of the talks were not just relevant to PHP, so can be applied to other projects such as the short courses platform, which already uses Ansible for deployment.</p>
<p> </p>
<p>Information about all the speakers and recordings of the talks can be found on the <a href="https://www.phpconference.co.uk/" target="_blank" rel="noopener">PHPUK Conference website</a></p>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/egreen2/2025/08/19/phpuk-conference-2025/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
</channel>
</rss>
"
["raw"]=>
string(16434) "HTTP/1.1 200 OK
Content-Type: application/rss+xml; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
Date: Fri, 15 May 2026 09:20:24 GMT
Server: Apache
X-Powered-By: PHP/8.3.30
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Link: <https://blogs.ed.ac.uk/egreen2/wp-json/>; rel="https://api.w.org/"
Set-Cookie: spo_11412_fa=28eaa669476d6d37877032232b6ac7d3; expires=Fri, 15 May 2026 09:50:24 GMT; Max-Age=1800; path=/egreen2/; Secure; HttpOnly
Last-Modified: Mon, 20 Apr 2026 09:57:28 GMT
ETag: "4433056675204c526f9cc2cc038c81d8"
Vary: Accept-Encoding
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
<channel>
<title>Ed Green Blog</title>
<atom:link href="https://blogs.ed.ac.uk/egreen2/feed/" rel="self" type="application/rss+xml" />
<link>https://blogs.ed.ac.uk/egreen2</link>
<description></description>
<lastBuildDate>Mon, 20 Apr 2026 09:57:28 +0000</lastBuildDate>
<language>en-GB</language>
<sy:updatePeriod>
hourly </sy:updatePeriod>
<sy:updateFrequency>
1 </sy:updateFrequency>
<generator>https://wordpress.org/?v=6.8.5</generator>
<item>
<title>PHPUK 2026</title>
<link>https://blogs.ed.ac.uk/egreen2/2026/04/17/phpuk-2026/</link>
<comments>https://blogs.ed.ac.uk/egreen2/2026/04/17/phpuk-2026/#respond</comments>
<dc:creator><![CDATA[Edward Green]]></dc:creator>
<pubDate>Fri, 17 Apr 2026 15:08:58 +0000</pubDate>
<category><![CDATA[Conference]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/egreen2/?p=21</guid>
<description><![CDATA[This February I was back at the PHPUK conference in London. The venue this year was 1 America Square with a historic wall through the middle of one of the rooms. There were three tracks to follow so unfortunately we couldn’t go to all the talks, but managed to cover two thirds. It Depends – […]]]></description>
<content:encoded><![CDATA[
<p>This February I was back at the PHPUK conference in London. The venue this year was 1 America Square with a historic wall through the middle of one of the rooms. There were three tracks to follow so unfortunately we couldn’t go to all the talks, but managed to cover two thirds.</p>
<h2 class="wp-block-heading">It Depends – Gary Hockin</h2>
<p>After a short welcome to the conference (and the new venue), Gary Hockin gave a talk about how decisions that we make every day have different outcomes based on the context. There are always trade-offs to consider for every choice we make and because one option is not chosen in one instance, it doesn’t mean it is unsuitable for all situations.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/w5Ja7Gysm_w?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Know Your Enemies: Live Exploit of a PHP Engine Security Breach – Alexandre Daubois</h2>
<p>Alexandre presented an interesting talk on real exploits or attempted exploits in PHP. The most interesting example to me was an attempt to add malicious code that would allow executing any code on a server running PHP as long as it’s connected to the internet. This was done by interpreting a specific header on incoming requests as code to run when given a certain prefix. It even made it to a release candidate before it was noticed by other contributors. This was done by exploiting a vulnerability in the version control server that allowed the malicious actor to submit the code changes under a different user. Luckily the code was spotted and removed before becoming widely available in a full release. This also influenced the decision to move the code into GitHub, so maintainers didn’t have to worry as much about the security of the code.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/jXkBWNLUO2M?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Packets, Protocols and PHP: Networking Fundamentals for Developers – Jessica Smith</h2>
<p>This next talk discussed what happens behind the scenes whenever a network request is made over the internet. Jessica covered a lot during the 45 minutes and even though it isn’t knowledge that I’d usually consider a key part to my job, I think it is very useful to understand what is happening in the background when users are accessing your website. It still amazes me how we can send information across the world in seconds (or less) over the internet. Even with an explanation on how data is split into packets and how they are routed, it’s still hard to comprehend.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/Z-sYEwWdBrM?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">The Four Pillars of Observability – Florian Engelhardt</h2>
<p>Next came a guide to monitoring live applications and how to quickly find when something is wrong with Florian. I found a lot of the tips to be relevant to websites I have worked on within the university such as the Short Courses Platform (SCP). Occasionally we have a bug in the site, and it can be very difficult to find what the actual cause of it is. Using metrics, logging, tracing, and profiling we can get a better idea of what is causing an issue and why it has started happening. As a developer, I’m used to using logs and error messages to get an idea about what is going wrong when something breaks, but Florian gave some interesting ideas that aren’t completely code related like monitoring live sales (or course enrolments for the SCP) and visualising them. If the numbers start to drop rapidly, then something has probably broken which means people can’t use the website properly.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/DVSq54wZL00?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Saving Time by Using a Debugger – Derick Rethans</h2>
<p>Derick gave a demonstration on ways to use Xdebug to improve developer efficiency. Once setup, it can be a useful tool for stepping through PHP code and inspecting the current state of the web application to find out what is happening. Personally, I have used debuggers with C# and C++ code and found it useful there since I don’t have to recompile anything to add in some logs and inspect data. In interpreted languages like PHP, this isn’t something I have considered before, however I will definitely be finding it useful in my future work. Even though some technical issues disrupted the live demonstrations, Derick still managed to inspire me to check out Xdebug for myself and use with both personal and work projects.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/FsHP4zGg4Ss?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Stepping away from the code… but not quite… – Wim Godden</h2>
<p>This was one of my favourite talks of the day from Wim about how stakeholders in a project should approach the code, particularly emphasising when people in management or non-development roles need to <em>step away from the code</em> and let developers do their job. He talked about how people from outside of development teams, especially those with development experience, can often try to dictate the implementation of a feature rather than what the result of having that feature should be which can cause issues with development and often makes the process of adding a feature take longer. Providing high quality user stories that have good coverage of what the users need to be able to do on the application will be far more valuable to developers. He also talked about how the career progression of a developer doesn’t have to be continuously upwards within an organisation. Instead, it’s ok to move up and down or stay where we’re comfortable.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/Fa2WywiwFik?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">Escaping the Code Maze – Yannick Chenot</h2>
<p>To finish off the day, Yannick discussed how we can make our code easier to understand by reducing the assumptions that can be made. Some languages are already stricter on some of the methods of explaining code such as providing types to variables with static types, whereas languages like PHP don’t enforce many rules like this. He demonstrated a few PHP classes and how the assumptions can be reduced by making simple changes that can greatly improve the readability of the code.</p>
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" src="about:blank" data-bs-src="https://www.youtube.com/embed/0emNLJAsfcM?feature=oembed" width="660" height="544" frameborder="0" allowfullscreen></iframe>
</div></figure>
<h2 class="wp-block-heading">In conclusion</h2>
<p>There were lots of interesting topic discussed throughout the day and plenty to think about afterwards. I will definitely be looking into Xdebug and different tools for monitoring and observing web applications. I found Wim Godden’s talk about how we should see code in different roles across an organisation interesting. I’d highly recommend watching/listening to the recording as this one is also relevant to less technical people who work with developers.</p>
<h2 class="wp-block-heading">Elephants </h2>
<p>I’ve also started a collection of PHP elephants with two from this conference.</p>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/egreen2/2026/04/17/phpuk-2026/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
<item>
<title>PHPUK Conference 2025</title>
<link>https://blogs.ed.ac.uk/egreen2/2025/08/19/phpuk-conference-2025/</link>
<comments>https://blogs.ed.ac.uk/egreen2/2025/08/19/phpuk-conference-2025/#respond</comments>
<dc:creator><![CDATA[Edward Green]]></dc:creator>
<pubDate>Tue, 19 Aug 2025 11:09:19 +0000</pubDate>
<category><![CDATA[Uncategorised]]></category>
<guid isPermaLink="false">https://blogs.ed.ac.uk/egreen2/?p=7</guid>
<description><![CDATA[In February, a colleague and I got the chance to attend the PHPUK conference 2025. Throughout the day, we attended talks from various contributors to the PHP community. The conference had two tracks, which allowed us to split up and cover as much as possible with plenty of breaks to discuss what we’ve learnt about. […]]]></description>
<content:encoded><![CDATA[<p>In February, a colleague and I got the chance to attend the PHPUK conference 2025. Throughout the day, we attended talks from various contributors to the PHP community. The conference had two tracks, which allowed us to split up and cover as much as possible with plenty of breaks to discuss what we’ve learnt about.</p>
<p>Before splitting into separate tracks, Daniel Terhorst-North gave a talk on behaviour driven development (BDD) and the 20 years of history behind it. He showed how even though it was started by one person, the community has kept it going.</p>
<p>The next speaker I listened to was Wim Godden who spoke about deploying software at both small and large scales and automating the processes behind it as much as possible. He showed a real-world example of deploying software to rental lockers for a Belgium based company. They used a tool called Ansible to remotely connect to each computer and run tasks for setting up the computer, installing software, and running the company’s software that operates the lockers. This talk felt especially relevant to the Short Courses Platform I am currently working on, since we are also using Ansible to deploy the website onto multiple servers and update it when required.</p>
<p>After a quick break and discussion about the talks we’d listened to, I attended a talk about how large codebases can be compared to onions from Katy Ereira. She explained how large systems can be broken down into smaller, more understandable parts and comparing them to different parts of an onion to help understand their function.</p>
<p>Nils Adermann gave a talk on securing software supply chains. When most people add a library to their codebase, they don’t always think about the security of the library itself, and especially not the dependencies required by it. However, a dependency of a dependency of a library used for something as simple as logging messages could have a security vulnerability that affects the whole codebase. Nils talked about ways to protect against that using tools like GitHub Dependabot or Conductor, which Private Packagist is currently developing. He also revealed how many widely used and often open source libraries receive extremely little funding, which can make it difficult finding volunteers to maintain security.</p>
<p>Over lunch, we discussed the speakers we had listened to and spoke to other attendees of the conference.</p>
<p>Next was a talk from Gina Banyard about discovering edge cases in the PHP language. As a PHP core maintainer, they had an interesting perspective on how bugs are diagnosed and discussions about the expected functionality. Some examples of recently addressed bugs were demonstrated, along with how PHP now handles them.</p>
<p>After the final break, I attended a talk about OpenAPI from Lorna Mitchell, which discussed what the OpenAPI specification is and how it can benefit both developers and users of APIs. The specification assists developers in designing APIs and creating extensive documentation for them through a schema written in either JSON or YAML. Since it is language agnostic, it can be applied to any API.</p>
<p>The conference provided some interesting perspectives and ideas that I will be sharing with other colleagues and may encourage us to consider in current or future projects. Many of the talks were not just relevant to PHP, so can be applied to other projects such as the short courses platform, which already uses Ansible for deployment.</p>
<p> </p>
<p>Information about all the speakers and recordings of the talks can be found on the <a href="https://www.phpconference.co.uk/" target="_blank" rel="noopener">PHPUK Conference website</a></p>
]]></content:encoded>
<wfw:commentRss>https://blogs.ed.ac.uk/egreen2/2025/08/19/phpuk-conference-2025/feed/</wfw:commentRss>
<slash:comments>0</slash:comments>
</item>
</channel>
</rss>
"
["headers"]=>
object(WpOrg\Requests\Response\Headers)#2481 (1) {
["data":protected]=>
array(12) {
["content-type"]=>
array(1) {
[0]=>
string(34) "application/rss+xml; charset=UTF-8"
}
["date"]=>
array(1) {
[0]=>
string(29) "Fri, 15 May 2026 09:20:24 GMT"
}
["server"]=>
array(1) {
[0]=>
string(6) "Apache"
}
["x-powered-by"]=>
array(1) {
[0]=>
string(10) "PHP/8.3.30"
}
["expires"]=>
array(1) {
[0]=>
string(29) "Thu, 19 Nov 1981 08:52:00 GMT"
}
["cache-control"]=>
array(1) {
[0]=>
string(35) "no-store, no-cache, must-revalidate"
}
["pragma"]=>
array(1) {
[0]=>
string(8) "no-cache"
}
["link"]=>
array(1) {
[0]=>
string(67) "<https://blogs.ed.ac.uk/egreen2/wp-json/>; rel="https://api.w.org/""
}
["set-cookie"]=>
array(1) {
[0]=>
string(132) "spo_11412_fa=28eaa669476d6d37877032232b6ac7d3; expires=Fri, 15 May 2026 09:50:24 GMT; Max-Age=1800; path=/egreen2/; Secure; HttpOnly"
}
["last-modified"]=>
array(1) {
[0]=>
string(29) "Mon, 20 Apr 2026 09:57:28 GMT"
}
["etag"]=>
array(1) {
[0]=>
string(34) ""4433056675204c526f9cc2cc038c81d8""
}
["vary"]=>
array(1) {
[0]=>
string(15) "Accept-Encoding"
}
}
}
["status_code"]=>
int(200)
["protocol_version"]=>
float(1.1)
["success"]=>
bool(true)
["redirects"]=>
int(1)
["url"]=>
string(36) "https://blogs.ed.ac.uk/egreen2/feed/"
["history"]=>
array(1) {
[0]=>
object(WpOrg\Requests\Response)#2471 (10) {
["body"]=>
string(0) ""
["raw"]=>
string(834) "HTTP/1.1 301 Moved Permanently
Content-Type: application/rss+xml; charset=UTF-8
Content-Length: 0
Connection: close
Date: Fri, 15 May 2026 09:20:24 GMT
Server: Apache
X-Powered-By: PHP/8.3.30
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
X-Redirect-By: WordPress
Set-Cookie: PHPSESSID=hc3h45dq3jobo6tt386vit3qjt; path=/; secure; HttpOnly
Set-Cookie: spo_11412_fa=28eaa669476d6d37877032232b6ac7d3; expires=Fri, 15 May 2026 09:50:24 GMT; Max-Age=1800; path=/egreen2/; Secure; HttpOnly
Last-Modified: Mon, 20 Apr 2026 09:57:28 GMT
ETag: "4433056675204c526f9cc2cc038c81d8"
Location: https://blogs.ed.ac.uk/egreen2/feed/
Set-Cookie: RCKBMHKB=027ff8be59-56fd-484WduC3cbuJIfh6vMcFB8QggQ9co4XNy7Rmthiwm1FYrEh36xPykKy1vGET05U1ZkYdQ; path=/; SameSite=None; Secure
"
["headers"]=>
object(WpOrg\Requests\Response\Headers)#2472 (1) {
["data":protected]=>
array(13) {
["content-type"]=>
array(1) {
[0]=>
string(34) "application/rss+xml; charset=UTF-8"
}
["content-length"]=>
array(1) {
[0]=>
string(1) "0"
}
["date"]=>
array(1) {
[0]=>
string(29) "Fri, 15 May 2026 09:20:24 GMT"
}
["server"]=>
array(1) {
[0]=>
string(6) "Apache"
}
["x-powered-by"]=>
array(1) {
[0]=>
string(10) "PHP/8.3.30"
}
["expires"]=>
array(1) {
[0]=>
string(29) "Thu, 19 Nov 1981 08:52:00 GMT"
}
["cache-control"]=>
array(1) {
[0]=>
string(35) "no-store, no-cache, must-revalidate"
}
["pragma"]=>
array(1) {
[0]=>
string(8) "no-cache"
}
["x-redirect-by"]=>
array(1) {
[0]=>
string(9) "WordPress"
}
["set-cookie"]=>
array(3) {
[0]=>
string(62) "PHPSESSID=hc3h45dq3jobo6tt386vit3qjt; path=/; secure; HttpOnly"
[1]=>
string(132) "spo_11412_fa=28eaa669476d6d37877032232b6ac7d3; expires=Fri, 15 May 2026 09:50:24 GMT; Max-Age=1800; path=/egreen2/; Secure; HttpOnly"
[2]=>
string(125) "RCKBMHKB=027ff8be59-56fd-484WduC3cbuJIfh6vMcFB8QggQ9co4XNy7Rmthiwm1FYrEh36xPykKy1vGET05U1ZkYdQ; path=/; SameSite=None; Secure"
}
["last-modified"]=>
array(1) {
[0]=>
string(29) "Mon, 20 Apr 2026 09:57:28 GMT"
}
["etag"]=>
array(1) {
[0]=>
string(34) ""4433056675204c526f9cc2cc038c81d8""
}
["location"]=>
array(1) {
[0]=>
string(36) "https://blogs.ed.ac.uk/egreen2/feed/"
}
}
}
["status_code"]=>
int(301)
["protocol_version"]=>
float(1.1)
["success"]=>
bool(false)
["redirects"]=>
int(0)
["url"]=>
string(35) "https://blogs.ed.ac.uk/egreen2/feed"
["history"]=>
array(0) {
}
["cookies"]=>
object(WpOrg\Requests\Cookie\Jar)#2468 (1) {
["cookies":protected]=>
array(3) {
["PHPSESSID"]=>
object(WpOrg\Requests\Cookie)#2476 (5) {
["name"]=>
string(9) "PHPSESSID"
["value"]=>
string(26) "hc3h45dq3jobo6tt386vit3qjt"
["attributes"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2475 (1) {
["data":protected]=>
array(4) {
["path"]=>
string(1) "/"
["secure"]=>
bool(true)
["httponly"]=>
bool(true)
["domain"]=>
string(14) "blogs.ed.ac.uk"
}
}
["flags"]=>
array(4) {
["creation"]=>
int(1778836824)
["last-access"]=>
int(1778836824)
["persistent"]=>
bool(false)
["host-only"]=>
bool(true)
}
["reference_time"]=>
int(1778836824)
}
["spo_11412_fa"]=>
object(WpOrg\Requests\Cookie)#2477 (5) {
["name"]=>
string(12) "spo_11412_fa"
["value"]=>
string(32) "28eaa669476d6d37877032232b6ac7d3"
["attributes"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2483 (1) {
["data":protected]=>
array(6) {
["expires"]=>
int(1778838624)
["max-age"]=>
int(1778838624)
["path"]=>
string(9) "/egreen2/"
["secure"]=>
bool(true)
["httponly"]=>
bool(true)
["domain"]=>
string(14) "blogs.ed.ac.uk"
}
}
["flags"]=>
array(4) {
["creation"]=>
int(1778836824)
["last-access"]=>
int(1778836824)
["persistent"]=>
bool(false)
["host-only"]=>
bool(true)
}
["reference_time"]=>
int(1778836824)
}
["RCKBMHKB"]=>
object(WpOrg\Requests\Cookie)#2479 (5) {
["name"]=>
string(8) "RCKBMHKB"
["value"]=>
string(85) "027ff8be59-56fd-484WduC3cbuJIfh6vMcFB8QggQ9co4XNy7Rmthiwm1FYrEh36xPykKy1vGET05U1ZkYdQ"
["attributes"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2480 (1) {
["data":protected]=>
array(4) {
["path"]=>
string(1) "/"
["samesite"]=>
string(4) "None"
["secure"]=>
bool(true)
["domain"]=>
string(14) "blogs.ed.ac.uk"
}
}
["flags"]=>
array(4) {
["creation"]=>
int(1778836824)
["last-access"]=>
int(1778836824)
["persistent"]=>
bool(false)
["host-only"]=>
bool(true)
}
["reference_time"]=>
int(1778836824)
}
}
}
}
}
["cookies"]=>
object(WpOrg\Requests\Cookie\Jar)#2468 (1) {
["cookies":protected]=>
array(3) {
["PHPSESSID"]=>
object(WpOrg\Requests\Cookie)#2476 (5) {
["name"]=>
string(9) "PHPSESSID"
["value"]=>
string(26) "hc3h45dq3jobo6tt386vit3qjt"
["attributes"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2475 (1) {
["data":protected]=>
array(4) {
["path"]=>
string(1) "/"
["secure"]=>
bool(true)
["httponly"]=>
bool(true)
["domain"]=>
string(14) "blogs.ed.ac.uk"
}
}
["flags"]=>
array(4) {
["creation"]=>
int(1778836824)
["last-access"]=>
int(1778836824)
["persistent"]=>
bool(false)
["host-only"]=>
bool(true)
}
["reference_time"]=>
int(1778836824)
}
["spo_11412_fa"]=>
object(WpOrg\Requests\Cookie)#2477 (5) {
["name"]=>
string(12) "spo_11412_fa"
["value"]=>
string(32) "28eaa669476d6d37877032232b6ac7d3"
["attributes"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2483 (1) {
["data":protected]=>
array(6) {
["expires"]=>
int(1778838624)
["max-age"]=>
int(1778838624)
["path"]=>
string(9) "/egreen2/"
["secure"]=>
bool(true)
["httponly"]=>
bool(true)
["domain"]=>
string(14) "blogs.ed.ac.uk"
}
}
["flags"]=>
array(4) {
["creation"]=>
int(1778836824)
["last-access"]=>
int(1778836824)
["persistent"]=>
bool(false)
["host-only"]=>
bool(true)
}
["reference_time"]=>
int(1778836824)
}
["RCKBMHKB"]=>
object(WpOrg\Requests\Cookie)#2479 (5) {
["name"]=>
string(8) "RCKBMHKB"
["value"]=>
string(85) "027ff8be59-56fd-484WduC3cbuJIfh6vMcFB8QggQ9co4XNy7Rmthiwm1FYrEh36xPykKy1vGET05U1ZkYdQ"
["attributes"]=>
object(WpOrg\Requests\Utility\CaseInsensitiveDictionary)#2480 (1) {
["data":protected]=>
array(4) {
["path"]=>
string(1) "/"
["samesite"]=>
string(4) "None"
["secure"]=>
bool(true)
["domain"]=>
string(14) "blogs.ed.ac.uk"
}
}
["flags"]=>
array(4) {
["creation"]=>
int(1778836824)
["last-access"]=>
int(1778836824)
["persistent"]=>
bool(false)
["host-only"]=>
bool(true)
}
["reference_time"]=>
int(1778836824)
}
}
}
}
["filename":protected]=>
NULL
}
}
Diag========| SQL: SELECT wp_30_posts.ID, wp_30_posts.guid, wp_30_posts.post_modified_gmt, wp_30_posts.post_name
FROM wp_30_posts LEFT JOIN wp_30_postmeta EO_META ON EO_META.meta_key = 'ease_only' AND EO_META.post_id = wp_30_posts.ID
WHERE 1=1 AND ((guid = 'https://blogs.ed.ac.uk/egreen2/?p=21'))
ORDER BY wp_30_posts.post_date DESC
Diag====| Item [https://blogs.ed.ac.uk/egreen2/?p=21] "PHPUK 2026" is a duplicate of an existing post.
Diag========| SQL: SELECT wp_30_posts.ID, wp_30_posts.guid, wp_30_posts.post_modified_gmt, wp_30_posts.post_name
FROM wp_30_posts LEFT JOIN wp_30_postmeta EO_META ON EO_META.meta_key = 'ease_only' AND EO_META.post_id = wp_30_posts.ID
WHERE 1=1 AND ((guid = 'https://blogs.ed.ac.uk/egreen2/?p=7'))
ORDER BY wp_30_posts.post_date DESC
Diag====| Item [https://blogs.ed.ac.uk/egreen2/?p=7] "PHPUK Conference 2025" is a NEW POST.
Diag========| CHECK existence of category: "Uncategorised" with result: null
Diag========| CHECK existence of post_tag: "Uncategorised" with result: null
Diag========| CHECKED familiarity of term "Uncategorised" across {"1":"category","2":"post_tag"} with result: false
Diag====| Assigned category "Uncategorised" by feed; checking {"1":"category","2":"post_tag"} with result: null
Diag====| Category: MAPPED term names ["Uncategorised"] to IDs: null
Diag====| Category: MAPPED term names [] to IDs: null
e-learning – Digital Learning Applications and Media
Any views expressed within media held on this service are those of the contributors, should not be taken as approved or endorsed by the University, and do not necessarily reflect the views of the University in respect of any particular issue.
July 2020, I had just finished a large-scale migration project so it was good to have different projects to work on, and this was the one I was looking forward to the most. Normally meeting a client for the first time would be face to face but due to current circumstances this wasn’t possible. So, […]
Critical notice regarding Adobe Flash Since Adobe no longer supports Flash Player, Adobe strongly recommends all users immediately uninstall Flash Player to help protect their systems. Please note the University of Edinburgh is actively working with our NHS Scotland and NHS England South partners to develop a new post-Flash version of this e-learning resource. You […]
Hi Jackie, This sounds like an exciting creative project. Designing and animating custom stick figures from scratch is not that…
This is fascinating, particularly the idea of "coding without writing a single line." It really highlights the potential of prompt…
N.B. Closing date now extended to 23:59 on Wednesday, 4th of March.
Thanks Stewart for your encouragement!
Thank you Miki. I very much enjoyed reading this with my morning coffee. It was lovely to have such a…