Badges
Certifications
Work Experience
Lead Software Engineer
SATIS.AI•  May 2021 - Present
Working as part of the tech leadership team in a Food Tech startup that is building the nextgen kitchens and helping established brands in the food space to improve their operations using Computer Vision, Machine Learning and other AI concepts. Also overseeing different components of the tech stack, coaching junior members of the team and liaising with senior stakeholders to help define the product roadmap and priorities from a technical perspective. + Contributed to the implementation of a complete AI vision pipeline in Python, running with 12+ processes in real-time while maintaining a throughput of 20-30 FPS on a single GPU and achieving an end-to-end time of 0.5-1s (from frame time to decision shown in the UI), using NNG for inter-process messaging and Kafka for external communication. + Designed and developed the non-CV based components for estimating the situation of the kitchen, order fulfilment statuses, labour analytics and food quality metrics using an event-driven approach with multiple algorithms, decision trees and heuristic rules based on the input from the upstream CV modules. + Helped the CV team to automate their BML processes with the creation of multiple libraries for data collection, sampling and validation on different levels of metrics, using a combination of external applications like Kinesis Video, Darwin and Neptune with some built in-house. + Worked on the implementation of our backend infrastructure consisting of several microservices using NodeJS, PostgreSQL, Redis and ElasticSearch, AWS Lambdas using NodeJS and DynamoDB, AppSync and GQL for exposing and publishing the data and Terraform for the infrastructure management. + Participated in the maintenance and improvement of both the customer facing and internal frontend applications using TypeScript, React and MUI, plus Cypress with Cucumber for automated behaviour testing.
Technical Architect
Aurea Software•  July 2018 - April 2021
Design and implementation of multiple integration solutions with Jive, from pure Java backend libraries to micro-services with React UI components. Lead multiple technical resources and teams to achieve the implementation of the solutions designed, performing code reviews, status calls, etc. Investigation of complex technical issues around application performance in the JVM, both for new and existing solutions. Liaised with customers to gather requirements, write functional specifications and technical approach to address specific issues and/or new features. Some of the most complex (and interesting) projects designed and implemented include an Image Processing service to convert and resize images using tools like ImageMagick in order to reduce the overall storage and a Sentiment Analysis service to determine users engagement based on Amazon Comprehend.
Senior Software Engineer
Jive Software•  May 2015 - June 2018
Developed new features, customizations and enhancements to the core product as part of our client engagements. Worked with project managers and/or clients to scope work and produce estimates to help define deliverables and timelines. Responsible also for writing the associated documentation (Use Cases, Technical Specifications, User Manuals) and for the release management of those customizations, both On-Prem and Cloud. Most of the back-end solutions were created using Java 8 and relational DBs (PostgreSQL, Oracle and MySQL) while most of the front-end applications were developed using JS, jQuery and Mustache/Handlebars. Implemented a considerable number of migration scripts using NodeJS responsible for interacting with the REST API in order to manipulate data. On some of the customizations, components like DropWizard, Feign, Swagger, Angular and Bootstrap were also adopted. In addition to Unit and Integration Tests, automated Acceptance Tests have also been implemented using Cucumber and Selenium WebDriver. Other responsibilities included troubleshooting of existing performance issues, environment health-checks, code reviews and presentations on best practices. Also had to provide estimates for the development work and specifications for the infrastructure required, both On-Prem and AWS. The Professional Services team followed an Agile (SCRUM) approach, with planning, reviews and sometimes demos.
Technical Lead
John Wiley & Sons•  April 2013 - April 2015
Lead a team of developers to deliver a set of Authentication and Authorization REST Web Services which included features like distributed session access management, OAuth tokens creation and maintenance, SAML based authentication and request encryption techniques. Other services delivered included CRUD operations over generic resources like Users, Customers and Licenses. These services were written in Java 6/7 and were deployed to Tomcat 6/7 containers running on multiple nodes, with a Sybase DB as the persistent data store and Redis as the distributed and pass-through cache. Varnish was used as reverse proxy (with a small level of caching) and all the services were designed using content based negotiation for resource versioning. Other responsibilities included the introduction of Cucumber as the ATDD (BDD) framework to the development team with the engagement of BA and QA to guarantee a consistent approach to the deliver of stories/features. These acceptance/regression tests were written in Groovy and the suite was built so that the same set of tests were used as the QA regression pack (using dynamic data to be environment independent), reducing the regression window for the applications being delivered from 10 to 2 days. I was also responsible for the wider adoption of the GIT Flow branching model across the board and for the creation of performance tests using JMeter to detect poor application behaviour at an earlier stage. A more generic set of responsibilities included liaising with different stakeholders (Product Owners, Architects, Project Managers and Directors), engaging with the wider development team through regular demonstrations and showcases, group code reviews and design brainstorms. I have also designed and led a performance improvements plan for the existing Authorization service, which reduced the average response time from 200 to 30 ms and increased its throughput from 200 to 1200 TPS.
Java Developer
Sportingbet•  May 2012 - March 2013
Design and development of a SOAP/REST based API using a multi-tier architecture: Oracle DB with an Oracle Coherence grid for the backend layer, Java Web Services deployed in JBoss for the middleware tier and a thin ESB orchestration layer using WSO2 to act as the interface for the application. The Java components were developed using Apache CXF for the SOAP/REST services implementation, Spring JDBC for Stored Procedures calls and Hibernate as the ORM tool, with JBoss acting as the holder for data source and logging configurations. The WSO2 modules were implemented using XQuery and XSLT transformation proxies and caching mediators, with a Coherence caching layer for storing session information across the multiple stateless nodes. Methods like Pair Programming, TDD and Code Reviews were enforced as part of the Agile (SCRUM) development approach in place. Small Scala applications were also implemented in order to automate the continuous integration and release processes across all components. Tools like Jenkins and AnthillPro were also used to add consistence to the applications and a small RESTful Web Service was also implemented to provide environment specific properties configurable at run time.
Senior Developer
Hibu•  September 2010 - April 2012
Design and implementation of a RESTful API in Java and an Oracle DB for integrating the UK content with the Global Data Management platform. This API was developed using Spring and Apache CXF to run on a Tomcat server and the back end business logic was implemented in PL/SQL, using a set of triggers, procedures and functions to handle the data manipulation and its publishing to the appropriate systems. At the beginning of this project, I was also responsible for investigating the new Oracle Edition-Based Redefinition feature and defining the development and release processes for online application upgrades using this mechanism. Responsible for maintaining and improving a MarkLogic native XML database as a member of the content team through the implementation of XQuery modules, XML Schemas, XSLT transformations and a real time Master-Slave replication mechanism. Expansion and re-factoring of a RESTful API written in Java that acted as an interface to the XML database and provided access to external applications. This API was developed using Spring and Restlet to run as standalone application and the communication with the database was handled through XML binding objects. All projects were carried out using Agile methodologies and in particular the SCRUM based approach to development. Test driven development was also adopted in most of the projects, including unit testing and behavior driven development using mocking and JBehave. The components were designed and implemented bearing in mind a release process with multiple environments and servers distributed across several data centers.
Software Engineer
Sysnovare•  August 2009 - August 2010
Implementation and maintenance of a web based infringements management information system, running on an Oracle DB with PL/SQL for business logic and interface with XHTML generated pages. XML, CSS, Java, JavaScript, AJAX and Web Services were languages and technologies also involved during the project. Due to the confidential nature of the application and in order to provide an extra level of authentication I was also responsible for integrating the system with a Java component that would require a user to validate a request using its citizen card (smart card). This Java component was designed and implemented by me as part of my Masters dissertation and uses the Java cryptography modules, allowing a user to authenticate on a web application and to sign documents through secure certificates. Design and development of a flexible Workflow Management System integrated with an Oracle DB and using PL/SQL for the application core. This isolated component was able to integrate with other applications running on the same database instance and was responsible for the users and roles management and for holding the business processes definition. The main purpose of this component was to be an alternative to Oracle Workflow and Oracle BPEL Processes Manager, to be used by in-house built applications or external systems. Integration of an Oracle DB based ERP solution with spreadsheets from standalone applications (MS Office and Open Office) using C# and Java as coding languages. These components communicated with the ERP database in order to retrieve the financial information required by the user and presented it using the respective spreadsheet, which would then allow the usage of charts and other statistical tools within those applications.
Software Engineer
Check4 Ltd•  May 2008 - July 2009
Design and implementation of a job search engine, including the development of data collection components, the modeling of the database, the definition and continuous improvements to the search algorithms and the web interface. This project also included the development of a back office application to support the search engine by providing several Business Intelligence indicators to the business and user management features. All these components were built on a SQL Server DB with an ASP.NET architecture using T-SQL for DB development and C# for the business logic and interface. Development and maintenance of an automated web crawler written in PHP with a MySQL DB for retrieving data from several websites, which was then converted into XML annotated metadata so that it could be manipulated by the feed processor. This last application was also built using C# and its main goal was to gather data from multiple sources and store all the vacancies and related information on a master SQL Server DB. All the mastered data was then published to the search engine describe before and to the network of local websites that I have also helped to build. Technologies like XHTML, CSS and JavaScript were used across these applications and in this role I also acted as Team Leader for a large period of time, having a small development team to coordinate across multiple projects.
Seismic Navigator / Processor
PGS Geophysical AS•  June 2007 - March 2008
Marine based position in an international team to ensure the acquisition of seismic data on board the organization vessels. The main responsibilities and tasks during this period were: - Operate the Integrated Navigation System, where information from satellite and sonar technology together with gyro and compass data is channeled, collated and processed to position hundreds of survey nodes to accuracies within 5 meters; - QC of positioning data and associated deliverables, fault-finding and the maintenance and repair of equipment and systems; - Development of several scripts both in Shell Scripting and Perl to optimize documents management and organization; - Administration of some of the Linux systems on board the vessels; - Design and implementation of a small web based application to maintain knowledge and optimize training of new staff on a MySQL DB with PHP, XHTML, CSS and JavaScript for web interface.
Software Engineer
FEUP•  March 2006 - May 2007
Extended the University of Porto web based information system by designing and implementing a module that allowed its members to use collaborative tools according to the Wiki paradigm to create documents and reports for projects, courses and other academic areas. This project was developed on an Oracle DB, using embedded Java for the business logic and PL/SQL for integration and web interface. Throughout this project I was responsible for the following tasks: - Adapt the Java based Radeox Wiki render engine to the existing architecture by creating classes compatible with the DB structure, adding user access control, versions management and interface configuration to the application; - Implement conversion functions that allowed the documents to be converted into several different formats like XHTML, XML, RSS, RDF and PDF; - Development of mechanisms that allowed automatic mapping of structured information stored in the DB into unstructured Wiki documents using auto generated XML Schemas and XML documents for data exchange. Development of a web based information system for Porto City Council, from the requirements specification, through the architecture and design until the actual implementation, in order to allow this institution to manage its fines and the associated complex juridical process. This application was built on an Oracle DB with PL/SQL as the core language and it also involved the use of the following technologies: - SOAP Web Services using both Oracle Application Server and Java implementations to interact with other applications within the institution; - Windows AD for integration with the institution authentication methods using Oracle LDAP tools and procedures; - Implementation of Java classes embedded in the DB to provide the generation of PDF documents using the stored information.
Researcher
INESC Porto•  March 2005 - August 2005
Part of a research team which main goal was to convert an historic document storage into a digital data warehouse with fast and reliable search mechanisms and import tools. To achieve this result the several steps of the project were spread over the team members and the following tasks were assigned to me: - Design and implementation of an interface in Java (Swing) to support structured edition of XML documents, providing the staff of the historical center the feature to categorize words in order to allow in the future a reliable indexing and the use of comprehensive search; - Modeling of an Oracle DB to store meta information about images, videos and documents using the archives content description norms ISAD, ISAAG and Dublin Core; - Several standalone applications created in Java to convert previous documents created with Word, Excel and Text Editors into the new format used in the XML classifier and the indexing mechanisms; - Light approach to indexing mechanisms, adapting the Java based Lucene application to our storage architecture.
Education
Universidade do Porto
Software Engineering, ME•  September 2001 - August 2006
Algorithms and Data Structures, Computer Architecture, Social and Professional Issues, Data Base and Information Treatment Systems, Numerical and Symbolic Computation, Communication Techniques, Physical Modelation Management and Quantitative Methods, Artificial Intelligence and Robotics
Links
Skills
andremanbarbosa has not updated skills details yet.