Category Archives: Uncategorized

Server Names based on Shrek

I’m a huge Shrek fan, so my first computer was called Shrek. Since then, all my (and my brother’s) computers/servers/devices have been named after Shrek characters. Often with a bit too much thought involved.

After about 10 years we realised we didn’t have a list of them anywhere.

To help us keep track, and in case anyone else finds it amusing – here’re our Shrek Server Names.

Computer/DeviceServer Shrek NameExplanation
Staging ServerMerlinMerlin is a magician who has good intentions and always tries his best. Just like code on staging servers – often it doesn’t work, but when it does it’s magical!
Mailserver & Backup ServerReggieReggie is one of the announcers of the group who come to summon Fiona & Shrek back to Far Far away. He’s part of a team who deliver messages (mail servers) he’s redundant (backup) and over enthusiastic (because you have to be over enthusiastic to run your own mailserver).
Backup ServerBroganBrogan is a leader of the ogre resistance and uses his nose as a horn, he gets captured (backups always break) but later saves the day (at least partially, always check your backups).
Sami’s Main PCShrekThe main character, and my main computer.
Sami’s LaptopDragonMy laptop is portable and gets hot. Just like Dragon.
Sami’s iPhoneCyclopsThat big, single eye in the top of my iPhone. Reminded me of Cyclops.
Docker HostCookieA Docker Host is a server which creates/runs lots of smaller servers. We often use it to try things out and see what sticks. Just like Cookie the Ogre Chef who catapults food to fight off the baddies.
HypervisorSwampA hypervisor is a server which lets you run lots of other servers. After Shrek and Fiona have kids the Swamp gets rather busy with lots of little ones running around, doing their thing.
Old School Linux ServerDonkeyWe’ve all got that big, old school server which just keeps ticking on and running things. Always there, often reliable is your trusty number 1 – Donkey.
Seafile ServerFairy God MotherShe makes and stores potions in her huge factory. Seafile is a Dropbx-style server for storing your precious files – magical and benign.
FirewallBig Bad WolfWho better to defend your networks against baddies than the Big Bad Wolf and his extraordinarily strong huffing and puffing.
Git ServerMuffin ManGit is used for managing code, and Muffin Man is the bakery where it’s all kept.
KubernetesKubernetes is a system for managing lots of different servers.
Puppet MasterPinocchioA terrible name. Thankfully we no longer use it, and hopefully we will be a bit more respectful of Pinocchio next time.
PHP 8 Production ServerLillian Lillian is a sensible, accepting and reliable person. So a good name for a new production server in 2022!

Repetitive Strain Injury is really bad – but can be avoided and healed (and there’s a book for it!)

tldr; Recognise the dangers of using your computer, avoid RSIs because they’re very hard to treat. Make time in your daily routine, because it’ll save you lots of time (and pain) later.

Repetitive Strain Injury. Personal Injury & Treatment Options by Clemens Conrad

I grew up on my computer, spending hours typing away – learning things, socialising, building things, playing games. It served me very well.

I also grew up with a family aware of good posture and taking breaks. Sure I never took as many as I should have, but I was aware enough that I didn’t have nearly as many problems as I should have done – given how long I spent hunched in front of a screen.

That was true until 2018, which for me was a crazy busy year. Too much went on, and the thing that got shafted was the breaks and the posture. Not Cool.

My Repetitive Strain Injury

In early 2019 I started getting pains in my wrist. Subtle at first, but over the course of only about two weeks they blew up into constant 24/7 sharp pains – with a background oscillation of other aches and pains.

I’ve lived a lucky life – I’ve never had excellent health, but I’ve never suffered from poor health. I’ve known people living with chronic pain and I know it’s a thing – but after just two weeks I realised quite how much it affects every aspect of your being.

Repetitive strain injuries are caused when you damage your nerves by repeating the same, usually small, movement too many times. “Too Many” is an awful lot, it took years and years of mouse clicking to cause the pain.

And it’s going to take years to resolve the pain, it seems.

The Path to Pain Free

RSIs are not well understood, so when fellow human being Clemens Conrad started suffering he did what many of us would like to do – the research! He had been let down by doctors, medicine, pills – everything he tried. Given the lack of information out there he started compiling his RSI story, and then other peoples stories.

What he’s compiled is the most useful resource book on Repetitive Strain Injury available. It’s not a magic answer, but it contains the information you need to find the answers which work for you. He makes no illusions about how difficult the task is, but by trying and following the advice in his book you can avoid doing what he had to do – dedicate a few years of his life to figuring this stuff out.

Who’s the book for?

If you’re an office (or factory) manager and your staff use computers – buy a copy of this book for your office. Incorporate it’s teachings, do a cost-benefit analysis of the risks of your staff developing RSI and taking sick time off work.

If you work on a computer, play video games or do any other repetitive task (Conrad’s page lists several common tasks) get this book and share it with your friends to help them prevent repetitive strain injury.

Get it before you need it, because then hopefully you’ll never need it.

Along with the book is a whole website full of free advice, most of what is in the book is free on the website (but for a website which largely says “Spend less time on your computer – of course there’s a book).

There’s software to help, exercises to do, though provoking re-thinkings of your world. There are literally dozens of suggestions, even if you just follow one or two you’ll reduce your risk.

Disclaimer: I wrote this article in exchange for a free copy of the book – but Clemens Conrad had no input and if I didn’t actually love the book – I’d have declined and paid for it instead.


Deploying Laravel 5 & 6 to CloudWays using Envoyer

CloudWays has a super basic introduction to using Envoyer with CloudWays – but disapointingly it doesn’t actually cover any of the things specific to CloudWays. It’s just a generic introduction to a super basic deployment over SSH.

I’ve spent the best part of today getting things running, and wanted to share what I’ve done – to hopefully to help someone else, and also to request feedback from others.

I like automation, I don’t want to have to be doing things manually. That’s the purpose of Envoyer too. When I trigger a deploy in Envoyer, I expect my production site to be fully updated – composer, compiled assets, caches cleared, database migrated.

A little disclaimer

This process has been my attempt to set things up according to best practice. For me, best practice means automating as much as possible to eliminate human error (i.e. me forgetting to run something).

I’m setting this up in August 2019 – if anything doesn’t work well I’ll come back and update this blog (hopefully!). Otherwise please treat this as a suggestion, rather than something tried and tested. Likewise – I’d love your feedback or experiences in the comments below.

Deployment Hook Positions

Here are the Deployment Hooks I have setup, the content for each is in the table after. This one just shows where I’ve positioned each.

Clone New ReleaseBackup
Install Composer DependenciesInstall NPM Dependencies, Build Assets
Activate New ReleaseRebuild Cache, Migrate DatabaseReset App Permissions on CloudWays, Restart FPM on CloudWays
Purge Old Releases

Deployment Hook Content

NameRun AsScript
Backupmaster# Backup the current site, before doing anything.
# Uses package: backpack/backupmanager
cd {{ project }}/current
php artisan backup:run
Install NPM Dependenciesmastercd {{release}}
npm install
Build Assetsmastercd {{release}}
npm run production
Rebuild Cachemastercd {{release}}
php artisan clear-compiled
php artisan cache:clear
php artisan view:clear
php artisan config:cache
Migrate Databasemastercd {{release}}
# Migrate the database without asking us
# if we’re sure.
php artisan migrate -n –force
Reset App Permissions in CloudWaysmasterCURL command (see blow). It was very long and messy to paste in this table.
Restart FPM on CloudWays master# Envoyer can’t restart FPM with the CloudWays SSH user
# but we can easily do it using the API.
CURL command (see blow). It was very long and messy to paste in this table.

Don’t forget to tick the “On Servers” box for each one, too.

Which user to deploy as?

One of the issues I’m trying to overcome is the occasional permissions issue I get in cache (especially template) files on CloudWays. Because I’m compiling my assets as the “master” user, but Apache is running them as the “application” user.

I started of trying to run everything as the application user. But that user cannot run npm properly (permissions issues creating ~/.npm).

I also tried to get the application user to build the assets and do the cache clearing – but again I was getting permissions issues and errors. I presume that’s something to do with the locked down users CloudWays configures.

So in the end – I’m running everything as the master user.

Using the CloudWays API

The CloudWays API is very simple to use, I used the Playground (don’t forget to Authourize with the button in the very top right) to generate the CURL call needed. Heads up: the Bearer header is not your API token, but is created when you authourise on the API Playground.

Grab the Server ID and Application ID by loading the CloudWays platform page and getting the numbers from the ID.

CloudWays API Command to reset file permissions

Since I’m trying to avoid file permissions issues (caused by compiling things or clearing caches as the master user, but serving them as the application user) I opted to run CloudWays’s File Permission Re-setter tool after every deploy.

curl -X POST –header ‘Content-Type: application/x-www-form-urlencoded’ –header ‘Accept: application/json’ –header ‘Authorization: Bearer YOUR_API_TOKEN’ -d ‘server_id=YOUR_BEARER_ID&app_id=YOUR_APP_ID’ ‘’

CloudWays API Command to restart FPM

Envoyer can’t restart FPM over SSH because CloudWays doens’t let us sudo. But we can do it with the API instead. Make sure you’ve got the correct PHP FPM version. Use the /service/get method to check what it should be.

curl -X POST –header ‘Content-Type: application/x-www-form-urlencoded’ –header ‘Accept: application/json’ –header ‘Authorization: Bearer YOUR_BEARER_TOKEN’ -d ‘server_id=YOUR_SERVER_ID&service=php7.3-fpm&state=restart’ ‘’

Change Log


  • Changed page title to include Laravel 6 – which I’m now using.
  • Moved “Build Assets” from “Before Activate New Release” to ” Before Install Composer Dependencies” to resolve “Mix Manifest not found” error.
  • Moved “Install NPM Dependencies ” from “After Install Composer Dependencies” to “Before Install Composer Dependencies” because it has to come before “Build Assets”

Comments, Suggestions, Feedback

As mentioned above, this is a voyage of discovery for me. Hopefully it’ll run smoothly going forward. I’ll definitely be adding to it (I intend to setup the Laravel Job Queue at some point).

Please share below any experience or suggestions you have. I struggled to find any detailed articles addressing this so hope to create one.


Object to the Hasmoneon Development on Copthall Fields

The decision is now with the Mayor of London

If you’d like to object to the planning application to build on the Copthall Fields (please do!) this is what you need to do, since Barnet (narrowly) approved it – it’s now with the mayor.

Click here to open your email client with the below details pre-filled.

Send your email:

To: [email protected]

CC: Andrew Dismore <[email protected]>

Subject: Objection to planning application Ref: 16/6662/FUL Hasmonean High School 2-4 Page Street London NW7 2EU

Body: In the body explain why you’re against.

Email Body Tips

Format your email body like this:

  1. A nice formal greeting. “To whom it may concern” or “Dear All”
  2. A sentence or two about who you are and your connection to the field. (e.g. a local resident, someone who explores London’s green spaces etc).
  3. List your reasons for objecting (only some things can be considered – pick them from the document below).
  4. Thank them for their time, and perhaps say you’re looking forward to their decision.
  5. Sign off with your full name and address (required, without your name and address the objection can’t be used).

You can only object on certain grounds, use this easy guide to see what you can object based on. You don’t need to write much, just mention why you’re objecting.

Do this soon! The mayor only has another week or so to respond.


Share this page with anyone you know who would value keeping places like this available to the public. Talk to your friends and neighbours.

Contact the local group of residents to see how you can help further:


Draft: Coder requests for Graphic Designers / How to design for code

WORK IN PROGRESS – this is a work in progress, if you have anything to add let me know here:  contact me!

Design is important, really important. Making things look right has an incredible impact on how visitors use our creations.

But not all design is essential, and not all styles are fixed.

Over many years of coding designs from mockups I’ve come across many habits graphic designers have which are very complicated to code.

So in my quest to ease Designer/Develoepr relations I’m compiling here a list of tips for designers to help them create designs which are easy (or not very messy) to code.

Naturally, if a design is wanted it can be coded. The Internet is magical like that – but if it doesn’t really matter if the logo is 2% larger on tablets than mobiles, lets keep them the same and keep the code sane.

Do use Rows

Everything on the web is either a rectangle or sits inside a rectangle.

You cannot see the rectangles which are responsible for layouts, but they’re still there. Making them overlap is possible, but not easy to do right.

Keeping things aligned in these invisible rows and columns makes coding life much easier.

Don’t make small changes

Every tiny visual change requires code to make the change and define when or where to apply the change. Having a button be 3px taller on the newsletter signup form than on the contact form requires about an extra 6 lines of code.

Don’t mix percentage and fixed widths

Having the form-labels be a fixed 150px wide and the form element take up the rest of the page is not fun to make happen in code. Either use percentage widths, or use fixed widths (which can be defined differently at different overall widths, but see “Don’t make small changes” above.


WordPress Shortcodes for Website Editors

Overview of Shortcodes

WordPress Shortcodes are snippets of code which WordPress turns into more advanced things. For example the gallery shortcode is very simple in the editor, but turns into a complicated bunch of code for displaying many images.

A basic shortcode is a word wrapped in square brackets, like this:


Simple Shortcode

A shortcode to display the most recent posts might look like this:


you can put that anywhere you like in your post body and when you view it on the front-end of the website it’ll display a list of recent posts.

Closing Shortcodes

Some shortcodes can be wrapped around some text, for example a shortcode might make a paragraph stand out and flash. In this case you put the usual shortcode form above before the content, and a repeat of it but with a forward slash added after the first square bracked after the content.

[stand_out_and_flash]This is the content[/stand_out_and_flash]

The shortcode will then generate some code to go before and after the content – in this case to make it stand out and flash.

Shortcode Settings

A shortcode can also have settings – this lets you use the same shortcode in different places but with different results. Taking the example of the recent-posts shortcode above we might want to choose how many of the most recent posts to show. We do this by adding a space after the shortcode name, followed by the setting name, and equals and then the value – followed by the closing square bracket.

You can add as many settings as you like (as long as the shortcode supports them) by repeating the format.

If the value of the setting contains a space (or some other special characters) you need to put it in quotes (you can put all values in quotes if you prefer too).

You don’t repeat the settings in the closing shortcode (E.g. the [[/stand_out_and_flash]] – they are always just a forward slash followed by the shortcode name.

Here are some examples:

[recent-posts count=10 order="oldest first"]
[recent-posts count=5]
[stand_out_and_flash flash_speed=fast] This will flash really fast[/stand_out_and_flash]

Have any questions or tips about Shortcodes? Ask in the comments below.


Don’t be Proud of Who You Are

Nobody’s Perfect

Everyone has things about themselves that they’d like to change, that’s not a bad thing. That’s what makes good people good.

We hear a lot that we should be proud of who we are, that nobody’s perfect and that’s OK. In fact it’s often said that it’s a good thing, we should surround ourselves with people who accept us for who we are.

Load of rubbish, I say.

I say surround yourselves with people who inspire you to be a better person, good friends love you for who you are – great friends love you for what you do and how you do it.

Everyone has dreams

When I was younger, I had lots of dreams. Some were realistic – I wanted to be a chef. Some I knew would only ever be dreams – how could I be a rock star if I couldn’t play music and sing/think/tap my foot at the same time?

Over time, these dreams changed. I realised that what I really wanted, was to make the world a better place. None of this “world peace” or “free Tibet” style better, I’ve never felt qualified for those.

The handy thing about a dream like “make the world a better place” is that is got quite a lot of scope, but it’s quite simple to do. At the end of the day I realised that the best way to do my bit for world peace is to become a better person.

This has the added advantage of being rather handy in my day to day life too.

Change Yourself

So I set about becoming the Sami I wanted to be. This started in Israel, where I knew nobody and could be whoever I wanted – I could ‘try out’ different behaviours, senses of humour, and see which I felt most comfortable in. That’s not to say I wasn’t comfortable before I went, but I was certainly more happy being the post-Israel me.

That was the most important thing I’ve ever learned – that it’s OK to change. You’ll make and lose some friends along the way, but that’s going to happen anyway (because change is OK, remember?).

Ever since then, I’ve thought about who I want to be, and how I want to get there. I’ve become comfortable as myself – step one. Over the past couple of years I’ve become more organised – step two. Next up, to become work-organised (a mysterious concept known as ‘having free time’) and to become healthily-organised. That last one’s a bit of a drag, I’ve never enjoyed exercise when it’s not a by-product of the quickest way to get to the train station.

But it’ll make me a better person, which will (in it’s own tiny way) make the world a better place.

So don’t be proud of who you are, be proud of who you have made yourself – and of who you want to be.


Installing PEAR, PHPUnit and Selenium on Windows

I wrote this for use at work, hence some of the wording. I may re-edit it one day, but it should do the trick. Feel free to leave any comments or questions below.

Installing PHPUnit on Windows is done with PEAR.

Installing PEAR

  1. Create the folder c:\program files\PEAR (This is your PEAR path)
  2. Download go-pear.phar from here: (the one which comes with PHP is usually broken) and save it in your PEAR path.
  3. Open a command prompt and navigate to your new PEAR folder, type php go-pear.phar
  4. Hit Enter to agree to a System install then Enter again to confirm all the settings are good (after checking them, of course).
  5. PEAR is now installed. When we use PEAR to install things, it creates a .bat files in our PEAR directory which can is used to run them. For example by the end of this page PHPUnit.bat will be installed and we can call it from the command line as ‘phpunit’ since windows is clever like that.

To be able to run these commands from outside of the PEAR directory we must add the PEAR directory to our PATH Environment Variable.

  1. Press Windows Key and Pause/Break to load the System screen.
  2. On the left click on Advanced System Settings.
  3. Click on the Advanced tab then “Environment Variables..” button at the bottom.
  4. In the bottom list, “System Variables” find and select the PATH variable and click Edit.
  5. Add a semi colon to the end of the list, and enter the path to your PEAR directory.
  6. Click OK and then OK again.

You will need to open a new CMD window if you already have one open so that you get one with the new environment variables available.

  1. Run “pear upgrade” to test and get the latest version in one handy step.

Installing PHPUnit

Navigate to your PEAR folder and run the following commands

  1. pear config-set auto_discover 1
  2. pear install --alldeps

PEAR creates a file called PHPUnit.bat, which we can run from anywhere because we put our PEAR directory into our PATH variable in the first step. It’s also created a bunch of other files which PHPUnit.bat uses.

You may wish to add C:\Program Files\PEAR\pear\PHPUnit to your php.ini include_path.

Installing Selenium for Integration Testing

Our Integration Tests use Selenium and involve launching a browser and running through things, they take siginificantly longer to run than Unit Tests and you’ll probably not run them every day. They’re useful when you’re changing the back end but not the UI, and will  need updating if you’re making changes to the UI. They also pick up JavaScript errors.

Selenium is a server to which PHPUnit will connect and issue commands, the server then launches a browser and tells it what to do.

  1. You need Java installed, take the Offline version from here:
  2. Download Selenium Server here: Create a folder and save this in c:\program files\selenium\
  3. Right click on your desktop, go to New > Shortcut. For Location simply type “Java”, hit Next and type Selenium Server as the name.
  4. Right click your new shortcut and click Properties, at the end of the “Target” field add -jar “C:\Program Files (x86)\Selenium\selenium-server-standalone-2.23.1.jar”
  5. Running this shortcut should give you a console screen with happy output.
  6. To install the PHPUnit Selenium extensions (to be able to run the Integration Tests) download this file (or check for a later version of PHPUnit_Selenium from here) and merge the PHPUnit_Selenium-1.2.7\PHPUnit\Extentions folder with it’s sister in your PEAR Directory under pear\PHPUnit

Note that we are using Selenium 2, so you must use the Selenium2 classes.

Running the tests

Running the tests should take a matter of seconds and are run from the command line. From within the Squadify code base cd into the tests folder, type “phpunit” and hit enter, you should see something like:

PHPUnit 3.5.15 by Sebastian Bergmann.
.... Errors Come out here ...
Time: 0 seconds, Memory: 5.25Mb

PHPUnit looks for a file called phpunit.xml from which it learns how you with the tests to run. There are command line options for running only sub sets of the tests specified, controlling the output and other cool things.

Writing or Editing Tests

Tests are seperated into TestCases, each TestCase will test one unit. Examples of units are models, pages and forms. Refer to PHPUnit’s documentation for specific details on how to write tests.

It’s very easy to write useless tests, some pointers to avoid doing so:

  • Before writing tests, write a Doc Comment description before the Test Case explaining why the test exists.
  • Write descriptive names for tests, similar to a Doc Comment these force you to think about what and why you’re testing.
  • You’re supposed to write tests that fail, this means running it so you can see it fail, then fix the code to make it pass. It’s important to remember that you must change the code being tested, not the test itself, for this.

For the sake of maintainability put as much care into reusing your test cases code as any other code, without violating these:

  • TestCases should never be dependant on another Test Case, individual tests can be when it makes lots of sense but it should be avoided. The reason is so that (for speed) you run a subset of the tests (hence the name Unit Test).
  • Factory methods (such as getEmptyUser() or getYoungUser()) should be begin with “get” and placed at the bottom of the class. They’re used to make maintaining easier.

More Information

PHP Unit Docs:
Advice on writing tests:



Sat here as Alex fertilised the forest gives me a short break from both our footsteps and our nattering.

I read my Lonely Planet a little before scolding at myself and just listening. Slowly at first, much like your eyes adjusting to the brilliance of the stars the volume slowly increases until the buzzing of bugs is only interrupted by birds chirping and trees rustling – and the odd fool with his MP3 player going, I politely reminded him I’d go to a disco if I wanted music. Turns out he works there, but what does that matter? That’s even more reason he should follow the “No Music” sign – which also forbids a small dictionary’s worth of other things.

Three weeks later, I finished writing this

Tikal is an awesome place, I’d love to have been the first person to write about it because it’s such a cliché. Walking down jungle paths between pyramids, climbing up them to peek at the tops of others poking out the trees.

Yada yada, I loved it but we had a different mission.

Yavin IV

Tikal, you see, was the set for the rebel base in Star Wars IV.  A fact pointed out by Steph (or Paola, or both perhaps) a few weeks earlier during our Star Wars Marathon.

So here we are on a mission to find X-Wings and support the rebel cause. hmm perhaps not sensible words to be using in these politically unstable countries!

Temple IV is the one used, though the noise of the X-Wings must have rustled the feathers of the much animal life (including Toucans!) we saw later that evening as we waited for the sun set.

Heading out as the light rapidly faded every leaf became a terrifying spider. We ducked into a bat cave (not knowing it was one until we reached the end) and finally got back to our hotel – El Jaguar- where we had rented a tent in their garden, and whiled the evening away drinking Micheladas and eating expensive pasta.


The next day we headed to Flores, I’d made a careful list of all the great sounding coffee shops, drinking establishments and food places I wanted to visit and Alex had agreed to a crawl of the lot of them. Unfortunately a truck ran into a power line and the whole of El Petén was out of power, so most places closed down. We whiled away the evening in our hostel, Hostel Las Amigos, and I had the chance to visit the well-worth-the-wait Cool Beans in the morning for breakfast. After breakfast I bought an excellent new book which kept me entertained during the 7 hour bus journey back home.

Passover Abroad (why on earth do I not drink beer?)

While I’m at home, living comfortably at dad’s, Passover abstinence is a relatively simple affair. Matza is in abundance, the kitchen is familiar and the local availability of produce well known.

This is my second Pesach while travelling, the first I was in Israel for the first day. I quickly got out of there because their [Major generalization warning] idea of Passover is to simply make awful bread rise with something other than yeast – but my gripes with the Orthodox are not the point of this post.

The easier food is, the less you think about it. So in England my family tends to avoid bread, marmite, pasta, beer and anything obviously leavened (we are not a family who thinks “Levaning Agents” is kosher just because there’s a Rabbi somewhere who wants carrot cake at the seder). There’s some weird ones, however. Neither Marmite nor beer are leavened and pasta doesn’t even contain yeast. Yet we avoid them, but why?

While abroad I’ve had the opportunity to rethink my Passover adherence and to decide what I should do, what really doesn’t matter and why I do it. I have decided to avoid Bread, Churros and Beer. It’s been several years since I considered Marmite not Kosher for Passover, this year and in this circumstance I have decided that Tortillas are Kosher for Pesach. Not that it matters, since your Judaism is yours and mine is mine, but here’s why.

We do it, because our grandma did

This is the real reason for most Jewish traditions. We come up with all kinds of symbolic reasons and even find biblical references for most traditions, but the real reason we do what we do is because that’s what makes us Jewish. However un-Jewish we may think we are are the very fact we identify as a Jew makes us 100% more Jewish than everyone else.

Making an effort is what makes us Jewish

Identifying as being Jewish can be quite an effort, though doing what it takes to feel like a Jew (and so to identify as a Jew) takes even more effort. Judaism isn’t a religion for the lazy or the shy, most of our traditions are in place to show our Judaism to those around us – from the curly whirlies of the orthodox to the Chanukah Parties decorated with cheap Christmas lights of the liberal. Jews are a proud people with fun traditions that many gentiles enjoy partaking in.

I’m a Jew, yeah!

This week I am not drinking beer or eating bread because that’s what makes me feel Jewish. I could avoid wine that hasn’t been commercially blessed as “Kosher for Passover” but that wouldn’t make me feel any more Jewish than saying a blessing before using the toilet. I don’t entirely eat Matza to remember my ancestors in the desert, because my ponderings of the previous years have lead me to question the historical accuracy I used to take for granted. I eat Matza because I am a Jew, and that’s what Jews do at this time of year. Each and every one of the 13 million other Jews out there may do something different for Passover, but that makes no difference to my Judaism.

A by product of my adherence is the remembering of and opportunity to retell the story of the Jewish people, a story I am very proud to be in the cast for the latest chapter of.

This post was inspired by videos such as the following:

Photo Credits: