diff --git a/Makefile b/Makefile
index d831e49..c8eb5bc 100644
--- a/Makefile
+++ b/Makefile
@@ -38,8 +38,8 @@ docker-publish:
@docker push $(IMAGE)
.PHONY: run # Run the application
-run:
- @npm start
+run: docker-build
+ @docker run -p 8000:8000 $(IMAGE)
.PHONY: ci # Perform CI specific tasks to perform on a pull request
ci:
diff --git a/src/images/tweets/1432720164169076755.svg b/src/images/tweets/1432720164169076755.svg
new file mode 100644
index 0000000..d940663
--- /dev/null
+++ b/src/images/tweets/1432720164169076755.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/1432800271873323010.svg b/src/images/tweets/1432800271873323010.svg
new file mode 100644
index 0000000..a65ec53
--- /dev/null
+++ b/src/images/tweets/1432800271873323010.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/1432974196632604676.svg b/src/images/tweets/1432974196632604676.svg
new file mode 100644
index 0000000..e73c813
--- /dev/null
+++ b/src/images/tweets/1432974196632604676.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/1514570182513106946.svg b/src/images/tweets/1514570182513106946.svg
new file mode 100644
index 0000000..e54088f
--- /dev/null
+++ b/src/images/tweets/1514570182513106946.svg
@@ -0,0 +1,44 @@
+
diff --git a/src/images/tweets/1514576057537605642.svg b/src/images/tweets/1514576057537605642.svg
new file mode 100644
index 0000000..280345a
--- /dev/null
+++ b/src/images/tweets/1514576057537605642.svg
@@ -0,0 +1,44 @@
+
diff --git a/src/images/tweets/485697274174275584.svg b/src/images/tweets/485697274174275584.svg
new file mode 100644
index 0000000..c3d8837
--- /dev/null
+++ b/src/images/tweets/485697274174275584.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/485722324604579840.svg b/src/images/tweets/485722324604579840.svg
new file mode 100644
index 0000000..3177b61
--- /dev/null
+++ b/src/images/tweets/485722324604579840.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/485758298755698688.svg b/src/images/tweets/485758298755698688.svg
new file mode 100644
index 0000000..803a05a
--- /dev/null
+++ b/src/images/tweets/485758298755698688.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/485774627139223552.svg b/src/images/tweets/485774627139223552.svg
new file mode 100644
index 0000000..6d4546a
--- /dev/null
+++ b/src/images/tweets/485774627139223552.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/503181282353119232.svg b/src/images/tweets/503181282353119232.svg
new file mode 100644
index 0000000..85e8346
--- /dev/null
+++ b/src/images/tweets/503181282353119232.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/503494610464047104.svg b/src/images/tweets/503494610464047104.svg
new file mode 100644
index 0000000..7051db8
--- /dev/null
+++ b/src/images/tweets/503494610464047104.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/503501014792953856.svg b/src/images/tweets/503501014792953856.svg
new file mode 100644
index 0000000..f2f058e
--- /dev/null
+++ b/src/images/tweets/503501014792953856.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/533329134232289281.svg b/src/images/tweets/533329134232289281.svg
new file mode 100644
index 0000000..c84ed76
--- /dev/null
+++ b/src/images/tweets/533329134232289281.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/533355898086129664.svg b/src/images/tweets/533355898086129664.svg
new file mode 100644
index 0000000..d877cb5
--- /dev/null
+++ b/src/images/tweets/533355898086129664.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/533380993265438720.svg b/src/images/tweets/533380993265438720.svg
new file mode 100644
index 0000000..b5f8a64
--- /dev/null
+++ b/src/images/tweets/533380993265438720.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/533979636909506560.svg b/src/images/tweets/533979636909506560.svg
new file mode 100644
index 0000000..96ec511
--- /dev/null
+++ b/src/images/tweets/533979636909506560.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/533995183248252929.svg b/src/images/tweets/533995183248252929.svg
new file mode 100644
index 0000000..daa089c
--- /dev/null
+++ b/src/images/tweets/533995183248252929.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/534020893203521536.svg b/src/images/tweets/534020893203521536.svg
new file mode 100644
index 0000000..75b423d
--- /dev/null
+++ b/src/images/tweets/534020893203521536.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/534030183129702401.svg b/src/images/tweets/534030183129702401.svg
new file mode 100644
index 0000000..10894df
--- /dev/null
+++ b/src/images/tweets/534030183129702401.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/586829181226524672.svg b/src/images/tweets/586829181226524672.svg
new file mode 100644
index 0000000..6f2177a
--- /dev/null
+++ b/src/images/tweets/586829181226524672.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/586901707285725185.svg b/src/images/tweets/586901707285725185.svg
new file mode 100644
index 0000000..d33242d
--- /dev/null
+++ b/src/images/tweets/586901707285725185.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/586913832121008129.svg b/src/images/tweets/586913832121008129.svg
new file mode 100644
index 0000000..7d8a4c3
--- /dev/null
+++ b/src/images/tweets/586913832121008129.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/586926991020003328.svg b/src/images/tweets/586926991020003328.svg
new file mode 100644
index 0000000..73dd49d
--- /dev/null
+++ b/src/images/tweets/586926991020003328.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/586955640024788992.svg b/src/images/tweets/586955640024788992.svg
new file mode 100644
index 0000000..9df1ecd
--- /dev/null
+++ b/src/images/tweets/586955640024788992.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/586994376812933121.svg b/src/images/tweets/586994376812933121.svg
new file mode 100644
index 0000000..56ff977
--- /dev/null
+++ b/src/images/tweets/586994376812933121.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/624607801277427712.svg b/src/images/tweets/624607801277427712.svg
new file mode 100644
index 0000000..5fe53db
--- /dev/null
+++ b/src/images/tweets/624607801277427712.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/624964081691324416.svg b/src/images/tweets/624964081691324416.svg
new file mode 100644
index 0000000..39f03a9
--- /dev/null
+++ b/src/images/tweets/624964081691324416.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/789372106907717632.svg b/src/images/tweets/789372106907717632.svg
new file mode 100644
index 0000000..3aa35e5
--- /dev/null
+++ b/src/images/tweets/789372106907717632.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/789488036002271233.svg b/src/images/tweets/789488036002271233.svg
new file mode 100644
index 0000000..331dc42
--- /dev/null
+++ b/src/images/tweets/789488036002271233.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/789565552662548482.svg b/src/images/tweets/789565552662548482.svg
new file mode 100644
index 0000000..c4e6cae
--- /dev/null
+++ b/src/images/tweets/789565552662548482.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/790093114857971712.svg b/src/images/tweets/790093114857971712.svg
new file mode 100644
index 0000000..2de8bdc
--- /dev/null
+++ b/src/images/tweets/790093114857971712.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/images/tweets/790186086672822272.svg b/src/images/tweets/790186086672822272.svg
new file mode 100644
index 0000000..06b09b8
--- /dev/null
+++ b/src/images/tweets/790186086672822272.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/790208141497602048.svg b/src/images/tweets/790208141497602048.svg
new file mode 100644
index 0000000..50c0553
--- /dev/null
+++ b/src/images/tweets/790208141497602048.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/921291636486885377.svg b/src/images/tweets/921291636486885377.svg
new file mode 100644
index 0000000..1b7419b
--- /dev/null
+++ b/src/images/tweets/921291636486885377.svg
@@ -0,0 +1,50 @@
+
diff --git a/src/images/tweets/921294945125847040.svg b/src/images/tweets/921294945125847040.svg
new file mode 100644
index 0000000..26f4383
--- /dev/null
+++ b/src/images/tweets/921294945125847040.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/images/tweets/921403371860439041.svg b/src/images/tweets/921403371860439041.svg
new file mode 100644
index 0000000..223cf61
--- /dev/null
+++ b/src/images/tweets/921403371860439041.svg
@@ -0,0 +1,46 @@
+
diff --git a/src/posts/2014-07-12-jsoxford-code-retreat.markdown b/src/posts/2014-07-12-jsoxford-code-retreat.markdown
index d081643..e896d2f 100644
--- a/src/posts/2014-07-12-jsoxford-code-retreat.markdown
+++ b/src/posts/2014-07-12-jsoxford-code-retreat.markdown
@@ -9,7 +9,7 @@ summary: "Last Sunday I went to a Code Retreat hosted by [JSOxford](http://jsoxf
Last Sunday I went to a Code Retreat hosted by [JSOxford](http://jsoxford.com/). This was a full day event of coding, split into four sections all based around [Conway's Game of Life](http://en.wikipedia.org/wiki/Conway's_Game_of_Life).
-{{> tweet id='485697274174275584' }}
+[![](/images/tweets/485697274174275584.svg)](https://twitter.com/tweet/status/485697274174275584)
For those not familiar with Conway's Game Of Life I will be doing another blog post on it shortly. But simply put it is a basic computer model of life.
@@ -19,7 +19,7 @@ For the whole day we focused on perfecting code rather than finishing. We didn't
The first round was aimed at getting us familiar with the task at hand. We paired up, as we did with most of the rounds, and tasked with writing out the code we thought would make up the game on pieces of paper. I had paired up with [Dan Pope](https://twitter.com/danielthepope) and we set to work on the writing out our code, *sans-highlighting*.
-{{> tweet id='485722324604579840' }}
+[![](/images/tweets/485722324604579840.svg)](https://twitter.com/tweet/status/485722324604579840)
Dan focused on a method that calculates the number of neighbours a given cell has while I focused on the main game loop. The absence of an IDE is a terrible thing so our code was pseudo-JavaScript/pseudo-Python. We had plenty of time to write out the whole game with a bit of time left at the end to go through and fix a couple of potential bugs!
@@ -53,7 +53,7 @@ As you can see, the code doesn't actually work as expected, it just does enough
## Lunch
-{{> tweet id='485758298755698688' }}
+[![](/images/tweets/485758298755698688.svg)](https://twitter.com/tweet/status/485758298755698688)
Not the best lunch in the world but a free lunch is a free lunch.
@@ -61,7 +61,7 @@ Not the best lunch in the world but a free lunch is a free lunch.
The word 'Randori' comes from the martial art Aikido and means many people attacking the same person. In the world of programming this lends itself towards paired programming, but with more partners.
-{{> tweet id='485774627139223552' }}
+[![](/images/tweets/485774627139223552.svg)](https://twitter.com/tweet/status/485774627139223552)
Think one laptop, with one person on the keys, and a group of people gathered around telling them what to code. The person typing had no decision over what to write, their partner is the one "driving" with help from the others stood around. This is taken in turns, swapping every 5 minutes.
diff --git a/src/posts/2014-08-24-nodebots.markdown b/src/posts/2014-08-24-nodebots.markdown
index cf9245c..37948f7 100644
--- a/src/posts/2014-08-24-nodebots.markdown
+++ b/src/posts/2014-08-24-nodebots.markdown
@@ -15,11 +15,11 @@ This included a whole bunch of Arduinos, some wifi controlled cars, some quad-co
We were given free rain over what we create. Everyone was there to help each other out, in true community spirit.
-{{> tweet id='503181282353119232' }}
+[![](/images/tweets/503181282353119232.svg)](https://twitter.com/tweet/status/503181282353119232)
The amount of kit made available to us was incredible. 10 Ardunio Experimentation Kits, a whole host of sensors and motors, boxes full of Lego & k'nex and plenty of varied electronics to build whatever we wanted.
-{{> tweet id='502792423152836608' }}
+[Tweet no longer available]
I didn't have any goal going in. I wasn't sure what I wanted to build. A full blown robot was a bit much so I decided to focus on trying my hand at building ancillary systems.
@@ -65,7 +65,7 @@ setInterval(function(){
This sets up the board and the sensor and gets the appropriate value from the sensor upon detecting a change in temperature, which is pretty much constant due to how many decimal places it monitors to. I have set up a function that is called every second and outputs current values recorded from the sensor.
-{{> tweet id='503494610464047104' }}
+[![](/images/tweets/503494610464047104.svg)](https://twitter.com/tweet/status/503494610464047104)
As you can see, a nice 21°c at the White October offices.
@@ -79,7 +79,7 @@ This was good, but it needed something more, something cute. How about an Octoca
So, with a little help of a stepper motor, some k'nex and a GitHub sticker, I had a cute l'il Octocat that greeted people as they passed by my station.
-{{> tweet id='503501014792953856' }}
+[![](/images/tweets/503501014792953856.svg)](https://twitter.com/tweet/status/503501014792953856)
My final code can be found below, don't just it wasn't meant to be pretty. You may also notice that I also had a light sensor that turned on a super bright LED when it got too dark. I did have to make sure to move the LED away from the sensor on the breadboard though...
diff --git a/src/posts/2014-11-17-emerging-tech-weekender-and-digital-oxford.md b/src/posts/2014-11-17-emerging-tech-weekender-and-digital-oxford.md
index a0d4c45..5ec67b7 100644
--- a/src/posts/2014-11-17-emerging-tech-weekender-and-digital-oxford.md
+++ b/src/posts/2014-11-17-emerging-tech-weekender-and-digital-oxford.md
@@ -12,19 +12,19 @@ Their latest event offering was hackathon going by the name of [Emerging Tech We
The weekend kicked off on Friday with something of a surprise to me...
-{{> tweet id='533329134232289281' }}
+[![](/images/tweets/533329134232289281.svg)](https://twitter.com/tweet/status/533329134232289281)
[STFC](http://www.stfc.ac.uk) helped sponsor the event. Who knew? (I know I sure didn't).
After the tech mentors gave their presentation & demos we began mingling over drinks and coming up with ideas for teams to work on. When we all came back together we had a large number of good ideas suggested.
-{{> tweet id='533355898086129664' }}
+[![](/images/tweets/533355898086129664.svg)](https://twitter.com/tweet/status/533355898086129664)
We each had two votes we could give to an idea and then teams were formed out of the top voted. I joined the "Dude, where's my cat?" team. The idea was, we never have any idea where our cats are, wouldn't it be great if we could track them somehow?
{{> picture alt="Dude, where's my cat?" caption="Dude, where's my cat?" url="/images/DudeWheresMyCat.jpg" }}
-{{> tweet id='533380993265438720' }}
+[![](/images/tweets/533380993265438720.svg)](https://twitter.com/tweet/status/533380993265438720)
So... we discovered pretty quickly that the idea has been done, repeatedly. :disappointed:
@@ -32,19 +32,19 @@ So I joined SenseSpace! The ideas was pretty simple, create a gaming platform th
Our final project didn't quite make it that far but we did get enough to convey the basic idea to people.
-{{> tweet id='533979636909506560' }}
+[![](/images/tweets/533979636909506560.svg)](https://twitter.com/tweet/status/533979636909506560)
As part of our pitch we did a short example video of us playing tag with our devices. I was even able to make use of a pair of Google Glasses to get some pretty cool point-of-view footage.
I thought Google Glass would be a cool platform to be able to actually play our game on (if you ignore the cost for a moment). Unfortunately...
-{{> tweet id='533995183248252929' }}
+[![](/images/tweets/533995183248252929.svg)](https://twitter.com/tweet/status/533995183248252929)
When it came to Sunday evening it was time for the pitching and judging. There was a lot of goo pitches and a lot of impressive work done in just a couple days.
SenseSpace was getting some very positive feedback.
-{{> tweet id='534020893203521536' }}
+[![](/images/tweets/534020893203521536.svg)](https://twitter.com/tweet/status/534020893203521536)
There was a lot of good ideas from Queue controlling...
@@ -56,7 +56,7 @@ There was a lot of good ideas from Queue controlling...
But my personal favourite, and the one that got my vote during the audience voting, was Team Brush!
-{{> tweet id='534030183129702401' }}
+[![](/images/tweets/534030183129702401.svg)](https://twitter.com/tweet/status/534030183129702401)
So... the results are.........
diff --git a/src/posts/2015-04-14-rthack.markdown b/src/posts/2015-04-14-rthack.markdown
index c320806..f0e7796 100644
--- a/src/posts/2015-04-14-rthack.markdown
+++ b/src/posts/2015-04-14-rthack.markdown
@@ -12,7 +12,7 @@ When we arrived there were many [examples](https://github.com/jsoxford/RTHackPac
After a brief intro a few pitched some ideas they had for the day and we joined into groups. I joined with [Max](https://twitter.com/omgmog) to work on some real time, web connected hardware using Arduino's etc. I had brought along my awesome [Spark Core](https://store.spark.io/?product=spark-core) which is a mini, cloud connected device. I hooked up a [DHT11](http://www.adafruit.com/products/386) temperature/humidity sensor which had a handy Spark Core library available.
-{{> tweet id='586829181226524672' }}
+[![](/images/tweets/586829181226524672.svg)](https://twitter.com/tweet/status/586829181226524672)
The data from this sensor was then made available by registering events using the Spark cloud's `publish` function which I then listened for on a server and forwarded all messages to Pusher for use by others. I hooked up a simple web page that would display each of the messages as they came in and cobbled together a [D3](http://d3js.org/) graph that plotted the temperature in real time.
@@ -22,26 +22,26 @@ I switched to using a TMP36 temperature sensor, one lacking a handy library. It
But in the end I prevailed!!!
-{{> tweet id='586913832121008129' }}
+[![](/images/tweets/586913832121008129.svg)](https://twitter.com/tweet/status/586913832121008129)
We gave demos at the end of the day. Mine was short and sweet but some of the others were pretty cool.
[Dan](https://twitter.com/danielthepope) made a cool game where you fight to set the background colour.
-{{> tweet id='586901707285725185' }}
+[![](/images/tweets/586901707285725185.svg)](https://twitter.com/tweet/status/586901707285725185)
[Ben](https://twitter.com/benjaminbenben) and [Gil](https://twitter.com/LuRsT) made a cool way of displaying what people are tweeting about.
-{{> tweet id='586926991020003328' }}
+[![](/images/tweets/586926991020003328.svg)](https://twitter.com/tweet/status/586926991020003328)
We also had a Countdown clone, modern minesweep, twitter walls with flamingos, various chat rooms and an interactive [Ben's mind palace](http://www.bensmindpalace.co.uk/rt/).
When all was done and we had wrapped up a few of us headed over to Joe Perks for some well deserved (custom) cocktails.
-{{> tweet id='586955640024788992' }}
+[![](/images/tweets/586955640024788992.svg)](https://twitter.com/tweet/status/586955640024788992)
This did end up turning into a Ruby hack...
-{{> tweet id='586994376812933121' }}
+[![](/images/tweets/586994376812933121.svg)](https://twitter.com/tweet/status/586994376812933121)
All-in-all it was a great day! I learned not to muck around with hardware at a JS hack day (although that may change now I've received my [Espruino Pico](http://www.espruino.com/Pico)) and there are some pretty quick and powerful things you can do with technologies like Pusher.
diff --git a/src/posts/2015-07-27-nodebots-2015.markdown b/src/posts/2015-07-27-nodebots-2015.markdown
index 447a521..0e7e93c 100644
--- a/src/posts/2015-07-27-nodebots-2015.markdown
+++ b/src/posts/2015-07-27-nodebots-2015.markdown
@@ -8,11 +8,11 @@ summary: "Last Saturday was [International NodeBots Day](https://github.com/node
Last Saturday was [International NodeBots Day](https://github.com/nodebots/nodebotsday) and [JS Oxford](http://JSOxford.com) was yet again hosting a hack day. We had a really good turn out with about 30 very enthusiastic people showing up. I belive this was, in no small part, due to the fact we had [Gordon Williams](https://twitter.com/espruino), the man behind the [Espruino](http://www.espruino.com/), on hand to help us build some awesome little robot cars made possible by the Expruino Pico and a PCB made especially for the day.
-{{> tweet id='624872341206642688' }}
+[Tweet no longer available]
I have been looking forward to this event for a long time now. [Last year's NodeBot event](https://blog.marcusnoble.co.uk/2014-08-24-nodebots/) was one of the main reasons I fell in love with JS Oxford. It was lots of fun and really spurred my interest in microcontrollers (Arduinos, Espruinos, etc.). I may have been a little too keen...
-{{> tweet id='624607801277427712' }}
+[![](/images/tweets/624607801277427712.svg)](https://twitter.com/tweet/status/624607801277427712)
The day started out with an intro from Ryan and Gordon talking about the pre-designed project that was available (or we could make whatever we wanted) and a brief overview of the many components laid out in front of us.
@@ -20,7 +20,7 @@ The day started out with an intro from Ryan and Gordon talking about the pre-des
I started off working with [Tom](https://twitter.com/neverontarget) and [Katy](https://twitter.com/katyemoe) following the [instructions](https://github.com/espruino/EspruinoDocs/blob/master/devices/RobotPCB.md) to build a small Espruino Pico car that can be built upon. After shorting out our first board we eventually had something that worked...
-{{> tweet id='624913165864857600' }}
+[Tweet no longer available]
At this point I decided I wanted to have a go with some of the kit I had brought, specifically one of [these](http://www.ebay.co.uk/itm/Hot-sale-Motor-Smart-Robot-Car-Chassis-Speed-Encoder-Battery-Box-For-Arduino-DDS/391198705451) I got off eBay. The main difference between this and the small cars we'd been building was the motors on this were considerably hungrier, requiring ~5v to work rather than 3.3v. This posed a problem as the pins on the controllable Espruino Pico all output at 3.3v with the only way to get 5v is the use the constant 5v out pin. After some (repeated) chatting with Gordon I was advised to make use of a transistor to have a controllable switch for the 5v power. I used two of these to have individually controllable wheels and threw together some code that would have the car randomly drive around.
@@ -58,12 +58,12 @@ function go(){
The end result is quite entertaining...
-{{> tweet id='624950235509456896' }}
+[Tweet no longer available]
All in all it was a very successfull event with many [awesome](https://twitter.com/danielthepope/status/624969982934392832) [robots](https://twitter.com/roylinesuk/status/625029819550564352) being built.
-{{> tweet id='624964081691324416' }}
+[![](/images/tweets/624964081691324416.svg)](https://twitter.com/tweet/status/624964081691324416)
With the day over, a robot uprising in effect and a lot of tired people it was time for some celebratory food and drinks at [Joe Perks](http://joeperksandco.co.uk/).
-{{> picture url="/images/NodebotsJoePerks.jpg" }}
\ No newline at end of file
+{{> picture url="/images/NodebotsJoePerks.jpg" }}
diff --git a/src/posts/2016-10-25-hackathonarama-2.markdown b/src/posts/2016-10-25-hackathonarama-2.markdown
index 44236bb..cf8970c 100644
--- a/src/posts/2016-10-25-hackathonarama-2.markdown
+++ b/src/posts/2016-10-25-hackathonarama-2.markdown
@@ -8,15 +8,15 @@ summary: "This past weekend I have attended [Hackference](https://twitter.com/ha
This past weekend I have attended [Hackference](https://twitter.com/hackferencebrum) for the second year running. Just like [last year](/2015-10-06-hackathonarama/) it was a 1 day conference followed by a 24 hour hackathon, and just like last year I've learnt a lot I'd like to share.
-{{> tweet id='789372106907717632' }}
+[![](/images/tweets/789372106907717632.svg)](https://twitter.com/tweet/status/789372106907717632)
The conference was an amazing mix of topics with [plenty of fun](https://twitter.com/Marcus_Noble_/status/789448940966010880) added in. There was a lot of great speakers talking about [bluetooth in the browser](https://twitter.com/Marcus_Noble_/status/789405754318987264), a [new browser](http://servo.org/), [how everything is pretty much going to blow up in our faces](https://twitter.com/JFKingsley/status/790229550076661761) and [something that looks very complex](https://twitter.com/CalEuanHopkins/status/789415734313033728). The day was finished off with an increadible talk from [Remy](https://twitter.com/rem) talking about working on the web, why you don't need to get JavaScript fatigue and lots of inspiring stuff.
-{{> tweet id='789488036002271233' }}
+[![](/images/tweets/789488036002271233.svg)](https://twitter.com/tweet/status/789488036002271233)
The afterparty, Chillference, was a really good way to chat with lots of people and just relax after a long day. There was drinks, food and boardgames to keep everyone in high spirits as well as a [DJ set done on two GBAs](https://twitter.com/hackferencebrum/status/789540149839400960)!!!
-{{> tweet id='789565552662548482' }}
+[![](/images/tweets/789565552662548482.svg)](https://twitter.com/tweet/status/789565552662548482)
Last year I [posted some tips](/2015-10-06-hackathonarama/) on surviving an all-night hackathon. I still stand by these tips and encourage people to read them if they plan to attend such an event. This year I went in to it much more prepared. I knew what to expect this time, I had an idea of what my limits would be, I actually had some ideas and I wasn't alone. Going along with someone ([Dan](https://twitter.com/danielthepope) :wave:) made things _much_ less daunting than last year.
@@ -24,20 +24,21 @@ Last year I [posted some tips](/2015-10-06-hackathonarama/) on surviving an all-
Even though I had some idea of what I wanted to do I started out hacking at something else to start with. Initially I planned to create an app that would be able to determine the reading age of a user's tweets. This turned out to not be so feasible, mainly due to the brevity of tweets. Instead I made use of the [sentiment analysis API](https://westus.dev.cognitive.microsoft.com/docs/services/TextAnalytics.V2.0/operations/56f30ceeeda5650db055a3c9), part of Microsoft's [Cognitive Services](https://www.microsoft.com/cognitive-services). This ended up being pretty fun and surprisingly simple. All you need to do is send it some text and it'll return a value between 0 and 1 indicating what it belives the sentiment of the text is. I used this to take a look at the current political hopefuls in the US, [Donald](http://tweetanalysis.marcusnoble.co.uk/user/realDonaldTrump) and [Hillary](http://tweetanalysis.marcusnoble.co.uk/user/hillaryclinton), both who (at time of writing) see pretty positive. It'll be interesting to see how that changes after the election. Take a look for yourself: [Tweet Analysis](http://tweetanalysis.marcusnoble.co.uk/) ([Code](https://github.com/AverageMarcus/TweetAnalysis))
-{{> tweet id='790093114857971712' }}
+[![](/images/tweets/790093114857971712.svg)](https://twitter.com/tweet/status/790093114857971712)
My next two hacks involved using the [emotion API](https://www.microsoft.com/cognitive-services/en-us/emotion-api) from Microsoft's [Cognitive Services](https://www.microsoft.com/cognitive-services) to analyse photos taken by the webcam. The first hack, [CommitEmotion](https://github.com/AverageMarcus/CommitEmotion), is a Git hook that will take a photo with the webcam upon creating a commit. It will then send it to the emotion API for analysis and determine the main emotion being shown. This will then be prepended to the commit message in the form of an emoji. I had hoped to see this be more colourful and random but it seems [I have a pretty neutral face when writing commit messages](https://github.com/AverageMarcus/CommitEmotion/commits/master). I also remixed this hack into another hack, [CheerUp](https://github.com/AverageMarcus/CheerUp), that runs in the background and snaps a webcam photo every five minutes. If it detects that you are sad or angry it'll open up a random [/r/aww](https://www.reddit.com/r/aww/) page to cheer you up.
Finally I went back to my original idea of creating a [crowd sourced tech support](https://github.com/AverageMarcus/CrowdSupport) line using [Nexmo](https://www.nexmo.com/). The idea behind this was that people could ring up a number to register themselves as an expert in a perticular topic then later other people could ring up to ask a question and get put through to one of these experts. This used Nexmo's [Voice API](https://www.nexmo.com/products/voice/) to respond to calls and then perform the connection between two numbers. I didn't end up taking this idea too far as there was a few features I needed that are not yet available from Nexmo (such as having to wait until the robot has finished taking before being able to press a digit or the ability to connect a call after first playing a message to the joining party). All this was fed back to [Phil](https://twitter.com/leggetter) so hopefully these will come in the future.
-{{> tweet id='790186086672822272' }}
+[![](/images/tweets/790186086672822272.svg)](https://twitter.com/tweet/status/790186086672822272)
When it came to everyone demoing their hacks, and there was a lot, I was blown away by some of the cool things people were able to make. Everything from [calling up to find your next train](https://twitter.com/hackferencebrum/status/790176783987576833) to the ability to [lookup actors in a Netflix video by clicking them](https://twitter.com/hackferencebrum/status/790166819059462145) to [programmable DJing](https://twitter.com/hackferencebrum/status/790175003555815424) and even a [hackable dress](https://twitter.com/hackferencebrum/status/790196227702947840)!!!
All in all it was such an amazing event with so much praise going out to [Mike](https://twitter.com/ukmadlz) and everyone involved in making it happen. I even managed to win a prize from Nexmo for all the feedback I gave them! :grin:
{{> tweet id='790208141497602048'}}
+[![](/images/tweets/790208141497602048.svg)](https://twitter.com/tweet/status/790208141497602048)
If you missed out or want to re-live the event then you're in luck. I also threw together a small site where you can jump in to some moments from the weekend. Enjoy! [http://hackference360.marcusnoble.co.uk](http://hackference360.marcusnoble.co.uk)
-See you all at the next last Hackference!
\ No newline at end of file
+See you all at the next last Hackference!
diff --git a/src/posts/2017-10-31-hackathonarama-2.md b/src/posts/2017-10-31-hackathonarama-2.md
index d3032c5..05b0739 100644
--- a/src/posts/2017-10-31-hackathonarama-2.md
+++ b/src/posts/2017-10-31-hackathonarama-2.md
@@ -7,20 +7,18 @@ summary: "For the third year running I attended [Hackference](https://2017.hackf
---
For the third year running I attended [Hackference](https://2017.hackference.co.uk/) again. Once again, a 1 day conference followed by a 24 hour hackathon and as always a really great weekend.
-{{> tweet id='921291636486885377' }}
+[![](/images/tweets/921291636486885377.svg)](https://twitter.com/tweet/status/921291636486885377)
The conference was opened by [Jon Kingsley](https://twitter.com/JFKingsley) talking about device hacking in a fetching cape.
-{{> tweet id='921294945125847040' }}
+[![](/images/tweets/921294945125847040.svg)](https://twitter.com/tweet/status/921294945125847040)
The day included a wide range of great talks including [an integer that you can't use in JS](https://twitter.com/Lily_2point0/status/921305171338125312), [calls to Ben's mother](https://twitter.com/edent/status/921311892919943169), [a promise of cake](https://twitter.com/jna_sh/status/921313320254222336), [live coding a slide clicker](https://twitter.com/JamieTanna/status/921330784841228288), [tips for releasing your website on Mars](https://twitter.com/cbetta/status/921342143393910789) and [a sobering look at privacy](https://twitter.com/bevishalperry/status/921400192447983617).
-{{> tweet id='921403371860439041' }}
+[![](/images/tweets/921403371860439041.svg)](https://twitter.com/tweet/status/921403371860439041)
As always, the hackathon was great fun. While I didn't crank out my usual 4+ hacks this year (tiredness hit me hard) I did manage to tinker on a couple things. I managed to put together a fun little "Virtual Stickers" app that let you scan QR codes to unlock stickers that you could place on your screen and create a collage from. This could then be downloaded or shared with others. I also managed to put together a crude Alexa Flash Briefing to tell you what [Digital Oxford](http://digitaloxford.com/) meetups were happening in the next week.
Many great hacks came out of the weekend such as [Tinder for GitHub](https://twitter.com/bevishalperry/status/922094521789435904), [GitHub contributions graph as music](https://twitter.com/bevishalperry/status/922083878889803776), [Kudeliscope](https://twitter.com/danielthepope/status/922097304999522310) and the ever useful [Is It a Bench?](https://twitter.com/danielthepope/status/922095102230753281).
-{{> tweet id='921326871056453632' }}
-
Every year I find more and more friends at Hackference, new and old, many whom I only see at these events. I have so much love for [Mike](https://twitter.com/ukmadlz) for putting on this event and providing me with the chance to connect with so many amazing people.
diff --git a/src/posts/2021-09-01-migrating-from-docker-to-podman.md b/src/posts/2021-09-01-migrating-from-docker-to-podman.md
index 7a93926..7dc454f 100644
--- a/src/posts/2021-09-01-migrating-from-docker-to-podman.md
+++ b/src/posts/2021-09-01-migrating-from-docker-to-podman.md
@@ -32,14 +32,14 @@ There has been quite a bit of reaction to this news:
@@ -48,7 +48,7 @@ Depending on which side your opinions lie, you might be looking for alternatives
diff --git a/src/posts/2022-07-04-managing-kubernetes-without-loosing-your-cool.md b/src/posts/2022-07-04-managing-kubernetes-without-loosing-your-cool.md
index e83033a..5159faa 100644
--- a/src/posts/2022-07-04-managing-kubernetes-without-loosing-your-cool.md
+++ b/src/posts/2022-07-04-managing-kubernetes-without-loosing-your-cool.md
@@ -239,9 +239,11 @@ Shortly after I posted this blog post, [Ian Coldwater](https://twitter.com/IanCo
## #8 - Admission Webhooks