Personal website of Paul Szczepanek
Professional Experience
July 2013 - Current
Software Engineer at BlinkPipe
- Developing software for an OMAP based board designed for video conferencing. Working across all layers from network, through interrupt handling to video processing and GUI.
- Working with custom hardware, developing a focusing algorithm for the camera.
- Integrating external libraries and maintaining code, keeping it up to date with upstream development.
- Working with diverse codebases in C, C++, Perl, Bash and many specialised frameworks - both on custom hardware and x86 servers providing the communication backend and video multiplexing.
- Profiling the video bridge, building requirements spec for client usage and monitoring the performance of servers to guarantee availability.
- Developing client-server systems for real-time communications. Reverse engineering proprietary network protocols.
- Handling time-sensitive lossy communication and audio and video processing, from bare UDP to RTP streams with NALs.
- Working on improving audio quality through processing and error resilience.
- Researching, evaluating technologies and prototyping solutions to problems.
- Troubleshooting external product installations and providing technical support to installation teams.
- Working in a small team using SCRUM.
January 2011 - October 2012
Programmer at Climax
- Game engine programming using C++, extending the Unreal Engine 3 whilst working on a video game targeting multiple platforms (PC, XBox 360 and PS3).
- Debugging and profiling code to run within memory and time constraints.
- Integrating third party middle-ware.
- Gameplay logic programming using scripting languages (UnrealScript, Kismet).
- Implementing and maintaining a high quality user interface using Scaleform. This involved working closely with UI designers and artists. I worked end to end from ActionScript inside the Flash files, through the game logic in UnrealScript down to the C++ behind the Scaleform integration.
- Creating tools and plug-ins for graphical packages to be used by artists and designers. Supporting and extending the tools and providing training for users.
- Working within a team of programmers and collaborating with a multi-discipline team of artists, animators, designers, audio engineers and writers. Using agile techniques, source control and bug-tracking systems.
November 2007 - May 2010
3D artist, programmer at Stainless Games
- Programming front-ends and user interfaces for video games for multiple platforms (PC, NDS, XBox 360, PS3). Working together with artists and designers to produce a user experience that is both intuitive and visually appealing.
- Working on mock-ups and prototypes for project pitches. Coding up working prototypes on short notice for purposes of design validation.
- Creating textures, 3D models and other art assets for multiple platforms. Creating tools to help with art asset authoring and other tasks.
- Working in a cross-discipline team, within a quick iterative development framework and tight deadlines where collaboration and effective communication are crucial.
January 2005 - July 2007
3D artist at Reality Pump
- Creating art assets in a scalable way to tailor them for multiple target hardware (PC, XBox 360, PS3), working with a wide range of graphical software packages (Max, Maya, Photoshop, ZBrush) to create cutting edge graphics.
- Writing scripts for graphical packages to improve the art workflow. Helping to automate pipelines for asset creation, working closely with both artists and programmers, linking the two disciplines.
- Technical review and QA of art assets created by other artists for technical compliance and performance optimization.
- Working in a small team developing an in-house tree generation technology, later released as a standalone middle-ware product.
May 2003 - April 2004
3D artist at Drago Enterteinment
- Creating 3D graphical assets for video games, working from concept art to real-time rendered objects created to conform to strict run-time performance budgets.
- Using various graphical software packages, including 3D Studio Max for modeling, Photoshop and Paintshop Pro for texturing.
- Writing scripts for 3D Studio Max to help with modeling and automating repetitive tasks, creating art pipelines.
Personal Projects
- Lethe (Linux/Android/Windows) Game written in C++ using SDL, an interactive fiction engine designed for touch screens, which involved creating my own scripting language.
- Metal Crusade (Linux/Windows) Written in C++ using OGRE, created as a technical demo of a 3D game.
Education
October 2003 - June 2007
Computer Science at University of Science and Technology AGH in Cracow
- Earned a Bachelor of Computer Science degree, majoring in computer systems (final grade 5, equivalent of a 1st).
- End term paper on real-time volume rendering
file:
real-time volume rendering.pdf (4.9MB)
and an application to accompany the presentation
(openGL under windows in an msi installer).
file: vxlv.msi [31.77MB]
- Worked on a commercial project for TRAX elektronik - a system for managing roadside LED signs, their communications and status, data gathering and processing from meteorological points and cameras.
- Learned to work in teams on big projects, manage complexity, use OOP techniques and create internal and external documentation.
- A solid base of theoretical and practical mathematics. Taught to use several languages (C/C++, Java, assembler, Perl) and development methodologies - working under both Windows and Unix environments.
- Earned a grade-based grant on my first year which I retained until the end of my studies.
Skills
As a programmer
- Specializing in C++ but with experience in many languages, including Lua, Perl, Java, ActionScript.
- Writing software with real-time requirements, debugging and profiling code to achieve set frame-rates.
- Good 3D math, effective use of the STL.
- Designing and implementing user interfaces.
- Writing tools for 3D graphics packages using their respective scripting languages and APIs.
- Knowledge of SQL (PostgreSQL and its PL/pgSQL).
- Constantly learning and dealing with new frameworks, tools and APIs.
- Proficient on both Linux and Windows platforms, experience in Android development.
- Experienced in following written specification, working under pressure of deadlines.
- Using agile techniques, unit and integration testing, using source control, writing and maintaining documentation.
- Good collaboration and communication skills.
As a technical artist
- Extensive experience in many professional software packages like Maya and 3D Studio Max, Photoshop, ZBrush and Mudbox but also in open source programs like Blender and Gimp.
- Creating assets for numerous platforms under strict time and resource budgets.
- Authoring and reviewing assets created by artists for technical compliance.
- Designing and automating pipelines for asset creation, working closely with both artists and programmers, linking the two disciplines.