Miguel García López, Software Developer in Murcia, Spain
Miguel García López

Software Developer in Murcia, Spain

Member since January 2, 2017
Miguel is a highly motivated, passionate software engineer who helps digital products and services come to life. He has gained broad experience over the years, working on embedded systems, back-end services, and modern web and mobile applications. He is a friendly and effective communicator who thrives in a distributed team, dedicated to improving people's lives and businesses through technology.
Miguel is now available for hire

Portfolio

Experience

Location

Murcia, Spain

Availability

Part-time

Preferred Environment

Terminal, Linux, Git, IntelliJ IDEA, NetBeans

The most amazing...

...thing I've built is a multisite networked control and monitoring system for transportation systems running at international airports.

Employment

  • Systems Lead

    2014 - 2016
    DisplayNote Technologies
    • Architected, developed, and administered all back-end networked services consumed by company products, staff, and end-users.
    • Built a real-time event-driven server for tunnelling and multicasting text and binary data throughout LANs transparently.
    • Integrated an open source XMPP server into a Java EE deployments ecosystem.
    • Wrote several client-side libraries for Android consuming REST APIs.
    • Designed and implemented many REST APIs, administrative tools, and onboarding websites for end-users.
    • Built a push notification service for mobile devices and browsers for messaging and online collaboration scenarios.
    Technologies: NGINX, SQL, JOOQ, Android, XMPP, Linux, Azure, DeltaSpike, Hazelcast, MySQL, Hibernate, Vert.x, WildFly, Java EE
  • Linux Systems Specialist

    2014 - 2014
    IDSens
    • Wrote a wifi and bluetooth scanning system using Python and SQLite used to track anonymous user traffic over large commercial areas.
    • Prepared scripts and tools for an autonomous, boxed Raspbian-based embedded Raspberry Pi product.
    Technologies: SQLite, Raspberry Pi, Python
  • CTO

    2013 - 2014
    Voozer Technologies
    • Built a real-time Web Sockets-based VoIP calls broker on top of Asterisk and its management API.
    • Led the development of a product built on top of NLP tools and VoIP calls for users to interact with a SW appointment manager via their voice using common language.
    • Wrote SW components interacting with Loquendo libraries for text-to-speech and audio recognition.
    • Created an end-users facing website for customers to handle their auto-appointed services and calendar.
    Technologies: Weld (Java Servlet), SQL, JOOQ, WebSockets, Asterisk, PostgreSQL, Hibernate, Java
  • Senior SW Engineer

    2012 - 2013
    Mubiquo
    • Build a custom cloud-based content management system to manage translations, images, promotions, and all static assets for mobile applications.
    • Wrote an Android application featuring a design-rich picture agenda for newborns.
    • Designed processes and tooling to move from "spreadsheet hell" to mostly automated software managed procedures so that assets get more efficiently managed.
    • Wrote a code generation tool to output Objective-C and Java parsers for documents based on a JSON schema-like model.
    Technologies: Android, Amazon, MySQL, GWT, Java EE
  • Chief Software Officer

    2011 - 2012
    Soltec Trackers
    • Wrote C system code and mathematic equations for the embedded micro-processor controlling solar tracking for photovoltaic panels.
    • Built an Android application for aiding in solar tracker installation and configuration.
    • Architected and implemented cloud-based services and the website in charge of collecting information from trackers and management.
    Technologies: Amazon, MySQL, Java EE, Embedded Systems, C
  • Technical Manager

    2007 - 2011
    Envitel
    • Led a technical team of four developers.
    • Designed and led the implementation of a networked control and monitoring center using video and real-time signals from a numerous set of heterogeneous industrial equipment.
    • Built an embedded in-vehicle video recording and transmitting console for police forces.
    • Build and deployed on-site a recollecting and exploitation system aimed at counting people moving around in Metro stations using ceiling cameras.
    Technologies: NetBeans, Industrial Protocols, Swing, Python, Java EE, Java, GWT, MySQL, PostgreSQL, C, Linux
  • Software Engineer

    2000 - 2007
    Visual Tools
    • Wrote several Linux kernel modules interfacing with custom company hardware components.
    • Built several Python bindings for in-house C software libraries.
    • Participated in several International R&D projects funded by the European Union on fields of real-time systems, software components, and QoS.
    • Wrote a Python CGI-based web interface for embedded video recording and transmitting units.
    • Built several Python system level general-purpose modules for x86-based embedded devices.
    • Wrote several C system libraries and programs for low-level operations and networked communications.
    Technologies: C, Java, HTML, Python, Embedded Systems, Bash, Linux
  • Intern

    1999 - 1999
    Construcciones Aeronáuticas, Space Division
    • Wrote simulation code in Ada to evaluate a number of software design and development tools for real-time systems.
    Technologies: Ada
  • Developer

    1999 - 1999
    Motorola Berlin GmbH. Radio Division
    • Implemented a LabVIEW test bench software manager for TETRA radio devices using an MS Access-based front-end for data exploitation.
    Technologies: Microsoft Access, Visual Basic, SQL, LabVIEW

Experience

  • Back-end Systems Training Course

    As par of my eventual collaborations as a trainer, which I enjoy a lot, I implemented a two-week-long course introducing back-end systems programming to students taking a broader course on modern development technologies.

    I started by introducing concepts on (SQL and noSQL) databases, dissecting the HTTP protocol, and presenting the REST paradigm for building APIs, auth* and security issues, etc.

    A practical section was comprised of modeling and developing a simple secured HTTP REST API talking to a database, using the Java EE stack.

  • JPA Training Course
    https://github.com/MiguelGL/jpa-samples-demo

    I have occasionally done trainings on several technologies and frameworks.

    This repository holds the code samples I have used for a two-day training course on JPA and Hibernate, and working with databases from Java in general.

    It features:
    - Maven based projects handling dependencies, specific-purpose plugins, and profiles.
    - Many JPA mapping samples.
    - Generation of DB schema from JPA annotated entities.
    - Lombok-powered.
    - Liquibase build and runtime integration to handle DB schema migrations.
    - Generation of metamodels as part of the build phase.
    - Usage of QueryDSL as a friendlier alternative to JPA Criteria for typesafe queries.
    - jOOQ code generation from DB as an complimentary means to access the DB from Java.

  • Angular 2 Demo
    https://github.com/MiguelGL/ng2-betabeers-demo-sample

    This is a sample project I wrote as the source companion for a presentation I issued during a local talk introducing Angular 2.

  • HazelCast Manager
    https://github.com/MiguelGL/hazelcast-manager

    Hazelcast is an awesome middleware providing distributed data structures, caching, pub/sub mechanisms, and much more.

    It is perfectly possible to just download its distribution and start a node via java -jar, pointing it to your configuration, etc.

    This (maven) project takes an alternative approach and builds a ZIP file bundling Hazelcast (and other) dependencies, a directory structure for libraries, configurations, etc., and SLF4J-based logging using logback as the underlying implementation.

  • "Same Microservice, Two Implementations" Demo
    https://github.com/MiguelGL/popular-purchases-demo

    A sample project I wrote over the idea of a microservice that consumes a third-party API and then processes and aggregates the data in a custom form.

    This idea is implemented in two rather different ways for illustration and practicing purposes. One is a pure Java EE approach using the great latest features from its v.7 specification. The second is a solution on top of Vert.x, a Java-based purely event-driven framework.

    Their two programming models are rather different. Implementing the same features on top of each is great for comparing.

  • Introduction to Project Lombok Article
    http://www.baeldung.com/intro-to-project-lombok

    I wrote this post about the Lombok tool for a well-known editing site on Spring and misc. Java development articles.

  • Write Fat-free Java Code with Project Lombok (Publication)
    Java has some idiosyncrasies of its own and design choices that can make it rather verbose. While Java is a mature and performant programming language, developers frequently need to write boilerplate code that bring little or no real value other than complying with some set of constraints and conventions. In this article, Toptal Freelance Software Engineer Miguel García López shows how Project Lombok can help dramatically reduce the amount of boilerplate code that needs to be written in a Java application.

Skills

  • Languages

    SQL, Java 8, C, Java, HTML, CoffeeScript, TypeScript, Bash Script, JavaScript, Python, Bash, Visual Basic, Kotlin, Ada, CSS, Groovy, Scala
  • Frameworks

    Spring, Swing, JSF, Google Guava, Vert.x, Hibernate, Angular, GWT, Spring Boot, Ember.js
  • Libraries/APIs

    DeltaSpike, JOOQ, QueryDSL, Twitter API, Facebook Open Graph API, Google+ API
  • Tools

    WildFly, Maven, Jenkins, Keycloak, GitHub, Bitbucket, Eclipse IDE, Make, Git, Jira, IntelliJ IDEA, Terminal, LabVIEW, Microsoft Access, Asterisk, SaltStack, Ansible, Vagrant, NGINX, Subversion (SVN)
  • Paradigms

    Concurrent Programming, REST, Unit Testing, Event-driven Programming, Functional Programming, Scrum
  • Platforms

    Linux, Java EE, NetBeans, Raspberry Pi, Google Cloud Platform (GCP), Azure, Amazon, Android
  • Storage

    Hazelcast, PostgreSQL, MySQL, SQLite
  • Other

    EJB 3, CDI, WebSockets, Industrial Protocols, Integration Testing, XMPP, GlassFish, Embedded Systems, Weld (Java Servlet)

Education

  • Final Career Project in Computer Engineering
    1999 - 2000
    Institut für Mikroelektronik, Technische Universität Berlin - Berlin
  • Higher Engineering Degree in Telecommunications
    1994 - 1999
    ETSIT - UPM - Madrid

To view more profiles

Join Toptal
Share it with others