Category Archives: FOSS

IRC: 1, Nemo: 0

Our CS 401 Software Development class was canceled on Monday, 11 February 2013 due to ongoing snow removal and cleanup on campus from the Nemo blizzard. (Worcester received 28.5 inches of snow in just about 24 hours.) This is a problem for a class that meets only on Mondays, especially with the next Monday being a holiday.

As soon as the campus closing was announced on Sunday afternoon, I emailed the students to announce that we would replace class the next day with an IRC (Internet Relay Chat) meeting. (Actually, that’s a lie. The first thing I did was panic, then I screamed, then I ranted to my family about the injustice of cancelling my Monday-only class. Then I thought about holding class on IRC…) Here is the message I sent the students on our class listserv:

Campus is closed tomorrow, so we will not have class. We will not have class next week either due to the President’s Day holiday.

This is going to seriously mess up our schedule. I’ll think about how we can carry on in the two weeks.

Let’s try to hold an IRC chat tomorrow during class time (2:00pm-4:30pm). I’ll send out instructions on installing (optional) and using an IRC client later tonight. I have instructions already written up, I just have to find them, possibly update them, and send them out.

Holding class on IRC would be a little bit of a challenge since the students had not used IRC yet, so this would have to serve as both an IRC familiarization exercise and a useful meeting. I sent them the following message to prepare them:

We are going to meet today on IRC (Internet Relay Chat) at 2:00pm.

You should read through this in advance so that you are prepared. Especially if you are going to install an IRC client – you will need time to set it up. I suggest trying this out at least 1/2 hour in advance to make sure you get the connection working. I’ll stay on IRC all day so you can try out chatting.

You have two choices for connecting to the IRC server:

  1. Install an IRC client. There are many available, you may want to try a few to see which you like the best. Some are standalone applications, and some are browser plugins (like Chatzilla for Firefox.) I’ve heard that mIRC is the most popular for Windows, I use Colloquy on the Mac.
    Here are some of the most important settings you will need. How you set these will depend on your client. You will want to install your client and do the setup in advance of our meeting, so you aren’t late.

    1. Server: irc.freenode.net
    2. If you can set a port, you may want to use 7000 since it can be used for an SSL connection.
    3. Nickname: Choose your own*
    4. Channel: ##WSU-CS401
  2. Use the webchat page on freenode: https://webchat.freenode.net
    1. Nickname: Choose your own*
    2. Channels: ##WSU-CS401
    3. Complete the reCAPTCHA
    4. Connect

* You may want to register your nickname, so that no one else can use it. That way we can all get used to looking for a specific nickname for you. See the instructions: http://freenode.net/faq.shtml#registering

IRC Resources

The most important commands which chatting:

  • /SERVER new-server-hostname
  • /NICK new-nickname
  • /QUIT
  • /JOIN #channelname
  • /ME does something
    This command is used for saying that you are doing something like:
    /ME is looking for that information in my email
  • /LEAVE

Chatting:

  • If you want to address your comments to everybody, just type your comment and hit return.
  • If you want to address your comments to a specific person, type their nickname followed by a colon, then your message. E.g.

         kwurst: I have the answer to your question

I had created a course-specific channel on freenode last spring, so we could use that channel, but to hold a useful meeting, felt that it would be vital to have a MeetBot running to take minutes. I could have used used the #teachingopensource channel, which has zodbot installed, but then the minutes would be saved on Fedora’s website, rather than ours. So I decided to install Supybot with the MeetBot plugin on our own server here.

I managed to get MeetBot installed (mostly – gives me an error message for every meeting command I give, but then does it anyway) and we had a very successful meeting for a class of IRC newbies: http://cs.worcester.edu/kwurst/wsu-cs401/2013/wsu-cs401.2013-02-11-21.13.html

From the blog On becoming an Eccentric Professor... » CS@Worcester by Karl R. Wurst and used with permission of the author. All other rights reserved by the author.

Guile-2D 0.1 Release

To celebrate the GNU Project’s 30th anniversary, I have decided to
make the very first release of my 2D game development framework for
GNU Guile. GNU Guile is a Scheme implementation, and has the honor
of being the official extension language of the GNU project. Guile-2D
is a layer above SDL, OpenGL, FreeImage, and FTGL that provides
abstractions for common 2D game programming requirements such as
sprites, tilesets, animations, scripting, and collision detection.

There is a lot of work to do in order to get Guile-2D up to snuff with
the game libraries for more popular languages like Python and Lua. I
am looking for contributors who share my vision of creating a fully
featured, easy to use game library in Scheme.

Guile-2D currently supports GNU/Linux distributions. I am looking for
help to get it running on OS X and Windows.

Please refer to the INSTALL.org, README.org, and texinfo files to
learn how to install Guile-2D, run example programs, and write your
own games.

Download the release tarball
Browse the source code on GitHub

From the blog dthompson by David Thompson and used with permission of the author. All other rights reserved by the author.

guile-2d – A 2D Game Development Framework for GNU Guile

This is the very first devlog entry for my pet project, guile-2d. As
the title suggests, guile-2d is a 2D game development framework for
GNU Guile, a Scheme implementation that has the honor of being the
official extension language of the GNU project. Guile is a language
with a growing number of features, but it still lacks a large
assortment of libraries. I like to do 2D game programming, and I saw a
niche that needed to be filled. Python has Pygame, Lua has Love, but
there’s no fun and accessible game programming library for
Guile. Guile-2d is working to correct that.

The goal of Guile-2d is to create an easy to use 2D game programming
framework. Libraries like SDL give the programmer a rather low-level
set of tools that they can use to build a game, guile-2d will provide
high-level tools over low-level SDL and OpenGL for commonly used
elements of 2D games: tile maps, sprite animation, particle systems,
collision detection, vector math, A* pathfinding, etc. Such features
will allow a game developer to very quickly produce a working
prototype with guile-2d.

Guile-2d is a framework, which means that it has some opinion about
what the right way to do things is. The most apparent example of this
is the game loop. The game loop runs at 60 frames-per-second and uses
fixed timestep updates. Those that have read Fix Your Timestep will
know that this decision is a good thing.

Perhaps the most important feature of guile-2d is the ability to do
"live coding". When the game loop starts, a REPL
(read-eval-print-loop) server is started. Using the great Geiser
extension for Emacs to connect to the REPL server, one can modify
their game as it is running. This gives users the power to evaluate
some new code and see the changes reflected immediately in the game
window. No need to restart the game unless you crash it!

This has been a brief overview of some of the features and goals of
guile-2d. If this project interests you, you can check out the source
code on Github.

From the blog dthompson by David Thompson and used with permission of the author. All other rights reserved by the author.

Find Me on Diaspora

With all of the recent news about the NSA’s widespread spying, I have
decided to ween myself off of proprietary, centralized web
services. Facebook, Google, and other such corporations hold onto
massive amounts of our data that we’ve willingly given to them via
status messages, "like" buttons, searches, and emails. Using and
contributing to free (as in freedom), decentralized (like email) web
services is a really great way to re-establish control of our
data. These services rely on many small, interconnected nodes to
operate, rather than a monolithic website that is under the control of
one entity. If the distinction between centralized and decentralized
isn’t clear, consider how email functions. There are many email
providers to choose from. Users can communicate with others that
choose to use a different email provider. This is how web services
should work, but unfortunately very few work this way now.

The centralized web application that I spend too much time using is
Facebook. I have knowingly given Facebook a "frontdoor" into my life
for years now and I’m ready to move on. I think that the concept of a
"social network" is fun, so I wanted a Facebook replacement.
Fortunately, there is one: Diaspora.

Diaspora is a free, distributed, social networking web application
written in Ruby using the Rails framework. Diaspora is a community-run
project. Its success depends upon users, developers, technical
writers, user interface designers, etc. investing their time and/or
money into making it better. The Diaspora network is broken up into
many servers, known as pods. Users have the choice of which pod to
store their data on. Pods assert no ownership over their user’s data,
unlike Facebook, and do not use that data for targeted
advertisements. Diaspora is still a rather young project, but it does
everything that I need it to do. Goodbye, Facebook!

Since I’m a programmer, I naturally wanted to hack on some code and
contribute. The main developers are very friendly and give great
guidance to newcomers that want to help out. Every Monday is a "Bug
Mash Monday", where a list of open issues is presented to entice
contributors to resolve them. In the past few weeks, I have made two
contributions to the Diaspora project: a bug fix and a small
feature
. Diaspora is very hackable and I encourage other developers
with Ruby/Rails and Javascript knowledge to join in.

TL;DR: Diaspora is great. Create an account. Check out my profile. Start
sharing. Happy hacking. 🙂

From the blog dthompson by David Thompson and used with permission of the author. All other rights reserved by the author.

My First Real FOSS Contribution

I spend a lot of my free time writing code. I usually work on my own
personal projects that never really go anywhere. So, I decided to take
a detour from my normal hacking routine and contribute to an existing
free software project. My contribution was accepted awhile ago now,
but I wasn’t blogging then so I’m rambling about it now.

It’s wise to find a project with a low barrier of entry. An active IRC
channel and/or mailing list with people willing to help newcomers is
ideal. I remembered hearing about GNU MediaGoblin at LibrePlanet
2012, so I decided to check things out. MediaGoblin is a media sharing
web application written in Python. Their bug tracker marks tickets
that require little work and don’t require a deep understanding of
MediaGoblin as ‘bitesized’.

I chose to work on this ticket because it didn’t require any
complicated database migrations or knowledge of the media processing
code. I added a new configuration option, ‘allow_comments’, and a
small amount of code to enforce the setting.

Eventually, the ticket got reviewed and Christopher Webber
(MediaGoblin’s friendly project leader) merged it: "Heya. Great
branch, this works perfectly. Merged!"

It was a very small change, but I was happy to finally have some
actual code of mine in a real free software project. I have a strong
passion for free software and the GNU philosophy, so it’s really great
to participate in the community. My job as a professional software
developer eats up a lot of my time these days, but I hope to find the
time to continue hacking and contributing.

From the blog dthompson by David Thompson and used with permission of the author. All other rights reserved by the author.

I built my first PhoneGap app!

My CS 401 Software Development class for Spring 2013 at Worcester State University is developing an iPad app for the Worcester Art Museum (more on that in another post.)

Because few of the students have Macs the development environment was going to be a problem. There was the option of using either WSU’s or WAM’s Mac labs, but I figured that the students would want to work outside of the normal hours of the labs. Fortunately, Stoney Jackson at Western New England University suggested that I look into PhoneGap, a free and open source framework for developing cross-platform apps using the web technologies HTML, CSS, and JavaScript. PhoneGap will take a site developed using those technologies and compile it into a native app on a number of platforms, including iOS.

Even better, Adobe, which now owns PhoneGap, has set up a build server. That means that we can just have their site do the build, rather than having to rely on the few students in the class who do have Macs to do the building. To use it for free, your code does have to be in a public GitHub repo, but we were going that route anyway.

Last night I decided to do some more reading on PhoneGap, and discovered that it’s really simple to build a working Hello World app using their Getting Started documentation and GitHub respository of code. I forked the code, and submitted it to the build server, then downloaded the working app to an Android tablet. I wanted to download it onto my iPad as well, but it seems that I’ll have to go through the Apple developer provisioning setup to get a key. I’ve done that before to work on a native iOS app, but I’ve got to go dig through all my notes to get back up to speed on that process.

I decided to write up this post so that my students can see the steps I took, and get the example working on their own systems. This is pretty much just what is posted in the Getting Started page on the PhoneGap Build site.

  1. Fork the https://github.com/phonegap/phonegap-start repo. The fork button is in the upper-right hand corner of the page (https://github.com/phonegap/phonegap-start/fork_select).
  2. Go to your own GitHub page to see the repository you just created.
  3. You can clone that repo to your local machine if you want, but that is not necessary at this point, unless you want to make changes. I decided to leave making changes until later.
  4. You will need the http URI for the repository, so either copy it or leave the page/tab open.
  5. Go to the https://build.phonegap.com/ build site, and choose the Completely Free plan.
  6. Sign in through your GitHub account.
  7. Click the +new app button.
  8. Make sure you’ve clicked the open-source tab.
  9. Paste the URI from your fork of the GitHub repo.
  10. Click Ready to Build.
  11. When it’s done, click the appropriate device icon to download it to your device.

Next steps for me:

  1. Make some changes to my fork, build, and download again.
  2. Figure out the iOS provisioning so I can build and download to my iPad.

We’ll have to figure out how to set up the provisioning for the class after we determine which iPads we have available (student- and/or museum-owned) for testing.

From the blog On becoming an Eccentric Professor... » CS@Worcester by Karl R. Wurst and used with permission of the author. All other rights reserved by the author.

First Merge!

Following on Trevor Hodde‘s post First Commit!, it’s time to mention our First Merge!

First Nate Doe, and then Trevor, made commits to our class’ fork of the Eutester repository on GitHub. I submitted a pull request, which has now been merged into the master branch of the repository.

We’re looking forward to more commits, and having them merged into the project. I know that Nate and Trevor have issues assigned to them, and I think that Matt Morrisey will soon.

From the blog On becoming an Eccentric Professor... » CS@Worcester by Karl R. Wurst and used with permission of the author. All other rights reserved by the author.

The Big Decision

Today’s class basically decided the rest of the semester for us, we had to choose what FOSS project we would be working on. Most of the projects that were brought up I had already heard of before and done some research on, such as Firefox, VLC, Eucalyptus, and Libre Office. A couple however were completely new to me, those were irrlicht and Sage.  After an hour or two debating on how we would decide on the project, we put it to a vote. The majority of the class seemed to be happy with the idea of working on Eucalyptus.

I believe this project stood out to everyone because it deals with cloud computing which is a new frontier for everyone and looks great on a resume. Eucalyptus also has the benefits of our class being able to communicate directly and easily with a couple of the big names on the project, which will prove to be very beneficial when we encounter problems. Overall I think this project will be super interesting and fun, as well as a giant headache on most of the class. But what’s fun about a project that won’t challenge us, huh?

From the blog clacroix12 by clacroix12 and used with permission of the author. All other rights reserved by the author.

Oh no! I’m defaulting to CLOSED!

My Spring 2012 course is well underway (into the second week), and going well. But, as I was putting up the latest assignments and resources for the class, it struck me: I’m defaulting to CLOSED!

Many of the materials that I’m using are coming from Heidi Ellis‘ course at Western New England University, and from other open, online sources. Yet, here I am, posting them in our Blackboard CMS, where only my students have access to them! And this really is a default action — it’s just what I’m used to doing, so I’ve done it without thinking.

This is a somewhat minor at this point, since Heidi has already made these materials available. But, I’m starting to develop new exercises and assignments that others may want to use. And, just as I borrowed some of the course organization from Heidi’s course, someone else might find my “remix” of her organization useful or inspiring.

So, I’m starting to think about where I want to post my course materials to make them open. (Licensing is not the issue, as I’ve been CC-licensing my course materials for years.) Unfortunately, our school is not good about giving faculty web space that they can easily edit for themselves (our default is Microsoft SharePoint.) But, we have our own departmental server, where we are hosting our departmental blog (acting as a planet), our Git and Subversion servers, and our Wiki. I have a vestigial web site there (that just redirects to my Sharepoint page), so I can probably press that into service as the home for the course.

It may take a bit more work, because it won’t be the default. I’ll have to move all the materials I’ve already posted and remember to post the new ones I’m writing to this more open location.

And, I’ll have to work on making open my new default.

From the blog On becoming an Eccentric Professor... » CS@Worcester by Karl R. Wurst and used with permission of the author. All other rights reserved by the author.

CS Students and Faculty Attend Talk by Tom “Spot” Callaway from Fedora

CS Students James Forkey, Dillon Murphy, and Dave Thompson, and Professor Karl R. Wurst attended a talk by Fedora Engineering Manager Tom “Spot” Callaway, at Western New England University on Thursday, 1 December 2011. Spot talked about “This is why you fail and how to avoid it” using his Fail Meter, illustrating it with many amusing (and simultaneously frightening) examples from Open Source projects he has interacted with. The talk was hosted by Dr. Heidi Ellis as part of her Software Engineering class. Heidi has blogged about the talk here.