Why Laravel?

Fourteen years ago I used a remarkable programming tool that implemented many of Unix’s tools like awk, sed and regular expression parsers in a language called Perl.  It also implemented objects but suffered from a philosophy TIMTOWTDI – “There is more than one way to do it.”

In other words, it allowed you to implement processes that altered data in alternative ways and some of them were more expressive, some more “elegant”.  Programmers could boast “I did that in only three lines of code.  Yes, they are really difficult to read, that is a demonstration of how clever I must be.”

In 2004 I found PHP.  Strange language that it was then, version 3 had just become version 4.  Lots of predefined functions, you could make the mistake of thinking it was a functional language.  Like Perl, it was an interpreter.  It was very fast and generally, there was an effort to increase code clarity.  Then Version 5.x arrived and its Object model allowed Inheritance and abstracts like Java.  It had a method of implementing Polymorphism, but it was “proper” polymorphism.

In the last couple of years, it skipped Version 6.x and PHP Version 7.x boasted double the speed of the stable version 5.6.  It was a trouble free upgrade.

Over the years, various “frameworks” sprung into existence, Zend was the best, most comprehensive and allowed you do use pre-written modules to utilise well written code that was stable to do tasks like making a queue system or talking to a database.  Then I learned Symfony and felt like it was a better expression of good coding methods, with excellent tools to more rapidly create systems.  Symfony was created by one person.  He is French but I found that the documentation and path into it was too many examples and not enough reference.  Sometimes hard to find answers or a path into great app development.

And then I discovered Laravel.  It reached version 4.2 when I started but the Version 5.x series of revisions made it a brilliant framework.  Why?  Because its author, Taylor Ottwell is a brilliant developer who created modules that are very well written and documented.  Because the Laravel documentation was fastidiously prepared, clear and factual.  Because its command line tool, Artisan, had very useful functions.  Because you could create a Laravel project with “laravel new project-name”, just like that.

And it used the Symfony component infrastructure.  So you can easily create a test database from artisan commands, and migrate new features into your database progressively.  Because you can create test data with database seeding and painlessly rebuild your tests.  Because it implemented PHPUnit so Test Driven Development (TDD) was painless.  Because it integrated successfully with socket-based event handlers and the also elegant Javascript framework VueJS to create systems where client browsers could update each other (dashboards which are live updated were now possible).

And now I have focused on Laravel and its supportive cast of helpful documentation, online training, where features and benefits are easily adopted and each version adds useful features.  We are now up to Verison 5.5.

It is a work of artistic genius.

SSL and Google

Google’s ranking algorithm requires that sites are SSL in order to clean up the web.  If you need to have SSL activated, please let us know.

Remote development sites

CMS sites

SSL is generally provided with SSL sites.

Cloud Sites

SSL is provided as an optional extra.  It may increase the annual charge for hosting.

Wix sites

SSL is now available on Wix.  See https://support.wix.com/en/article/turning-ssl-on-or-off-for-your-site

 

 

 

Remote Employment

Remote developers do not have to only work on contract, sometimes better roles are available on a long-term basis, or permanent employment which may be more practical as an arrangement or for career progression than contracting.

Here are a set of terms for permanent remote development I have sent to a prospective employer.  Of course, any such deal must benefit both parties and an employer wants stability and to build a team.  This sometimes works, although our sprint basis for contracting works better, for some developers this may not be appropriate.

The main thing with perm roles is that I would need to be able to maintain my IP in my own projects in my company without difficulty. I do not want to throw away years of work or be obliged to assign it to an employer – so contract roles obviously are better for me. I worked out to successfully replace my daily rate with a livable solution a perm role would have to fulfil certain criteria: £XXk annual, the right to maintain my existing web business development ideas (which are cloud hosted) and clients (a small handful – really not much work – mainly support these days – but only in my own time!)

A two-year employment contract with mutually flexible terms would seem appropriate – when I take on an assignment – I take it very seriously. The opportunity to progress to be able to do significant time in remote development on company projects is also important as my partner has a house in Italy.

The other thing is simply the tech stack has to be progressive for me and my technical path needs to be good for the employer. Laravel and VueJS/Angular and/or GOlang, and/or NodeJS are areas of interest.

It needs to be a proper Agile environment and/or CI. I am happy to introduce modern methodologies to the company or act as a Lead or Second Lead or Solo developer with some dev ops responsibility. Lastly, it needs to be a role that I love or a company that means something to me.

I hope this clarifies. I do believe there are good contract opportunities in the market right now. And you never know – if you specify what you want there may be an opportunity for it.

SPA version of Remote Development

The SPA version of Remote Development shall be the website that this CMS site augments.

Its functions are to sell the concept of remote development as directly as possible and then to present three CTAs:

  • Online Application
  • Manage your own content
  • Sell products and services online

No complexity, no verbiage, no rubbish.  Just sell.

Components

As a VueJS SPA, it is built of components.  These may include any or some of the following:

  • Page zones
    • Header
    • Footer
    • column
  • Containers
    • Introbox
    • panel
    • panel2
    • double panel
  • Functional
    • Menu
    • CTA button
    • Select list
    • Dropdown
    • Action link
  • Decoration
    • Line
    • Colour block
  • Media
    • Image
    • Video

Components need to fit together.  Along panels or held by magnets, or have a tendancy to be on one side, or the top or bottom of a “page”.

A page is a collection of components that scrolls into the view.  components comprise the page.

components do not scroll within a page

components have the following props:

  • width
  • max width
  • height
  • max height
  • background

 

 

 

 

BDD Framework for WordPress

An end-to-end test detects issues whenever there is a major system change. In software development, with every release, a battery of unit tests must pass or business can be lost.

Yes, software testing is difficult. It sounds like it is reactive but it is preventative.

Do you have a defined end-to-end test path you can implement in a code replay – a commercial one is Selenium – you can make it record your “happy path” from home-page to shop order to basket acceptance to payment page, do you have certainty that the new plugin you are testing will not break something you rely on?

The reason for code isolation is to prevent this, but WordPress operates in a global namespace – know that the basics are not broken by a plugin update. If it is a server-side script, it can for instance test certain URLs work (return 200 OK instead of 404 or more to the point when it returns a 500 or a 502 HTTP error in a plugin function you may not know something is failing).

With a “headless-browser” on the server, we can automatically test it is working. It could simply be an app that tests URLs that you can visit, or paths you can get 200 OK responses for – rather than a WordPress plugin that has overhead on every request.

Ideas for development

collectors list

a user-curated list of items with urls that can be scraped for current price

alerts set when prices change

ebay listings created with email confirmation when target prices are attained

users
items
lists
events
messages

a state machine that knows the disposition of each message, event, item cached in shared memory and flushed to disk with delta flags and minimisation