Monday, January 12, 2015

Content and Pandoc Fun

I noticed in my sporadic postings here that one topic has not been followed up, dealing with content and authoring. I've settled on using Geany and Pandoc for a lot of content, and Fossil for version control, to-do items (using Bug Tracker) and their Wiki.  It means having to slowly learn some syntax, but this system is somewhat intuitive for a programmer since many of the same tools can be reused.  Of course, Pandoc is mostly command-line driven with no current end user application in sight. Sure you can learn/use Emacs, but falling down that rabbit hole is not on the immediate agenda. Let's get one workflow going before implementing a far more complex one...

Sunday, January 11, 2015

End of break is nigh

What they call "winter break" is rapidly ending with the traditional end-of-break cold.  But a good time to catch up on reading, or at least some bad TV.  Diving into some electronics projects, CAD, and 3D printing has been refreshing, since it's been a while since starting something different from the usual.

When the day started with trying to unclog the dishwasher, this isn't so bad. Or at least watching Netflix documentaries is preferable to bailing out 3 gallons of cold filthy water from the bottom of the dishwasher. The syllabi revisions can wait until tomorrow.

Wednesday, October 29, 2014

Some content stuff

I'm in the process of transitioning content I generate into something resembling an efficient (i.e. moderately coherent) scheme for not writing the same stuff over and over again for courses. I've settled on writing plain text in Markdown format. One, it's just easier to do plain text search over a directory without all of the binary file stuff getting in the way as with MS Word, LibreOffice Writer, or whatever tool.  Two, content in Moodle (the LMS at school) can be either staged as plain text dumped into a bloated WYSIWYG tool which generates verbose and awful HTML, or saved in a HTML text window in Markdown format. So the latter path made a little more sense.

For the content side of things, I essentially compose each class as a rough outline, with links to internal course pages and external URLs. The newer version of Moodle we have already does some auto-linking for text that matches the title of another content page, assignment, or other course material. Which is a very welcome addition.  

My production scheme of outlines and links leads to some of my long-held annoyances: managing outlines and links.  I used the stand-alone Tiddlywiki app to manage the volumes of content generated in my dissertation- but I'm reluctant to tie down all the content I generate into another blob. I'd feel better with a content going into plain text pages, with some light markup.  

I just don't see the point of continuing to manage that by hand. It's dozens of topics spread across up to two dozen lectures per semester, when I now have seven (7) different course preps per year.  Ihese courses are only being taught once a year, or even once every two years. There is a lot of overlapping content between courses, and technology can change rapidly in a year or two. Not to mention the updates in the way I teach these courses as time goes on. Locking content into "lecture" files just creates a lot of problems in efficiency. I'd rather spend my time in improving what I have and building new things rather than just rehashing the same base material. I find myself developing similar lectures from scratch when material from the prior year could just be brushed up and used instead.

There aren't really good outline programs out there that don't lock the user and content into a custom format. MS Word forces outlines to document heading levels. Which would work well if this were going to be turned into an actual paper, but not the case here.  And the linking mechanism is simple enough- give the URL a name, associate the name with the URL, and then post the URL within the body of the document. So far so good, but on successive pages, there are a lot of URLS to manage, a few per page spread across many pages. Essentially, I don't want to just type out content, but have some tool help manage it so I can focus on adding more content and refining the stuff I already have. 

Also, I don't have a good scheme for adding images. It would be useful if it worked, but adding numerous small graphics and screen shots is a very awkward, manual process that essentially works out to be an extension of the awkwardness of adding links.  

I'm not really interested in installing a large enterprise level, web-based content management program. It's not remotely worth it. But there's little I need that fits my purposes either.  

I'm just going to bang together a proof of concept content manager in C# because we're covering a similar topic over the next couple of weeks anyway.  I'm giving myself about 3 hours over the next 5 days to see how far it gets, since I will have to show off what I did by Monday.  Fingers crossed.

Thursday, October 02, 2014

Sum of its pieces

Some Arduino parts
On my growing list of partly-finished projects is the scattering of Arduino modules I'd been buying over the summer. I got these for almost nothing: $1-3 each via eBay from China, compared to several times that if purchased in the US. (The Sonar module I got for about $1.50 is being sold at Radio shack for around $30.)  What's it for? Just to learn something new, unrelated to things I'd been doing for the past few years. I do have a family background of electrical engineering, but had steered clear of it since college. Frankly, at the time, it didn't lead to anything I particularly cared about. 

Fast forward more decades than I care to think about, and suddenly I find a thing that lets you turn lights on and off and program it. Well, now it's on like Donkey Kong. Sort of. The modules are undocumented, but at least the chip number is visible, and Googleable. There you can find a number of forums of other people who bought these things and are trying to figure it out, with an occasional engineer to point out some critical information. Though this information is often buried in a discussion board on StackOverflow or a more Arduino-related site. It's a fair amount of digging to figure out what pins to connect and a corresponding sample program to interact with it.

There are a lot of hurtles. Often these things don't work as the previous StackOverflower outlined because yours is a little different from what was described. Or you read the part number wrong.  Google the thing that went wrong along with the chip part number and whatever pins you can read. If nothing else, it's a chance to learn some science. The part HMC5883L that I still can't get to work right, points to Magnetic North- I had never thought of it as a 3-dimensional measurement, but it is. Which means more math and physics than I had planned for the day, but that can wait for another day. The larger board next to it is a tiny Arduino clone, from China, for about $2.50 including shipping. I haven't gotten that to work either, since it relies on me connecting a couple of other parts correctly to connect it to the computer, which I would need, in turn, to help me figure out why it's not working.

So this sort of issue can be called a "Bootstrap" problem- bootstraps to put on your boots. Though it's a bit more circular than that. In the back of my mind is the premise of the Maker stuff, a company build around magazines and kits for hobbyists and (allegedly) kids. Except unless you have a parent who's an engineer and a hundred bucks sitting around, you're not really the target demographic.

So, how can this stuff be made more accessible? If the Internet of Things is going to be the Next Big Thing, how do we learn this stuff?

Tuesday, September 30, 2014

Publication games

I've been compiling articles and uninspired notes for a couple of research streams I've resigned myself to, in what amounts to a dissertation hangover. Can't stand to look at my dissertation at the moment, and finding these two piles of topics tiresome and difficult to really engage with.

If there's one thing I learned in the course of the dissertation, it's that "writer's block" (at least for me) often is the result of trying to write one thing while thinking about something else. Basically, the logjam of ideas that don't want to flow the way they're "supposed" to.  When I backtrack and Google "writer block logjam" there are a wealth of opinion posts about this being an actual thing.

Then I stumbled on games, gamification,and the like. I discovered to my surprise that my Intro Java class really liked a test class using Alice.  So, why not. Not the easiest thing to shift gears suddenly from one set of course plans to something else, a class example for a course I TA-ed for about 6 years ago.  But it's Alice and I was a Java developer for several years before the cut-and-run to academia.

Is there anything here to knock off my publication requirement for the year? A study about how Intro Programmer course students like Alice over Notepad++ isn't exactly going to get me into a first-tier publication, since it's no longer 2002 outside.  But, there's a question out there somewhere after churning through the stack of PDFs I've compiled recently.

Given my general inability to play any sort of computer games for the past 3-4 years, with life events and the aftermath, it seems that learning about games is likely to be my way back into that realm.

Thursday, September 25, 2014

Before you cross the street...

"Life is what happens to you while you're busy making other plans." 

Whoever said it first, Lennon seems to have been the first to put it in music.  I felt the need to play that song as I started writing this. It's been a difficult week, but almost over. Strange relief at the consistency of the week, whether good or bad- there were no real surprises. Hard to tell the sensation of things "getting better", whether conditions actually improve or just improved patience.  The distinction may not matter around the edges.

In another context, "No battle plan survives contact with the enemy," however we define the enemy is: another person, circumstance, or just ourselves. How do we survive complications or conflict and continue moving forward. The dissertation research was at best lightweight AI-- the only strategies employed were tactical.  Circumvent, adjust, continue until one can continue no more. Drop unsuccessful plans to lighten the load and accomplish what tasks remain.  These were not explicit strategies, just the culmination of dozens of small responses across a wide range of inputs and conditions. Some of these would fail to hold up to scrutiny, and yet the cumulative behavior was fairly realistic within this test-tube domain.

Conflict, life, pushback, details or whatever you want to call it seem inevitable. Failure is the only guarantee in life, so it would be nice to think anything above that as at least a partial victory, and to think of each tomorrow as a reward for surviving today. There are fewer opportunities for big decisions and countless opportunities for making minute choices, the culmination of which result in changes that can be difficult to anticipate.  It would be more reassuring to think of life as more than just the results of countless small comparisons driving decisions. There's the conflict between what we see, what we expect, and what we aspire to. 

Life does just "happen" whether you look both ways or not. Contingency plans are good, but still worthwhile to find a hand to hold when you do cross.

Monday, September 08, 2014

Not all typing is Computer Science

Monday morning, confronted with the reality over the weekend that an excessive number of my waking hours have been work-related. I guess I could retort to the last batch of comments about "summers off" with "weekends off?" but it's hardly the point. While working on STEM-related recruitment, I'm running into more confusion about what it is we do, over in Computer Science.

It's not all robots and games, though they have their place. Having said that, I'm trying to figure out how to hack some motors and wheels to the bottom of an Arduino board I have at home and interact with one of the languages I teach. All in the name of making the class more interactive. Which is just as much for my benefit as the class- or perhaps more so, since keeping up to date with hardware and Internet of Things stuff is key for this field right now.

So there are a couple of projects that just might fit in, though I have not evaluated them yet. One is a Java runtime for Lego robots, the other, a Java framework for Arduino. Either way, it's some testing to make sure they actually work, and then figuring out how to incorporate it into class- especially when there are 10+ students and I've got 2 of these things at home.

"Computer Science is no more about computers than astronomy is about telescopes." - attributed to Dijkstra

At some point, it's necessary to build things. The theory has to be built in, or else it's just a bunch of fumbling around and trial and error. We don't need any more of that.

The fascinating thing is that computing is a tool that can build other tools to help us work more productively. Not everybody who wants to live indoors should be an architect, or even a carpenter. Specialized skills are just more efficient. Widespread computing literacy is a lot more important than everybody learning how to "code". Whatever we agree literacy to mean, it's going to be very domain specific- can you use information tools to process information more efficiently for your tasks at hand. Maybe learning how to use these tools will help you learn to do things better. They're intended to be extensions to our intelligence, best case. Though it's easy to forget that while trying to find out why fonts keep changing in your word processing program, much less the thing helping you organize writing more efficiently or even help generate ideas...