- Requirements
- Design
- Implementation
- Testing
SKILLS
Please, click over the skills (or over the right menu icons →) to highlight them along the cv.
DETAILED EXPERIENCE
Please, click the icons to expand/contract details.
SOFTWARE ENGINEER
+20 years of experience participating in the entire software development life:- 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
- 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
- SSH services:
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)
Ericsson
[ 2017-current ]
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
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
InfoGlobal
[ 2009-2015 ]
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
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.
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.
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
- ...
- for inter-subsystem operations:
- User-based authenfification mechanism
- Including:
- user/groups profiles
- user/groups administration
- Including:
- Secure network-sessions server
- 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
- Video Sender Server subsystem integration, video sources:
- Functionality (continuation)
- Video streaming server
- Live streaming (cameras proxy)
- Video recordings streaming
- Time line (including events y alarms)
- Failover/redundancy integration
- Video streaming server
- Distributed
- DB persistance
- Failover integration
IG-Monitor: Alarm Server Subsystem
Multi-purpose alarm server.
Details
- 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)
- Protocols:
- internal devices monitoring
- HD, audio/video encoders, netcards...
- Generic interfaces for external alarms devices/systems:
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
Havas-Media
[ 2005-2009 ]
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
- Low latency Apache modules
- Berkeley DB, Oracle
- Analysis and development
- 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
Lucent Technologies
[ 2008-2009 ]
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
- Functionaly for all AnyMedia network elements
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
- Analyst and 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
Poniente Hospital
[ 2003-2005 ]
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)
- Server:
- 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
- Installation and administration of operating systems
- 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
Freelance
[ 1993-2004 ]
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.
- Full software development process:
- 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. ..
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.
elite unit of Spanish infantry: Tercio Gran Capitán I de la Legión.
Assigned to radio-transmissions.
Melilla (Africa). 1994.