Ian Bull

Ian is an Eclipse committer and the Principal Architect for Yoxos Enterprise. Ian co-leads the Eclipse p2 project, serves on the Eclipse RT PMC, the Eclipse Planning Council and the Eclipse Architecture Council. His interests include software architecture, component oriented design, release engineering, human-computer interaction and just about everything related to software engineering. Ian holds a Bachelor and Master's degree from the University of Waterloo and a PhD from the University of Victoria.

Twitter LinkedIn Google+ Vimeo 

Jan 18th, 2017

Tutorial: AES Encryption and Decryption with OpenSSL

AES (Advanced Encryption Standard) is a symmetric-key encryption algorithm. Symmetric-key algorithms are algorithms for cryptography that use the same cryptographic keys for both encryption of plaintext and decryption of ciphertext. In this tutorial we will demonstrate how to encrypt plaintext using the OpenSSL command line and decrypt the cipher using the OpenSSL C++ API. The [...]

Leave a Comment
Nov 29th, 2016

YubiKey — Code signing with a smart card

Code signing and verification is the process of digitally signing executables or scripts to ensure that the software you are executing has not been altered since it was signed. I previously outlined how to perform code signing and verification with OpenSSL, using both the command line and OpenSSL API. While the tutorial explained how to [...]

Leave a Comment
Nov 3rd, 2016

Tabris.js Windows 10 Beta Program

Tabris.js is a cross platform mobile toolkit that enables application developers to target multiple platforms from a single JavaScript code base. Unlike some other cross-platform toolkits, Tabris.js does not rely on WebViews, but instead produces native applications. This is achieved by providing a cross-platform API in JavaScript and linking that API to the platform specific widgets. Additionally, [...]

Leave a Comment
Jan 10th, 2017

Tutorial: Code Signing and Verification with OpenSSL

Code signing and verification is the process of digitally signing executables or scripts to ensure that the software you are executing has not been altered since it was signed. Code signing helps protect against corrupt artifacts, process breakdown (accidentally delivering the wrong thing) and even malicious intents. We have recently started implementing code verification in J2V8. Code [...]

Aug 10th, 2016

Smile: Deploying a mobile app has never been so easy

Scanning QR code in the Tabris.js app

Mobile software development is hard. Before you can even write your first line of code you must: download, install and configure the IDEs and SDKs, configure the emulators or connect a device to your machine, build the application archives (apks / ipas) and install these archives on your device. With Tabris.js we set out to eliminate [...]

Leave a Comment
Aug 8th, 2016

Branching Without an if, A Java Puzzle

I returned home late the other night, and saw this tweet in my timeline: Keyboard broken. Write this Java code without using the letter 'f': int bar(Object o) { if (o == null) return 0; else return 1;} Anyone? — Marc Khouzam (@marckhouzam) August 5, 2016 He added a clarifying note that said the ‘?’ [...]

Aug 9th, 2016

Improved Memory Management with J2V8

Memory management in J2V8 has never been easy. Because J2V8 bridges V8 and Java, three different memory models are in play. Both Java and JavaScript provide a managed memory model with their own GC. JNI / C++ which sits in the middle is completely unmanaged. This leads to a complex situation since both JavaScript and [...]

Leave a Comment
Aug 9th, 2016

Java Methods as JSFunctions

When J2V8 was first released, all callbacks from JavaScript to Java required a registered Java method. That is, all Java methods that you wished to invoke had to be first registered with J2V8. For some applications this was fine, but it made for a complex programming model. Furthermore you could not use anonymous inner classes [...]

Aug 9th, 2016

EclipseCon video: Node.js in a Java World

Last week I finally published the Node.js bindings for Java. These bindings allow developers to embed the Node.js runtime directly onto the JVM through the Java Native Interface. In March I gave a pre-release presentation at EclipseCon on this work, which was recorded by InfoQ. You can check it out at: https://www.infoq.com/presentations/node4j-nodejs-java. The slides are also [...]

Leave a Comment