2 Mar 2011

Forkforkforkfork Fork: Why forking means all the world

  I was thinking the other day. This generally raises some alarm bells in my colleagues heads. My questionable wisdom aside, it was about forking. A friend of mine was describing how a program he made for Ti-84+ calculators and spread around my school had, somehow in the process, become forked when someone else added in a couple extra features and started spreading it around. This brought my mind to something I hadn't realized before. 
 
   The Free Software Freedoms are essentially the Right to Fork. 
 
For those of you who are unaware of the what the four Free Software Foundation Freedoms are, here's an excerpt from the Wikipedia article on Free Software: 
 
 
        

        * Freedom 0: The freedom to run the program for any purpose. 
        * Freedom 1: The freedom to study how the program works, and change it to make it do what you wish. 
        * Freedom 2: The freedom to redistribute copies so you can help your neighbor. 
        * Freedom 3: The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.
 
 
    These freedoms are essential for forking. Without Freedom 0, you could easily be barred from forking due to licensing. Freedom 1 through 3 are forking in a nutshell: Taking the source, making your changes, and releasing it to the general public. 
 
 
    Now some of you may ask, "Why is it so important to fork? After all, forking just fractures the community even more and makes it even harder for users to choose what software they need" and that's a very valid point. However, as someone said to me sometime somewhere, it's always easier to disprove then to prove. Let me draw your attention to the the recent situation of OpenOffice.Org. 
 
    For those of you who don't know, Sun (the makers of OpenOffice.Org, Java, Solaris, and many open-source projects) was recently bought out my Oracle. I will readily admit I am not to familiar with the company however, I have been lead to believe that whatever they're going to do will damage FOSS projects such as OO.o and OpenSolaris. The OpenOffice community, naturally enough, was very worried. So what did they do? 
 
They forked. 
 
    OpenOffice.Org was forked into LibreOffice, saving us from the tyranny of Oracle and the mild annoyance of having to write ".Org" every time we type it. It just recently released its latest version, 3.3, and is already adding new features to the OO.o base such as support for more columns in a spreadsheet. 
 
 
    So please, make your software forkable. License it with a copyleft license such as the GNU GPL, BSD License, or if you're feeling really daring, the Uncopyright license (see above link in header). It just might save a project.

 

10 Feb 2011

Virtual Pet Daemon 0.3.0

    Today, I'm releasing the alpha of my latest side-project: the Virtual Pet Daemon! I've been writing this little program as an experiment with sockets and writing a daemon in my spare time and it's finally ready for alpha release. The core features are there and pretty stable, however, I'm still missing some basic virtual pet features such as the ability for your pet to die and to name your pet. The secondary daemon (vpclient) also hasn't been fully tested (my code words for "I wrote most of it today") so aging, hunger, and happiness might be a bit off.

    Besides these, ahem, minor problems, VPD is (hopefully) a welcome adition to the world of Virtual Pets and was an very fun project for me to do. Every single piece of code created by me is released under the Uncopyright license. Interfaces to this daemon can be created in a snap, thanks to its easy to learn API, providing an easy-to-use base for anyone else wanting to use this as a base for a bigger virtual pet project.

Code can be found on Github at: https://github.com/GentRyan/vPet

Thank you for reading and I hope you enjoy the program! I certainly had fun writing it!

 

(Note: VPClient has been found to be definitely unstable. A ruby script to replace it will be written as soon as possible)

(Note2: A ruby daemon has been written to replace it. Work is being undertaken to simply merge VPClient and VPD)

 

1 Feb 2011

My Calculator can do WHAT?

    Ah, the TI-83/84+ series of graphing calculators. Ubiquitous among highschool students and my very first introduction to programming. Containing a 6 or 15 mHz Z80 processor for the 83 and 84 series, these calculators are, as xkcd eloquently put it (http://xkcd.com/768/), crappy. This, however, does not many people from loving them and what I'm about to show you is something that blew my mind.

Tencalc

 

http://www.cemetech.net/forum/viewtopic.php?t=5185

One exteremly dedicated and amazing calculator hacker, Kerm Martian, has succesfully created a protocal known as CALCnet 2.2 that allows various 83/84 calculators to connect into one local area network, allowing true multi player gaming. With numerous (albeit single player) shooters already written teachers will not only have to worry about kids texting in class, but also 8-player deathmatches in the back. But that's not all.

Buildabridge

http://www.cemetech.net/forum/viewtopic.php?t=5630

Your humble calculator can now connect to the internet. Using the CALCnet, that same calculator hacker designed and built a bridge using the Arduino microprocessor that acts as a gateway for connecting to the internet. There's already been a Chat program made that allows connections to IRC! (http://www.cemetech.net/forum/viewtopic.php?t=5677)


Along with a USB driver(http://www.ticalc.org/archives/files/fileinfo/390/39064.html), music player (http://www.ticalc.org/archives/files/fileinfo/432/43293.html), gameboy emulator (http://www.ticalc.org/archives/files/fileinfo/419/41990.html), many many games, and the TI-Calculator community's many other achievements, CALCnet just goes to show that todays youth are still as ingenious as ever!

24 Jan 2011

Zen Habits and You

    Today, I'd like to bring your attention to a site that many of you may already have heard of. This site is Zen Habits (zenhabits.net). You may have noticed it in the magic sidebar to the right of this post, and in this post I'm going to give a quick overview of why it's there.

    Zen Habits is written by a man called Leo Babuta, someone I've come to greatly respect from reading his many of his numerous (over 800) posts. His blog has actually changed the way I view life and introduced me to many concepts from the East. I have personally found that introducing meditation into my life, reducing time spent on Facebook and watching TV, and trying to become less materialistic have changed my life for the better. Many hackers tend to add elements of Zen into the lifestyle for a reason (http://www.catb.org/jargon/html/religion.html) after all.

    Besides the Zen aspects of the blog, it also has many many good lifestyle tips on subjects such as exercise programs, weight loss, work overload, and minimalist practices. The minimalist ideas are especially important to me, as many programming ideas, concepts, and languages have come from minimalist views.

    Finally, Leo supports the idea of "UNcopyright", namely, not holding copyrights for creative works. While some have argued against this lack of copyright (Unlicense and its reddit discussion here http://www.reddit.com/r/programming/comments/akrur/set_your_code_free), I believe that for creative works such as blogs, code (at least, for code snippets and small programs), spritesheets, and more that this would be beneficial for the world.

    So please, I encourage you to visit Leo's site and read some of the posts. It can truely be an eye opening experience.

---
For any who care, the reason for the large delay for this post was due to snow and midterms. In the meantime, I did work on a type of virtual pet that acts like mpd instead of a traditional computer virtual pet, running mainly as a daemon on a computer and using sockets for the backend frontend connection allowing it to be run over a network. Its source can be (eventually) found at my github (https://github.com/GentRyan).

4 Jan 2011

Window Maker: Retro, yet elegant.

     Ask any GNU/Linux what desktop environment* is the best and you'll
get a variety of answers. Many will say either Gnome or KDE. Others will
say one of the many stand alone window managers, like the *boxes
(Blackbox, Fluxbox, etc) or a tiling window manager like awesome or
xmonad. But one of the things you probably won't hear is Window Maker.

     Window Maker feels like a window manager that time forgot. For the
younger members of the audience, which would technically include me but
we'll ignore that for the minute, you might not even recognize it as a
window manager. Window Maker is based off the GUI of NextStep , the
precursor and base of OS X. We'll get into more detail later about
NextStep and its connection to WindowMaker later. For now, we'll focus
on Window Maker itself.

Window Maker Features:
    Fluxbox like right-click and middle-click menus, giving access
to programs anywhere on the desktop
    Easy modification through an in-depth but simple Preferences
tool (see screenshots).
    Easy theming!
    It. Is. Fast. You have no idea how much a DE like Gnome or KDE
slows down your computer until you install something like Window Maker.
It cut my GDM->Desktop time from 36 seconds to 3.
    Incredibly useful Dock Apps, giving conky and panel applet
functions in one.
    Up to 100! workspaces.
    Ability to set individual window and application attributes,
such as what workspace it starts in.
    And an incredible amount more. Seriously.
It is incredibly easy to pick up. None of that messing with
config files that comes from using those other Window Managers. It's
almost all smooth sailing for even the most complicated setups.

How To Install:
     Odds are, you can install it from your distro's respective
package manager (I know for sure that Ubuntu and Fedora have it). If you
really must, you can get the source at http://windowmaker.org/ ,though I
don't recommend it unless you want the svn version or want to optimize
while compiling.

The Details:

     By default, you have what's known as the Dock on the right side of
the screen. The dock is essentially the same thing as the OS X dock or
(even more so) the Windows Taskbar . Here, you store Application Icons
(appicons) and dockapps. Application Icons act like the icons on the
Windows 7 taskbar, showing whether the application is running or not and
acting as a shortcut to launch the application while it's not running.
Dock Applications (dockapps) are, as I said earlier, are like a
combination of Conky and Panel Apps. They can act as clocks, system
trays, CPU monitors, email checkers, file managers, etc. Each one is
designed to fit in the dock, hence the name.

     The second thing is that on the bottom of the screen, Application
Icons for running programs are displayed. From here you can drag the
Appicon to the dock for easy access, as well as "hiding" the program,
which is slightly different from minimizing and mostly used for GNUstep
programs. The bottom also holds minimized windows (done by pressing the
square on the top left of a window or by right clicking the window
border and selecting minimize).

     Finally, we have the Clip. The clip is essentially a workspace
specific dock, holding appicons and shortcuts and minimized windows that
only appear on whatever workspace you select.

     So why do I use Window Maker? For several reasons, one of which
I'll get to in the next post. I'll admit, I'm a bit of a minimalist when
it comes to desktops. That's why I could never use KDE and couldn't
stand the default style of Gnome. Oh, I tried all the other minimalist
window managers, like Fluxbox, Openbox, awesome, but I could never
really get used to them. Too much configuration for simple things, like
changing menus and setting key configs. And addons like window lists
never really "fit" with the window manager. On the other hand, Window
Maker gave me the minimalism and the combustibility of just a window
maker with the flow and togetherness of a regular desktop environment.
Combined with Gnome-Do for easy program access,everything just...worked.
And the only config I had to edit was one file to choose what
gnome-services I wanted to autostart. I understand that many people like
editing with configuration files by hand for maximum capability and I
respect that. But for me, I needed something I could set up to my liking
within and hour and without an internet connection and trusty old Window
Maker fit the bill.

     So I encourage you to try it out, say, as a little weekend project.
While the retro look and bulky tiles might originally throw you off (as
it did me), give it a shot. It's amazing how efficient it actually is.

     Thanks for reading! Next post? The GNUstep development project that
Window Maker is so heavily used in and based off.

*In this case, I'm referring to window manager only setups too and
everything in between


(download)

24 Dec 2010

Why if Chrome OS fails, it won't entirely be it's fault

    In case you haven't noticed, there's been a lot of nonsense about Chrome OS recently. And by a lot I mean a torrent of information. Hands-on tests, in depth examinations, the whole nine yards. And yet despite it's newness, people are already predicting it's failure. We have to remember here people, Chrome OS hasn't technically come out yet. It's still in development. From the looks of it, somewhere between alpha and beta. Todays cyberculture has grown far too used to betas being almost finished products (ahem, Gmail) and that they're what the finished product is, but that's a rant for a different day.

    Back to the point, a lot of people are basically saying the Chrome isn't ready yet. Admittedly, I discussed some of it's shortcomings in my earlier post on it, but I brought up a point. Namely, it's not Chrome's fault. It's a fundamental fault with the cloud. And what might this fundamental fault be?

    The cloud has no standards.

Zip. Nada. Each service follows it's own laws. Want to transfer your music from Grooveshark to Pandora? Nope! Not without transferring it back to your hard drive. How about uploading your pictures from your dropbox to picnik for editing? Can't. Now, is this Google's fault or a problem with Chrome OS? No. This is a problem with the "cloud" in general. Google can't suddenly make all those web services work together with each other. All Google can do is make it's own services that work together, which of course would get it branded as abusing it's power or a monopoly or something of the sort.

    So please, SOMEONE figure out a set of standards for the cloud! Stop making walled gardens! If we can do it with social networks we can do it with files! And don't blame Google for Chrome's failure. It's not that Chrome OS isn't ready for the cloud. It's that the cloud isn't ready for Chrome.

  

20 Dec 2010

Abort, Retry, Fail?

I cut my teeth on DOS. I figure that one of the key influences in understanding today's error messages is having grown up reading things like "Guru Meditation #0000000x.yyyyyyyy". So in memory of all these cryptic, bizzare, and downright frustrating error messages, I give you quite possible one of the most infuriating of all:

 

    

Abort,Retry, Fail?

What does that even mean? What's the difference between Abort and Fail? Will Retrying let me change anything? And the most important thing about this message? It showed up for every critical error. If you were doing something wrong (which in DOS was pretty often), DOS would let you know with this. So please, for all you UI designers out there, don't make another  Abort, Retry, Fail. Make sure you're interfaces are, if not simple, then at least understandable. Don't show the same error message for every error, that only promotes "Oh, I just ex-out of those boxes". And for the love of God, remember you're designing for the user. Not everyones a software developer.

By the way, you can also get this printed on a shirt.

15 Dec 2010

The two types of Facebook friends

    I've read a lot of talk about people who are getting tired of having hundreds of Facebook friends. They're starting to find that they only really talk to a small amount of them and that if they were to delete everyone from their friends list that they weren't really friends with or weren't family, they'd only have about 100 people.

    Now, this brings up two facts that I can see about Facebook. One, Dunbar's number (http://en.wikipedia.org/wiki/Dunbar's_number) is correct. For any community, only 120-180 or so people can honestly talk as "one" community. Any more then that and the community starts fragmenting into smaller "subcommunities". A wonderful example of this is the average forum. Now, when I say average I don't mean a forum like the xkcd one which has hundreds of people on at one time and discuss all sorts of nerdy things. I mean the ones you find on Zetaboards or on smaller websites. These forums often only have around 20-100 active users and are generally on one topic or subject, say, a certain video game series. Now looking back at the xkcd forum again, you'll notice that it's NOT about one subject. Besides the forum dedicated to the actual comic, there's numerous sub-forums for Programming, video games, etc. Each of these subforums start to form subcommunities of regular and semi-regular posters. While forums such as my hypothetical game series forum has a total community of 120 or so regulars/semi-regulars, the xkcd forum has a community like that for each subforum. Another example of this is highschool, which brings me to my next point.

    Facebook is almost exactly like highschool. While your average person can have hundreds of "friends" in their Facebook community, they only really talk with their subcommunity of 100 or so friends. Using highschool as a metaphor, your total friends list is like your schools student population. Sure, you might not be friends with everyone there but you'd probably recognize at least most of them outside of school. The people you actually talk to are your groups of friends you actually hung out with, played D&D with, etc. Your "clique" as many parents and people who are too old to realize no one still in highschool still say that would call it.

    So why would you keep all those people in your friends list? After all, you were never friends with most of your schoolmates. Why be friends with these people? For a simple reason actually. Remember that time you sat next to this kid you've never talked to before in Chemistry and had to work with him on a lab and finding out that you both liked Extreme Civil War History reenactments? That's how Facebook works. You friend the person on Facebook, happen to talk with them a bit, and find out you share a lot more in common then you thought. The "reconnecting" aspect Zuckerburg is always bragging about.

    So moral of the story according to me? There are two types of Facebook friends.Type A are the people you hung out with back in school. Type B are like the rest of the student body. There's plenty of possible friends out there among the Type Bs. As many mothers have probably said, it always pays to keep your eyes open. So be careful about deleting those Facebook friends you rarely talk to.

    Thanks for reading folks. Comments are appreciated and very welcome!

11 Dec 2010

Chrome OS' bizarre file system

Continuing on my last post about filesystems, today's post is on the newly unveiled Chrome Operating System's file system.

    For those of you who don't know, Chrome's hard drive is partitioned by default into a root and home partitions (something I am glad for!). The root partition is read-only (raising questions on how you would update the system) and the home partition is encrypted. According to OSNews, "You shouldn't see the user file system as a place to store files - it's actually a cache" and this is most likely true if Google will have anything to say about it. Which brings us to my main question.

    Where ARE you going to store your files?

    Now, we all know that the whole OS is going to be based in the cloud. You can't install native applications or store data on the actual computer. So here's what is apparently how it's going to work. You'll "install" (set up and account and I suppose links to the web service) a music playing web application, such as Grooveshark, and upload your music files to the service. This works quite nicely until you decide that you no longer care to use Grooveshark so you want to switch. Now, I don't know about you, but I have well over 1,000 music files on my laptop right now. So it's one thing to have to upload all of those files to Grooveshark the first time. But to now have to redownload them to the "cache" and upload all 1,000 of them to a separate music service? And have to do this everytime you decide to use a different application? I seriously question how well that will work, especially for things such as music or pictures. Unless Google can find an easily usable alternative to the hard drive (and central file system), I can't see how Chrome OS will attract power users. Apple gets away with not using a "proper" file system by letting apps deal with their own date and for supplying the basics like Internet and Pictures and especially Music themselves.

    So how do you think Google will handle this problem? Tell your thoughts with the comment box.

8 Dec 2010

Separate your damn file system

032-ubuntu-partition-setup

    Last weekend, I made the unfortunate mistake in hibernating after a kernel update. This, for some ungodly reason, caused grub to stop working properly and thus, unable to boot. To make a long story short, the hibernation also somehow screwed up all three of my kernels and I was forced to reinstall.

    Now at this point, you're probably shaking your head and thinking "This kid's an idiot! I bet he doesn't even have backups! Now he's going to have to go in with a live CDs and back up everything then reinstall!" And you're right, I am an idiot. Fortunately, I did have backups but I never had to touch them (though finding my live CDs was a different story), for one very simple reason.

    I have my home folder on a separate partition.
 
    This is nothing new to the GNU/Linux world and I bet many of you experienced users do this. In fact, it's a basic precaution really, so that if you ever do go through a problem like mine re-installation doesn't require a crap load of backing up and praying to god your last back up was recent enough. I've even heard of some people who have multiple distros installed and have them all share the same home folder (something of which I have neither the time nor the skill to do)! So we can reasonably assume that any of the major distros offer an easy and user-friendly method of setting up your partitions like this, no? I've yet to find a single one that does that. Neither Ubuntu, nor Fedora, nor Mint offer methods of setting it up this way without going into the custom partitions option, something a newbie should never touch without knowing what they're getting into.

    So please major distros, give us an option for easily setting up a system like that. As much as I love GNU/Linux, we all know it has a tendency to majorly screw up something, especially when upgrading from one version of a distro to another. An option to seperate your home and root folders to seperate partitions (and an option perhaps to just replace a root partition when installing) would greatly help those who don't really know how to partition their hard drive.

    Also, for those of you running Windows, a similar option exists for you. Check out LifeHackers guide for more detail.

Thanks for reading guys! As always, comments are appreciated!

   

Steve Ryan's Space

I'm an apprentice programmer and amateur writer. I program in C/C++,Ruby, a smidgeon of Python, a dash of Scheme, and TI-Basic/Axe programming for the TI-84+ calculator. For writing, I generally write fantasy, manga-inspired fiction, and some Science Fiction and Historical Fiction. I am very much interested in Pre-Renaissance history and politics as well as philosophy and physics. I run Fedora 14 on my laptop and Windows 7 on my desktop. You will most likely see me as either Bit101 or Gentleman Ryan, depending on the website. There is also a well known flash programmer who goes by Bit101 and I apologize to him for stealing this website. Thank you for reading, as I must leave since apparently LP1 is on fire.