Extended Reality (XR)

I developed an intense interest in understanding how Extended Reality devices could be used for, well, “good.” Over the pandemic, as many of us were stuck home, I purchased a couple of the Oculus Quest headsets for my family. Frankly, we were blown away. Perhaps it was just the euphoria of being able to finally do something other than sit while watching the news about a virus taking over the world. We needed something to just help us get up, move around, and have fun. The technology was still considered early, but I was amazed at what it was capable of. (We would play the infamous Beat Saber, competing against each other for high scores! Even better – we were getting cardio exercise in while having fun!) Surely there must be a slew of use cases for this tech? So, I decided to dive in head first. I purchased the Quest 2 as Meta was taking over Oculus. Then the Quest Pro where we worked with colleagues at Geisinger Commonwealth School of Medicine to develop a couple of prototype VR applications where students could enter an OR simulation and learn basic cardiology while in remote areas. My students learned the ORamaVR platform to make developing their medical simulation prototype much easier than it would have been otherwise. I also started teaching in the EXCELerator program for the College of Engineering, where some incoming students come for an immersive experience in prepping for the college experience on campus over the summer before the start of their first semester. I work with a small group of students each summer helping them learn about design and development framework in engineering using VR. Lately the Meta Horizons creation platform has been quite good for that.

I’ve developed a brand new course (offered the first time in Spring 2024) where I teach students about Design and Development in XR using Meta Quest 3 headsets. Students learn about Unity for the first half of the semester by working through a wide range of custom labs and a suite of resources on the Unity Learn platform. The rest of the semester they spend their time going deeper as they implement various interactions and figure out how to create accessible, immersive experiences by working on their own projects. It’s been awesome watching students develop immersive worlds on their own from scratch! I’ve been amazed at what some students have been able to create. It’s a lot to cover in one semester, but the fun of working with these devices and developing in Unity has far outweighed the work, and I think most of the students have agreed.

If you’re interested, reach out to former students of the course, or just send me an e-mail and we can talk!

Updating CSCI 205

CSCI 205 has been a highly successful course for our majors. It is a lot of work for students, and likewise for the instructors who teach it (myself and Prof. Chris Dancy.) But, the rewards have been plenty, as the course teaches a lot about there is a lot of material that is out of date. The course will still relying on Java 7, and used Netbeans.

I’ve taken quite a bit of extra time this semester to update some of the course. As of Fall 2019, the course has been updated in the following ways:

  • We are now using IntelliJ IDEA
  • The course has been updated to Java 12
  • Many videos have been re-recorded to address the updated content, including:
    • Heavier emphasis on lambda expressions than ever before
    • Teaching more java.nio and java.nio2 along with java.io
    • Added new material on socket programming with java.net
    • Added new material on multithreading and concurrency in Java
    • Introduced the Java Stream API (not to be confused with the I/O streams)
  • The final project has been overhauled. Every student now must use Gitlab for all their Scrum task board and sprint management (This has worked surprisingly well!)
  • Expanded the JavaFX material 

It’s a start. There is a lot to be done still.

In a recent discussion with Chris Dancy, he expressed significant interest in incorporating elements of engineering social justice into the course. This represents a broader move by the engineering community at large to start helping our students recognize the impact that their choices have on humanity. I am at fault here. Like many of us, we focus on the goals without teaching our students the impacts that their choices have. Well, that’s not entirely true. I discuss impact – computational resource impact. That’s not enough. I do not give enough attention to social, moral or ethical impact. So, I believe this will be the next set of revisions we make to the course. Chris may likely start on some of those changes in Spring 2020. But, we’ll likely make a more substantial effort to incorporate this into the project over the summer. It’s time for engineers to emphasize people as more important considerations than profits.

Posting from MarsEdit

I’m still slacking off on my hope to do a better job with keeping a presence online. I need massive simplicity, and as much as I dig WordPress, I don’t find the workflow intuitive. So, on my quest to find the simplest, easiest editor that will let me publish posts quickly, with relatively rich content, I continue to stumble around. Nothing out there does exactly what I want. And frankly, this is just not anywhere near representing a high priority. Blogo was easy to use, but they died. I’m not sure where they went? IFTTT supports an automatic hook to allow a new Evernote post to post to WP, but not a self-hosted WP blog like this. I am close to just giving up and editing directly on the WP interface. Given the great functionality that Project Gutenberg has given to WP users with Blocks, that’s not really a bad option. My bit of frustration comes just with dealing with media files, mostly images.

So, checking out MarsEdit, available on the App Store. Do not let the free price to download and install fool you. It’s free with complete features for 14-days, then your ability to publish content is disabled. To continue, you must pay $49 for a full license.

Here’s the interface running on my Mac in Dark Mode. You can see it fully supports Dark Mode in Catalina:

There are also options to edit your slug, tags, select the WP categories this post is assigned to, select your featured image, and other server options to set your post status, author, whether comments are closed, etc. Overall, it seems quite simple. But, I mostly care about editing. You can see above it’s a basic functional rich-text editor. It supports the most common formatting commands.

Yet, we know that WP has made a substantial commitment to its Project Gutenberg – their new Blocks editor. So, what happens when you publish a brand new post? It comes up in “classic” mode when you open your post in WP:

I can attempt to convert my post to Blocks…

MarsEdit_convert_to_blocks

but sometimes it results in no change, and leaves your post in classic mode. Other times, it does indeed work. I’m not certain what the triggers are that prevent your post from converting to separate blocks, though this is not a big deal to me.

At first glance, this tool seems a bit pricey. However, the workflow I need to quickly publish updates from my Mac with minimal effort is definitely there. I might adopt this. Why? There are two tools I rely on extensively when writing documentation – quick screen captures, and recording quick little GIF animations. Having to save a file, upload it to my Media, and then reference it, is an absolute pain.

I’ll try this for a bit…

Past Research Projects

The following are research projects that, for one reason or another, ended up falling down the priority list and are no longer being actively worked on. I list them here as a possible conversation starter with students looking for interesting work

  • [IN PREP] Cowen R, Mitchel MW, Hare-Harris A, King BR. Incorporation of Brown’s stages of syntactic and morphological development in a word prediction model of conversational speech from young children
  • [IN PREP] – Cowen R, Mitchel MW, Hare-Harris A, King BR. An adaptive n-gram based stochastic word prediction model for conversational speech.
  • [IN PREP]- Hare A, Essae E, King BR, Ledbetter DH, Martin CL. Determining the dosage effect of copy number variants in the human genome.
  • [IN PREP] – Ren C, King BR – Protein residue contact map prediction using bagged decision trees

Current Student Research

These are ongoing projects as of Summer 2019


Bhagawat Acharya ’20 – Using deep learning for handwriting text recognition.

  • This is a collaborative, interdisciplinary project with Katherine Faull (Comparative Humanities and German Studies) and Carrie Pirmann (Research Services Librarian). We are working together to develop an improved handwriting translation pipeline to increase the HTR throughput of 17-18th century Moravian handwritten literature that is part of the Moravian archives.
  • Funding – Bucknell Emerging Scholars Summer Research Program

Taehwan Kim ’20 – Using Deep Learning to Forecast Monthly Extreme Temperatures over the United States

  • Undoubtedly, climate change is one of most pressing, disconcerting issues of our time. Collaborating with atmospheric science and aerosol science expert Dabrina Dutcher, Assistant Prof. in Chemistry and Chemical Engineering, we are exploring the use of deep learning to develop advanced models that can improve future temperature predictions
  • Funding – Katherine Mabis McKenna Environmental Internship

Lily Romano ’20 – Software for Aerosol Analysis

  • We are developing a new software toolkit to aid in the aerosol research of my colleagues in Chemical Engineering, Dabrina Dutcher, PhD and Timothy Raymond, PhD. Lily is resuming work that was initiated by former student Khai Nguyen ’18 on the software, including advancing the data analysis tools available for aerosol researchers.
  • Funding – Clare Boothe Luce Research Scholars Program

Kartikeya Sharma ’20 – Trajectory Gaze Path Analysis on Eye Tracking Data for Autism Spectrum Disorder Studies

  • This is a collaborative project with my colleagues, Vanessa Troiani, PhD and Antoinette Sabatino DiCriscio, PhD at the Geisinger Autism Developmental Medicine Institute. The primary aim is to develop a toolkit for the eye tracking research community that incorporates my novel method for extracting scanpath trends from group-level eye tracking data.
  • Funding – Ciffolillo Healthcare Technology Inventors Program

Yili Wang ’21 – Using deep learning to identify discriminative features of images with high interest of autistic children

  • This is a collaborative project with my colleague Vanessa Troiani, PhD at Geisinger Autism and Developmental Medicine Institute. This is also a continuation of a project with former student Tongyu Yang `17, who is continuing to assist with the effort
  • Funding – Bucknell Program for Undergraduate Research (PUR)

These are projects that are unfinished for a variety of reasons:

Including a Jupyter Notebook file on WordPress

I’ve been exploring different mechanisms to post Python Jupyter notebook files on WordPress. Of course, I can use nbconvert to convert my notebook files to other formats – including HTML – right from the command line. I can then post this file as part of an embedded HTML block in a WordPress post. However, this sounded like an unnecessary step, since I also wanted the notebook to be available in GitHub. I did not want to deal with generating this HTML file AND also managing a published notebook on GitLab as well. Smells a lot like duplicate efforts, wasted time. Thanks to a great WordPress plugin from Andy Challis, called nbconvert, I was able to achieve what I wanted! See his page at https://www.andrewchallis.co.uk/portfolio/php-nbconvert-a-wordpress-plugin-for-jupyter-notebooks/ for complete instructions.

  1. If you haven’t yet, you must install WP Pusher as a plugin in your WordPress site. (See this for more info.)
  2. Go to his web page for nbconvert, copy the CSS custom code displayed on the page.
  3. Go to your WordPress page, and add the custom CSS displayed on the page above into Appearance -> Customize -> Additonal CSS
  4. Go to https://github.com/ghandic/nbconvert and verify the latest instructions. Install the nbconvert shortcode plugin through WP Pusher. Activate it.
  5. That’s it!

Follow the instructions to include your own Jupyter notebook file available on GitHub.

Example

Here is an example. In a standalone text (or paragraph) block, I included the following shortcode:

[nbconvert url="https://github.com/bkingcs/python_snippets/blob/master/clustering/hierarchical.ipynb" /]

This generates the following:

Moving to WordPress

So, you’re interested in contributing some code back to the wonderful Internet community. Well, your first stop should surely be Github. If you’ve been a student in Computer Science, or pretty much any discipline where you need some code or libraries to accomplish some task, then surely you know that 1) Github is your primary go-to, and 2) you better have set up an account, and started sharing some examples of code for your future employers and collaborators to see what you do.

For some of us, however, we want access to a platform that can give us a bit more flexibility to be able to be a bit more reflective and educational with the code we share, and not simply just share code. And, of course there are dozens of options out there for doing that as well. For me, I spent years just managing my own site using Adobe Dreamweaver. However, it was becoming a bit overkill for what I was trying to achieve. I’ve used WordPress for various classes I teach, but not for my own endeavors. Well, as of 2019, that has changed. I narrowed down my search between Medium and WordPress, and concluded that both would have worked. However, I ultimately decided on WordPress due to convincing myself that it had a bit more flexibility to do some cool things.

Plugins

At some point, I’ll start a log of plugins I use…

There is one plugin that is one of my favs…

WP Pusher

One plugin I’ll mention right off the bat is WP Pusher. While WordPress manages a pretty rich set of plugins, some developers have complained that it takes a bit of time to get their plugins available through their API. Also, you’ll quickly notice that there are a lot of outdated plugins still available that may not necessarily work properly on your version of WordPress. Instead, you can deploy plugins directly from GitHub, Bitbucket or GitLab.

It’s quite simple to install WP Pusher:

  1. Go to WP Pusher
  2. Download the zip file (wppusher.zip).
  3. Go to your WordPress dashboard, and select Plugins -> Add Plugins -> Upload Plugin. Upload your zip file.
  4. Activate it!

You should now notice that you have a new menu item available called WP Pusher.

That’s it! Find a WordPress plugin on GitHub, and readily install it using WP Pusher! All plugins you install and activate from WP Pusher will then be available and managed from your standard Plugin interface. Very cool.