Converting Julia to Javascript and WebAssembly

Converting Julia to Javascript and WebAssembly

I have a “two language problem”, but not this two language problem.  I often find myself prototyping small data analysis projects in Julia, and then rewriting them as web applications using Angular & Typescript to make them easily accessible to a broad audience.  Much of the work is similar in Julia and Typescript (such as creating plots) so it’s not that annoying to translate, but occasionally I run into analytical code that is really painful to rewrite in Typescript.  Some…

Read More Read More

Online demos for Flux.jl

Online demos for Flux.jl

I’m currently developing a set of demos for Flux, a slick new Julia machine learning framework.  It’s still under active development and won’t be ready for production use any time soon, but it’s already a very powerful tool and lets you develop models in far less time than would be required with something like PyTorch or TensorFlow. One of the nice things about Flux is that it’s easy to export trained models to the web with deeplearn.js via FluxJS.  There’s…

Read More Read More

Science reporting is hard to get right

Science reporting is hard to get right

Science reporting is hard to get right.  The New York Times tries their best and has a great team in their science section, but the science reporting is sometimes a bit rough in the other sections.  I recently came across an error in their Europe section which remains uncorrected despite my best efforts, so I thought it would be fair to share here. The article in question, “Russia, in Reversal, Confirms Radiation Spike“, starts off with an image and caption: There’s…

Read More Read More

Want to solve some differential equations?

Want to solve some differential equations?

Over the past two weeks I’ve been working with Chris Rackauckas on a nifty little project – putting the power of DifferentialEquations.jl into your browser. Chris, in addition to being the driving force behind DifferentialEquations.jl, did some amazing work getting the startup time down for the service and it now feels pretty snappy. It’s been a great learning experience, and we now have a good idea for what goes into deploying a julia-driven website on a service like Heroku. If…

Read More Read More

VMWare’s Project Clarity

VMWare’s Project Clarity

I switched over from Angular 1 to Angular 2 this past summer, and after a steep initial learning curve it’s been working very well.  The ecosystem for A2 has a long way to go before it catches up with all the good resources that are available for A1, but things are moving quickly.  One early pain point for me was finding a UI framework that meshed nicely with A2’s bindings.  Originally I was using Material Design 2, but it is…

Read More Read More

Why I’m still a Nullable-luddite

Why I’m still a Nullable-luddite

Much of my Julia work involves manipulating data in the form of DataFrames.  DataFrames are pretty handy — it’s easy to get data into them from file formats like csv and feather, as well as all types of databases.  I can split-apply-combine to my heart’s content with do blocks, and while only basic joins are possible using join, it’s easy to form more complex ones with just a few lines of code.  It’s reasonably fast to work with them, but…

Read More Read More

Using Julia on the web

Using Julia on the web

A fairly common problem is that you want to use Julia or another high level language to solve a problem, but also provide that solution to the world through a web site.  For Julia, you have a few different options: Use Escher.jl.  This is a full-stack web server here pages are written in Julia.  It can do a lot of interesting things and is good for simple demos.  However, it is still in an early state, doesn’t play nicely with the…

Read More Read More

You don’t have to use LabView

You don’t have to use LabView

LabView works for a wide range of automation tasks, and lots of people are glad to use it.  Others don’t care for it.  Fortunately for its detractors, there’s other options out there, and here I’m going to highlight my current favorite. Why c++ and Qt? I started out writing automation code in LabView.  Some people like its signal-oriented approach, but I prefer a procedural approach.  While it worked fine for smaller projects, I don’t think it scales well to larger…

Read More Read More

Controlling Signal Recovery Lock-ins over TCP/IP

Controlling Signal Recovery Lock-ins over TCP/IP

Signal Recovery makes great lock-ins.  For my first project as a graduate student I did a lot of shopping around, and eventually ended up purchasing three 7265’s.  They have a GPIB interface (or RS232 for the desperate), and while it’s nearly 50 years old at this point it still works fine (and we have tons of GPIB cards around the lab). Their newer lock-ins, like the 7270, have taken the understandable move of switching to Ethernet and USB control.  They…

Read More Read More

Using NI’s GPIB drivers in Qt

Using NI’s GPIB drivers in Qt

National Instruments DAQ drivers play nicely with Qt, but for some reason NI only provides a .obj file for the GPIB drivers and not a .lib file. Other people figured out how to get this working, but since the instructions are somewhat spread out across the internet I thought it would be nice to summarize the whole thing here. These instructions are for the MinGW build chain — things are somewhat simpler for the MSVCC version as one of my…

Read More Read More