2x Video Playback, Social Sharing, and More

I want to share with you what I have been working on lately in regards to CodeReviewVideos – aside from the video content, of course.

Actually, before I do – on this subject:

I will always put the video content first.

For those that do not know, CodeReviewVideos is not my full time job. By day I am currently a contract Symfony developer here in the UK.

Within the past two weeks my family and I have welcomed our second child into our lives, and we are all still getting used to the changes this has involved.

Also, we moved house. Crazy timing.

And our first child started primary school.

Yep, it’s nuts round here.

Anyway, given all this, as I say, the main focus for me has always been adding more video content to the site. I strongly believe this is the best use of my time – sharing my knowledge to help make learning Symfony easier and faster for you.

This often means I will spend time making videos instead of adding new features to the site. It’s always about trade offs. Hopefully you agree with my prioritisation, but if not – do feel free to leave a comment, or email me, or send a support message, or tweet me… or any other method you like. I love talking with you.

Site Improvements

With all that said, I do have a big outstanding list of “stuff” I want to do with the site.

A big thing is adding site search, and again, this week a member has requested this. I know, I know, I hear you – it sucks that this feature is lacking.

But rather than focus on lack, let’s look at what I have added.

On Monday the final video in the Pagination, Filtering, and Sorting for Twig and your REST API series was added.

This series compliments the earlier Symfony 3 with ReactJS and Angular series, building on the same foundations.

Future series will involve React more heavily. I am still unsure about supporting Angular 2, however, as I am really not a fan. If you’re pursuing Angular 2 do please let me know. If it is popular I will find a way.

Video Speed

You can now change the video playback speed on any video between 0.5x, 1x, 1.5x, and 2x.

I have had feedback to say I speak too quickly at the best of times, so 2x may be pushing it.

Hopefully you find this useful if wanting to rapidly digest the more talk-y sections.

I have tested this on desktop and iPad, but have struggled to get it working on mobile. Please leave feedback if you are having any problems.

Social Sharing

I have added social sharing buttons to the bottom of each course and video page.

I would be incredibly grateful to you if you would share any content you have found / find useful with your friends and followers.

It is my aim to make this site as useful as possible to my fellow developers. Many of these video topics have come about after struggling long and hard to find a working solution. If I can help you or your colleagues in any way, please spread the word.

It is truly humbling to have helped so many like-minded developers around the world, and I hope to continue doing so for many years to come.

Subscription Improvements

As mentioned above, I am aware some parts of the site are in need of improvement. Today I have added the ability to see your current subscription details, and your next billing date.

Honestly, these things should already be in place. It pains me that they are not. Hopefully from reading the above you can understand why.

Whats Next

Aside from continuing to improve the site as a whole, the two major improvements that are forthcoming are:

  1. Site search – I am working to integrate Elasticsearch into my back end.
  2. Mailing List – I rarely send anything out to the mailing list. I know I need to get better at this. I want better content, and a better schedule. It’s all on me to improve this.
  3. User Management via REST API – I am completely re-writing the back end of CodeReviewVideos currently, switching from Twig to a RESTful API using FOS REST Bundle. It has been a long time coming, but will effectively be the version 2.0 of CodeReviewVideos.

I can’t wait.

Video Content

Please, please, please – let me know what you want to see on the site. I have my plans for what I want to cover, but it’s more importantly about what you want to see.

I can guess all day long, but if you tell me, everyone wins.

Thanks,

Chris

Symfony 3 Tutorials List

I’ve been asked a few times now if there is a Symfony 3 track available yet at Code Review Videos?

The answer is: yes!

It’s a work-in-progress, but there are already plenty of videos available.

Did you know? There are over 250 videos over 38 courses available right now.

I have been meaning to put together a more formally structured list, so here we go:

Symfony 3 Tutorials List

I’ll keep this list updated as new courses become available.

1. Introduction to Symfony 3

This is a beginner friendly Symfony 3 tutorial series.

I figured the best way to learn a new topic – something which can be quite boring and dry if you just learn the theory stuff – would be to immediately build something cool.

This course covers a lot of the fundamentals by building a reproduction of your GitHub profile.

By the end of this series you will have hands-on experience with:

  • Symfony 3
  • Routing
  • Twig Templates
  • Bootstrap 3
  • Symfony Services
  • Guzzle / RESTful API interactivity with GitHub

You don’t need a GitHub profile to take part in this course. You can use anyone’s profile. No excuses! Get learning, and welcome to Symfony 3 🙂

https://www.codereviewvideos.com/course/beginner-friendly-hands-on-symfony-3-tutorial

2. Doctrine

Doctrine allows you to create, read, update, and delete records from your database.

This is pretty much essential knowledge for any developer who needs to get things done.

Doctrine has a ton of unusual terms like hydration, persistence, fixtures, migrations, annotations… and without much context, it can be really confusing at first to figure out what they all mean.

We’ll go through an example of scraping Reddit’s PHP subreddit to explain a large number of these terms, and also in the process start relating entities together, and optimising our queries.

We also cover Doctrine’s Query Builder, and Doctrine Query Language (DQL), and discuss when might be appropriate to use one or the other.

This beginner friendly short course is all about demystifying Doctrine, and getting your started – quickly – with some hands on exercises to cover the basics of working with your database in Symfony 3.

https://www.codereviewvideos.com/course/doctrine-databasics

3. Forms

Symfony’s form component is incredibly versatile.

However, initially it can be a source of confusion.

In this course we cover the fundamentals of using the form – concepts which if you do not know or understand will make life much more difficult for you when you get to the more complex form types that Symfony can offer.

We start with a basic contact form, and then move on to adding and editing records in our database using Doctrine entities.

From there we will cover:

  • form styling – particularly integration with Bootstrap 3
  • form customisation
  • form fragments
  • data validation

And then on to a selection of examples which cover how to use Symfony’s form in a number of more realistic / real world ways.

https://codereviewvideos.com/course/beginner-s-guide-to-symfony-3-forms

Symfony 3 Intermediate Tutorials List

These tutorials are aimed at Symfony developers who are comfortable with the basics of a Symfony project.

It doesn’t matter whether that is Symfony 2, or Symfony 3. The syntax differences between Symfony2 and Symfony3 are not too difficult to figure out for any developer with a project or two under their belt.

If you are new to Symfony, I’d advise not starting with projects in this list to begin with. Make a simpler site, get a feel for the framework, then tackle these bigger projects without losing all your hair in the process.

Symfony 3 RESTful API

Probably the most important topic currently facing back-end Symfony developers is – how do I present my code via a RESTful API?

In Symfony there are a number of ways to solve this problem. In this series I show you one way using:

  • FOSRESTBundle
  • Testing using Behat 3 and PHPSpec 2
  • File Uploading using Flysystem
  • User management with FOSUserBundle
  • Handling login with LexikJWTBundle

This allows your front end developer(s) to interact with your Symfony 3 application using React, Ember, AngularJS, or any other technology your project needs.

https://codereviewvideos.com/course/symfony-3-rest-tutorial

New Courses

I have a long list of forthcoming courses, plenty to keep me going for the foreseeable future.

As a site member, you are more than welcome to submit course ideas and suggestions, and ask questions about video content.

What might not be immediately obvious is that all the previous courses on Symfony 2 topics here at Code Review Videos are in the most part, directly transferable to Symfony 3. There really wasn’t that huge of a change between Symfony 2 and Symfony 3. Not like when we went from Symfony 1 to Symfony 2 anyway.

I really hope you find these courses, and the rest of the content here to be extremely useful.

Don’t struggle learning all this stuff on your own. Let me help you learn Symfony faster and easier.

Site membership is $24.97 a month, or $49.97 a month for a team.

4K Programming – Is It Worth It?

For the last few months I have been wanting to switch to 4K for my development. I have been using three screens for the longest time, and I definitely find my personal productivity gets a sizable boost when using >1 screens. I figured if I could replace my main screen with a 4K screen, productivity could only increase further.

And I have thankfully been proven correct. But it has been far from plain sailing.

I opted for the Dell P2715Q. I’ve had Dell monitors for as long back as I can remember.

I’ve since mentioned this to a few people (techies), and all of them slated Dell…

As a quick tl;dr, if all you care about is some pictures, there are some desktop shots of PHPStorm at 4K at the end of this post.

Pre 4k

My first purchase was my trusty old 2408WFP, a 24″ display that could pump out a great-for-it’s-time 1920×1200. It’s built like an Challenger tank, and has been incredibly reliable over the years – whether for coding or for playing hours of Battlefield, it served, and continues to serve admirably.

For the longest while, that 24″ Dell screen was my daily driver. A real workhorse. But technology moves on, and about 3 years ago I replaced it with another Dell screen – a 27″ U2713HMt. The extra pixels were what convinced me to upgrade, bumping my main display up to 2560×1440.

Sadly though, the quality of the U2713HMt always felt lesser than the old 24″. Rather than being solid like a tank, it felt flimsy and dare I say, “cheap”, from the moment I took it out of the box. Unsurprisingly, it has suffered from a small cluster of dead pixels – thankfully down in the bottom left where I rarely see them, but still, disappointing.

All the same, the increased resolution had kept me going for a good long while, and overall I have been pleased with the U2713HMt, but never delighted.

However, the pull of extra pixels is stronger than a star destroyer’s tractor beam. And sure enough, I ended up dead set on upgrading to 4K. Mmmmm 3840×2160. All that extra desktop.

Who Needs a Fancy Graphics Card?

I did a small amount of research – mistake #1. I wanted to know if my current graphics card would be sufficient to power the P2715Q up to 3840×2160 @ 60hz. My graphics card being an aging ATI Radeon HD6950, I was dubious.

I specifically asked the Dell sales support guy whether I could get 3840×2160 @ 60hz, and he assured me that yes, a HDMI cable would get my up to this resolution at 60hz.

Sadly, that is not true. HDMI will get you 3840×2160 but only at 30hz. Trust me when I say, 30hz at that resolution is unusable. The mouse cursor jerks around the screen like no ones business. It sucks.

It should have been pretty telling that HDMI was a no-go as Dell don’t bother to include a HDMI cable. They instead send a mini displayport to displayport cable which, unfortunately, my old HD6950 card couldn’t even use. Awesome.

Think: Linux First, Then Install Windows

Ubuntu has been my day-to-day OS now for at least a year. ATI cards and Linux are notoriously unhappy bed fellows, so I figured I’d keep the screen and treat myself to a new PC with an NVidia card instead.

A quick look at the NVidia website revealed that of course, only their top end GTX series would support 4K. So I plumped for an Asus Strix 970 GTX.

Everything arrived from Amazon, and after a few false starts (faulty mobo, faulty PSU) I was up and running.

The motherboard could accept a single m.2 SSD hard drive, so I opted for one of those, and a second regular old Kingston SSD Now drive to dual boot with Windows – hey, a GTX 970 should get to do a little gaming to flex it’s muscles, right?

Alas, I’d ordered an mSATA instead of an m.2 drive (schoolboy error), so had to wait a little while longer to get my drives in and configured. I already knew I’d be using the Kingston drive for Windows, so went ahead and installed Windows first rather than Linux. Coding could continue on the macbook in the mean time.

m.2 Excursion

As a side note, it’s worth pointing out that an m.2 drive – on the Asus z97 k at least – will consume two of the available SATA ports on your motherboard.

This means that whilst the board comes with 6 SATA ports, if you use the m.2 slot, you will lose ports 5 and 6. You can still plug drives into them, but it’s an either / or situation.

If you have SATA ports 5, 6, or both 5 and 6 in use, and you plug in the m.2 drive, drives on both SATA ports 5 and 6 will ‘disappear’. You can switch this in the bios, but you cannot have both the m.2 socked and SATA 5&6 available concurrently. This sucks. I have had to buy yet more hardware to get around this problem.

Thankfully the m.2 drive arrived and after a bit of cursing (the screw size was tiny, and I didn’t have a tiny screwdriver handy), I got Ubuntu installed on the drive and we was a-rockin’.

Gaming First

I booted without networking (important, as you will see shortly), and sure enough, Windows loaded up nicely after about 15 minutes in glorious 3840×2160 @ 60hz. Momentarily I panicked as everything was absolutely tiny. Still, it all looked great, and an hour later I had Far Cry 4 installed and running at Ultra quality in 4K. Amazing.

There have been a few moments of stuttering – after all, this is only a GTX970, not the more powerful GTX980 or Titan models. These moments have been few and far between (maybe 2 or 3 times in 16+ hours of gaming), and were only visible when flying about the map and looking behind me.

Overall, gaming has been fantastic. However, I have only played one game 🙂

P2715Q Stuck in Power Save Mode

As I mentioned, I had originally ordered an mSATA drive instead of the required m.2 drive.

My replacement m.2 SSD would only be delivered in 4-5 working days. In the mean time, two days went by and gaming was glorious.

Then, on the third day, I went for a cheeky late night play on Far Cry and wtf, no output was displaying on the P2715Q. Whatever I tried, it would think about it for a second, then go in to Power Save Mode, and that was that.

Amazing.

After a long back and forth with Dell technical support, they agreed to send me out a replacement screen. The guy on the phone kept telling me to try HDMI – as that gives better connectivity. I explained about the 30hz / 60hz issue and this was apparently news to him.

One of his tips was to do a factory reset on the screen. This is likely good advice, but herein lies a hardware level bug. You can’t get to any other options than ‘input select’ if you don’t have a working input. Seems a bit daft.

Thankfully I had a spare HDMI cable. I tried this and could get to Windows in 30hz. All ‘good’. I tried Bios updates, Video card firmware updates, even tried a Windows update – but apparently Windows 10 updates don’t work like the good old days.

I even went and bought a ‘hi speed’ HDMI cable, which still only worked at 30hz. I dun’ got suckered in.

I’d figured it was just the screen playing up. But the replacement display arrives and lo-and-behold, exact same issue. What?

By now this PC had had a replaced PSU, Mobo, and monitor. The number of potential faulty parts was growing shorter.

As it transpires, this is a very well known issue with the NVidia GTX 9xx range. Maybe it’s a driver issue, maybe it’s firmware. Either way, the bugger will not boot on display port. It just reverts to that damn power save mode message. But thankfully, I have a ‘fix’.

My P2715Q Power Save Mode Fix

Now, this isn’t a true fix. It’s a workaround. But it does work reliably.

First, the likely culprit is your NVidia card. Boo, hiss. Should have bought ATI… etc.

Here’s what I did.

First, plug in a HDMI cable, and your Display Port cable. Plug the HDMI cable into both the monitor and your graphics card.

Next, be sure to update your motherboard bios, and your video card firmware. I followed Google instructions for this, it wasn’t that hard at all.

Then, reboot and go to the bios in HDMI mode.

Once in the bios, figure out which key combination exits the bios and starts the reboot process. Remember this process. On mine it is F10, and return.

Whilst the PC is still powered on, pull out the HDMI cable from your gfx card, leaving only the display port cable plugged in.

Then switch the monitor to display port mode from the buttons on the screen itself.

Finally, do the reboot key press sequence (F10, return).

The monitor should now be working in display port mode – giving 3840×2160 @ 60hz.

I mean, this is exactly the sort of thing I expect to have to do after spending a combined £700+ on two pieces of cutting edge hardware. Being a paid beta tester is my cup of tea.

This should work now until you have to power down. After you power down, unfortunately, the procedure will need repeating the next time you want to use your expensive new computer. Awesome.

Continued Problems

If you still have problems with getting your mini display port to work, as best as I can tell, the problem is with the NVidia GTX range as a whole. There are threads of 40+ pages on the official NVidia forums of owners complaining about this very issue going back to early 2014.

Linus makes his feelings known
Linus makes his feelings known

It seems NVidia really couldn’t care less about solving this problem, at this current point in time.

Fortunately I had my old Dell 2408WFP which has come to my rescue, again… somewhat.

I decided to make like a stockbroker and flip the 2408WFP into portrait mode. I opted to remain with the old DVI cable, which the GTX970 will automatically assume is the main display, if the port is in use.

This forces the P2715Q into second place.

Amazingly, this actually helps the display port issue, as now I seem to have hit some sort of reliable setup. I still have to power on, hit the bios, then exit the bios and only then start up ‘normally’. But 9 out of 10 times, the display port issue is resolved.

For that remaining time, the best solution is to simply boot into the OS, log in, then pull the power out of the P2715Q, wait 10 seconds, then plug the power cable back in and it suddenly starts working.

I mean, talk about a garbage solution, but at least it is reliable.

There’s a certain degree of neck strain involved, as most of the time I miss the bios prompt and end up booting into the OS with the 2408WFP in landscape mode, but physically tiled into portrait mode :/

Early Adoption

So, here we are. Ubuntu, 3840×2160 @ 60hz, it is marvellous.

In terms of development real estate, as best I can tell, the only way this could get better is if you were on a 5K iMac. But then you’d have a bastardised mobile GPU and no potential to play games 🙂

Would I recommend it? Yes!

Are there lots of bugs? Oh heck, yes! Thankfully the software side of the equation seems up to date. The hardware, not so much.

NVidia’s driver works well in Ubuntu.

The text size is really small, but much like when I got my retina macbook, the initial change over is not so much fun, but after a few days of use, my eyes have adjusted to the smaller text size and I can appreciate it.

If I really need the extra big text, I simply drag the document / browser window / whatever on to the second screen which is at more readable resolution.

If you have poor eye sight, or easily get eye strain, then you may want to head to a local PC store and see it for yourself before taking the plunge.

Whether you’re gaming, making music / doing audio or video production, or coding, 4k really is nice, but be warned, it’s not a bug free ride. Not yet, anyway.

PHPStorm at 4K Desktop Pictures

I have only just got my dev environment back up and running – so haven’t had time yet to download all the vendor files (hence the missing dependencies in the screenshots below).

PHPStorm running full screen on Ubuntu 15.04 at 4k
PHPStorm running full screen on Ubuntu 15.04 at 4k

This gives some idea of the vastness of the screen size at 4k.

I don’t use the IDE like this – but I wanted to see this picture for myself before purchasing, and even went into the “local” (read: 45 miles away) Mac store to demo PHPStorm on their retina screen. Alas, I failed on that excursion. So here it is, in 4k glory.

I do prefer the default OSX font for code…

PHPStorm at 4k with other apps - plenty of screen real estate
PHPStorm at 4k with other apps – plenty of screen real estate

This is a little more real world.

I actually don’t work like this though. I keep my browser open on my 2408 in portrait mode. It works really well – I’m typing this on there right now.

Still, there’s plenty of room to have two full size code panes open, and the file tree without needing to scroll on the left.

If you’re thinking the text is tiny, you are right. It really is, and takes a bit of adjusting – much like with a retina Macbook at full resolution.

Ubuntu unity desktop at 4k
Ubuntu unity desktop at 4k

Lastly, a picture of the default Ubuntu 15.04 desktop with nothing on it, at 4k.

Update: 10th June 2016

This one kinda blew me away:

win-7-in-virtual-machine-1600-1200-at-4k

PHPNW15 Conference Review

phpnw15-logoThose of you on the mailing list, or following along on Twitter will know that over the weekend of the 3rd & 4th October, I was out and about at PHP North West 2015.

Thankfully, this year we had a bit of a heatwave so being up and about early on both the Saturday and Sunday was not the icy frost-fest that last year entailed.

I booked my ticket as an early blind bird this year – on the day they were announced if I recall correctly – and I was still ticket #49. That should give you an idea how popular this conference is.

And there is the un-con to get too, the line-up for which isn’t announced until the day.

A quick note on the venue – super easy to find, a £2 all-day car park (each day) right next door, and plenty of space for however many delegates there were (300+? 425!). Same venue as last year, hope it’s the same next year.

Keynote – Stealing People Lessons from Artificial Intelligence

Saturday kicked off to a jam packed room with the keynote from Meri Williams.

I was left feeling really happy after this talk.

There was a slide on Motivation. I didn’t get a shot of it unfortunately, so here’s a screencap from Meri’s website:

meri-williams-phpnw15-motivation

I answered YES to each of these questions for both Code Review Videos, and for my client work. Awesome.

There was also this slide:

meri williams clue skills matrix

Finding people in the top right has enabled me to grow both personally and to help grow Code Review this year. For that I am extremely grateful.

What To Expect from PHP7

After the coffee break, I returned to the main hall to catch Lorna Jane’s talk on PHP7.

I can’t photo, but:

lorna jane - php7 is coming and it is fabulous

After listening to Lorna’s talk, I too am convinced.

I must confess to having not yet had a chance to play with PHP7. I have heard it is lovely and fast, but in truth, I always found PHP5 to be pretty fast compared to doing the same things manually… especially if you remove all the layers of ‘stuff’ that we pile on top of it.

The speed improvements do sound nice, but the syntax improvements are the bigger news for me. Particularly the null coalesce operator. A crazy name for a very useful concept. Also, Googling for this has to be easier than the first time I Googled for what turned out to be the ternary operator (‘question mark colon php’?)

A quick code sample:

// $a is not set
$b = 16;

echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16

(Full credit – Lorna Jane)

Lorna has a write up on this very topic so be sure to check the credit above from the full article.

A First Look at ZF3

This was a very enjoyable and informative talk by Rob Allen, who I had previously managed to watch on YouTube regarding PSR7 (audio ain’t great unfortunately, so watch with decent headphones).

I am really interested in what the future holds for Zend Framework.

The early part of this talk was encouraging – ZF3 has got it’s act together with regards to project maintainability. Like it’s competitors, ZF3 is now much more modular and (properly) made up of composable components managed with Composer 😉

rob allen a first look at zf3

If you are a mailing list subscriber you won’t be so surprised to hear I was very much enthralled by the section on Middleware.

rob allen zf3 middleware

I genuinely think this is going to be biggest thing in PHP – except for PHP7 – this year. Ok, well… there’s not much left of 2015, but 2016 is definitely definitely going to be a big year for Middleware in PHP.

rob allen zf3 middleware detail

I also really liked what I heard about how ZF3 will enable the construction of “specific builds” – a ZF3 build for web apps (MVC), a ZF3 build for APIs, etc. That sounds awesome.

Middleware sounds like it’s going to be huge for ZF, and they are even porting integration into ZF 1.13.

Lunch Break

The food was really nice. However, hot and spicy chilli chicken with no napkins?

Come on now.

Hitting the Uncon

The uncon unfortunately didn’t have a time sheet outside the door. Instead, attendees were asked to head over to the Joind.in page to figure out what was on when. These talks were mingled in to the main track talks which was a bit messy and harder to follow than it need have been.

Please put out a proper written list in the future if possible.

The PHP Framework Engine (PPI)

The first talk I caught was by Paul Dragoonis, introducing a PHP Framework that’s not a framework – PPI.

Now, PPI is a bit of a tricky name to compete for as it’s a very spammy term and a thoroughly dodgy industry. Paul’s framework that’s not a framework had had the name before PPI became a thing, so he was sticking with it.

From what I gathered, Paul and the PPI Framework are pushing boundaries – perhaps two to three years ahead of where the mainstream frameworks are.

His idea is that you can combine all the best bits of each framework – using Aura for Routing, Symfony and Doctrine for entity management, and Laravel for templating.

I can’t say I fully understood how this all worked together, but the concept is certainly fascinating.

How to Migrate Anything with DDD

I really liked Gabriel’s presentation. He was speaking about Baleen Migrations, and managed to get a tech demo in there (that all worked flawlessly).

Gabriel Somoza How to Migrate Anything with DDD

There’s only so much that can be covered within 25 minutes, and unfortunately the architectural side of the project (the DDD part of the talk title) wasn’t covered.

As a tool however, this looks really, really nice.

Also, after having Googled for Baleen, it turns out that Baleen is a type of Whale – hence the name for a migrations library. Nice touch.

Driving Design through Examples

Ciaran McNulty’s talk on BDD and DDD with Behat and PHPSpec was perhaps the most personally relevant talk I saw all day.

The big win for me – I have been doing DDD and BDD right!

This is great as I’ve done an absolute ton of reading on BDD – how to best write specs, how to improve the specs by asking questions, and really drilling down into the detail of a problem by asking questions.

However, I still learned an absolute ton. Ciaran and the rest of the Inviqa team are – as far as I am aware – the foremost experts on this subject in the UK, and any opportunity to learn from them and improve my own processes and development is always extremely welcome.

Unfortunately, the pictures I took of this talk are amongst the worst of them all – which is saying something as the rest are pretty bad to begin with.

cairan mcnulty ddd and bdd with phpspec and behat

If you squint hard enough, what you can see here is named constructors in action. Very cool.

Ciaran’s proper slides are here.

Thoroughly enjoyed this talk!

Hello, PSR-7

A small confession. I have listened to (almost) every episode of That Podcast, so stole in extra early to this one to say hello in person to Beau Simensen. Amazingly, Dave then walked in and I got to meet him too.

And then, because I was on the front row with all the A-Listers, I got to meet Rob Allen and Lorna Jane – speakers from earlier in the day, for those not paying attention – so this was all kinds of awesome.

Everyone was super nice and that was a great way to (almost) end the day.

Beau’s talk was very interesting. Being dedicated to PSR7, and with a longer time slot than I had seen of Rob Allen’s PSR7 talk mentioned earlier (the YouTube link), I got a better / more in-depth understanding of the topic.

I came out of this talk convinced that PHP is, on some levels at least, going to be able to offer somewhat similar functionalities to something like Express JS in the not too distant future.

Hometime

That was it for me for the first day. I didn’t stay around for the closing remarks of day 1 as I had to be home to take over family duties.

In my absence, I somehow managed to win a book:

Agile Project Management and Scrum

I’m not sure who I won that from, or why, but thank you all the same.

Sunday

I arrived on the Sunday morning in good time and found the halls largely empty. Yikes. However, I need not have worried as it seemed everyone had skipped the coffee and pastries areas and headed straight for the three conference rooms.

Getting things done with ElasticSearch

I learned a ton in this talk.

I’ve used Solr for a previous project and have been wanting to properly dive into Elasticsearch for ages now.

The main thing stopping me from doing so is the seemingly over large depth of knowledge required just to get started.

elastic search in action talk

After listening to Thijs Feryn break down the overarching concepts, I did feel a little more at ease.

There’s so much cool stuff in there. Stuff that can really add value to a wide range of projects:

elastic search stuff i didnt know

Elasticsearch – or search in general – has to be the next thing to add at Code Review. It shames me that it isn’t there yet.

Ways To Measure Your ORM’s Cost

Stuart Herbert is clearly not only just a very smart and knowledgeable guy, but you can tell he has been there and earned his stripes first hand.

All the problems and solutions discussed in this talk were aimed at growing, through to larger businesses. It’s nice to have tons of traffic, but that brings with it a new set of problems.

Suddenly your site is slow. Is the solution to add more servers? Possibly, but that brings with it a new set of headaches. Those early short cuts you took with straight-outta-the-manual Doctrine :

$products = $repository->findByPrice(19.99);

What’s that really doing behind the scenes now that you have 40 other entities all hanging off it?

Those sorts of questions.

I have done some videos on this topic as it’s really not that much harder to do it right first time.

I knew from the first few slides that I was going to enjoy this one:

ways to measure an orm cost

This chart was really eye opening. Pretty obvious really when it’s pointed out to you.

Your laptop’s hard drive is nothing like your servers. You definitely need to be measuring the real world.

why dev machines lie

Great talk, with tons of take away points and a really open presenting style that brought out some interesting and relevant audience participation. 

Closing Keynote: Developers are just like humans

I ended up in the overflow room for this. That’s a nice thing in a way – proves that Sunday was very popular, just as last year.

closing keynote with skoop

I found this one a nice way to end the conference.

developers are just like humans skoop

 

Swaggles

I would have been happy just getting the Behat stickers.

The Sky bag came with a ton of freebies. Thanks, though the chocolate bar tasted like cooking chocolate… yikes. Feel free to feed that back to Rupert.

That little grey and green thing in the top centre? It’s a phone stand. No one seemed to know. I had to ask. If a conference full of devs don’t have a clue, I’d say someone at Merch HQ needs to go on a UX course.

swag from phpnw15

And so that was that.

Now I just need a weekend to recover.

Au Revoir Official Symfony Mailing List

goodbye-symfony-mailing-listOn the 24th June 2015 the official Symfony 2 mailing list became read only.

The reason for doing this is to reduce the many different ways of finding support for Symfony related problems. This sounds a little nutty – Fabien / Sensio Labs want to reduce the ways of finding help for Symfony projects?

Prior to this we had the mailing list, IRC, the official forums, not to mention the plethora of blog posts out there in Google land. This variety is both good and bad.

Firstly, the mailing list could be a little spammy. As with any public internet forum, inevitably it attracted recruitment types advertising garbage – I’m sure with not a great deal of effort I could dig out that guy who constantly spammed his .net positions to the list for a while. I can’t imagine his success percentage was incredibly high at the end of that campaign.

Having moderated (admittedly small) public forums in the past myself, I can fully appreciate the amount of behind the scenes work that must have gone in to keeping the list as clean as it was.

Secondly, the list wasn’t entirely beginner friendly. As a casual reader you would have believed a certain level of Symfony knowledge were required just to take part. That wasn’t actually the case but few were the basic questions on that list.

And lastly in terms of my gripes was the delay in posting and getting a reply. I believe all the posts were moderated towards the end, so even seeing your post show on the list took a while. Then others had to see it. I think most were doing what I did – getting the daily digest. This then relied on someone reading the digest and using the clunky Google interface to post your reply, which would also throw in your email address for all to see :/

So Long Symfony Mailing List, Hello StackOverflow

The new guidelines are to use Stack Overflow as the preferred and recommended medium for all Symfony related support questions.

Personally, I don’t have a Stack Overflow account. I know, burn me at the stake, right? Maybe it’s time to sign up and start collecting gold stars 😉

We – the community – are also requested to use the tag of Symfony instead of Symfony2 when tagging our posts.

This is interesting to me. My experience of searching for help on Symfony issues over the past few years has been always that Symfony throws up stuff for Symfony 1.x, whereas Symfony2 / Symfony 2 kinda guaranteed a result for the current version.

Ultimately I think moving to Stack Overflow is a good move. From my own business-y perspective I don’t like the idea of putting all my eggs in someone else’s basket, but for a community project like Symfony it’s probably the better of the two options (doing it vs keeping it as it was).

Stack Overflow has the infrastructure, moderation team, and user base to make this better all-round for the community.

Lastly, IRC isn’t affected by this. I’m not the hugest fan of IRC (I find it too distracting having a full on chat room running in the background), but some of the very best support I have received has come from the IRC channel.

Symfony is such a fantastic product and community I’m really glad to see it progressing forwards with no sign of slowing down any time soon. I just couldn’t let a mailing list I’ve been a subscriber / contributor too for the last two or more years go without saying goodbye.

(image credit: Steve Johnson – US Mail)