Miguel García López, Developer in Murcia, Spain
Miguel is available for hire
Hire Miguel

Miguel García López

Verified Expert  in Engineering

Software Developer

Location
Murcia, Spain
Toptal 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.

Portfolio

DisplayNote Technologies
NGINX, SQL, JOOQ, Android, XMPP, Linux, Azure, DeltaSpike, Hazelcast, MySQL...
IDSens
SQLite, Raspberry Pi, Python
Voozer Technologies
Weld (Java Servlet), SQL, JOOQ, WebSockets, Asterisk, PostgreSQL, Hibernate...

Experience

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.

Work Experience

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

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.

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, Apache 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)

1999 - 2000

Final Career Project in Computer Engineering

Institut für Mikroelektronik, Technische Universität Berlin - Berlin

1994 - 1999

Higher Engineering Degree in Telecommunications

ETSIT - UPM - Madrid

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring