Cookie Notice

As far as I know, and as far as I remember, nothing in this page does anything with Cookies.
Showing posts with label ubuntu. Show all posts
Showing posts with label ubuntu. Show all posts

2016/09/26

Perl on Ubuntu on Windows: A Solution

I suppose I should've just been more patient.

After a while of waiting and watching and trying to think of a better bug report, one that might get a response, and failing, I got a response.

You can't install the module because File::Find can not recurse directories 
on the file system that is in use by Ubuntu on Windows.

The solution is to edit Config.pm:

sudo vi /usr/lib/perl/5.18.2/Config.pm
Set dont_use_nlink to 'define':

dont_use_nlink => 'define',
Now it's possible to install all modules you want!
(this is a dupliceate of #186)

I haven't made this change yet. I am loathe to change core modules like that, although I have done so in the past. Because I have done so in the past, and it ended up stupid. But I will likely do it.

I was mentally throwing it to the kernel, but was wrong, which is interesting. Makes me think that, rather than running Ubuntu on Windows, doing something with Vagrant might be the better plan.


2016/09/01

Perl on Ubuntu on Windows: Finding The Right Test Case



I'm still hung on getting CPAN working for Ubuntu on Windows. In the comments, Chas. Owens gave me great advice for proceeding with this problem:
Write a minimal test case, run the test case with strace on Ubuntu on Windows and Ubuntu on Linux. The outputs are supposed be identical, if they aren't (and we expect them not to be because of the error), then you have a good shot at identifying the misbehaving syscall (which is the only difference between Ubuntu on Windows and Ubuntu on Linux).

Once you see the difference, look into what the syscall does and try to determine which system is implementing it correctly (probably Linux). If it is Windows post to the github tracker with the test case and the identified syscall. If it is Linux, then report it to Ubuntu.
My first thought was to do this within cpanm, but I thought sudo su then strace -o platform -ff strace cpanm YAML::XS was a bit much. In part because when platform was Linux, it generated one file and hundreds on Windows.

Then it struck me that instead, I should just focus on the tests themselves. I cloned Ingy döt Net's YAML repo and tried to run prove test/ in both places. Went fine with Linux, failed with Windows. Butrealized after a second, it succeeded while using my personal perl, not system perl. /usr/bin/prove test/ failed on Ubuntu. apt-get install libtest-base-perl on both systems helped a lot, but now it wants Test::More, (I know because I searched for what modules the tests are asking for.)

For all I know, there's a package that provides Test::More, but it isn't libtest-more-perl, and digging further into that seems like a waste.

So I'm thinking it through again, looking at a failing test in YAML::XS:

use t::TestYAMLTests tests => 2;
use utf8;

is Dump("1234567890\n1234567890\n1234567890\n"), "--- |
  1234567890
  1234567890
  1234567890
", 'Literal Scalar';

is Dump("A\nB\nC\n"), q{--- "A\nB\nC\n"} . "\n", 'Double Quoted Scalar';


By "failing test" I am saying it works in natural Linux but not Ubuntu on Windows. And it's striking me: I need to find Dump. Where is Dump? In the C. It is an XS module, is it not? So, it's striking me that the solution is in C.

Which means I have to write C.

More later.

I think there's only been one time when I coded C on the clock, and only one time when my C knowledge was required on the clock.

The former was at a former workplace, where I wrote and compiled some C to compare UltraEdit with another editor, so I could help decide which we were going to buy a site license for. As I can only remember UltraEdit, I can say that's the one I liked better. The code itself was scarcely better than Hello World.

The latter was at another former workplace, where there was a tool that allowed mechanical engineers to drag together components like traces, and then first turned those traces into C code and compiled them. There was an issue where it wouldn't work, and I found the error logs and worked back.

I'm looking at perl_libyaml.c. I'm looking at perl_libyaml.h. I don't have nearly enough C skills to start here.
/*
 * This is the main Dump function.
 * Take zero or more Perl objects and return a YAML stream (as a string)
 */
void
Dump(SV *dummy, ...)
{
    dXSARGS;
    perl_yaml_dumper_t dumper;
    yaml_event_t event_stream_start;
    yaml_event_t event_stream_end;
    int i;
    SV *yaml = sv_2mortal(newSVpvn("", 0));
    sp = mark;

    set_dumper_options(&dumper);

    /* Set up the emitter object and begin emitting */
    yaml_emitter_initialize(&dumper.emitter);
    yaml_emitter_set_unicode(&dumper.emitter, 1);
    yaml_emitter_set_width(&dumper.emitter, 2);
    yaml_emitter_set_output(
        &dumper.emitter,
        &append_output,
        (void *) yaml
    );
    yaml_stream_start_event_initialize(
        &event_stream_start,
        YAML_UTF8_ENCODING
    );
    yaml_emitter_emit(&dumper.emitter, &event_stream_start);

    dumper.anchors = newHV();
    dumper.shadows = newHV();

    sv_2mortal((SV *)dumper.anchors);
    sv_2mortal((SV *)dumper.shadows);

    for (i = 0; i < items; i++) {
        dumper.anchor = 0;

        dump_prewalk(&dumper, ST(i));
        dump_document(&dumper, ST(i));

        hv_clear(dumper.anchors);
        hv_clear(dumper.shadows);
    }

    /* End emitting and destroy the emitter object */
    yaml_stream_end_event_initialize(&event_stream_end);
    yaml_emitter_emit(&dumper.emitter, &event_stream_end);
    yaml_emitter_delete(&dumper.emitter);

    /* Put the YAML stream scalar on the XS output stack */
    if (yaml) {
        SvUTF8_off(yaml);
        XPUSHs(yaml);
    }
    PUTBACK;
}

Hrm. Maybe back to the Perl.

Looking at YAML.pm, YAML::Dumper.pm and YAML::Dumper::Base.pm make it seem like you could make a master class on how modules go together. Previously, when I've dived in to figure out issues, yeah, there's lots of confusing parts but I could find my way to the broken thing. perl_libyaml.c is looking much more approachable now.

2016/08/29

Perl and cpanm on Bash on Ubuntu on Windows 10: Who do I report this to?

I promised a longer post on Bash on Ubuntu on Windows 10, explaining why I use it, when I don't and why I even use Windows 10, but that isn't today.

Today is me trying to figure out who to report a bug to, and how to effectively report it.

The system (called "Ubuntu on Windows" for the rest of this blog post) is Ubuntu 14.04 LTS running kinda with Windows as the kernel instead of Linux. A good thing is that, if you can apt-get install a package, you can put it on Ubuntu on Windows. I don't think you can use it if 1) it connects to the kernel (because the kernel is Windows) or 2) it pops up a window. I've heard about people using XMing to get around that, but I haven't tried it yet.

The problem is that you get what you have available with dpkg, and the perl that comes with 14.04 is 5.18, where current is 5.24. Some modules haven't been packaged, and there's usually a gap between the package version and the cpan version, so I tend to use perlbrew and use my own perl instead of system perl.

And cpan and cpanm can't build on Ubuntu on Windows. I demonstrated this by trying to install YAML::XS with cpanm. I won't include the build log, but I will link to the build log. The problem comes at lines 146, 162 and 207:
#   Failed test 'Literal Scalar'
#   at t/dump-heuristics.t line 4.
#          got: '--- '1234567890
# 
#   1234567890
# 
#   1234567890
# 
# '
# '
#     expected: '--- |
#   1234567890
#   1234567890
#   1234567890
# '

#   Failed test 'Double Quoted Scalar'
#   at t/dump-heuristics.t line 10.
#          got: '--- 'A
# 
#   B
# 
#   C
# 
# '
# '
#     expected: '--- "A\nB\nC\n"
# '
# Looks like you failed 2 tests of 2.
t/dump-heuristics.t ...... 

...

#   Failed test 'Dumping Chinese hash works'
#   at t/utf8.t line 31.
#          got: '---
# Email: boss@opcafe.net
# 地址: 新竹市 300 石坊街 37-8 號
# 店名: OpCafé
# 時間: 11:01~23:59
# 電話: '03-5277806
# 
#   0991-100087
# 
# '
# '
#     expected: '---
# Email: boss@opcafe.net
# 地址: 新竹市 300 石坊街 37-8 號
# 店名: OpCafé
# 時間: 11:01~23:59
# 電話: "03-5277806\n0991-100087\n"
# '
# Looks like you failed 1 test of 8.
t/utf8.t ................. 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/8 subtests 

The problem involves incorrectly handling newlines, but all this works and YAML::XS installs perfectly on my personal Perl, which I demonstrate below.
$ which perl ; perl -v | head -n 5 ; perl -MYAML::XS -e "print 'Yet Another Perl Hacker'"

/home/jacoby/perl5/perlbrew/perls/perl-5.24.0/bin/perl

This is perl 5, version 24, subversion 0 (v5.24.0) built for i686-linux
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2016, Larry Wall
Yet Another Perl Hacker

So, if it's Perl on Ubuntu on Windows, and the Perl works perfectly other places (including Strawberry Perl on the same Windows 10 machine (but only in PowerShell) ) and the Ubuntu works perfectly on other places, it must be the Windows, right?

That's what I thought, too. There's a GitHub repo for Ubuntu on Windows. Well, really, it's an issue tracker for Ubuntu on Windows, because there's nothing else in there. You can't clone and build your own. But, it does put the issue tracker in a place where the natural audience for Ubuntu on Windows would go. I put in an issue, but I think I might have asked wrong. I have cleaned up my issue some, but I see no sign that anyone else has seen it.

So, what is my next step? It isn't just YAML::XS; that's just a module I wanted at the time. It isn't just cpanm; I tried with cpan, too. It is just with Windows 10. Thoughts and suggestions from the greater Perl community?

2012/01/14

Ubuntu on the Big Screen


So, Google TV, Apple TV, Roku, Boxee, and now Ubuntu TV. I think there's going to be problems making it a standard install because there's no standard setup on TVs. A big hamstring is the lack of Blu-Ray support in Linux (true last time I checked, maybe not now) but I can easily see a point soon where that doesn't matter anymore.

So, the set-top is the new desktop? And is this reason to go to Linux Mint or even straight Debian on machines you want to run at work? 

2011/10/06

Trying to install boom

boom is a key-value store, running on the command line and written in ruby. I don't know whether I need a key-value store for my command line, but I remember when I didn't know if I needed a laptop, bash, Linux, VirtualBox, an RSS aggregator, and so many other things. So, I thought I'd try it. And, I of course decided to try it first on the machine I command line the most, my work machine, which runs Ubuntu 10.04, the long-term support version.

jacoby@oz:~$ uname -a
Linux oz 2.6.32-34-generic #77-Ubuntu SMP Tue Sep 13 19:40:53 UTC 2011 i686 GNU/Linux
jacoby@oz:~$ ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i486-linux]
jacoby@oz:~$ gem -v
1.3.5
jacoby@oz:~$ gem install boom
WARNING:  Installing to ~/.gem since /var/lib/gems/1.9.1 and
	  /var/lib/gems/1.9.1/bin aren't both writable.
WARNING:  You don't have /home/jacoby/.gem/ruby/1.9.1/bin in your PATH,
	  gem executables will not run.
ERROR:  Error installing boom:
	multi_json requires RubyGems version >= 1.3.6
jacoby@oz:~$ gem update --system 1.3.7
ERROR:  While executing gem ... (RuntimeError)
    gem update --system is disabled on Debian. RubyGems can be updated using the official Debian repositories by aptitude or apt-get.
jacoby@oz:~$ 

I followed this up by downloading and building ruby and trying to do a gem install from that. Into my second day, I decided that spending more of my precious time trying to get it working on Ubuntu was a waste. So I briefly considered reimplementing it in perl, then found ruby for Windows and installed it on my Win7 box. Then I opened a term and did the gem install. And now it works.

I find this profoundly disappointing.

I don't think this is the fault of Zach Holman, the creator of boom. I have now tried boom on Windows and kinda like it. I suspect (and might pop open VirtualBox and a bleeding-edge distro to check) that the problem is that Ubuntu or just U10.04 is stuck with an ancient RubyGems the way that RHEL is stuck with ancient Perl. I just know that I don't believe it should've been a problem.

2011/02/05

We Live In The Future Redux

I have my trusty netbook on my lap. In one of my USB ports, I have a thumbdrive with the Ubuntu Netbook Live CD on it. I'm installing Ubuntu Netbook 10.10 right now. But not on my netbook's SSD. I'm installing it on an 8GB SD card.

I remember getting hard drives smaller than that. Storage-wise, I mean. Physically, they were the size of today's DVD drives. I'm sure that the performance of an SD card will bed poor compared to an SSD card, but a second face for $20 is kinda cool. Dual-boot on the cheap. My friend Patrick put Ubuntu on a thumbdrive so he could have "GoodOS" on his work laptop. I wanted to have something that wouldn't hang out too much. I don't use my SD slot often, so keeping it there works for me.

It's still configuring, so I can't say much. But such powerful and modular hardware is neat.

2011/01/14

Graphical Programming with Yahoo Pipes

Let us start with the need. I found a tool to allow me to scroll RSS feeds across my desktop, just like every news channel.  This is a neat thing, but I found that I didn't like the way it did RSS feeds. Instead of cycling through them, it kept using one. So, I set about solving that by combining feeds.

The method I chose was Yahoo Pipes. When I decided to check Craigslist for items of certain types (Fender guitars, especially) in local areas (where I decided I could reasonably drive, should the catch of a lifetime come around), I used Pipes, mostly as an excuse to learn it. With Google Reader being the recipient of those feeds, I didn't need to massage them too much. The news I fed News was twitter feeds from news sites I wanted to follow, mostly local news and weather.

To the right, we see the "code" I used to combine seven news sources, (mostly) remove redundancies, do some slight editing to the content and ensure that only the day's news shows up. It's all Twitter RSS, so there's one date format, but that format is not usably sortable. I format today's date in the same format and filter out if it isn't there, but the better solution is to take a Unix timestamp of the current time and date (representing seconds since Jan. 1, 1970), subtract 24*24*60 (number of seconds in a day) and drop out entries that were not published during that time. That will take a slightly larger amount of cleverness to do that, but I think I'll crack that nut eventually.

The thing I notice is, while a graphical solution seems tailor-made to mimic flowcharts, there's no splitting here. It's all very linear, with minor loops and filters. I suppose I could get a more funnel-looking program if I handled the inputs separately. The more I play with Yahoo Pipes, the more I like it.

2010/09/22

Dropbox v Ubuntu One

Here is a good head-to-head comparison between Dropbox and Ubuntu One. I cannot speak to everything in the article, but I can say that I have Dropbox working on two Linux machines and three Windows machines (2 XP, one Vista) and have always found the installation process extremely fast and painless. I have tried to get Ubuntu One working on my two Linux machines, but for my home machine, it always seems to trigger a problem that kills X, which is not good.

The thing that Ubuntu One does that Dropbox doesn't is sync contacts, but that's not an issue for me because I use Google to store and manage contacts anyway, and Zindus to access them in Thunderbird.

So I'm in agreement with the take-away: Use Dropbox, not Ubuntu One.

That being said, if I invite you to Dropbox and you join in, I get a bump in storage space. So, please, get Dropbox.

2010/08/23

The Community is Solving My Problems!

The Stack Exchange Crew is pushing a few domain-specific Stack sites for beta-testing. The one I've been most involved in is the Ubuntu one. I had two specific problems which I think I have complained about there. The first is how, for no reason I could identify, I would lose the ability to view the contents of my ~ folder. The other is that I used to be able to connect my netbook's LINE OUT to my desktop's LINE IN and get both audio streams in one set of headphones.

The second one was the easiest. Simply using gst-launch to bridge the in and out of my desktop. I'm running media on my netbook right now, with my headphones plugged into my desktop. It was one simple apt-get install to implement.

The second one took a little more talking, but the top contender is that unstable symbolic links bringing down /usr/bin/ls but not /bin/ls, and my 12 sshfs mount points which I keep in /sshmounts to keep them where du won't search them, that's where the instability is. I'm waiting for the next time problems on my home box or one of the other mount points causes the problem again before I mark it answered, but I think it is.

I have logged into a few others, dealing with computer science and user interfaces, but Ubuntu is the one where I have had the most questions and found the most answers.

2010/08/02

More Fun with Ubuntu upgraded to Lucid

I have a Linux box. I installed a 500GB drive and put on Ubuntu Jaunty. I left it at Jaunty through Karmic, thinking that I didn't want or need any of the diffs. But I got to Lucid and I thought I should move up.

I used the built-in upgrade method, rather than pulling out a live CD and reinstalling. I've come up with two problems. First, it comes up without a mouse pointer. I can mouse, but I just don't know where I'm mousing. I can fix that short-term — open the Appearance module, change the pointer, lock screen, unlock — but the short term fix is all I can do, because not long after, I lock up with the screen blinking Checking Battery Status. I remind you that this is on a desktop machine. No battery to check. All powered from the hole in the wall.

But that's not the annoying part.

The annoying part is that none of these issues come up when I log into another account I never used before. I logged in on Saturday. It's running fine still.

I don't want to have to rename and move lots of crap. I also don't want to reinstall from liveCD or live thumbdrive. But I don't want to keep it as-is, and it's hard to know which I want less.

2010/07/21

Weird Problem on Ubuntu Lucid

I've lost my home directory.

Not anything in it, though. If I want to edit ~/test.pl, I can type vi ~/test.pl or even move to my home directory and type vi test.pl and it edits as it should. But if I type ls ~ , it hangs indefinitely. It comes back after a reboot, of course, but that can mess with my workflow.

2010/07/02

Two Heads are better than One

I spent a while looking at new AGP video cards yesterday. Or maybe I should write "new", as AGP is like the last dodo, walking and talking but doesn't know it's extinct yet.
I was doing so for this purpose: I could not get my current dual-head AGP card to work. I had cloned screens and when I tried to set it up for dual-head, both screens looked like this. -->

Which is pretty in a way, but not useful.

It seems that Linux, and specifically Ubuntu Lucid, has taken X out of Xorg and put it into the kernel for more speed. They call it KMS, and for your nominal case, it's a good thing. When working with cloned monitors, I was able to get the pretty Compiz stuff working, like transparent terms that show the term underneath. That's sexy right there. It just sucked for my Radeon video card.

And here I must confess a dumbass attack. Consider this sample code they suggest for turning off KMS.
echo options radeon modeset=0 < /etc/modprobe.d/radeon-kms.conf 
I tried that, and because I wasn't in root, it didn't work, so I used vi. And when I went back to check /etc/modprobe.d/radeon-kms.conf it read like this.
echo options radeon modeset=0 
Of course it was confused by the echo in there. But now it works fine. Yay me.

2010/06/22

Borked

Good news and bad news. I have my new keyboard, a Logitech K120, plugged in and going, and it's into my KVM USB (of which I use the K and M, as I have 3 monitors and want them all!) It's a cheap keyboard, but as friend-of-the-blog Patrick says, if it isn't an IBM Model M keyboard, it's a pretty much just a keyboard. So, I'm able to switch between my stuff with a double-tap on the Scroll Lock. And really, what else are you going to do with a Scroll Lock now that Microsoft has gone from DOS to Windows?

That's the good news. The bad news is that I don't really have much to switch between right now, as the move from Karmic to Lucid has borked my X11, as you can see above. I've copied an old, good config into place. We'll see how it goes.

ETA: Put in an old X11 config file, and that got me X again, but it's not showing great signs of stability.

2010/02/06

if you can't be a good example, you can at least be a horrible warning

I am not lost. No, far from it.

There's this blog. If I do anything interesting, I by and large tend to blog about it. so looking through old posts will tell me the packages and fixes I need to get my environment back.

Then there's Dropbox. Dropbox is a means to create a shared directory betweeen all your machines. Shawn Powers of Linux Journal suggested putting your config files into your Dropbox so that you can keep a consistent setup. I read that too late, and I don't have that. But what I do have is a set of nightly ZIP files of certain essential bits. And that's good. But I'm thinking that, once this is done, I'll go all out and keep much more in Dropbox.

Also, between Delicious and Google Bookmarks for bookmarks, Google Calendar for events and Thunderbird and IMAP for mail, much of that crucual stuff was never on my desktop. But it does remind me of something: I was just thinking about mail filtering, because all my work filtering occurred through Thunderbird, and my .mozilla-thunderbird directory is now dead.

Wondering now to what extent git might've helped. I have a GitHub account, but I hardly use it. I had git installed, but I hardly used it. If I'm not connecting to an external repository on each save, I've really done little. Must use that more.

What kills me the most is that that I was working on breaking apart a big ugly Perl module into lots of little modules. On Stack Overflow, I referred to it as Dumb and in keeping with that, I had created Dumb::Database, Dumb::Markup and Dumb::Table1Access, but it was all only on my desktop, while if it was on the server it was intended for, my wipe wouldn't have destroyed anything.

Such is life. Ubuntu is installing the 9.04->9.10 upgrades to get me to the full Koala, so soon I shall start the moving-in process.

Well, Crap

Crap Crap Crap Crap Crap.

Remember how I said that keeping /home on another partion keeps it safe?

You must be careful to keep sure that Ubuntu's installer (or whatever installer you prefer) doesn't format your partitions.

There was work I've lost.

Crap.

onward and backward

Five use cases:
  • I'm working remotely
  • I'm working remotely and I want to reboot but have everything come up again when done.
  • I want to connect to my machine via SMB from a Windows machine like my netbook
  • I want to have jobs going off at regular intervals
  • I want to print.
Simple stuff, right?
  • openssh-server
  • grub
  • samba
  • crom
  • cups
All of those packages don't work for me. Which is sick and bad and wrong. Did I mention the bad? So, I'm reinstalling.

At this second, really. I'm in the "try before you buy" part of the Ubuntu LiveCD, mounted on the office USB key.

One of the tricks I use, and this hardly rises to the level of trick, is to keep my /home on a separate partition from /, which means that everything I really value on a computer is safe while I wipe and pave over the operating system. I must admit that I didn't always do this, but I didn't always have 40GB (work) or 500GB (home) of drive to play with. Come to think of it, I have a 40GB drive for / at home as well as the big drive for /home.

But, while that's really helpful, there's more to remember.

Your crontab isn't saved in your home directory, so, when you wipe and reinstall, you lose your crontab, which, if you're like me, is as finely tuned a config as your .bashrc or your .vimrc or your .alias. So, the trick is to always save a copy of your crontab to a safe place. Schedule it. Put it in your crontab.

There's other considerations, too. I had an X11 problem that forced me to tweak my config to fix notify-osd, so I copied my xorg.conf to my home dir. I have a bunch of tools I use a lot that are not standard, so my apt sources.list has been changed. So I have that copied. I saved list of installed packages so I can start to reinstall the things I want without having to try to remember it all. Also, Ubuntu desktop defaults to DHCP, but my network address is hardcoded. I know that address, and if I forget it I can always nslookup myself to get it back.

Time to reboot.

2010/02/02

I have a lot of problems with you bits!

I haven't yet removed the cut-tag style from this blog's default. It's a minor thing, but I nearly never write long enough to justify it, and there's no conditional.

My work machine doesn't start ssh, cups, cron or samba on startup, meaning I must do it manually, which sucks. Really considering a reinstall. Perhaps "planning" is a better word. Not having printing always is a bit annoying, and SMB networking is more a toy than a crucial item, but SSH is crucial to me, and cron is more so.

You see, I have a program called jBiff that tells me when important emails come, and that requires them to be scheduled via crontab. No cron, no messages, and I get people coming up to me saying "Did you get my email?" I hate being caught flat-footed in those situations. So, must reinstall to fix cron.

And my Samsung Instinct phone will not talk to Linux. That one's a bit beyond my ability to manipulate, I think.

2010/01/29

Charting the Descent into Madness

A friend is getting XMPP to work on a private network, mixing XP, Linux and Solaris. So private, only he's on it. Madness after the cut.


2010/01/22

gcalcli - command-line interface to Google Calendars

The coolest of all things about Google Calendar is how you can just put anything into the field and it'll interpret it. Most calendar programs have involved configurations, which are available if you need to fine-tune your gCal events, but being able to type in "LUG meeting 7pm in ECE" and having it know what you mean? That's good.

But it means having Google Calendar open. Which, honestly, I don't often do. With alerts, I have Evolution keeping track, I have some code that checks my calendar and sends me IMs to warn me, and there's what Google does automatically with SMS and email. If I have to go, I don't need Google Calendar open to remind me. So, like with Twitter and other things I've coded, what I need is a way to use Google Calendar without really using Google Calendar.

And gcalcli is that. It's a snazzy command line interface to Google. For Ubuntu folks, installation is as easy as sudo apt-get install gcalcli, and it shouldn't be much harder for the rest of you. All you need to do is type:

gcalcli quick '7pm Pick up Windows7 at Best Buy '

And there it is.

But I can't leave it there.


I've come to liking this kind of form for more social and less structured commands

program Long line of words that is a sentence, not an array of commands


So, I have a wrapper for the quick function here.


#!/usr/bin/perl

use strict ;
use warnings ;
use 5.010 ;
use subs qw{ set_status } ;

my $args = join ' ', @ARGV ;
if ( $args eq '' ) {
while ( ) {
$args .= $_;
}
}
create_event( $args ) ;

exit ;

########## ########## ########## ########## ########## ########## ##########
sub create_event {
my ( $msg ) = @_ ;
qx{/usr/bin/gcalcli quick '$msg' } ;
say $msg ;
}
########## ########## ########## ########## ########## ########## ##########


The thing I like most about this is how I don't have to worry about handling passwords. It's in the .gcalcli config itself. More on other uses later.

2009/11/12

Other Broken Things in Ubuntu Koala



This is Gnome System Monitor. In an ugly pink punk tartan.

Thing is, it's usable, except it's not. I mean, I can right-click and I get a drop-down in some other indecipherable pattern. I can double-click where the angry pink tartan should have a menu and have it roll up like any other window. I just can't see it!

Any thoughts as to how to fix this?