Home » 2013 » March

Archive for March, 2013

I’m a git and I love it

Posted March 25, 2013 By weetabix

I use git, and I love it. I use it to hold my personal code and textual files, and I use it to share the code I use on this site, and the code pasted in some of the articles. There is, as always, a lot of contention over svn vs git vs mercurial… but that’s not the point of this article. (Though, I confess, mercurial being written in python tells me I might enjoy fiddling with it.)

The point of this article is, I love git. Most of the time, I don’t even realize I need a repository until … well until I need one. I’m a big fan of bare repos, so thats what I’ll write about. Also, I’ll talk about multiple remote repositories, which is how I manage to keep my pre-published code separate from the github repo I have linked with this blog.

I have three1 github2 plugins3 for WordPress to supply the code to my blog, and I use wp-syntax (or try this for instructions) to colour it up using the fantastic GeSHi highlighting engine and display it.

Git is in all the major distros, and most package managers have a “git” you can install, plus you can find instructions for installing from source, so if you’re a masochist, you can install it on your droid or mini Linux box. There are also a lot of options for Windows. (You can also install git via git…..)

 

So, once you install git, you want a new repo, right? Well, usually, if you are like me, you want a bucket to hold your stuff, something you can organize, push and pull from multiple locations.

* Most of my notes are from Pro Git by Scott Chacon, the git book freely available on the git-scm website.

Often, online, you see repos being set up ending in .git. This is a convention I do not follow.

For a bare repo, go to or mkdir the empty directory, and run


git init --bare

 

Then, you can move in the files you need, or at least touch a file.

The usual commands are:

 

git pushgit commit (or frequently git commit -a),  git pull


man git and git --help are also of some use.

 

Now, once you get the push-pull working for ya, there’s some additional tricks, like your config file in /.git/config. I keep my repo on a remote server from my home, so I have both that repo, and the one I use on github to share code on here.

 

Mine looks like:

/weetabytes/blob/master/git_config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = ssh://<user>@<myserver>/repos/git/weetabytes
[branch "master"]
	remote = origin
	merge = refs/heads/master
[remote "github"]
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = ssh://git@github.com/weetabix/weetabytes.git
[remote "all"]
	url = ssh://<user>@<myserver>/repos/git/weetabytes
	url = ssh://git@github.com/weetabix/weetabytes.git

This allows me to do fun stuff, like, after a commit, doing git push github, or git push master, if I only want to update one place, I can do git push all to push to all repos, or I can do git push origin github to make sure both remote repos are up to speed with each other, without my copy being included.

If you are sharing to mostly Linux users, SSH is awesome to use. If you have a large amount of Windows users, http/s allows you to get away without using another program like plink.

Talk to you later,

 

-weetabix

Be the first to comment

Streaming and Transcoding

Posted March 18, 2013 By weetabix

If you are like me, you have all kinds of gadgets in the house…

We have a PS3, an Xbox360, 2 android phones, a tablet, 2 laptops, and a TV. I think I have a PopcornHour and a Western Digital media player.

Like me, you could also have a ton of digital media, and you want to watch or listen to it wherever you are.

What if I want to watch one thing in the kitchen, while Sean watches something else on the TV? There are so many posts on this, on the Internet, and so many of them have lead me down a dead end, that I just hacked (as in with a machete!) a new path.

Right now, I want to talk about playing and transcoding media. In a future post I will talk about acquiring digital media, ripping and downloading legal content.

First of all, you have to decide what you want to use to play your media the most. For me, it was the PS3, but now it’s the Xbox.

Now, managing my media is one of those places I will *definitely* spend a few dollars on good software, but what I describe in here can mostly be accomplished for free. The software I ended up with, after years of using PS3MediaServer (Which is still awesome software if you just want to stream to consoles!) is called Serviio. There are two flavours, free and paid. I chose to buy the additional functionality, but for in-home use only, the free version is just fine.

To be clear, up front, the part I paid for was the ability to transcode and broadcast my music and video to my Android and to browsers *outside* of my home network using a program called MediaBrowser. If you do not pay, and use the free version of Serviio (the software) you can still do all the viewing you want via DLNA/UPNP (That would be your Xbox, PS3, and any DLNA enabled players on your network.)

DLNA/UPNP, of course, allows you to stream media to your consoles. The awesome thing about the MediaBrowser part, is (and this is a true story!) if you find yourself at a houseparty with tepid music, as long as its playing through a computer (and lets face it, that happens often at houseparties!) you can crank up your own playlist of tunes to heat things up.

On the free side, Serviio does thumbnailing of movies, transcodes MKV, AVI, WMV, TS, etc. fast and flawless (though FF/RW on MKV doesn’t always work, natch.) It plays to just about anything, and can keep surround data or downmix to stereo.

In order to get some of the nonDLNA streaming to work (and to improve the DLNA streaming) I recompiled the FFMpeg version they include, to make it my system default. I used their provided FFMpeg 1.1.1 download from this page, and compiled it according to these instructions, substituting my 1.1.1 version for their latest branch. (I did perform the optional lavf portion.)

One bonus to this, is the ability to double-click a .ts file and play it in FFMpeg + VLC, instead of using tsmuxer + VLC.

 

Be the first to comment

Windows GOG games and Ubuntu

Posted March 11, 2013 By weetabix

I don’t know about you, but I love playing old DOS games… Especially ones like Masters of Orion 2. Usually, they are relatively easy to use. It goes something like:

  • Install DosBox or go to GOG (Thats short for “Good old games!”)
  • Get a game, or download the installer.
  • Run it in windows (or install it with wine or CrossOver in Linux), or the game is installed inside DosBox (a DOS emulator) and boom, instant funtime.

 

If you want to network a few of these games together, you usually all need a windows machine so the DosBox networking works… When you install the GOG Windows DosBox under wine in Linux however, the networking is being emulated twice, and tends to fail.

 

Well, I figured out an easy solution, though it can be a bit heavy on disk space if you aren’t already using wine.

 

1. On your box, install DosBox and wine. (You can use the DosBox PPA like I do, or the Ubuntu repo)

 

2. Run the GOG installer via wine (I do this mostly for the benefit of not having to “install” the files by hand.)

 

3. After installation, browse your application menu and select wine => Browse C: Drive
Navigate to the game’s folder (usually something like ~/.wine/dosdevices/c:/ )

 

4. Locate your appropriate SERVER or CLIENT conf file (for Masters of Orion 2, the config file is dosboxMOO2_server.conf)
Open it up (we want to make a couple changes to help troubleshoot issues. Windows and Linux DosBox are almost, but not quite, the same.)
Change fullscreen=true to fullscreen=false so we can see the warnings scroll up in the terminal.

 

5. Now, in the terminal in that game folder, do:

 

dosbox -conf dosboxGAME_server.conf (replace with the appropriate name)

 

6. Now observe the error messages on the terminal (the game will probably start just fine.)
The changes should be pretty obvious in the errors. You might want to change:

 

machine=vga to machine=svga_s3
output=ddraw|direct3d to output=surface|overlay|opengl  (“surface” wont allow you to resize or rescale.)

 

7. Make sure your IPXNET STARTSERVER command uses a port above 1024 to avoid the privileged port denial issue.

 

8. Return fullscreen=false to fullscreen=true to enjoy that awesome fullscreen gaming.

 

As a final note, the DosBox .conf files have a ton of options

 

Happy Gaming!

 

-weetabix

Be the first to comment

Terminal from anywhere

Posted March 4, 2013 By weetabix

Do you spend a lot of time in a terminal? I do… easily 80% of my “productive” time (e.g. not watching Stargate) is gazing into xfwm4-terminal.

Lets look at some scenarios: (I assume you want to ssh in more than once a week.)

Let’s imagine I’m away from home, at a buddy’s, and all he has is Windows. Simple right? Download PuTTY! (or bring it on a USB key. There is a portable version) Or wait, is there a better option? Yes, which brings me to my next scenario:

Suppose this Windows machine is at… say, your local electronics store, or  you simply cannot download a program for whatever reason?

Well, as long as you have Internet access to your server, you can use ShellInABox! This awesome server side software allows you a mostly functional ANSI/VT100 or Wyse 60 terminal.

The man page is fairly straightforward. You install the product to your webserver, and point a specific port to it, and set it to run as either a background service (I recommend this), or as an on-demand CGI (which uses less resources, but has to spin up. If your box is thrashing, this can take a while.)

Alright, you say… What about on my phone?

Well, if you have an iPhone, I don’t. Sorreh…

As for Android, there is a bevy of awesome software.  I currently use ConnectBot and irssi ConnectBot (since I chat on IRC with Irssi, I find it makes sense to have a terminal client that allows me to use the control keys within Irssi without butchering my usual xterm controls.)

Be the first to comment