SKILLS
Please, click over the skills (or over the right menu icons →) to highlight them along the cv.
Software architecture
 
 
 
 
 
C/C++ development
 
 
 
 
 
Distributed systems
 
 
 
 
 
High-availabitity arch.
 
 
 
 
 
Scalable architecture
 
 
 
 
 
Embedded systems
 
 
 
 
 
Network programming
 
 
 
 
 
Linux/UNIX
 
 
 
 
 
Dsg Patterns,STL,Boost
 
 
 
 
 
Multithreading / concurrency
 
 
 
 
 
Shell scripting
 
 
 
 
 
Low-level & hw program
 
 
 
 
 
Java & Python
 
 
 
 
 
Networking
 
 
 
 
 
Databases, SQL
 
 
 
 
 
Web development
 
 
 
 
 


DETAILED EXPERIENCE
Please, click the  icons to expand/contract details.
SOFTWARE ENGINEER
  • +20 years of experience participating in the entire software development life:
    • Requirements
    • Design
    • Implementation
    • Testing
    • Integration
    • Verification
    • Documentation
    • Maintenance
  • +10 years of experience deploying, testing, maintenance and operating international large-scale systems.
  • Working areas expertise:
  • Project management and tracking tools:
    • Microsoft Project
    • Redmind
    • IBM Rational ClearCase and ClearQuest
    • Bugzilla
    • Lucent sablime
  • Version control systems
    • Git
    • Subversion
    • cvs
    • Lucent Sablime
SOFTWARE ARCHITECT
Large experience designing extensible, modular, high-performance, scalable software, distributed, easy to maintenance & reusable software.
  • High-avaliability software design & development
    • Failover (local and distributed)
    • Redundancy (local and gistributed)
    • Maintenance mechanisms
  • Cross-platform designs & development
    • Architectures:
      • Linux/Unix/Windows operating systems
      • Embedded/non-embedded architectures
SOFTWARE PROGRAMMER
+20 years developing C++ software
Software design and good practices
  • Regular use of design patters (state machine, thr pool, factory, observer, reactor, active object, decorator,...)
  • Unit testing
  • Code documentation (doxygen, wiki)
  • Tracking tools for features, bugs,releases, client ...
Compilers & build tools
  • Clang & GCC. Java JDK
  • Microsoft Visual Studio
  • CMake(cross-platform)
  • Autotools, Makefiles
Frameworks & libraries
  • STL
  • BOOST
  • POCO
  • gSOAP, Thrift, ODBC, etc.
  • C POSIX
  • QT
  • ACE / TAO
Cross-platform projects
  • cmake as cross-platform build tool
  • cross-platform libraries (STL, Boost, POCO, OpenCV...)
  • sharing C++ source code
Unit testing frameworks
  • Boost Unit Test
  • Google Test
  • C++ Unit Lite
  • JUnit
Debuggers, profiling and memory management and threading bug detection tools
  • GDB, JDB
  • Valgrind
  • gprof
  • IBM Purify
Low-level programming & hardware
  • Serial devices and GPIO
  • Design of basic electronic circuits
SHELL SCRIPTING
Large experience developing automatized test, installers and administration and maintenance tools based in Linux/UNIX scripts.
  • bash, sh , awk, expect, lisp, sed, cron, syslog, nagios...
SW PROGRAMMING: other languages
  • Java
  • Python
  • Objective-C
  • Lisp
  • WEB
    • HTML, HTML5
    • Javascript, jquery
    • PHP
DATABASES: SQL, LDAP, XML & JSON
Depth knowloged of database schemas design and SQL. Experience installing and administrating DBMS in Linux/UNIX Environments.
  • MySQL
  • Oracle
  • Microsoft SQL Server
  • SQLite
  • Berkley DB
OPERATING SYSTEMS (embedded/non-embedded)
Experience intalling and administrating Linux/UNIX OSS, including network configuration and services installation and configuration (apache2, MySQL, ftp, ssh...)
  • Linux:
    • Debian
    • RedHat/CentOS
    • SuSE
  • UNIX:
    • FreeBSD
    • Solaris
  • Microsoft Windows
  • Debian & Red Hat packages creation
EMBEDDED SYSTEMS
  • Embedded Debian Linux OS
  • Embedded hardware
    • Congatec
    • MSC
  • Buses: I2C, modbus
NETWORKING
  • Protocols and standards:
    • DIAMETER protocol
    • TCP interfaces
      • TCP/SOCKETS for cameras control, monitoring and configuration
      • I/O devices interface (ADAM Ethernet I/O Module)
    • UDP video/audio streaming
    • CORBA
    • SOAP
  • Network libraries
    • Boost asio
    • POCO
    • ACE
    • TAO
    • pthreads
  • Network tools
    • Wireshark
    • tcpdump
    • netcat
    • Tcl expect, curl...
  • Linux/UNIX network services:
    • SSH services:
      • Secure remote access
      • Tunneling
    • Other services
      • Apache2
      • FTP
      • DNS...
    • Network filesystems
      • NFS
      • Samba
      • AFP
INTERNATIONAL EXPERIENCE (development and deployment)
  • In situ
    • Spain
    • Brazil
    • Finland
    • Mexico
    • Swizertland
  • Remote co-working
    • Chezcky
    • India
    • Ireland
    • Russia
    • United Kingdom and USA



WORK EXPERIENCE
Ericsson
[  2017-current ]
Senior software engineer (Altran contractor)
PROJECT:
SAPC / PCRF
Ericsson’s PCRF. 3GPP standard Policy and Charging Rules Function for services and applications in mobile, fixed and converged telecom networks.
Generic cluster manager project
  • Agile Software Development and continuous process of development with Scrum methodology.
  • Distributed high-availability service for database servers (full design and implementation):
    • Generic high availabligity cluster management library
    • Generic cluster management library
    • Generic advanced LoadBalancing library
    • Generic Failover library
    • Generic DB accessing layer
      • Including LDAP support (UnboundID)
  • Senior software engineer and architect
    • SCRUM for agile development
    • Requirements, analysis, design and implementation
    • Continuous integration and verification
  • Senior Software developer
    C++ and Java development (click me for details)
    • Compilers:
      • Clang - LLVM
      • GCC
      • Java
    • Build tools
      • CMake
      • Autotools - Makefile
      • Dogyxen
    • Debug & performance tools
      • GDB, JDB
  • Continuos Integration
    Details (click me)
    • Test plan design
    • Unit testing frameworks:
      • Google's C++ test framework
      • Junit and Mockito (Java)
    • Integration testing
    • Functioninal testing
      • Jenkins authomatized regressions
International project
  • Spain
  • Sweeden
  • China
Other tasks (click me)
  • IPv6 support implementation for the existing Ericsson services:
    • Notification Service (gSOAP/C++)>
    • LDAP services (LDAP-UnboundID/Java)
InfoGlobal
[  2009-2015 ]
Senior software engineer
PROJECT:
IG-Monitor
CCTV and security systems (access control, intrusion, fire alarms,...) deployed in Mexico-USA customs (1.500+ hosts and 20.000+ cameras, non-embedded) and in Spain and , Braziltrains/subways (embedded).
IG-Montitor: general project information
  • Senior software engineer and architect
    • Software analysis and architecture
      • Analysis, design, implementation, integration & verification
  • Senior Software developer
    C++ development (click me)
    • Compilers:
      • GCC
      • Visual Studio
    • Build tools
      • CMake
      • Makefiles
      • Dogyxen
    • Debug & performance tools
      • GDB
      • Valgrind
    • Shell scripting development for:
      • Automatized Build tool
      • Automatized installer
      • Maintenance/migration tools
Cross-platform and embedded/non-embedded systems (click me)
  • Unique C++ code using en cmake project for:
    • Linux/Windows operating systems
    • CMake project
    • GCC & Visual Studio compilers
    • Centralized/distributed.
    • Debian (embedded & non-embedded) and Microsoft Windows OSS
Large Non-embedded: CCTV in Mexico - USA customs (click me)
  • Distributed system:
    • Network architecture (TCP/UDP, CORBA & SOAP)
      • +20.000 cameras
      • +5.000 hosts
Embedded CCTV (click me)
  • Spain, Brazil and Mexico trains and subways
Functionalities (click me)
  • Live video
  • Video and audio recording and export
  • Event recordings
  • Alarm system
(continues in the right column →)
International project
  • Deployment
    • Spain
    • Mexico
    • Brazil
    • Turkey (bosphorus tunnel)
  • Co-working:
    • Switzerland
    • Finland
Architecture (click me)
  • Large Distributed system. Each subsystem can run together on same device or distributed interconnected through LAN/WAN network
    • Failover/maintenance server
    • Video sender server
    • Recording server
    • Programmer server
    • Session server
    • Alarm server
  • Configuration system:
    • Persistent DB configuration
    • Network configuration interface
    • Network GUI
    • Integrated with Failover, redundance and maintenance subsystem
Other technologies (click me)
  • Networking
    • UPD audio/video streaming
    • TCP interfaces (including devices control and configuration)
    • CORBA
    • SOAP
  • Buses:
    • Modbus
    • i²c
Hardware (click me)
  • Servers
    • Intel x86
    • Embedded arm
      • Congatec
      • MSC
  • Cameras
    • Analog and IP(Pelko, Vivotek)
  • Ethernet I/O device (ADAM). Integration of analog/digital external devices (alarms, barriers, doors...)
IG-Monitor: Failover, redundancy and maintenance system
Full designed, coded and deployed by me. Any system host can be configured as redundant or redounded. The redounded are asigned to redunded servers which automatically stores its configurations and monitorizes them against failures (hardware, software, network...), assuming and performing all its tasks.
Any changes on redounded are automaticlaly detected, updated and archived by redundant servers.
Manual redundancy mode is a mechanism that provides full system functionality through redundancy when performing maintenance tasks.
  • Team Leader and full:
    • Requirements and analysis
    • Design
    • Full C++ implementation
    • DB schema design
    • Test plans design
    • Integration and verification
    • International deployment and maintenance
  • Functionality:
    Auto-discovery and auto-update mechanisms
    • Network hosts
      • Recording servers
      • Streaming servers
    • Cameras
    • Programmed tasks
    Automatic fault detection and diagnosis
    • Full configurable diagnosis and event triggers
      • Predefined failover operations on:
        • network/hosts/cameras malfunctions
        • hardware failures: broken/corrupt HD, temperature/CPU overhead, low disk space...
        • video/audio recording failures
    Redundancy redundancy mechanism
    • Its activation is manual (local or remote)
    • Provides full system availability while software/hardware maintenance tasks are performed
Large distributed and scalable system:
  • TCP/UDP WLAN/LAN network:
    • With more than 20.000 cameras
    • and more than 5.000 servers
Full integration with the other subsystems
  • Session subsystem
    • Provides an user-based secure interface for operating the system and interoperate with the other systems
  • Alarm and Event subsystem
    • Listen and reacting to alarm events
    • Notificacion to the system of relevant actions or states
  • Programmer subsystem
    • Providing failover and redundancy on all programmed tasks of the monitored equipments
  • Recording Server
    • Monitoring that monitored equipment is recording correctly
    • Failover and system notificaion in case of any recording malfunction
  • Video sender subsystem
    • Monitoring that monitored equipments are performing the video streaming correctly
    • Failover and notifying to the system in case of any video stremamming malfunction
  • Distributed
  • DB persistance
IG-Monitor: Session Server Subsystem
User-based secure network interface for both to operate the system and subsystems interoperability. Provides users authentification and its management (including profiles) and a secure network interface for all the system funcionalities and subsystems interoperations.
Details
  • Roles:
    • Architect
    • C++ developer
  • Functionality:
    • Secure network-sessions server
      • for inter-subsystem operations:
        • video (streaming, recording, recorded video...)
        • failover / maintenance
        • task programming
        • ...
    • User-based authenfification mechanism
      • Including:
        • user/groups profiles
        • user/groups administration
  • Integrated with subsystems:
    • Failover/maintenance server
    • Video sender server
    • Recording server
    • Programmer server
    • Session server
    • Alarm server
  • Distributed
  • DB persistance
  • Failover integration
IG-Monitor: Programmer Server Subsystem
General-purpose task scheduler (recordings, maintenance, alarms, PTZ…)
Details
  • Roles:
    • Architect
    • C++ developer
  • Generar purpose time-based job scheduler:
    • Execution of commands (recordings, maintenance, alarms, PTZ...) or shell scripts
    • Run periodically at fixed times, dates or intervals
    • Remote and local jobs
  • Distributed
  • DB persistance
  • Failover integration
IG-Monitor: Recording and Streaming Server Subsystem
Recording server: audio/video recorder and media streaming.
Details
  • Roles:
    • Architect
    • C++ developer
  • Functionality
    • Network interface
    • Video and audio recorder server
      • Video Sender Server subsystem integration, video sources:
        • IP Cameras
        • Analogic Cameras
        • G.711 audio devices
      • Alarms insertion in video
  • Functionality (continuation)
    • Video streaming server
      • Live streaming (cameras proxy)
      • Video recordings streaming
      • Time line (including events y alarms)
    • Failover/redundancy integration
  • Distributed
  • DB persistance
  • Failover integration
IG-Monitor: Alarm Server Subsystem
Multi-purpose alarm server.
Details
  • Roles:
    • Architect
    • C++ developer
    • Developments:
    • Hardware integration and interfaces development:
      • external I/O devices
      • external systems
    • Monitoring mechanisms
    • Failover integration
  • Functionality (local and network):
    • Subsystem servers monitor
      • Error detect and notification mechanism integrated with failover/redundancy subsystem
      • Functionality alarms detection (intruders, fire, video-down, abandoned objects...)
      • Recording alarms triggers
    • Devices and external systems Monitor
      • Some monitoring capabilities:
        • network connectiviy
        • video and audio streaming
        • disk (failures, free space, temperature.i.)
        • overheating, frozen free space...
        • external alarms: fire, open doors, abandoned objects...
  • Functionality (continuation)
    • Generic interfaces for external alarms devices/systems:
      • Protocols:
        • TCP/IP
        • CORBA
        • SOAP
      • External devices (analog/digital) monitoring
        • cameras
        • barries
        • doors
        • fire alarms...
        • generic analog and digital I/O devices interface (ADAM eth/IO)
        • internal devices monitoring
          • HD, audio/video encoders, netcards...
    • Distributed
    • DB persistance
    • Failover integration
IG-Monitor: Final images (relases) build system
Design and implementation of automatized linux build system.
Details
  • Automatic OS base image generation
    • Versioned image checkout
    • OS instalation
    • Base packages installation
    • Version tag creation (subversion & redmine)
  • Automatic system packages generation
    • Full versioned checkout
    • Code compilation and debian packages generation
    • Version tag creation (subversion & redmine)
  • Databases and configuration data
    • Versionded databases versioned (structure)
    • Databases installation
    • Versioned configuration data checkout and db population
  • Final image distribution
    • Checksum generation
    • Upload images to repository
    • Documentation
Havas-Media
[  2005-2009 ]
Senior software engineer
PROJECT:
Tracking Server
Tracking Server© project: Ad Server (like Google DoubleClick).
  • Tasks:
    • Analysis and development
      • Low latency Apache modules
        • C code modules
        • High performance parser
        • High performance: Berkeley DB
    • Berkeley DB, Oracle
  • Big data agreggator and data warehouse
    • Oracle / Solaris
  • OS administration:
    • FreeBSD
    • Solaris
    • Linux (CentOS)
  • Nagios monitoring
  • Stability and performance plans
Lucent Technologies
[  2008-2009 ]
Senior software engineer
PROJECT:
Navis AnyMedia©
C++ architect and developer of software to monitor, provision and control all AnyMedia network elements (POTS, ISDN and DSL services) and efficiently administer the full functionality of AnyMedia Access System.
Details
  • Develop of network elements management and monitoring C++ software
    • Functionaly for all AnyMedia network elements
      • monitor
      • provision
      • control
      • administration
    • AnyMedia network elements services
      • POTS
      • ISDN
      • DSL
International project
PROJECT:
Optical Management System©:
Optical router simulators development
Details
  • Optical Routers (Lucent Ethernet Routers/Riverstone 15Ken)
  • Analysis and development (C++)
  • Third parties integration
  • SSL layer interface based in OpenSSH
International project
  • Co-working: Spain-United Kingdom
PROJECT:
miViewTV©
Previous Telefónica Imagenio© TV, a platform for the delivery of advanced digital video services.
Details
  • Tasks:
    • Analyst and development
      • Analysis and development of a new configuration server core architecture
      • Analysis and development html, javascript, css, asp, php
      • Performance and scalability improvements
      • C++ Microsoft Windows service development
  • C/C++
  • SQL, PL/SQL (Oracle)
  • Linux, Solaris and MS Windows
International project
  • Develployment
    • Spain
    • Brazil
    • Chezcky
    • Mexico
    • Russia
  • Co-working
    • Russia
Poniente Hospital
[  2003-2005 ]
Research Grants
Research Grant
Title: «Molecular characterization of immigrant tuberculosis in two different socio-geographic environments: Madrid and Almería» (FIS 03-0986) (2003-2004).
  • Tasks:
    • Full analysis, design, implementation, installation, deployment, administration and maintenance of distributed system.
  • Client-server architecture
    • Server:
      • C++ / UNIX service
      • Sockets (POSIX 1003.1g) interface, threads (POSIX 
1003.1c), shared resources and priority tasks.
    • Client applications:
      • Borland Builder C++ desktop
      • Web application (CGI, Apache, Linux)
  • System administration tasks and deployment:
    • Installation and administration of operating systems
      • Unix, Linux and Windows
      • Sevices administration: DDBB, routing and DNS, FTP, Web (Apache, PHP, …); CVS
  • Training of medical research team
Research Grant
Title: «Tuberculosis in the native and immigrant population of Almería: description of molecular monitoring confirmed cases of transmission.» (financed Andalusian-BOJA no. 9. Jan. 15, 2004). Extension of the last one. (2004-2005).
Freelance
[  1993-2004 ]
Software Architect, Developer and Sysadmin
Information
Analysis, design and deployment of small and medium business size applications (heavy machinery management, workshop management, point of sale terminal software, etc.). Client-server applications C++ (sockets, threads, SQL, LaTeX, etc...)
Details
  • Tasks:
    • Full software development process:
      • Requirement analysis and specifications
      • Software design
      • Implementation
        • C++ (Linux/UNIX and Windows)
        • DB
        • Linux, UNIX, windows administration
      • Testing
      • Deployiment
      • Maintenance
      • Training
    • Teaching UNIX/Linux administration and development (C/C++, shell scripting, HTML, SQL, Linux, UNIX, etc) courses.
  • Bussiness applications
    • Heavy machinery management
    • Workshop management
    • Point of sale terminal
    • etc
  • Installation and administration:
    • Linux (RedHat, SuSE and Debian )
    • UNIX (FreeBSD)
    • Services:
      • Apache
      • Database management systems
        • MySQL, PostgreSQL, Oracle
      • Version control services:
        • CVS, Subversion, TELNET, SSH, FTP, POP3, SMTP, IRC, NFS, SAMBA, NTP, etc. ..
        Control y hosts monitoring (SNMP/MRTG, Webalizer). TCP/IP networks. Wiring, routing, gateway configuration, SAMBA, etc...



EDUCATION
  • Certificates:
    • Software Engineer degree.
    • Software Upper Technical studies (2 years +undergraduate thesis).
  • Languages:
    • Spanish (native)
    • English. Full professional proficiency. English Upper-intermediate British Council qualification.



OTHER
Emeritus «Caballero Legionario» title obtained obtained serving in the
elite unit of Spanish infantry: Tercio Gran Capitán I de la Legión.
Assigned to radio-transmissions.
Melilla (Africa). 1994.