RSSAmplifier

Blog

joeforshaw.com

I'm a Software Developer from Lancashire in the UK. Currently a Director at Servd. In my spare time, I'm a Rails/Laravel/Craft CMS freelancer. I also do a bit of writing, I've got a blog and a new guide to writing better CSS. If you'd like to get in touch, send me an email or a tweet.

joeforshaw.comRSS feed ↗10 posts

Latest posts

Goodbye Residently, Hello Servd

A few weeks ago I sadly handed in my resig­na­tion as Tech Lead at Res­id­ently . It’s been such a fant­ast­ic four years; I feel like I’ve grown so much, in ways I hadn’t anti­cip­ated. I’d like to thank all my fel­low Res­id­ently-ers who have sup­por­ted and ment­ored me dur­ing my time there. But where one door shuts, anoth­er opens, and I’m excited to announce that I’ll be join­ing Ser­vd as…

Practical Principles for Engineering Teams

Through­out my soft­ware engin­eer­ing career, I’ve had the good for­tune to be part of some great teams from which I’ve learnt loads. It’s been great to see what char­ac­ter­ist­ics work and don’t work, what’s hard and what’s easy. The key fea­ture of high-pro­­duct­iv­ity teams that I’ve seen is a good push-and-pull dynam­ic between prag­mat­ism and ideal­ism. Full-throttle prag­mat­ism res­ults…

Spare-time freelancing for the full-time developer

For the past 3 years, I’ve been dip­ping my toe into the shal­low end of freel­ance soft­ware devel­op­ing. In oth­er words, I’ve been work­ing a full-time devel­op­ment job as well as freel­an­cing in my even­ings and week­ends. While the jour­ney has been a bit bumpy at times, it’s been a massively reward­ing exper­i­ence that I feel has pushed me for­ward leaps and bounds. Doing part-time…

Writing SCSS with BEM

Day to day, I read and write a quite a lot of SCSS . I often fol­low BEM ’s guidelines whilst writ­ing it. So nat­ur­ally over time I’ve developed opin­ions on what I think con­cise, clear but also main­tain­able BEM + SCSS looks like. The Ideal Example # So below is how, in an ideal world, I would write SCSS : .block { &__element { &:hover { ... } @media screen and (min-width: 768px) { ... }…

Promoting CSS reuse

Left to their own devices, a dev team of imper­fect com­mu­nic­a­tion (i.e. all dev teams), will often reim­ple­ment the same things over and over. This is a waste of time and money and makes changes to code­bases harder and harder. Writ­ing more emails and send­ing more slack mes­sages to explain all the fea­tures and bug fixes becomes back­ground noise. People stop pay­ing atten­tion to it and…

CSS: The bad bits (and how to avoid them)

The more I use CSS , the more I think it’s an abso­lute wild wild west. It’s mature, ubi­quit­ous, yet lacks basic, com­­mon-sense fea­tures that come as a giv­en in oth­er sim­il­ar tools. After work­ing with sev­er­al mod­ern MVC web apps that have well archi­tec­ted back-ends, extens­ive test cov­er­age and good doc­u­ment­a­tion, I often find the stylesheets to be giant steam­ing piles of…

Message Oriented Programming

Man­aging com­plex­ity with­in an applic­a­tion is one of the key chal­lenges for any soft­ware developer. Cleanly recon­cil­ing new fea­tures with exist­ing archi­tec­tures is some­thing we strive for. After work­ing on a size­able Xamar­in app for the last two years, the single most power­ful tool that I’ve dis­covered is​“Mes­sage Passing”, also known as Mes­sage Ori­ented Pro­gram­ming ( MOP )…

Changing the terminology used in Craft CMS

Com­ing to Craft CMS , one of the first things you notice is it’s inter­est­ing choice of words for describ­ing things in the CMS . Such as… Entries Glob­als Singles Struc­tures Chan­nels A developer can quickly piece togeth­er what they mean by intu­ition or by check­ing the doc­u­ment­a­tion. How­ever for your cli­ents, who may or may not be tech­nic­ally savy, it can be a huge bar­ri­er to…

Xamarin crashing with "System.InvalidOperationException: Implement IBoxedCell on cell renderer"

Came across a crash the oth­er day whilst try­ing to imple­ment a cus­tom View­CellRen­der­er for a Xamar­in iOS app I’m work­ing on: System.InvalidOperationException: Implement IBoxedCell on cell renderer: MyApp.iOS.Controls.MyNativeViewCell, MyAppiOS, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null at…

6 pieces of advice for Computer Science undergraduates (from a fairly recent Computer Science graduate)

tl;dr 6 pieces of advice for CS undergraduates: It’s ok not know­ing what you want to do after university. Apply for place­ments and internships. Get to know as many as of your fel­low CS under­grads as possible. Work on stuff on the side. Keep your fin­ger on the tech pulse. Do SOME studying. Before I star­ted my Com­puter Sci­ence degree at uni­ver­sity, I had barely writ­ten a single line of…