Started from scratch an OpenSource Game Engine fully written in Kotlin Multiplatform.
In November-2020 the project reached the 2.0 milestone.Kotlin iOS Android Linux Windows Mac Multiplatform Objective-C Swift KorGE Korlibs XCode IntelliJ AppCode
Worked for JetBrains as technical writer for the Ktor.io framework. Initial IntellIJ plugin for Ktor, and some kotlin-related development.Kotlin Ktor IntelliJ Gradle PostgreSQL Redis GIT Multiplatform
Productivity Developer at Schibsted creating tools to make other developers at the company more productive.Scala
- Worked as programmer for The Netwizzy Company for Our.com.
- AS3 programming for facebook games.
- Creating a protocol encryption system and incremental compression for smartfoxserver using java.
- Created deployer using C#.
- Created a realtime massive ranking server.
Course of 40 hours of japanese level 1 (taught by “instituto confucio” at UV)Japanese
- MySQL Developer Certification. Carlos Ballesteros Velasco.
- Candidate ID: 12706
- Certificate ID: 230151145
- Can be validated on: www.mysql.com/certification
«Foundations of digital Games» workshop from Tomi A. Pasanen at UPV.C/C++ Games
Zend certified engineer (one of the first 1,000).PHP English
Graduated at school.
Achievements, awards, contests and olympiads
Bronze medal in “International Olympiad in Informatics” (IOI).C/C++ Algorithmics
Silver medal in “informática iberoamericana por correspondencia” (CIIC).C/C++ Algorithmics
Clasified for the provincial phase of the XI Mathematic OlympiadMathematics Algorithmics
Talks and Lectures
C Compiler and small Web-Based IDE written in multiplatform Kotlin.
You can check the documentation along the realtime IDE + CompilerC/C++ Kotlin Compilers Korlibs
Multiplatform template engine written in Kotlin, similar to twig and django, supporting suspending model methods.Template Engines Kotlin GIT Coroutines Korlibs
I/O library + asynchronous file systems + asynchronous and synchronous streams + network clients + tools.Kotlin Korlibs
Asynchronous dependency injection system for Multiplatform Kotlin.Kotlin Korlibs
Imaging Library + Image Formats + Color handling + Vector rasterizer + Curves.Kotlin Korlibs
Audio Manipulation + Audio Formats + Audio Playback + Audio Synthesis and DSPKotlin Korlibs
Multiplatform Date and Time library supporting Kotlin allocation-free inline classes in all the targets, and extension properties to create a great experience managing dates and time spans.Date and Time Kotlin Korlibs
Date Structure library for Multiplatform Kotlin.
It includes support for allocation-free optimized data structures for all Kotlin targets, like
IntIntMap. It also offers
BitSet and generic algorithms like
mapWhile, and property delegates like
I created an application in swift for the Apple Watch, to learn the Japanese Syllabaries directly in your wrist. https://itunes.apple.com/us/app/kana-practice/id1437713698#?platform=appleWatchSwift XCode AppCode
- 1.0 was released early 2019 after a couple of years of development.
This is the largest project I have done in my whole life up to date. And I’m still updating it when I have some spare time.
It is a really really huge project that includes more than 100,000 lines of code and that I have been developing in the coming years.
It has lots and lots of things and uses most of the things I like from programming: emulation, low, medium, and high levels, compilers, dynamic recompilation / JIT, graphics, audio, operating systems, UIs…
JVM aot compiler that generates Haxe with initial focus on games.Kotlin Java HaXe Ahead of Time GIT TDD AST Control flow Graph Binary Files Linux Windows Mac Android
Created a spanish kotlin community. kotlin.es It is a blog published at github using jekyll with information and articles about kotlin in spanish language.Kotlin HTML Jekyll IntelliJ Spanish
C compiler made using C# for .NET (it generates IL code; executables and DLLs).
Generated code is completely portable and you can execute that binary without modifications in any platform supported by Microsoft .NET or Mono.
It includes C preprocessor and most of the C syntax.
It is capable to compile lots of simple programs, though it cannot compile the most complicated ones.
The main objective for that was to compile ffmpeg into .NET code in order to be able to use in my PSP emulator.
Even when it is not finished it is in a pretty advanced stage.
It allows to dump AST from C code as XML so any other languages can convert them into other stuff or to genreate documentation.C/C++ C# Compilers GIT TDD AST
I created three projects/libraries for multimedia playing in haxe. Those were: haxe-nme-webp, haxe-nme-webm and haxe-nme-opus.
Those aimed to be able to:
Decode webp images. Webp is a pretty efficient image format. Supporting lossy and lossless compression and alpha channel in both cases, as well as a better compression rate than jpeg and png. So it is a suitable image format suitable for games, specially on mobile where it is interesting having images in a fraction of the size.
Decode and play webm videos. Webm is a container based on ogg/riff, that uses VP8 as video codec and vorbis as audio codec. So I included both video and audio decoders.
Decode and play opus audio. Opus is a great audio format that allows a huge compression rate and handles pretty fine some use cases including speech and music and it is free to use.HaXe C/C++ Muxing Video Processing Audio Processing Image Processing Containers
Then I realized that there were some other projects that aimed to do the same thing: “swig” and “twig.js”.
After a couple of years giving them opportunities to both projects I realized that they didn’t implemented the most powerful twig parts and that one of them didn’t even make dynamic recompilation, so I decided to continue with the project.
I ported the project to typescript, and continued making TDD and adding interesting test cases from the powerful twig part.
Simple Massive Realtime Ranking Server
It is a very simple ranking server: users have a score associated and an instant associated to that user/score pair.
It allows to insert scores in logarithmic time, to list scores in linear time and to get the position of an user in logarithmic time.
The problem was that the only way we have to handle millions of scores and have reasonable times was to precalculate in a daily basis all the data. So it was not scaling well and was not realtime.
I dessigned an algorithm based in RebBlack trees that added stats to all nodes in a way that keeped logarithmic insertion and allowed to locate also in logarithmic time a node by position.C# Algorithmics Sockets GIT TDD
I collaborated in the project poly2tri porting the code to ActionScript3.
The library aims to make possible to triangulate a set of polygons so you can handle them easily, for accelerated APIs drawing, physics and path fidning.
I made a small demo combining the triangulatiom I made of the ported library, with a path search using a TA* (Triangulated A Start) plus a funnel algorithm implementations in order to find the shorted direct path between two points of a mesh of generated triangles.ActionScript3 Algorithmics
I created a project to do portable integration tests for all the PSP emulators out there.
Initially I created them for my emulator cspspemu, and later I ported it to jpcsp and it ended being adopated by ppsspp emulator, which made it grow a lot.C/C++ Assembler Emulation TDD
I started a project along a few friends where we created translations for several Tales of games including Tales of Eternia, Tales of Destiny, Tales of the Abyss and Tales of Vesperia.Romhacking Translations
Started a proof of concept gameboy emulator using D. That version was interpreted and was the first approax to real devices before my psp emulator.D Assembler Emulation OpenGL
I was born in Spain and I’m native.Spanish
I studied english until the university and I’m reading english articles all the days. I can understand english pretty well, but my speech skills are rather limited at this point.English
I was born in Valencia/Spain and even when I’m not usually speaking it, I can understand it without any issue.Valenciano
I have studied japanese. I have been a couple of times in japan.Japanese
Open Source Software
Pre-intermediate, 43 hours english course taught by Training Express SL at Softonic.English
Level 1, 40 hours japanese course (from instituto confucio). Resumed at 2010.Japanese
«Foundations of digital Games» taught by Tomi A. Pasanen.Games
Scientific-Technical Bachelor’s Degree at I.E.S. Misericordia 26 (Valencia).
Early education, elementary and high school: Rodriguez Fornos & Escolapias (Valencia).
Self-taught, autodidact and proactive person, reading books and internet.
Created several applications for Apple Watch and iPhoneSwift XCode AppCode
Ported framework from as3 to kotlin.Kotlin Games Web Emulation Romhacking
Created incomplete java aot compiler using scala.Scala Ahead of Time Java
Used python in a couple of projects. Used google appengine and django.Python Web
Made several server prototypes with Dart. Started a xmpp library for Dart. Very easy with Dart’s syntax and API.Dart Web
Created flash games, animations and applications using ActionScript. Created two virtual machines and expression evaluators in flash. Used Alchemy/FlashCC to integrate C++ code in flash + used alchemy opcodes manually for fastest performance. Created ANEs. Created multiplatform webp image decoding with ANEs and FlashCC. Worked with facebook APIs to create games in our.com.ActionScript3 Flash Games OpenSource Web
Basic knowledge about J2SE and J2ME. Developed a couple of games for mobile with J2ME and some demos. Knowledge about java OOP. Knowledge about basic API. Android development. Integrated C++ code in java using JNI. Collaborated in Jpcsp java psp emulator. Created Java Virtual Machine in PHP.Java C/C++ PHP Games
Medium knowledge about programming in D 1.0 and D 2.0. Developed graphical utilities like PopGUI in DFL, lots of utilities including romhacking and terminal tools. Developed gameboy emulator and psp emulator. Developed cdvd plugin for pcsx2 emulator. Some D libraries.D Games Emulation Romhacking OpenSource
Medium knowledge about .NET technology and C# language for PC, .NET Framwork: PocketPC, mobile device, XBOX360 using XNA, and univeral applications. Created opensource project for C# utilities. CSharpUtils. Created PSP emulator in C# with dynamic recompilation as a successor of my psp emulator in D. Knowledge until .NET 4.5 including all the work of async + await. Developed a prototype of node.js for .net 4.5 (node.net).C# Games Emulation TDD Romhacking OpenSource Web Await/Async
- Wide knowledge about PHP for web, terminal and client applications.
- Knowledge about Zend Engine.
- Develop several extensions for PHP.
- Experience teaching PHP.
- Experience with PHP4 as well as PHP5.
- Zend certification.
- Last PHP version used: 5.6.
- Created phpElegante blog, techniques and advanced tips about PHP programming.
- Worked with prototype framework as well as jQuery.
- Created server applications using node.js.
- Some NodeJS libraries used: express, consolidate, twig/swig, underscore, mongodb, mocha, should, socket.io…
Extensive knowledge about C/C++. Worked with IDEs: Dev-CPP and specially Microsoft Visual Studio 6, 7, 8 (2005), 9 (2008) and used until 2012. Created several projects for several platforms. Scripts, programs… Used SDL and OpenGL to create games and port engines. Created a C compiler in C#.C/C++ C# Games Romhacking OpenSource
Knowledge about 80386 architecture, how it works, registers and basic instruction set. Some knowledge about ARM and SH2. More advanced knowledge about Z80 and MIPS r4000. Knowledge about MIPS processors: allegrex (PSP) and emotion engine (PS2)… Basic knowledge about PPC (PowerPC) (original MAC processor, GameCube, Wii, PS3 and XBOX360). Knowledge about C# virtual machine (created PSP emulator) as well as Java VM (created a PHP interpreter and a AOT in kotlin).Assembler Games Emulation Romhacking
Used PostgreSQL in an ORM framework. Implemented the binary protocol to create a PostgreSQL client.PostgreSQL
Medium knowledge about MongoDB. Created several pages using MongoDB without autosharding.MongoDB
Basic knowledge Sphinx for document search.Sphinx
Advanced knowledge aboyt MySQL database. Used from PHP using mysql, mysqli and PDO php extensions. MySQL certificate.MySQL
I have used both Libre Office and Open Office.
Basic knowledge about Google Docs and Google Spreadsheets.
Basic knowledge about Apple’s Pages, Numbers and KeyNote.
I have worked with Word, Excel, Access and Powerpoint. I can create styled documents, spreadsheets, databases and presentations.
Experience in some knowledge fields
Great experience in web programming .Using standards HTML5+CSS3, XML, JS and (PHP + MySQL + MongoDB). Some fields treated:
- PDO; PHP >= 5.4
- Multi-layered cache system.
- Image creation and manipulation using PHP-GD2 and Imagemagick.
- Using MySQL and SQLite as db engines. Used their specific API as well as PDO unified API.
- Experience using regular expressions POSIX and PREG.
- XML parsing and creation using streaming apis and dom apis.
- Created spider and crawlers.
- Created powerful, small and fast framework.
- Created flash animations dinamically using ming extension.
- Opensource collaboration using CVS, SVN and GIT.
- Created PHP4/5 extensions using Zend Engine 2. Created C wrappers for PHP.
- Knowledge about fast-cgi protocol and creating native C apps.
- Experience using intellij, firebug, wireshark and apache logs to develop and debug web apps.
- Configuration and administration of apache and nginx web servers.
- Experience with some of the apache and nginx mods as mod_rewrite.
- Worked with sphinx for searchs.
- Experience with e-commerce and social networks, including sms payments, paypal, facebook, google, amazon…
- In later years I have strongly used node.js and typescript
Examples: 3D Tetris using opengl, GameLib, Lunea, phpmedia, gameboy emulator, psp emulator, web games. Very basic knowledge about Havok, Ogre3D and similar APIs. Worked with C# for XNA (PC y XBOX360). Create iPhone engine using Squirrel and OpenGL_ES. Worked in The Netwizzy Company developing game platform in ActionScript 3. Worked in Akamon Entertainment in AS3 and Kotlin for a game platform.
Video editing. Put subtitles and remove subtitles. Add titles, Karaokes. Encoding. Muxing/Demuxing. Knowledge about video terminology: streams, filters, layers, wrappers, codecs, containers…
Experience with videogame translation (english -> spanish) unofficially. Experience using inline dictionaries. Google translate, RAE, urbandictionary, babylon and rikaichan.
Completed several unofficial translations.Translations English Spanish Japanese
Windows, mac and linux user. Knowledge about linux commands. Basic knowledge about bash. Installation and configuration of nginx, apache, php, mysql, mongodb, redis, virtualbox using linux systems, including Debian compatible and Fedora/Redhat.Linux Mac Nginx Apache MongoDB Redis Virtualbox MySQL
Experience with software localization and web pages. Encoding conversion and problem handling with: UTF-8, ISO-8869-1, Shift-JIS (japanese) and GB2312 (chinese). Experience working with texts in oriental languages as chinese, japanese and korean.Translations English Spanish Japanese
Romhacking for unofficial game translation. Architectures: GB/GBA DS y SNES; PSX, PS2 y PSP; GB, GBA, NDS Knowledge about MIPS and Z80. Translated games with plain text and compressed text. Reallocating texts and modifying pointers to get able to have larger texts; image and font editing. Translation of Tales of Eternia (PSX + PSP), Tales of Destiny (PSX), Tales of the Abyss (PS2), Modificación de punteros para textos mas largos; edición gráfica de fuentes y otros gráficos. Suzumiya Haruhi no Yakusoku (PSP), Tales of Vesperia (360) and other games.
Old videogame porting. Reprogrammer PC game using reverse engineering (romhacking) and reprogrammed using SDL, SDL_mixer, SDL_image, SDL_ttf and smpeg. Ported to PC, Linux, Mac, PSP and DreamCast. Handled problems with optical disc reading, handled problems with limited memory and optimizing performance. Implemented ringbuffer as a filter stream for SDL_RWops.Assembler C/C++ C# D Romhacking
I have user knowledge about ms-dos, windows, linux and mac operating systems. I’m comfortable with both mac and windows keyboards. I have used in a daily basis android, ios and windows phone. I’m usually using a macbook to develop but I have been working on windows machine lots of years.Android iOS
Created multithreaded apps; mutex, semaphores… balancing all the work with each thread. Implemented synchronization primitives for a hle psp emulator kernel. Worked with OpenCL and shaders. Specially interested in single-threaded asynchronous applications and lock-free workers not sharing state but using message passing.Await/Async
Experience creating mobiel apps using j2me MIDP 1.0/2.0 and CLDC 1.0/1.1. Knowledge about .NET Compact Framework.
Developed engine and game for iPhone (PushBox).Mobile Squirrel C/C++ C# OpenGL HaXe OpenGL Shading Language XNA Games Java Kotlin Await/Async
Worked with ISO, UDF and other standards. Created reading implementations. Great ability to work with binary formats in all kind of programming languages.
Knowledge and practice about compression methods (compressor and decompressors): Huffman, LZ, RLE and derivates. Knowledge about ZLib and PNG. Knowledge about how to compress better, and specific filters for images; RLE/LZ per pixel instead of per byte, separating componentes… Implemented a PNG decoder; PNG filters: sub, up, average and paeth. Protocol and file encryption for an online game platform.Compression Algorithms Image Processing Audio Processing Video Processing Containers Muxing Binary Files
Created some GUIs. Using VB, C#, DELPHI, D+DFL and Java. Worked with scintilla component (www.scintilla.org).D C# HTML
I have used graphviz a few times in order to render some directed graphs.Graphviz
Some times as a hobby I copy and draw some stuff.
Experience creating terminal-based programs to automate stuff: backups, spiders, searching, file renaming…C# PHP C/C++ D Python
Created a complete and working compiler and virtual machine for a scripting language. Including basic control structures, foreach, functions, delegates, generators and classes. Code optimization and simple constant propagation.
Created C and PHP compilers in C#.
Experience creating client/server applications. Bots, clients and servers for several protocols, including mmorpg emulators. Experience in several programming languages: C#, PHP, C/C++ and D.C# PHP C/C++ D Sockets
Ability to write optimized assembler code for critical parts using several advanced instruction sets (MIPS, ARM, Z80, PowerPC, 8086`). Knowledge about SIMD (Single Instruction Multiple Data) instruction sets for multimedia applications for PC: MMX, SSE, SSE2, 3DNOW (basic), VFPU for PSP’s Allegrex, and ARM’s NEON.Assembler