Carlos Ballesteros Velasco
Note: this document is a translation from the spanish version of my Resume. May have some parts in spanish.
Co-founder, developer and technical director of Kawagames.com
Self-employed and freelance
Working at this moment as programmer on The Netwizzy Company : ActionScript3, PHP, C# y Java
Working as web developer on softonic.com
Working as Freelance for business and particulars.
Gold medal at olimpiada informática española (OIE)
Silver medal at olimpiada informática iberoamericana por correspondencia (CIIC)
Bronze medal at International Olympiad in Informatics (IOI)
MySQL Developer Certificaton. Carlos Ballesteros Velasco.
Candidate ID: 12706
Certificate ID: 230151145
Can be validated on: www.mysql.com/certification
High School Degree
Zend Certified Engineer (One of the 1,000 firsts)
Curso de 40 horas de japonés de nivel 1 (organizado por el instituto confucio) (Terminado)
Curso de 43 horas de inglés pre-intermediate.
Curso de 40 horas de japonés de nivel 1 (organizado por el instituto confucio) (Sin terminar)
Ingieniería Informática Superior (en la FIV.UPV) (Únicamente primer año)
Bachillerato Científico-técnico cursado en I.E.S. Misericordia 26 (Valencia)
Educación primera, secundaria y elemental: Rodriguez Fornos & Escolapias (Valencia)
Programador autodidacta usando libros e Internet.
Large knowledge of PHP Programming for Web, Console and Client Applications. Small knowledge about the internals of Zend Engine. Developed several C extensions for PHP. Experiencia dando clases de PHP. Experience teaching PHP. Zend Certified Engineer. Last PHP version used: 5.4. Spanish PHP phpElegante Blog.
Created flash applications using ActionScript. Created games, animations and applications. Created two VMs on flash. Used Alchemy to integrate C++ code on flash.
Basic knowledge about Flex platform. Used FlexBuilder. Though advanced knowledge about ECMAScript and ActionScript 3.0.
Basic knowledge about J2SE and J2ME. Developed a couple of games for mobile devices using J2ME and some demos. Knowledge about the OO architecture of Java. Knowledge about the basic API. Baisc knowledge about Android. Integrated native C++ code in Java using JNI. Developed simple Java VM in PHP. https://github.com/soywiz/phpJavaVM
Medium knowledge about .NET and C# for PC and mobiles: PocketPC, mobile and xbox 360 using XNA. Created opensource C# projects: CSharpUtils and created a PSP Emulator in C# capable of running commercial games.
Knowledge about programming in C/C++. Worked with IDEs: Dev-Cpp and Visual Studio up to 2011. Created several projects for several platforms. Scripts, programs... Created some games and engine ports using SDL and OpenGL.
Medium knowledge and easy programming in D1.0 and D2.0.
Developed graphical utilities like PopGUI using DFL, and lots of utilities (romhacking, and system administration...), console utilities.
Developed gameboy emulator, psp emulator. Developed cdvd plugin pcsx2 plugin. Libraries for D.
Used Python in a couple of projects. Used with google appengine and django.
Knowledge about 80386, working and basing instructions. Basic knowledge about other processors ARM y SH2. More advanced knowledge about Z80 y MIPS r4000. Knowledge about processors (mips): allegrex (PSP) y emotion engine (PS2)... Basic knowledge about PPC (MAC, GameCube, Wii, PlayStation 3 and XBOX360). Knowledge about Java and C# VMs.
IDA (Interative Disassembler)
Worked with IDA, one of the best disassemblers. Knowledge about detecting program pitfalls, and to identify C/C++ code using assembler. Small knowledge about the IDA language scripting, IDC. Additional experience with several other disassemblers and debuggers.
Databases (SQL and NoSQL):
Advanced knowledge about MySQL and using it with PHP with mysql, mysqli and PDO extensions. MySQL Certification.
Medium knowledge about SqLite database and used it with PHP.
Medium knowledge about MongoDB. Created several pages using it without autosharding.
Small knowledge about Sphinx for searching in documents.
User Level Knowledge.
User Level Knowledge about Word, Excel, Access and Powerpoint.
Basic knowledge about Google Docs.
Experience creating client/server applications. Bots, clients and server for several protocols. Experience using several languages: C#, PHP, C/C++
Experience creating console programs to automate tasks:
backups, spiders, search, file renaming...
Examples: 3D Tetris using opengl, GameLib, Lunea, phpmedia, gameboy emulator, psp emulado, games for web. Basic knowledge about APIS Havok, Ogre3D and similar. Working with XNA/C# for (PC and XBOX360). Created iPhone engine using Squirrel and OpenGL|ES. Worked in The Netwizzy Company developed game platform in ActionScript 3.
Worked with textures in compressed formats DXT1, DXT3, DXT5 and variants. Createde decompessor. Worked with swizzled textures in machine formats: (PSP, Xbox360 and Sega Saturn). Pathfinding A* on bidimensional matrices y pathfinding TA* with triangulated surfaces in conjunction with the funnel algorithm to find a direct path.
Game Romhacking. Architectures: GB/GBA DS y SNES; PSX, PS2 y PSP; GB, GBA, NDS. Knowledge about MIPS and Z80. Translated games with compressed and uncompressed texts. Modification of pointers to allow longer texts; graphical edition of fonts and other graphics. Tales of Eternia Spanish Translation (PSX + PSP), Tales of Destiny (PSX), Tales of the Abyss (PS2), Suzumiya Haruhi no Yakusoku (PSP), Tales of Vesperia (360). Other Games.
Videogame portings. Reprogrammed several PC games with reverse engineering (romhacking) reprogrammed using SDL, SDL_mixer, SDL_image, SDL_ttf y smpeg. Proted to PC, Linux, Mac, PSP, and DreamCast. Worked with the problem of reading slow optical mediums, worked with limited memory problems and optimizing performance. Implemented ringbuffer as filter stream for SDL_RWops.
Video editing. Put and remove Subtitles. Add titles, Karaokes. Encoding, muxing, demuxing. Elementan concepts about: stream, filters, layers, wrappers, codecs...
GUI Creation (Graphical User Interfaces)
Created GUI. Dine with VB, C#, Delphi and D+DFL. Worked with scintilla.
Advanced experience with debugging and tracing at assembly level on emulators. Proof of concept of dynamic recompilation applicated to emulation. Created psp emulator. Partial HLE emulation. Allegrex partial support (most cpu and fpu, and a large part of vfpu). It is capable of running homebrews and some commercial games. Disasssembler. Memory viewer. Registers. Tracing. Debugging. Basic knowledge about the PSP architecture. Created gameboy emulator.
Great web programming experience. Use of standards HTML+CSS, XML, JS y (PHP + MYSQL).
Some treated fields:
Handrawing and with tablets. Image outlining using freehand, flash and photoshop. Image coloring with flash and photoshop. Digital image creation and photo retouching.
Linux System Administration
Knowledge about linux commands. Little knowledge about bash. Installing and configuring apache, php, mysql, sqlite and other software on linux systems on Debian compatible systems and fedora.
Creating programs with several threads; mutex, semaphores...
Work balancing on several threads. Nowadays it is getting more and more important since today platforms scale horizontally with more cores instead of more frequency. Implemented synchronization primitives in the psp emulator kernel. Worked with OpenCL and shaders.
Ability to write optimized assembler, critical parts and use advanced instructions for differet plataforms (MIPS, basic ARM, Z80, PowerPC, 8086+). Knowledge about SIMD technologies (Single Instruction Multiple Data) for multimedia applications for PC and PSP: MMX, SSE, SSE2, 3DNOW (basic) and PSP Allegrex.
Mobile videogame development
Experience creating applications and videogames for mobile devices using j2me MIDP 1.0/2.0 and CLDC 1.0/1.1. Knowledge about .NET Compact Framework. iPhone, Android and WindowsPhone.
Developed game and engine for iPhone (PushBox).
Worked with ISO, UDF standards. Experience working with binary formats on all kind of languages.
Knowledge and practice with compression methods (creating compressors and decompressors): Huffman, LZ, RLE and other. Zlib and PNG knowledge. Knowledge about improvement compression/filter technices for lossless images encoding. RLE/LZ per pixel, split by components. Implemented png decoder; png filters: Sub, Up, Average y Paeth. Created encripted protocol systems for several online game platforms.
Experience with videogame translation (english->spanish) on my spare time. Experience using online dictionaries. Urbandictionary, babylon y rikaichan...
Completed several non-offical translations.
Experience localizing software and web pages. Conversion and working natively with UTF-8, ISO-8869-1, Shift-JIS (japanese) and GB2312 (chinese) encodings. Experience working with texts in oriental languages like chinese and japanese.
Crated compiles and virtual machines completely functionals for scripting languages. With basic contro lstructures, foreach, functions, delegates, generators and classes. Code optimization.
Little knowledge about Mathematica. (Used in practices on the Valencia’s universidad politécnic).
Little knowledge about Matlab.
Used graphviz for generating directed graphs. Generated FlowChart for 4 game scripts.
Adobe Photoshop CS5
Lastest used version: CS5.5.
Created filters using PixelBender shaders.
Creación de filtros mediante shaders de PixelBender. Using the lastest features content-aware (scaling and filling) and skinning.
Adobe Flash CS5
Medium knowledge. Clips, buttons, graphics, timeline and advanced actionscript. Complex animations and ActionScript 2.0.
ActionScript 3.0. (Tests with Flex+AIR). Created morpg client test and developed in a game platform at out.com. Last version used: CS5.5. Tests with new flash11 features. Audio generation. Using shaders and Pixel Bender to create personalized effects.
Flash, photoshop and after effects shader creation.
Basic knowledge about Macromedia Freehand. Image outlining, effects and vectorial images. Now I’m using Adobe Illustrator when required.
Adobe After Effects CS4
Baisic knowledge about After Effects.
Basic knowledge about Adobe Premiere. Create movies and presentations. Added titles with affects, synchronizing videos. Remove subtitles. Created text animations.
Basic 2D knowledge and trivial 3D.
Basic level of Blender.
Virtual Dub Mod
Basic knowledge. Open a video and MUX/DEMUX streams. Add subtitles. Reencode.
ffmpeg y mencoder
Ability to recode and handle video using scripts and console.