Michaël Perrin

Freelance web developer.
Houston, Texas
Hello,

I am a full-stack web developer specialized in Symfony app development based in Paris, France.
While being mostly focused on the server side development, I am interested in being involved in the whole project design and I am commited to delivering maintainable and optimized web applications.


My skills

Front-end

Development of web user interfaces with JavaScript and React, HTML5, CSS3 / Sass, …


Back-end

Development of web applications with PHP 7 and Symfony 4. PostgreSQL, MySQL, MongoDB, Elasticsearch databases.

Tools

Unit and functional tests with PHPUnit and Behat. Development tools: Git, Docker, …

Latest blog articles

3 ways to get Docker for Mac faster on your Symfony app.

  • Symfony
  • Docker
  • MacOS

Docker for Mac is very slow when developing a Symfony project. This article explains three techniques to make it usable for your development.

Read article

Migrating users to a secure hashing algorithm in Symfony

  • Symfony
  • Security

In this article, we are going to implement a system that will convert MD5 encoded passwords to a secure password algorithm.

Read article

Yarn, the next package manager for JavaScript

  • JavaScript

A quick introduction to Yarn, the package manager that can replace npm.

Read article

Contact

Interested in my services for developing your web application? Don't hesitate to contact me by email or get in touch on social networks.

E-mail
contact@michaelperrin.fr
Social networks

Send a message

<?php

namespace AcmeBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DemoController extends Controller
{
  /**
   * Export to PDF
   *
   * @Route("/pdf", name="acme_demo_pdf")
   */
  public function pdfAction()
  {
      $html = $this->renderView('AppBundle:Demo:pdf.html.twig');

      $filename = sprintf('test-%s.pdf', date('Y-m-d'));

      return new Response(
          $this->get('knp_snappy.pdf')->getOutputFromHtml($html),
          200,
          [
              'Content-Type'        => 'application/pdf',
              'Content-Disposition' => sprintf('attachment; filename="%s"', $filename),
          ]
      );
  }
}