RESUME


PERSONAL INFORMATION



Fernando Luis Cacciola Carballal


Born February 22, 1971 in Capital Federal, Buenos Aires, Argentina.

Married with 2 children.


http://fcacciola.50webs.com


fernando.cacciola@gmail.com



EDUCATION



FORMAL:








COMPLIMENTARY


SELF STUDY


From age 15 I have always been self-studying programming, general computer science topics, basic software engineering and some specific fields like Computer Graphics, Image Processing, Numerical Methods, Computational Geometry and Geometric Computing.


SKILLSET








CAREER


CONSULTANT

September 2003 – present

Founder of SciSoft (www.scisoft-consulting.com)






2004

CGAL


The CGAL project (www.cgal.org) (Computational Geometry Algorithms Library) is a C++ library that captures the research work on geometric computing carried on in various European-based research centers and universities. As a result, CGAL represents the state-of-the-art in geometric computing. Usually, it is in CGAL where the advanced techniques of the Exact Computation paradigm, like floating-point filters, restricted predicates, lazy constructors, etc... are first implemented.


Early 2004 I was invited by the CGAL head to integrate into CGAL my Straight Skeleton and Polygon Offsetting code (which I had been advertising on the Web those days). This involves creating and submitting for review to the CGAL Editorial Board a Formal Specification of the package consisting of the code and the user/reference manual.


To do that I:



After some work my code was accepted and integrated into CGAL and I was also invited to present it on the 2nd CGAL User’s Workshop.


May 2003

Consultant Milestones that gestated SciSoft




EMPLOYEE

1995-2003

Sierra S.R.L (www.gosoierra.com)

Junior Programmer

Senior Programmer

Project Architect and Lead Developer of the C++ subsystem.


Company profile:


World-leading Argentine company (with offices in the USA) offering hardware and software solutions for the Embroidery Industry.


Entry position:


Assist them on rewriting from scratch, using Borland C++ 3.1 for Windows 3.0, their first Embroidery Design Software.


Junior milestones:


Adapted and implemented an early version of a “embroidery filling” algorithm they had developed but for a different kind of input shape, for which I self-thought, entirely on my own, the basics of geometric computing.


Started the design and implement ion of the ever-evolving geometric library.


Senior milestones:


As the R&D lead developer, came up with a filling algorithm to fill an arbitrarily-shaped polygon with holes via a constant-direction region-based zig-zag pattern. Learned about advanced data structures and algorithms, graph theory, discrete math and basic mathematical programming.


Guided and mentored the other five programmers in the team.


C++ architect/designer/programmer milestones:


With all the front-end development moved to Delphi and being now the only C++ programmer in the team, got completely in charge of the back-end layered framework offering general, numerical, geometric, topological, imaging and interfacing services to the front-end. Most of my contributions to the Boost library, and some of my earlier publications, originated in this engine.


Failed to implement an algorithm to fill a complex curvilinear shape with a single spiral path but learned about NC machining, offsetting, voronoi diagrams,computational geometry, and most importantly: robustness issues in geometric computing.


Implemented a Vectorization (or Autotracing) algorithm to turn a simple cartoon-like bitmap into vector art-work. Learned basic image processing. Developed and image processing toolkit including basic filters, morphological operators and color-reduction.


Learned about image-based Skeletonization and Medial-Axis-Transformation. Learned about the Straight Skeleton geometric structure. Implemented an algorithm to construct a straight skeleton and partition a polygon based on it. Developed and implemented an algorithm for filling TrueType glyphs by partitioning the glyph into columns that could be filled with a zigzag (using my straight skeleton based partitioning algorithm).



Designed and implemented the automated conversion process from a carton-like image into a complete vector embroidery design.


1993
Solydine S.R.L.
Junior Programmer


Entry position:


This time as an independent contractor develop a graphical audio-program scheduler to manage and play named audio-file lists


Milestones:


After delivering the product and during beta testing, detected and FIXED a bug in the 6809-based DSP firmware.


1991-1992
Solidyne S.R.L.
Junior Programmer

Employer profile:


Small Argentina company selling electronic equipment and software for the radio broadcast industry.


Entry position:


Develop, from scratch and in C, a graphical sound file editor application (similar to the wave-editors you get with a sound card these days) using the API to the card driver and a DOS-based GUI framework written in C++.


Milestones:


Under the mentorship of the lead programmer, learned about basic data structures and algorithms, memory management, application lifecycle, architecture and design methodologies, and testing strategies.









HOBBYST


1989


With my first PC, an 8086 PS/2, and having self-taught the C programming language, developed a DOS-based windowing system (ala Borland's OWL) with a clean separation between interface and implementation, then based on it, designed and implemented an “Insurance Management Application” for a local customer.


1988


Got my first PC, an 8086 IBM PS/2, and self-learned the C programming language.

Designed and Implemented a very simple “Wages and Salary System” for "Industrias Camporesi S.R.L" (which is my Dad’s Factory), for the CoCoII, in BASIC.


1987


Fully conceived, designed and implemented from scratch a program named HAL WRITER for the Tandy Color Computer II (CoCoII) consisting of a system extension, written entirely in Assembly language for the Motorola 6809, hosting the BASIC interpreter within a graphic-mode environment via a custom character generator.



PUBLICATIONS



PROFESSIONAL AFFILIATIONS


Professional Member of:






OPEN SOURCE COMMUNITY



Active developer of the Boost C++ Project.
(
www.boost.org/people/fernando_cacciola.html)

Mentor for Boost on the Google Summer of Code 2008

Author of:

Optional library.
(
www.boost.org/libs/optional/doc/optional.html)

Numeric Conversions library.
(
www.boost.org/libs/numeric/conversion/doc/index.html)

Value Initialization utility
(
www.boost.org/libs/utility/value_init.htm)

Active developer of the Computational Geometry Algorithms Library – CGAL Project.
(
www.cgal.org)

Author of:

2D Straight Line Skeleton and Polygon Offsetting package.
(
www.cgal.org/Manual/3.3/doc_html/cgal_manual/Straight_skeleton_2/Chapter_main.html)

3D Surface Mesh Simplification package.
(
www.cgal.org/Manual/3.3/doc_html/cgal_manual/Surface_mesh_simplification/Chapter_main.html)

Boost Graph Library and CGAL package (contributing author).
(
www.cgal.org/Manual/3.3/doc_html/cgal_manual/BGL/Chapter_main.html)