Job Advertisement: Postdoc in AI/Natural Language Processing

Open Source Hardware enthusiasts — I am an artificial intelligence professor/researcher, and have more work this year than there are hours in the day. This is greatly reducing my free time, and ability to contribute to open source hardware, such as this project. I’m looking for a postdoctoral scholar interested in joining my lab at the University of Arizona, who is interested in the artificial intelligence of language and inference, to work on some exciting research projects, and help reduce some of my work load. Please forward this advertisement to anyone you feel may be interested. I would like to find someone as soon as possible.

best wishes,


Postdoctoral Position Available in Natural Language Processing

I have a position open for a postdoctoral scholar in my lab, primarily centered around a project in explanation-centered inference (more details below). Folks with interdisciplinary backgrounds (for example, but not limited to: cognitive science) are encouraged to apply — the most important qualifications are that you’re comfortable writing software, that you’re fascinated by the research problem, and that you feel you have tools in your toolbox (that you’ll enjoy expanding after joining the lab) to make significant progress on the task.

The start date is flexible, and we’ll review applications as they come in until the position is filled. If you have any questions, please feel free to get in touch:

Postdoctoral Research Associate I

Position Summary
The Cognitive Artificial Intelligence Laboratory ( ) in the School of Information at the University of Arizona invites applications for a Postdoctoral Research Associate for projects specializing in natural language processing and explanation-centered inference.

Natural language processing systems are steadily increasing performance on inference tasks like question answering, but few systems are able to provide explanations describing why their answers are correct. These explanations are critical in domains like science or medicine, where user trust is paramount and the cost of making errors is high. Our work has shown that one of the main barriers to increasing inference and explanation capability is the ability to combine information – for example, elementary science questions generally require combining between 6 and 12 different facts to answer and explain, but state-of-the-art systems generally struggle integrating more than two facts together. The successful candidate will combine novel methods in data collection, annotation, representation, and algorithmic development to exceed this limitation in combining information, and apply these methods to answering and explaining science questions.

A talk on our recent work in this area is available here:

Minimum Qualifications
– A Ph.D. in Computer Science, Information Science, Computational Linguistics, or a related field.
– Demonstrated interest in natural language processing, machine learning, or related techniques.
– Excellent verbal and written communication skills

Duties and Responsibilities
– Engage in innovative natural language processing research
– Write and publish scientific articles describing methods and findings in high-quality venues (e.g. ACL, EMNLP, NAACL, etc.)
– Assist in mentoring graduate and undergraduate students, and the management of ongoing projects
– Support writing grant proposals for external funding opportunities
– Serve as a collaborative member of a team of interdisciplinary researchers

Preferred Qualifications (One or more of the following would be a strong benefit — note not required for application)
– Knowledge of computational approaches to semantic knowledge representation, graph-based inference, and/or rule-based systems
– Experience applying machine learning methods to question answering tasks
– Knowledge of or interest in graphical visualization and/or user interface design
– Strong scholarly writing skills and publication record

Full Posting/To Apply

Contact Information for Candidates Questions
Peter Jansen ( )

Other Information
Tucson has been rated “the most affordable large city in the U.S.” and was the first city in the US to be designated as a World City of Gastronomy by the United Nations Educational, Scientific, and Cultural Organization (UNESCO). With easy access to both a vibrant arts and culture scene and outdoor activities ranging from hiking to rock climbing to bird watching, Tucson offers a bit of something for everyone.

The University of Arizona is committed to meeting the needs of its multi-varied communities by recruiting diverse faculty, staff, and students. The University of Arizona is an EEO/AA-M/W/D/V Employer. As an equal opportunity and affirmative action employer, the University of Arizona recognizes the power of a diverse community and encourages applications from individuals with varied experiences, perspectives, and backgrounds.

Outstanding UA benefits include health, dental, vision, and life insurance; paid vacation, sick leave, and holidays; UA/ASU/NAU tuition reduction for the employee and qualified family members; access to UA recreation and cultural activities; and more!

The University of Arizona has been listed by Forbes as one of America’s Best Employers in the United States and WorldatWork and the Arizona Department of Health Services have recognized us for our innovative work-life programs.

Assembling the Detector Array

I’ve been assembling and characterizing the new imaging array, which currently contains ten of the sixteen total high-energy particle detectors.

The imaging array and source haven’t yet been mounted into the new tomographic platform, and so I acquired the first (quick) data from this array — a 1D absorbance image of a grape:


With the absorbance data for each channel here:

Absorbance of the Grape_400

More information is available on the project buildlog. I also had a bit of fun putting together a video for this year’s Hackaday Prize for a trip to space, with the quarterfinals this past week:

Thanks for reading!

Assembling and Characterizing the Parallel Detector


The revised high energy particle detector boards arrived, and I’ve had the chance to put one together and verify it working over the weekend — and snapped some pictures of the assembly process along the way. This (long!) post details the assembly process, and (towards the bottom) describes some initial characterization of the detector, including a histogram of detector variability.

For more details, please see the detailed OpenCT2 project build logs!


Developing a parallel detector for the Open Source CT 2

I’ve been thinking about tomographic imaging a lot lately in between nursing sore fingers from learning how to hand-wind electromagnetic coils for my attempt at a small prepolarized coded-field MRI, and I thought I’d take a moment to share some progress.


The open source computed tomography (CT) scanner that I put together last year was a lot of fun to design, having many atypical design problems in it, from the mechanical design of the rotary gantry to pairing an appropriate radioisotope source with a modified extra-sensitive radiation sensor. Something about it being essentially a radioactive desktop Stargate that lets you see inside of things also seems to get people very excited, and so I’ve received an eclectic bunch of e-mails asking about the scanner from folks as diverse as radiology professors and biomedical folks to makers to those hoping I’d open up Dr. Jansen’s back-alley CT scans to have a look at some strange bump they have (please go see your doctor!). But I feel that for all the excitement, to quote Feynman, the current open CT design feels a bit like a dog that walks on two legs — it’s not that it does it well, it’s that it does it at all. It’s essentially a working model of the first generation of CT scanners, and so it takes a very long time to get even a single slice of an image. I’ve been wondering what it would take to move it from a proof of concept into something that does the job well, or at least substantially better.


The previous design makes use of a 10uCi Barium-133 radioisotope check source, which is the strongest radioisotope source that’s available without a licence. Barium-133 has strong x-ray peaks around 31kEv and 81kEv, which are low enough energy that organic water-containing materials (like apples and bell peppers) are reasonably contrastive for imaging. The silicon PIN photodiode detector in the Radiation Watch Type 5 high energy particle detector that I used is also most efficient at low (~10kEv) energies, meaning that we would need less exposure time to generate an image with sufficient signal to make things out, although there are technical challenges in detecting these lower energy photons. Imaging under these circumstances is essentially a constant battle for detecting signal over the noise, and one way to generally increase SNR is to increase the measurement time — although of course this increases how long it takes to create an image. In the extreme case when you’re so signal starved, it ends up taking all night just to capture a single slice of a bell pepper.


Another alternative that’s been suggested is to increase the intensity of the x-ray source. For a variety of safety reasons this isn’t something that I’m willing to explore. I’ve heard of folks experimenting with surplus x-ray tubes and equipment, and I believe that your health is just too precious to risk for such endeavors. Pragmatically, as an open source project, using readily available radioisotope check sources is also much more repeatable than found radiography parts.

And so we’re left with a few alternatives:

  • Decrease the scanning volume: The current design has a source-detector distance of about 12cm. Following the inverse square law, each halving of this distance should increase the number of counts at the detector by a factor of 4.
  • Detect in parallel: Starting with second-generation CT scanners, parallel arrays of detectors were used to dramatically decrease scan time. This should give linear speed gains — e.g. N detectors should reduce the scan time by a factor of N.
  • Increase sensitivity: Detecting the signal from single photons requires a genuinely incredible amount of amplification, and this process is noisy. While previously recalibrating the Type 5 detection threshold to just above the noise floor yielded many more counts, it appears as though much of the signal is still buried below the noise floor of the detector.

It’s likely that a solution will end up with some combination of each of these alternatives.


Parallel Detectors
Where the first generation of medical CT scanners contained only a single photodetector, I’ve read that each generation of CT scanner after has increased the number of detectors by about an order of magnitude over the generation before it — moving from ~30 detectors in a second generation system, to ~300 in third-generation fan-beam systems, to ~2000 in modern static ring systems. Each of these improvements allowed scan times to reduce accordingly, starting from about half an hour with first generation systems, to about a minute, to now only a few seconds.

Above we can see how the current system might be parallelized with more Type 5 detectors, each arranged across an arc such that there is a constant distance between the source and each detector. The Type 5 is one of my favorite sensors of recent years, and I’ve had a lot of milage out of it, but unfortunately because it’s about an inch across, it would be difficult to parallelize the desktop CT with more than about 6 detectors using this design. Additionally, the fantastic First Sensor X100-7 that the Type 5 uses has a 10mm x 10mm active area, which makes it great for collecting and detecting high energy particles, but a little large for the kind of spatial imaging that we’re doing, so the images will be a little blurred. Having a smaller detection area will increase our spatial resolution, and decrease the detector size — so that (ideally) we’ll be able to pack many more detectors in (as shown below), and decrease the scan time.


Designing an inexpensive parallel detector

High-energy particle detectors are extremely challenging to design and build, in large part because you’re amplifying the signals from a single subatomic particle by many orders of magnitude in order to be barely detectable by a microcontroller. Because of this they’re extremely sensitive to noise, layout, component selection, and generally must also be shielded from external interference. Given the design challenge I’ve been reading whatever I can find on the topic over the last few months, and meditating on layout guidelines to reach the zen-master level of low-noise layout required for such a task, or at least to get a prototype to a point that I can work from.


The design that I arrived at is heavily based on the Maxim Appnote 2236: Gamma-Photon Radiation Detector, which uses a reverse-biased silicon PIN photodiode as the detector connected to an extremely sensitive first-stage amplifier, followed by a series of cascade amplifiers to increase the signal intensity. The photodiode is the popular BPW34, which has been used in a number of other radiation sensor projects. The active area of the BPW34 is only 7.5mm^2 (a little less than 3mm x 3mm), which is a little over 10 times smaller than the 100mm^2 of the X100-7, so this should increase the spatial resolution a good deal.


While many of the hobbyist designs for radiation sensors operate at effective noise thresholds of around 100kEv or more, because here we have such a specialized application where most of the business photons are 31kEv or 81kEv, keeping the noise floor as low as possible to be able to detect these photons is critical. A number of academic project writeups for radiation detectors I’ve found suggested that the Texas Instruments LMP7721 would be an ideal choice for helping keep the first-stage amplifier as low-noise as possible, both because of its incredibly low noise characteristics (measured in femtoamps), and an uncommon footprint that includes guard pins to further reduce layout noise.


To make the boards modular and digitally addressable, I’ve added on a PIC24FV32KA301 microcontroller, which sports a 12-bit analog-to-digital converter (~1.2mV resolution @ 5V), and plenty of RAM to store a histogram of pulse widths to experiment with doing very crude spectroscopy as I’ve done with the Radiation Watch Type 5. Both the raw analog output of the photodiode amplifier as well as the digital output of a comparator serve as input to the PIC, and a digipot allows one to dynamically calibrate the comparator output based on the noise level at runtime. I’ve also included a small LED for debugging.

The PIC currently exposes an I2C interface (SDA/SCL) for external communication, though in retrospect while this makes communication easy, it would also require programming each detector with a unique I2C address — so future revisions might move to an SPI interface.

In terms of assembly, the memory of spending 4 days to assemble a set of fine-pitched Arducorder boards is very fresh with me, and so I’ve designed these to be very easily put together — a single-sided design with 0603 parts or larger on all the passives, and SOIC pitches on each of the ICs with the exception of the SOT-8 footprint for the digipot. So it’s comparatively easy to build a bunch of these and pop them in the reflow oven, and with a low-quantity BOM of $20-$30 (about half of which is from the TI LMP7721), they’re relatively inexpensive.


A series of guard vias on the ground plane divide the analog and digital sections. I’ve found that shielding the analog section and grounding the shield (like the Type 5) is absolutely essential for operation, much as the appnotes prescribe. I’m not sure what folks tend to use for the shielding tape, but I found that a wrap of electrical tape (to shield the photodiode from light and provide a non-conductive base) followed by a wrap of standard aluminum duct tape from the hardware store seems to work well as a first pass.


As an aside, for the low-field MRI project I’ve been looking for a USB oscilloscope or DAQ that would allow recording at at least 100KSps (ideally 1MSPS) at 12+bits of resolution for several seconds. This is a little unusual — usually scopes that are fast have very short sample memories. I’d seen an article about building a sound card oscilloscope in Make that would easily allow for such long recordings, as well as folks selling oscilloscope probes modified for sound card use, so I thought I’d give this a try before using a benchtop oscilloscope.

Above is a recording from the soundcard oscilloscope with the Ba133 radioisotope source near the detector — and the detections were clearly above the noise floor. Wonderful news! The units on the axes aren’t entirely clear here, and with such a slow sample rate we’re right on the edge of being able to detect this signal, so on to a benchtop scope to better characterize things.


Here I’ve taped the 10uCi Ba-133 radioisotope source to the side of a 2 inch diameter acrylic cylinder. In this configuration I can easily rotate it to see the number of photons detected when the source is directly beside the detector, and compare this to when the source is 2 inches away, and going through a thin (1/16 inch) acrylic sample container.


The noise floor generally appears to be around +/- 40mV, which is very decent for a first try, although it did appear to increase to nearly +/-60mV after being on for a few hours. I was also doing this at Xerocraft beside a metal shop, and the noise would periodically go a little crazy when a large piece of equipment (like the mill) was turned on, so I’m not entirely confident in the noise characterization — but it’s a good start.


The firmware for the PIC isn’t complete, so I was using the scope to trigger on the raw analog output instead of using the PIC (either with the analog output, or the digital comparator output). With the Ba133 source very near to the detector there were far too many detections to count, and with it 2 inches away going through the acrylic cylinder, I counted approximately 20-30 counts per minute. That’s not incredible, but it’s also workable, especially if the noise floor can be lowered, and we gain access to more signal.

To help ground this, the bell pepper image shown earlier was captured at about 22×22 pixel resolution, with about 60 seconds of integration time per pixel, for a total of about 9 hours of acquisition. Using a parallel array of about 20 of these BPW34 detectors, the rows of such an image could be captured in parallel, so we’d only have to scan in one dimension. Assuming it takes 5 minutes of integration to capture an image with a similar baseline signal (say 100 counts) to 60 seconds of integration with the Type 5, we could capture a similar (likely sharper) image with about 20 measurement cycles using the parallel detector. At 5 minutes per measurement cycle, this would reduce the acquisition time to about 90 minutes, or a factor of 10 faster than the original device. Were we to significantly improve the noise threshold, this could further decrease the acquisition time, and really start to get low resolution images in under an hour, and complete low resolution tomographic scans (at 10 degree increments, or 36 angles) in under a day. That’d be a substantial improvement over the current system.



Mechanical Design
Given the requirement for long acquisition times (though much shorter than before), I’ve been sketching up a simplified mechanical design that could be entirely self-contained without any moving parts exposed, and placed on the edge of ones desk to scan away for the duration. I’d also like it to be much more compact than the original design so that it’s unobtrusive, while being attractive and interesting enough that it would be a welcome addition to ones desk. The basic design would be a cylinder approximately 6-8 inches in diameter, and 8-12 inches high, with a 2-3 inch diameter aperture in the top to place in a cylindrical acrylic sample container.


Moving to a parallel detector removes the need to linearly scan both the source and detector, which removes two of the four axes, greatly simplifying the mechanical design. In this prototype, the idea is that a small sample container slides in through the top, and the sample itself (rather than the source and detectors) will rotate, also greatly simplifying the design.


The source and detectors would be mounted on a moving Z-axis (shown above), that translates them up and down to capture different slices of the sample. While here I’ve included two stepper motors on nylon lead screws for this purpose, in practice this doesn’t appear to provide enough support to prevent the Z stage from walking, especially with an unbalanced load — and so this will likely change to three lead screws in the next revision. The drive motors are currently NEMA14 steppers, with a NEMA17 footprint for the sample cylinder support and rotation.


So far a great first set of experiments and sketches, and it’ll be interesting to better characterize the detector design, make improvements and revisions, and see how it all ultimately affects acquisition time.

Thanks for reading!

Towards an Open Source Low-Field MRI prototype

My friend David Lesser and I have started work on an ambitious project that I’ve been thinking about for nearly seven years — constructing a low-field desktop magnetic resonance imager (MRI) prototype. We’re hoping to do this by borrowing from coded aperture spectroscopy and imaging to back out the field inhomogeneities in electromagnets. If we’re clever, and lucky, we hope to be able to get a few cubic inches of useful scanning volume.

You can follow the project build logs here, which is an entry for this year’s Hackaday Prize to space.

Here are a few images from the build logs:







Thanks for reading!

Towards a simple solder-paste extruder


I recently posted about a simple and inexpensive pick-and-place vacuum head that I’ve been designing. With the swivel house connector figured out, I’m just waiting on some hose couplers before mounting it to give it a spin. In light of the pick-and-place vacuum head seemingly in good shape, I thought I’d take a moment to post a few pictures of a prototype solder paste extruder that I started designing this weekend, since I’m hoping to do this automatically as well.

When I first started with surface mount components I just manually dispensed the paste from the syringe, and in the last few years I’ve been using the inexpensive solder paste stencils from places like OSH Stencils to really speed up the pasting process, as well as make it more repeatable and reliable. But as much as I refine my technique, I’m still not great at stenciling paste on larger boards that have lots of fine pitched components, on the order of 0.4mm to 0.5mm spacing. I find that after stenciling I’ll spend a good deal of time moving the paste around with fine tweezers to help prevent bridging (although often there are still bridges), and so I usually end up manually soldering fine pitch TQFP parts, which is very time consuming. For a project in my queue, I’ve designed a board that has about 300 parts (summing to a little under 2000 pads), most of which are 0402 capacitors or 0.4mm pitch leadless QFNs over a board that’s about 10cm on an edge — which is likely beyond my capacity to easily, reliably, or comfortably assemble by hand. This is exactly what these machines were designed for, after all!


I had a good look at a bunch of open paste extruders on Thingiverse to see what folks have been up to, and how this is traditionally approached. I’ve read that high-capacity commercial machines often use pneumatics for solder paste extrusion, but that’s a level of complexity that a lot of the folks in the open source community aren’t willing to get into (myself included), although there are some examples of this approach being used, like the Claystruder. The two more common approaches to open paste extruders seem to be using a lead screw to press on the plunger (like with this simple-paste-extruder or the Printrbot Paste Extruder), or using a belt attached to a vast system of gears to very slowly press down on a syringe plunger with high torque (as with Richrap’s Universal Paste Extruder). I happen to have one of Richrap’s extruders and it’s a beautiful piece of work, but all the gearing make it a little large and heavy for the machine that I’m putting together. The lead screw approach has always appealed to me for it’s simplicity, so I decided to give that a try first. The recent kickstarter for the Voltera Circuit Printer has also convinced me that the lead screw approach can likely be done very compactly, with a minimum of weight, and support quickly changing paste syringes.

The prototype that I put together is more of a sketch in hardware to help me appreciate the issues of paste extrusion, and help hammer out a design. Instead of using a plunger, I’ve used a very long lead screw that acts as the plunger, and has a gear atop with a captive nut to transfer force. The gear is driven by a Parallax continuous rotation servo, which I thought I’d try given that it simplifies the design by having an integrated gear box (which gives it lots of torque), and it can be directly driven by a microcontroller rather than requiring a separate stepper driver.


There are aspects of this design that work really well — the syringe is very easily accessible, and very quick to change. It’s also fairly compact, but I think could be even more compact — the size is largely driven by the orientation and width of the servo motor. Some important bits that I observed with this test rig:

  • Resolution requirements: Using this 8-32 screw, it takes about a quarter turn of the nut to start the paste extruding (from rest). But the paste keeps flowing, so it’ll likely need to move (say) a quarter turn in one direction to get the paste flowing, then immediately move most of a quarter turn in the opposite direction to stop the paste from flowing, and get an appropriately small spot of paste. It’s not clear whether I’ll have to move to a stepper to get the required resolution for this back-and-forth traversal.
  • Force: Quite a bit of force is required — it does bow the MDF on my prototype a bit at the top, so that plate will have to be more rigid.
  • Reversing: Some designs include rails, while others appear not to include them. Given that reversing appears to be not just a convenience for more easily swapping out paste syringes, but also an integral part of the extrusion process to prevent oozing and more accurately deposit precise amounts of paste, some rails will have to be added to ensure that the linear motion is transferred to the screw (and that it doesn’t just spin in place).

Definitely a successful experiment, and plenty to absorb for my next free evening infront of the laser cutter. Hopefully with a few more iterations I’ll have arrived at a very functional, capable, and compact design. Thanks for reading!

Spectrometer Group Buy, and see the Arducorder at CES!

Just a quick update, and my apologies for being slow to update — I think I speak for all the Hackaday prize finalists when I say that the push to finish was absolutely exhausting! In the mean time I’ve been very busy catching up on writing two papers in the lab, visiting with family over the holidays, taking care of a sick kitty, and trying to find a few hours of rest.


Arducorder at CES

The good folks at Hamamatsu have borrowed the Arducorder this week to help demonstrate their beautiful C12666MA micro-spectrometer in action. If you happen to be at CES, be sure to drop by the Hamamatsu booth to check it out!


Micro-spectrometer Group Buy

The C12666MA micro-spectrometer is a beautiful instrument, but it’s also not the easiest to get ahold of in small quantities. The folks over at Group Buy (who helped get the FLIR Lepton thermal imager out into the community) have a group buy for the micro-spectrometer at the fantastic price of $180, or about $50 off the regular single-quantity pricing. This is a really fantastic deal, and if you’ve been assembling your own Arducorder (or would like to experiment with the C12666MA micro-spectrometer), it’s a great opportunity. As of writing there are only 4 days left to get in on this group by, so you’ll likely want to act quickly.


Power Switch!

Every designer has aspects of a project that they do well, and places where they could use a little improvement. Power circuits are where I usually need improvement, and I tend to overengineer them for efficiency so much that occasionally they’re simply too complex to work on the first revision. The Arducorder has a very good and high-efficiency buck/boost power circuit, but the case design was missing an important element — the acrylic slider that covers the power switch, and lets you easily turn the unit on! Free yourself from the bounds of having to carry around a tiny screwdriver or paperclip, and cut out this power switch slider :).

Just a quick update — thanks for reading!

Arducorder Mini Update: Sensor Board Mega-Update, and Capacitive Touch Wheel

Hi folks — two exciting updates to the Arducorder Mini project! The first is a mega-update on the sensors, including this video testing out the magnetic field sensor by detecting the magnetic fields from the transformer in a soldering station!

The second update (fresh from this weekend!) shows the capacitive touch wheel working, with a test visualization I wrote. Looks beautiful!

The full updates can be seen on the project logs. Thanks for reading, and stay tuned!

Arducorder Update: Video and Sensor Board Assembly

Definitely making serious progress! Here’s a 2 minute video, the first for the Hackaday Prize, which describes the concept and initial prototype:

And a new project update describing the assembly of the first sensor boards can be found here, where all of the project logs can be found on the build log for the project.