teaching, research, etc.



Contents licensed CC BY-SA
Theme by orderedlist

OctoPrint and OpenSCAD

Deep Thought: printprintprint
Thursday, October 27

As part of the upcoming POSSE in Raleigh, organized by the Foss2Serve team, I’m doing a “deep dive” into two projects as part of our preparation. Because I’ve taught in this space, and done some of these activities before, I’m modifying them a bit. Also, I admit that (at the moment) I would have to be subjected to some very compelling arguments as to why I should involve students in OpenMRS. When I brought students to the project, we could not get it to build, and another faculty member and I found the community largely unresponsive in terms of helping us get to a point that we could even consider contributing. Perhaps things have changed, but unless someone says “yes, it’s better now,” I wouldn’t encourage students to touch the project with a barge pole.

The SourceForge exploration is something I would not casually do if I was, at this point, looking for projects for my students to contribute to. I’d instead be picking specific projects I knew about, used, or otherwise wanted to focus on for selfish reasons. For example, we have a 3D printer bay with 5 Printrbots in operation—software that supports our work with these printers is of particular interest to me and students in my lab. So, when teaching open source software development and FOSS participation, I’m inclined to focus on tools that support the work we do locally. (Tools that “scratch an itch.”)

I’ll take a quick look at OctoPrint and OpenSCAD. Both are blended projects; OctoPrint is primarily Python and Javascript, as it is a Flask application that runs (easiest) on Linux-like platforms (Mac, Linux); the Raspberry Pi makes a particularly good host. OpenSCAD is primarily a C++ application, running on multiple desktop platforms.

I consider OctoPrint to be a mature project, for the simple reason that it runs reliably for our use on multiple printers without fuss. It has a plugin architecture for contributing new features (modifying the core is not the preferred path for most feature additions at this point), and has an active community and an excellent, active, and responsive project lead. While not nearly as “large” as some communities, my experience working with students in OctoPrint’s community was that they always received prompt support from the community when they had questions. This is in stark contrast to much larger projects that had dedicated “community leads,” who rarely responded in anything resembling a “timely” manner to student questions on forums/lists/emails.

OpenSCAD is also mature, but again, this is measured by several years of on-and-off use; it runs reliably on every platform I’ve thrown it at. I have not actually attempted to work on the code for this project, nor am I confident I would throw students at it. As a multi-platform build, it is likely difficult for students to validate/verify commits. I say this having had students contribute to LibreOffice, which was a challenging community to make changes and commit changes to on a single project, primarily because it was such a large codebase with so many dependencies. OpenSCAD is at least one order of magnitude smaller (100 KLOC vs. 1 MLOC), which might make things “easier…”

Both OctoPrint and OpenSCAD have active communities on OpenHub, and their blogs are reasonably up to date (Octo more than SCAD). Given that OpenSCAD was a GSOC project this past summer, I would like to have seen more traffic on their “news” page… but, the fact that they were a GSOC project is signal enough to me that their community is living and breathing, because dead projects don’t get that kind of support.

This post is replicated on the Foss2Serve wiki.

Berea Computer Science is Hiring

Deep Thought: now is the time
Wednesday, January 27

Visiting Instructor/ Visiting Assistant Professor of Computer and Information Science

Berea College seeks applications for a full-time visiting instructor or visiting assistant professor in the computer and information science program. The successful candidate will demonstrate strong interest in teaching in a liberal arts context, making connections with other disciplines, and using active and engaged learning techniques in their teaching, such as the use of student-centered pedagogies, flipped classrooms, etc. Applicants must have a master’s or higher degree in computer science or a related field.

Computer science at Berea College has seen tremendous growth in the past decade, and our courses now serve ten percent of Berea’s student body in any given term. The program has a dynamic and collegial set of four faculty members, equally comfortable in an introductory or advanced classroom. The students who work alongside us, as teaching assistants and student software developers, are essential to our success, and are some of our best ambassadors. We place a high value on engaging students from traditionally underrepresented groups, and candidates from these groups are especially encouraged to apply.

Applicants should email a cover letter, current curriculum vitae, a teaching statement, copies of transcripts, and three letters of references to cs-search-16@berea.edu. Review of applications will begin on March 1, 2016, and will continue until the position is filled.

Berea College achieved national distinction as the first coeducational and interracial college in the South. With an emphasis on service to the people of Appalachia and beyond, Berea enrolls 1,600 students from 40 states and 60 countries. The College has a longstanding commitment to interracial education; here, people of different races seek to learn from and about each other, while also living together. Berea is among the most racially diverse private liberal arts colleges in the United States. The College admits only students whose families are unable to afford the high cost of tuition and awards each of them a four-year tuition scholarship. Berea’s students excel in the College’s supportive but demanding academic environment, and many are the first in their families to graduate from college. The College is one of seven federally recognized Work Colleges, and all students hold a position in which they work 10-12 hours per week. Washington Monthly Magazine has consistently ranked Berea in the top 3 of Liberal Arts Colleges for its success in educating and graduating academically talented, low-income students who become service-oriented leaders in their professions and communities. Located where the Bluegrass Region meets the Cumberland Mountains, the town of Berea (pop. 14,000) lies forty miles south of Lexington and is approximately two hours from Cincinnati, Louisville, and Knoxville. More information about Berea College is available at www.berea.edu.

Berea College, in light of its mission in the tradition of impartial love and social equality, welcomes all people of the earth to learn and work here.


Deep Thought: so many worries
Tuesday, January 19

As I read through blogs, I see some concerns. I want to lift up a few, and say a few things about them.

I will, however, state my first concern: more than half of us have not engaged in the work from Friday… yet? We’ll be establishing our assessment criteria this week, which will be interesting. Personally, I think this kind of procrastination, in a team/community environment, is not acceptable. We’ll see what the group has to say.

Challenges and Concerns In the Wild

These are some of the concerns I saw in your blogs. I think concerns are interesting, because they are the things that keep us from being successful. The whole point of this course is to be productively lost and to, ultimately, BE BOLD.

I also saw challenges and opinions that were clearly stated: challenges to self, challenges to us as a group, and opinions that represented points of view. These are all interesting as well, and I’ve tried to capture a few of those in the mix, too.

My comments follow each bullet.

  • It is such a large project that a lot of people could tackle it and it would barely dent it, so it could be a great project for a team.

    OpenMRS is huge, but every dent counts.

  • Its far better to contribute to a meaningful project than always have my choice of language.

    Interesting. I think I agree. But I still think Ruby has some weird syntaxes. Then again, I program in a language that is 90% parentheses.

  • Being able to finally see what goes into making a site such as this, kind of excites me, to be honest. The next open source project that interests me is Moodle. I just think that it would be pretty cool to be able to contribute to the software that my entire college campus uses. Who knows, maybe I can even improve the software and make it less of a pain for those who complain about it?

    I think CodeWorkout has a lot of potential, and could possibly represent a future direction for study. Given that it is hosted in an academic context, you might find yourself applying for a Masters at VT, and continuing work on exactly that project! Even if not, we’re likely to experiment with CodeWorkout here next year, so both it and Moodle could have local as well as global impact.

  • … the coding website, which shall not be named (because I cannot remember the name).

    I, too, have forgotten. Oh, snap!

  • Recently, I was provided with the opportunity to manually put together a 3D printer and as a result my interest in them as sky rocketed. Therefore, I think it would be awesome to take part in developing code for a 3D printer.

    Interesting how the things we do impact the things we’re interested in.

  • I know that this is an application that not only gets used, but needs to be used.

    Moodle is big. It has (according to the Wikipedia) at 23% market share in the LMS (learning management system) space, second to Blackboard (41%). Work on Moodle will have positive impact on many.

  • It has always bugged me that I have to switch to Windows every time I do homework for chemistry classes. … I, instead, want to work on Libre Office Suite to fix the issues I have encountered while working on my homework. I know there are several other students who use both systems on their laptops, scratching their heads with frustrations for the same reasons as mine when they work on data analysis for their classes and projects.

    Awesome. Scratch the itch.

  • I would love to be able to improve something that I find useful and that I enjoy. I really love working on the 3d printer, so learning another facet of it sounds like a great opportunity to me.

    Again, an excellent reason: do what you’re passionate about, and pursue it without apology.

  • While Java is on my list of languages to learn, I’m afraid that diving into this project would involve too steep a learning curve, and make it less likely that I would get a pull request merged into the project.

    Hm. I think focusing on the goal of doing excellent work is more important than the goal of a pull request. That’s just my 2p. However, everyone needs goals, and if that’s part of your own personal metric, you should go for it.

  • The Transterpreter and the vague hardware project fall lowest on my list. This is mainly because I don’t hate myself.

    I, on the other hand, have an endless capacity for self-loathing. (Channeling Eeyore…) No, no… noone worry about me. I’ll just work on my own project, over here. Just me, myself, working on this code. Very valuable, I’m sure. I’ll just rework this Makefile now, very exciting, Makefiles…

Very cool.

testing slack integration

Deep Thought: all the bits go all the places
Saturday, January 16

This post serves to test integration with IFTTT and Slack. In time, I’ll get rawdog set up to aggregate all the course feeds, and perhaps just capture the meta-feed in IFTTT. For now, it’s one-by-one.

These aren’t the droids you’re looking for, move along, move along…

can I blog and book?

Deep Thought: pat your head and rub your tummy
Wednesday, January 13

Probably not.

For Electronics (Craft of Electronics), I’ll be writing the entire term up as a book. This… will take time and effort.

That said, the Software Engineering students will be blogging, publicly, about their work. I’d like to be blogging with them about the course as it runs.

The truth is, I’ll probably be swamped 1) writing the book and 2) keeping us on track in Software Engineering. Blogging about it along the way is not likely, since the course website is… essentially a blog. Maintaining the blog here would be like… having two blogs.

We’ll see. Either way, it’s going to be an exciting semester.

tools for teaching

Deep Thought: digital and stuff
Thursday, June 26th

I’ve spent a lot of time reflecting on course design and exploring tools for teaching with this summer. Hell, I even installed edX, the darling of the MOOC delivery world. (Turns out, you can’t actually submit a file using it; they assume everything is multiple choice and checkboxes.)

To put my goals in context, I’m going to go back to Chickering and Gamson’s seven principles for good undergraduate education. Specifically, excellent undergraduate education:

  1. Encourages contacts between students and faculty.
  2. Develops reciprocity and cooperation among students.
  3. Uses active learning techniques. (a.k.a. “Encourages active learning”)
  4. Gives prompt feedback.
  5. Emphasizes time on task.
  6. Communicates high expectations.
  7. Respects diverse talents and ways of learning.

I’ve taken several steps along these fronts this summer.

  1. I’ve been researching collaborative learning and culturally relevant instruction. Put another way, I’ve been thinking about what kind of classroom culture I’m trying to create, and the steps I’m taking to create it. I generally do this well, but intentionality in my course and community design process is the name of the game here.

  2. I’m putting in place tools to aid in collaboration. It’s a small step, but I’m going to commit to Vanilla Forums as a tool for managing communication outside of the classroom. And, in doing this, I’m going to be specifically requiring them to engage in question asking and answering behaviors. I view this as being valuable both in terms of direct learning (they’re wrestling with course material) as well as human dimensions (awareness of others) and lifelong learning (many technical communities are distributed and online).

  3. I took part in a 5-day workshop on active course design (based on Dee Fink’s strategies). This was transformative, and has shaped my detailed thinking.

  4. I’m choosing tools to make feedback easier. This term, we’re going whole-hog on Google Docs. Students will write in docs, I’ll be using Kaizena for feedback, and I’ll be automating recognition of submissions via tools like IFTTT. And, I’m going to ask my TAs to track how long it takes us to complete feedback on all assignments… and we’ll publish that number. I want feedback to be prompt and excellent, and I want the students know we’re committed to it.

  5. Course structure is going up a tick. I’ve used course projects before, but haven’t realized how much (infra)structure is necessary if you want really excellent learning to come from them. More, not less, detail is necessary for open-ended learning experiences to be invaluable, and it helps students focus their time better. (I might also require my students to keep worklogs, so they can track and report their time on task.)

  6. Grading criteria will be more explicit. Specifically, I’m reducing the number of graded pieces of work, so that there is more work that carries explicit feedback regarding excellence. “Ungraded” work will be checkpoints—that, if not done, will impact grade negatively. However, it will be the final product that, scaled by the checkpoints, will determine a student’s grade. This way, if they work consistently, and hard, they can do well. If they skip precursors, and do rushed work at the end, they’ll do poorly, or fail. I expect students to work consistently, and to ask questions early and often. This structure will help codify the expectation that excellence comes from consistent, hard work.

  7. bell hooks, what do I do? I’ve been reading Teaching to Transgress, and asking myself what it means to create a liberatory classroom that respects and encourages multicultural epistemologies. Frankly, I don’t know. But, I’m going to see if I can start engaging the politics of the tech and computing world in my classrooms, and getting my students to start to question the status quo, and their role in transforming the racist/sexist culture that seems to thrive in the computing and technology world.

Of course, I haven’t killed myself working on these things this summer. Actually, the thinking behind some of this has explicitly required me to have time to think, which means not doing stuff non-stop. I’m cleaning the office, cleaning the lab, streamlining tool choices, and generally going to be focusing my work efforts (think productivity). I have, in the past, spent too much time doing too many things the hard way, and I’d rather have more time for kids, or research, or any of a host of things, as opposed to spinning wheels on unproductive reproductions of round objects…

Fun though that may be.


Deep Thought: vs. feedback
Thursday, May 1st

This morning, I chatted with a colleague in the Education programme who helped me see some things regarding assessment a bit more clearly than I had before.

Clearly, grades are due. Timeliness is often a factor in fluid and creative thinking.

how students respond to assessment

Students respond to assessment in many ways. For some, it is a motivator: they want the A. For some, it is a threshold: they’re fine with a B. For others, they don’t care: a C is fine, or even a D… in fact, the fact that the work is graded might be a demotivator. In this regard, assessment can stand in the way of learning.

I’ve often referenced Chickering and Gamson’s 7 Principles for Good Practice in Undergraduate Education, and #4 (“Gives prompt feedback”) is something I know matters a great deal… but, I hate doing the assessment. The grading gets in my way. And, I’m very aware that feedback and assessment are not the same thing at all, but they have been inexorably intertwined in my own mind and practice as an educator. I have not been able to extricate the two.

transformation of future practice

I left the conversation with some thoughts about how I might adjust my practice in coming terms.

  1. Eliminate the tension of points.

    I struggle with points. How many points should this assignment be? Even if I make it a rubric, it gets added up, but this is an arbitrary quantization of qualitative information… and then you average ordinal data. (The methodological nut in me can’t stand anything about the process; it’s the worst of all mixed-method studies, canonicalized in the practice of educators around the globe.)

    In this regard, I’m starting to think there will be fewer scored assignments next term. A midterm, a final, and perhaps a project report or two. That isn’t to say that there will only be four assignments; instead, that there will only be four that carry points. Those are the assessment points in the term.

  2. Make feedback rapid.

    I have struggled with feedback for so long because it is intertwined with assessment. That is a mistake. The student needs feedback that is formative, rapidly, so they know what they are doing that is good, and what they are doing that can be improved. This summary by Geyde regarding formative assessment is nicely put together, and has good breadth.

  3. Feedback is part of the learning journey.

    Something that my colleague said, however, that really struck me, was that the language I use should be motivational and clearly articulate where the student is on their learning journey. So, things like “you’re coming along, but have quite a ways to go,” followed by three concrete suggestions to improve their work for the next time around is different from giving a grade of C-. Likewise, saying “I think that starting earlier, and consulting with me before submission, could yield something truly excellent” is different than saying “that’s a B+ or A-.”

    Put another way, the feedback should communicate where the student is, but it shouldn’t become a point of stasis or deterrent… it should always provide motivation for the “next steps.”

  4. Feedback should have next steps.

    Another point he made was that each comment should have a clear set of next steps. A table, even, in the syllabus, could be useful. When I say “this isn’t there yet,” it should mean “you need to start earlier, read and re-read the assignment, and ask questions early, rather than late.” Similarly, if I say “this is not work that will lead you to success in this course,” it means “you need to make an appointment with me right now.”

    Yes, I can say those things directly as well… but, some language like “indadequate,” “coming along,” and so on can essentially map to grades, but provide a clear motivational role as well as clearly define behavioral next-steps that lead to better learning.

These thoughts will be backed by some additional reading, discussion, and planning on my part. A quick search for “formative feedback language” has led to some interesting presentations and articles (from the HEA, from Taylor Francis (which I don’t know how I will retrieve…), or this thorough summary of the literature by Shute from the AERA Review of Educational Research), which I’ll investigate further. For now, though, I wanted to get some of these thoughts down so I could 1) remember them later, and 2) share them with colleagues for further discussion and reflection.

all writing all the time

Deep Thought: a phd writes things
Tuesday, December 10th

It is difficult to explain to students—at any level—the importance of being able to write. There are many aspects to writing well, and it is hard to master them all.

  • Connected. Good writing does not leave the reader guessing from one point to the next.

  • Clear. Good writing is direct, and avoids jargon.

  • Concise. Good writing is brief.

I rarely achieve all of these in my own writing, because it is hard work to achieve these things. What do I mean by hard work?

I recently submitted a paper to an academic venue. It was limited to 6 pages (11pt, standard MS Word formatting), including figures and references. This is tiny, as far as I’m concerned. I spent roughly 18 hours on this paper, total. The last four hours of work were divided between increasing clarity (growing the paper from 6.5 to 9 pages), and increasing concision (shrinking the paper back down to 6 pages).

I am also working on my fourth-year self evaluation. This is a document that critically reflects on my teaching, research, mentorship, and service to my institution and community. It is pushing 20 pages, with some assorted appendices thrown in. I have invested roughly 48 hours in this document, possibly more. I started it months ago, and have been writing and revising, as time allows, throughout the semester.

Today, I started revising my curriculum vitae, or CV, which is an academic resume. Translated from the Latin, curriculum vitae means “course of life.” It grows throughout an academic’s life, and reflects everything they have done professionally. Publications, grants, reviewing, presentations, committees… it all goes in.

I spent two hours today just poking at the CV. I probably have another 4-8 hours of work to bring it up to date, as well as transform it from a “generic” CV to an “institutional CV.” This means that it will reflect more detail about my life as a member of the Berea community than I would include if I was (say) applying for jobs at other institutions. This transformation takes care and attention to detail, and will likely require several rounds of revision with senior colleagues.

I also write webpages, produce videos, informational diagrams… I produce all kinds of media to support my students’ learning in and out of the classroom. I enjoy that kind of media production. But none of that matters, really. It isn’t my ability to make videos that helped me get the job I have now, nor will it help me keep my job as I go into my pre-tenure and tenure evaluations.

My ability to write clear, concise, connected prose is really all that matters.

If you’re considering a career in academia, then I recommend that you start writing, and keep writing, and revise, and talk with people about your writing, and revise, and talk some more, and throw away what you wrote, then start again, and just keep writing. Reading lots of papers—and reading papers about reading papers—will help you learn how to structure your writing (if you’re paying attention and reflecting on what you read, structurally), but ultimately, you’re just going to have to write.

Every day.

If that sounds awful, you should not consider pursuing an academic career. All we do is write.

tis the season

Deep Thought: XKCD nails it.
Monday, January 21

got the keys

Deep Thought: actually, it feels good.
Monday, January 21

Tonight, we got the keys.

toys here and there

Deep Thought: As if I need more hardware...
Friday, January 04

A few toys have crossed my path lately, and it might be worth pointing to a few. Some might serve as the basis for some cool student projects or parts of classroom experiences.

  • Digi-Comp II
    A mechanical computer from Evil Mad Scientist labs. A definite possibility for a computer organization course.

  • MK808
    A tiny Android computer-in-a-box. Useful for plugging into a projector to demo Android apps… but, of course, you have no accelerometer. Still, cute. Perhaps in an OS course?

  • The Parallella from Adapteva.
    A no-brainer; this is a 16-core device (with a 64-core on the way) that we could run occam-pi on. This could definitely be a board for use in an organization course or an operating systems course. This would be a processor for which we could definitely build an Arduino-esque occam-pi board.

  • Font Awesome
    Neither here nor there, but I really like this icon set.

  • Pebble Smartwatch
    Like many, I backed this campaign. Given that I have two courses on Android programming this term, perhaps I’ll turn some students loose on developing something awesome for it.

  • Gamestick
    I’m currently a backer; I think the theme is “cool Android devices I could use in my classroom.” Hack in some App Inventor support, and you’ve got a really neat device for introducing game programming to students.

  • Bluestacks
    A high-performance Android-in-a-window experience. Works on Mac and Windows… and, surprisingly, presents itself as an emulator to App Inventor.

more time for writing

Deep Thought: damn't jim, i'm a college professor, not a time lord!
Friday, December 21

I really, really need to block time into my next semester for writing every week. Or hacking code. Either way, I have a research project that won’t go anywhere if I don’t make the time. And, I can guarantee that no one else will make that time for me.

If I have any desire to ever use the concurrency.cc tools for ongoing work, they need to be updated.

  • VMs need to be set up for builds.
  • Updates to the IDE are needed for Windows 7, 8
  • Updates to support current Arduino platforms are needed. (And, to do that, I need current Arduino platforms.)
  • The book needs to be expanded.

In the end, I’m most interested in working on the book.

Time. Where does it go?

methodological testing

Deep Thought: A small heater in the basement works wonders.
Tuesday, December 18th

Two articles that I caught in the feed reader: Whose bug is this anyway?!? and Redis Crashes. Both are great “war stories” about bugs in software, and the process that is involved in tracking them down. I’m thinking I need to find spaces to have students read more of these stories, so that they get a sense of what kind of hard work is necessary to be successful.

And, related to success, Why Won’t Anyone Talk To Me? digs into the current state of affairs regarding the recruiting market for CS grads.


Without the school or the job history, your best bet is going to be to do some side projects. Writing an iPhone or Android app is easy – it just takes an idea, some determination, and the ability to work through a tutorial book one chapter at a time. Alternatively, you could get involved in an open-source project. For example, Linux Kernel Newbies is a good place to start if you want to get involved in Linux development (I guarantee you, being a Linux kernel or Apache project contributor with merged diffs will catch a recruiter’s eye). There are plenty of options, but the key is that you have to finish something, ideally multiple somethings, in a public way (e.g., published in an app store).


Again, required reading for our students. And, for us as faculty: I need to be thinking about what kinds of opportunities I can help create for my students (in and out of class) that will help them move towards success.


Deep Thought: Working in the basement is a quick way to make iced coffee.
Sunday, December 16th

I’ve written roughly 800 blog posts since 2002, but only four in 2011. The last post I wrote in 2011 was in May, meaning I wrote zero posts during the 2011-2012 academic year. However, I think it is important to have a place to write and explore ideas, if nothing else to model this communication medium for my students. That, and a lot of jadud.com was out of date, so the move to Berea College is as good an excuse as any to reboot.

When I have the time, I’ll clean up the 800+ posts from years past and bring them back into an archive; for now, they’re in the repository, waiting.