Intro

I am a passionate software developer that enjoys working on software projects in the broad spectrum between low-level machine coding to high-level architecture design.

I started programming at the age of nine (1984) to develope my own games. Then, after a longer period of learning Assembly and C on the Commodore Amiga, I joined the demo scene where I got into coding multimedia player frameworks and effects on machine level.

In 1988 I finally got my first modem (2400 baud at that time) and went online. In 1992 I started my own BBS and wrote my own support tools.

The open-source philosophie stroke my mind around the mid-nineties where I learned more on system design, un*x philosophy and networking.

In 2003 I finished university (Diploma in Business Administration and Computer Science) and started working as software developer. The software that I wrote got awarded by the American Software Association.

A year later I realized that I need more time so I went back to university to enjoy the mental freedom. In 2012, I finally finished my PhD after doing a couple of open-source software projects related to interoperability, high-performance computing and interactive user-interfaces.

At the moment I develop a middleware system for interoperability between scripting languages and run-time environments.

Between 2013 and 2017 I worked at the GWDG wit focus on authentication/authorization (e.g. passport.js, Shibboleth) and cloud computing IaaS (e.g. Keystone/OpenStack). Currently I'm looking for a new job.

Profile
Name Daniel Adler
Birthday 1975-06-23, Germany
Address Theaterstr. 11A
37073 Göttingen Germany
Email dadler at NO SPAM uni-goettingen NO dot SPAM de
Education
R&D
  • Dynamic Interoperability between Programming Languages and Run-Times
  • Cross (Web, Mobile, Desktop, Console) Software Frameworks and Tools (e.g. Meta-Programming)
  • Privacy-Preserving Social Networks
Skills
  • Cross-platform Development: Platforms, Languages and Tools
    OS AmigaOS, Android, BeOS/Haiku, DOS/DESQview, Dragonfly BSD, ElateOS/Tao Intent OS, FreeBSD, GNU/Linux, Mac OS X, Microsoft Windows, MINIX, NetBSD, OpenBSD, Plan9, QNX, RISC OS
    Languages C/C++, D, Erlang, Forth, Go, Java, JavaScript (HTML5,Node), Lua, Objective-C, Perl, Python, R, Shell (DOS,Korn,POSIX), Tcl
    Compilers/SDKs Android NDK/SDK, Apple iOS/Mac OS X SDK & XCode, Borland C/C++, CLang/LLVM, Eclipse CDT/JDT, GCC, IBM Jikes, Intel C++, Microsoft Visual C++ Studio & Windows Platform SDK, Netbeans, PCC, Watcom
    Build Systems Ant, CMake, Make (BSD,GNU,SUN), Nmake, Scons
    GUI APIs Mac OS X Carbon and Cocoa, Win32 DirectX and GDI API, X Window System
    References: rgl, dyncall
  • Assembly with focus on native code interoperability
    ISAs ARM (v3-v7,Thumb,NEON), X86 (32/64-bit,MMX,SSE,AVX), MIPS (32/64-bit), PowerPC (32-bit,Altivec), SPARC (32/64-bit)
    VM Design Forth (JIT unroller and compression), Lisp, LLVM, Java, VP
    System-Level ABIs PE, Mach-O, ELF
    ISA-Level ABIs C ABI calling conventions (fixed, variable args) across architectures incl. Win32- and PPC32 specific quirks (stdcall, pascal and fastcall variants), System V variants, system calls, ARM/MIPS EABIs, C++ this call variants, Plan9
    C/C++ Type Information Tools GCC XML/XSTL, CLang

    Implementation of fundamental low-level techniques for interoperability between dynamic and static code chunks such as dynamic call facilities and dynamic handling of callbacks via call kernels, trampolines and structured processing of arguments in register sets and on stacks.

    References: dyncall, f4k

  • Interoperability between Programming Languages
    Component Middleware CORBA (mico), COM (Win32/ActiveX), Eclipse Plug-Ins, Mozilla (XPConnect,XPCOM)
    Run-Time Environments JavaScript Engines (SpiderMonkey, V8/Node), Erlang NIFs, Java JNI, Lua Extension/Embedding, Netscape Plug-In API, .NET 4.0 dynamic, Mono Run-Time, Objective-C Run-Times (GNUstep,Cocoa), Perl XS, Python Extensions/Embedding, R Extensions and Embedding, Ruby (MRI) Extensions, Tcl Extensions

    Development of FFIs and Run-Time Bridges.

    References: rdyncall, luadyncall

  • 3D Graphics
    Rendering Interfaces OpenGL, OpenGL ES, WebGL, DirectX, custom software-based Gouraud Shaders
    Techniques Terrains, Physics Simulation (hand-written or using ODE, Bullet)
  • Embedded Systems and Low-Memory Footprint Designs
    Hardware Platforms ARM-based (Raspberry Pi, Beagleboard, Gumstix), AMD Geode (Soekris, PC Engine ALIX), MIPS-based (Linksys WRT54)
    Micro-Controller LPC1343 (ARM Cortex-M3)
    Video Game Consoles GCE Vectrex, Sony Playstation Portable Homebrew
    Frame buffer Interfaces Linux Frame Buffer, Nokia 1200 LCD/PCB8841
    Development Platforms Gentoo Linux Cross-Dev, OpenELEC, OpenEmbedded/bitbake

    References: dyncall ports for ARM and MIPS, toying with the r0ket

Chronical
Year System Activity
1983
Atari 2600
  • Fun
1984
Commodore C116
  • Basic 3.5
1985
Commodore C128
  • Basic 7.0
  • C-64 Mode :)
1987
Commodore Amiga 500
  • AmigaBasic
1988  
  • C (Aztec C Compiler)
  • Amiga OS GUI Programming
1989  
  • Amiga Hardware Programming
  • Assembly (MC68000)
1990 PC i286
(DOS, DESQview)
  • Pascal (Borland Turbo Pascal)
1991  
  • Demo Coding (Amiga)
1992  
1993
Acorn 5000
1994
Amiga 1200
  • Assembly (MC68020) and AGA
  • Offline Graphics Animation (Maxon Cinema 4D)
1995  
1996  
1997 PC i586
(RedHat 4, Window NT 4)
  • Linux
  • Windows
  • Web Design: TEK group homepage.
1998  
  • Freelancer: Web Design & Programming
  • ISDN Internet Router (Linux)
1999
Voodoo 1
(3fx Glide/OpenGL)
  • BeOS
  • Glide/OpenGL 3D programming
  • research: GTK+ Magic
2000
Voodoo 3000
(Mesa/OpenGL w/ X11)
  • contribution: TEKlib display module (BeOS port)
  • X11/OpenGL 3D programming
  • Assembly (VP) on Amiga SDK, Elate, Tao OS
2001  
  • DSL Internet Router (Linux)
  • Freelancer: C++ Text Rendering Component for Windows (FreeType2)
2002
GeForce4 TI4200
  • Demoscene: Linux 4K Intro ``fork rulez'' (7th place)
  • Open source: R package rgl
2003  
  • Research: Forth Interpreters in Interactive 3D Environments, Particle Systems
  • Award: John M. Chambers Statistical Software Award from ASA
  • Employment: Software Developer (Java Swing GUI,C++) B & N Software AG
2004
Mac PowerBook G4
(PowerPC 32-bit, GeForce FX Go5200,OS X 10.4)
PC i686
  • Demoscene: Forth JIT Compiler for 4K intros
  • Research: Shader programming, Perlin Noise, Gerstner Waves
2005
Linksys WRT54GS
(Broadcom MIPS, OpenWRT Linux/WhiteRussian)
  • Release: Freeware Desktop Gadget DashMesh
  • Cross-Development: OpenWRT
  • Research: X3D
2006
Playstation Portable
  • Research: X3D
  • Research: Implementation of Component Object Model 'ucom' for interoperability between R and C++
2007  
  • Award: Big Programming Competition for R package 'ff' 1.0 from R Foundation
  • Assembly: dyncall ports for
    • ppc32 ABI for Mac OS X
    • x86 ABIs (cdecl, stdcall, fastcall, thiscall) for Mac OS X, Windows, Linux
    • x64 system v (Linux, BSD, Mac OS X) and win64 (Microsoft Windows) ABIs
    • mips eabi ABI for PlayStation Portable using PSPSDK
2008
OpenMoko
(ARMv4T, OpenEmbedded/Angstrom)

Beagleboard
(ARMv6, OpenEmbedded/Angstrom, Android)


MacBook Pro
(Model 4,1-Intel Core2 Duo, GeForce 8600M, OS X 10.5-10.6)

PC
(Intel Core 2 Quad Q6700, GeForce GTX 270)

ALIX 3d3
(AMD Geode, Gentoo Linux)
  • Release: dyncall 0.1
  • Release: R package ff 2.0
  • Assembly: dyncall port for ARMv4T (openmoko, beagleboard)
  • Experience: Ångström Linux Distribution.
  • Experience: Cross-Building/Deployment with Gentoo
    (incl. frustration with libtool)
  • Shader Programming: Comparison between CPU (single/multi-core) and GPU shader-based
    (Mandelbrot Zoomer in Cg, Cuda (single/double float), OpenGL, OpenMP)
2009
iPhone 3GS
(ARM Cortex-A8, iOS 3,ARM v6/v7, PowerVR SGX535)

Gumstix Overa Fire
(OMAP 3530/ARMv7, PowerVR SGX530)
  • Release: R package rdyncall 0.1 at useR!
  • Assembly: dyncall ports for iPhone ARMv6 ABI
  • Experience: Cross-Dev with OpenEmbedded / bitbake
  • Experience: Angstrom Linux
2010
Soekris Net5501
(AMD Geode and 24/7 harddisk)

Lemote
(Loongson MIPS-based 64-bit, OpenBSD)
[temp. access by a c4mp br0 - THANK YOU!]
  • Assembly: dyncall port for MIPS 64-bit n64 ABI
  • OpenBSD/Soekris-powered energy efficient Internet Server
    dns,mail,lighttpd,svn,hg,mail
2011
Sun Fire V440
(4xUltraSPARC-IIIi, SPARC v7/v9 ABI, SunOS)
[remote access by GWDG - THANK YOU!]


r0ket @ Camp
(LPC1343, ARM Cortex M3, 8kb RAM, 32kb Flash)
  • Release: rdyncall 0.7.3 initial release on CRAN
  • Experience: SunPro compiler tool chain
  • Assembly: dyncall port for SPARC v7 (32-bit) and v9 (64-bit) ABI
  • Demoscene: cross-platform 'R scripted' SDL/OpenGL intro.
  • Language Interoperability: R, Lua
  • Hacking: graphics efx on r0ket (copper bars, noise, sin-tables, floyd steinberg dithering, zoom rotator)
2012
MacBook Pro
(Intel Core i7, Radion HD 6750M, Mac OS X 10.7)

Efika MX Smartbook
(ARM v7, Debian armhf)

Raspberry Pi
(ARM v6, OpenElec/XBMC)
  • Assembly: dyncall port for ARM hardfloat ABI
  • Cross-Development with OpenElec
  • Experiences: Android NDK r8b, sdk
  • Language Interoperability: Objective-C Run-Time, JavaScript/V8