Andrea Richiardi
Staff Software Developer/Lead at Cohesic Inc- Claim this Profile
Click to upgrade to our gold package
for the full feature experience.
-
Italian -
-
English -
Topline Score
Bio
Francesco Ronchi
Andrea is a focused developer and with good analytics skills, always looking for the best practices and technologies to solve problems.
Roberto Orgiu
Andrea is a great developer, with a particular attention to detail, API design and clean code. We worked together on a very complicated feature for an important and international client and I would love to work again with him, as he's professional, prepared and willing to learn new things. Moreover, he's passionate about mobile and a strong team player.
Francesco Ronchi
Andrea is a focused developer and with good analytics skills, always looking for the best practices and technologies to solve problems.
Roberto Orgiu
Andrea is a great developer, with a particular attention to detail, API design and clean code. We worked together on a very complicated feature for an important and international client and I would love to work again with him, as he's professional, prepared and willing to learn new things. Moreover, he's passionate about mobile and a strong team player.
Francesco Ronchi
Andrea is a focused developer and with good analytics skills, always looking for the best practices and technologies to solve problems.
Roberto Orgiu
Andrea is a great developer, with a particular attention to detail, API design and clean code. We worked together on a very complicated feature for an important and international client and I would love to work again with him, as he's professional, prepared and willing to learn new things. Moreover, he's passionate about mobile and a strong team player.
Francesco Ronchi
Andrea is a focused developer and with good analytics skills, always looking for the best practices and technologies to solve problems.
Roberto Orgiu
Andrea is a great developer, with a particular attention to detail, API design and clean code. We worked together on a very complicated feature for an important and international client and I would love to work again with him, as he's professional, prepared and willing to learn new things. Moreover, he's passionate about mobile and a strong team player.
Experience
-
Cohesic Inc
-
Canada
-
IT Services and IT Consulting
-
1 - 100 Employee
-
Staff Software Developer/Lead
-
Jan 2021 - Present
Involved in all aspects of product development ranging from core infrastructure development, to requirements elicitation and analysis, to UI design. This role focuses on leading the development effort of the company core product through architecture & design, mentorship, and continuous improvement. I am able to design, write, and maintain professional-quality code with a focus on patient safety and privacy, test suites and most importantly write and maintain functional engineering documentation and guides. The platform is composed of a Clojure and PostgreSQL backend, a Scala legacy backend and a TypeScript and React frontend. Leads at Cohesic also guide the team through each iteration by running daily stand-up meetings, retrospectives, and coordinating other activities that drive the team's success. To summarize, loads of fun.
-
-
-
Elastic Path
-
Canada
-
Software Development
-
100 - 200 Employee
-
Senior Platform Architect
-
Nov 2016 - Jan 2021
Initially hired within the Research and Development department, the role evolved from brainstorming, planning and writing proofs of concept to maintaining a complete rewrite of the platform. Being part of the team from its inception, I contributed architecture, engineering guidelines and their implementations. A second platform evolution focused my efforts on first improving the maintainability of the current Java-based monolith and then to the pioneering of the current micro service architecture. The knowledge from the previous R&D undertake was repurposed and accepted as fundamental for the new initiative: micro services are event-driven, reactive and connected using the bus topology. As Platform Architect I contributed extensively to Architecture Design Proposals and Architecture Decision Records while making sure to stay hands-on. Most notable tasks: [ClojureScript/Node.js] Implement a CQRS/Event Sourcing serverless solution on Microsoft Azure. The event log is stored on Postgres while the read model is on Cosmos DB. The code runs within the Azure Functions Node.js runtime. [Logstash/Rabbit] Implement product projection for adding multiple items to a cart. The solution uses Logstash for consuming catalogue and inventory events from RabbitMQ and populating the MongoDB table. [Terraform] Create and maintain infrastructure as code for the platform. Terraform was selected over the alternatives for the cloud agnostic nature of its modules. The implementation programmatically targets either Azure or AWS cloud components. [Java] Implement the Event Bus service. The solution uses the AWS Kinesis persisted queue and AWS Firehose for event persistence. A series of Java AWS Lambda functions fulfill requests. [Java] Implement the host assignment feature in the Tenant micro service. The solution uses a functional approach and the Either monad for carrying over logic errors and therefore avoiding throwing exceptions for it.
-
-
-
Booma / ZoweeQ
-
Vancouver, British Columbia, Canada
-
Clojure Software Engineer
-
Jul 2016 - Oct 2016
Greenfield Clojure back-end and ClojureScript front-end project, Minimum Viable Product as a target. My role is to design and implement, together with the other former Ruby developer in the team, both parts of the real time application, focusing a bit more on the back-end side. As side role is, take care and convey functional programming principles and Clojure best practices when possible. Pitched and then implemented ideas: • Event sourcing aka "everything is an event" system (no strict CQRS for now) • Back-end backbone bus that entails core.async's pub/sub model for buffering, moving events and triggering behaviors between components • Unified log of all the events in the system with Postgres persistency, keeping the door open for a more suitable approach (Kafka) when the need for scaling will be there • Pipe the (augmented) events to the open websocket channels to clients, using sente • Validate all the events with clojure.spec and create a bad event payload for optional fixing and re-piping of corrected events into the system • Use of re-frame cofx handlers and new subscription syntax Achievements: • Delivered without delay in the allotted time of 4 months • The project has been presented at Gitex 2016 (16-20 Oct, Dubai) and feedback was very positive This is a fully remote position.
-
-
-
-
Clojure Software Engineer
-
May 2016 - Jun 2016
Developing a back-end with the classic REST approach that provides a very simple Finite State Machine to the client iOS app. 100% Clojure. The artifact is deployed on Amazon's ECS using the Alpine docker image as container and connects to a Postgres RDS instance. Other noteworthy technology employed in the project, in sparse order: boot-clj/boot, tolitius/mount, juxt/yada, funcool/cats, log4j2, jarohen/chime, plumatic/schema, org.clojure/test.check. Achievements: • Delivered without delay in the allotted time of 2 months.
-
-
-
Scalac
-
United States
-
IT Services and IT Consulting
-
1 - 100 Employee
-
Clojure Software Engineeer
-
Oct 2015 - May 2016
Leading the way to a brand new consultancy Clojure-only company, LambdaX, as Clojure software engineer/evangelist my role is not only to work on client projects but also to facilitate Scalac in growing their business and digital presence in the Clojure community. This is a fully remote position and involves leading a small team of Clojure developers. Achievements: • ClojureScript app: www.clojurescript.io • Github project: replumb, ClojureScript plumbing for your bootstrapped REPLs • Github project: boot-pack-source, a boot task to collect Clojure(Script) source files • LambdaX website bootstrap: www.lambdax.io • LambdaX blog bootstrap: www.lambdax.io/blog • Blog post written: "Self-hosted ClojureScript - The AST innards" • Blog post written: "Require in self-hosted ClojureScript" • Blog post written: "How we embedded ClojureScript in our GitHub pages"
-
-
-
Freelancer
-
Turin Area, Italy
-
Software Engineer
-
May 2015 - Sep 2015
Freelancing, currently contributing to Counterclockwise (github.com/laurentpetit/ccw), playground for learning the Clojure programming language. Open to new opportunities, either as employee or freelancer. Language of preference is Clojure, but have a look at my polyglot career. If you are either interested in new concepts, curious about new ideas or just looking for a collaboration, please don't hesitate to contact me. * The pictures below are GitHub pull request links which LinkedIn shows with my profile picture. * * My apologies for being a bit omnipresent in there. *
-
-
-
Synesthesia
-
Italy
-
Technology, Information and Media
-
1 - 100 Employee
-
Mobile Application Developer
-
Apr 2014 - May 2015
Freelance work. My main duty is to develop Android applications following client specifications. The role entails gathering of requirements, data analysis and fetching (from classic or REST Web Services), device testing and most importantly sharing common strategies and knowledge with the team. Preferred Integrated development environment (IDE) is Android Studio, used libraries (among others) are RoboSpice, OrmLite, Otto, OkHttp, Functional Java, Guice. Freelance work. My main duty is to develop Android applications following client specifications. The role entails gathering of requirements, data analysis and fetching (from classic or REST Web Services), device testing and most importantly sharing common strategies and knowledge with the team. Preferred Integrated development environment (IDE) is Android Studio, used libraries (among others) are RoboSpice, OrmLite, Otto, OkHttp, Functional Java, Guice.
-
-
-
Accenture
-
Ireland
-
Business Consulting and Services
-
700 & Above Employee
-
PLM Consultant
-
Jan 2012 - Jan 2014
Project oriented work. My main duty is to customise the Teamcenter software on client specification. It also encompasses other aspect of the Engineer role, as estimating the project developing requirements in terms of time and resources, taking part in team meeting and interviewing new candidates. Biomet – United States • Reverse engineered and enhanced the malfunctioning shared revise functionality. Implemented an Eclipse RCP plugin that, together with an ITK registered user service, is able to detect if an Item Revision shares Datasets with others and revise them in case. The new Item Revisions will share different objects, based on the business cases the tool faces (Left/Right-hand drawings, Part Family Item Revision(s),..). • Implemented an Eclipse RCP plugin (Java) to automate the Perform action on the selected work-flow through Teamcenter's user interface. • Reverse engineered and enhanced the malfunctioning printing Thin Client application, which let the user choose the drawing to print and sends it to the spooling local service. • Implemented an Eclipse RCP plugin (Java) to automate the creation of data-driven PDF documents on the selected Item Revision, leveraging the Apache FOP library. • Implemented C++ custom property getter (BMIDE library) to display the Where Used of the selected object. • Implemented C++ custom property getter (BMIDE library) to list all the responsible parties of the unique active workflow attached to the selected Item Revision. • Implemented C++ custom property getter (BMIDE library) to list all objects attached to the selected Item Revision with the desired relation (passed in as parameter). • Implemented C custom handler to assign the responsible party of a task according to the selected role in the Item Revision project, always reverting to Administrator in case of invalid configuration or errors. • Determined developing requirements in terms of time and resources. Quoted developing time for pre-sales purposes.
-
-
-
PeaceChild International
-
Buntingford, Hertfordshire, UK
-
Technical Manager
-
Sep 2011 - Jan 2012
Technical Manager for the NGO, working on “Sustainaville – The game”, edugame/social network that aims to be used as a world re-designing tool (www.sustainavillethegame.com). The goal of Sustainaville is to enable players to learn about sustainable development while having a great time playing. From a technical point of view my job was related to the development of a prototype of the game, using the Unity 3D framework (C# code) for the game logic, and Actionscript/Javascript (JQuery, U3DObject) for the web client side. The simple prototype didn't have a server, but my plan was to use the Stripes framework combined with JSON through AJAX calls for client-server data exchange. At an earlier stage of the project I also had to define the technological strategy with the development team: pipeline, tools, and key development procedures as well as video training tutorials for my colleagues. As a form of team management and collaboration, we had meetings on a daily basis (SCRUM-like approach), so that every person in the team was kept updated on the state-of-art of the prototype.
-
-
-
PluSure
-
Turin Area, Italy
-
PLM Consultant
-
Sep 2010 - Sep 2011
Project oriented. Customization of the Teamcenter platform on client specification. It was also my duty to quote all project developing requirements in terms of time and resources as needed. Past projects include: Project #1: Collaboration with the company “Alenia” for the development of aircraft component drawing workflows (C custom library developing). Project #2: collaboration with the company “Magneti Marelli Suspension System” (R&D department) for a project which included CAD drawing creation, modification and validation (C custom library and Java Swing GUI developing). Custom report handling (XML, Apache FOP). Project #3: Collaboration with the company “Fiat Group Automobiles” (ICT Department) for a project of CAD server synchronization for title block retrieval (C++ custom library for XML data comparing using the Xerces/Xalan framework and data synchronization over SOAP). Project #4: Collaboration with the company “Magneti Marelli Suspension System” (R&D department) for business process migration (involving both metadata migration and business logic migration). Collaboration included upgrade and data migration from Teamcenter 2005 mp5 to Teamcenter 8.3 (now Eclipse OSGi) and porting of all the Java business non-OSGi compliant code to the new fully OSGi compliant platform.
-
-
-
Dylog
-
Italy
-
IT Services and IT Consulting
-
100 - 200 Employee
-
Software developer
-
Jan 2009 - Aug 2010
Developing of the company's closed source inspection software. Research and development of algorithm and data synchronization between the computer device, sensors and actuators. Milestones and new release team planning, every six months. Bug fixing. Support to internal fitter technicians. Development and maintaining of customer relationships. Developing of the company's closed source inspection software. Research and development of algorithm and data synchronization between the computer device, sensors and actuators. Milestones and new release team planning, every six months. Bug fixing. Support to internal fitter technicians. Development and maintaining of customer relationships.
-
-
Education
-
Università degli Studi di Torino
MS, Virtual Reality and Multimedia -
Coursera
-
Politecnico di Torino
BS, Computer Engineering