Wednesday, August 29, 2007

late nights

Oh god: It would appear that I have stayed up until 2:00 reading

http://en.wikipedia.org/wiki/C++0x
as far as

http://en.wikipedia.org/wiki/C++0x#C.2B.2B_standard_library_extension
(std::tr1, which I already know about)

While I know this is quite tragic, a few things have come from it:

function add = <>(x,y) -> int {x+y}

It seems that C++09 is getting pretty much *all* of the cool/useful features
of python (with the possible exceptions of list comprehensions and nested
scopes, which might be possible to implement with some hackery). It remains
statically typed, but you no longer have to be explicit, and you can do duck
typing using 'concept's.

Maybe I will take the time to write a few things using tr1, to get back in
practice. *slightly tempted to try writing a boo/python/rpython compiler that
will output to C++09*

Friday, August 24, 2007

CupsAndString released. Now what to do?

Okay, so I have released the first version of cupsandstring
<https://launchpad.net/cupsandstring/>. I have a few things I could do now:

a) Create a Skype connection manager
b) Clean up the telepathy-python bindings
c) Try porting to windows
d) Start work on that package manager idea of alexreg's (a set of MSI packages
with deb-like dependencies, but which can install themselves on windows,
where there isn't necessarily a package manager already installed.)

The idea that excites me most is the skype one. I would love to see what kinds
of hacks people come out with if I manage to get voice and video working on
that. Doesn't seem too hard either: http://skype4py.sourceforge.net/

Friday, August 17, 2007

Virtual Desktops

For those of you on Windows: [context] Linux and Mac OSX give you "virtual
desktops", which are like multiple virtual screens that you can switch
between. Each one has its own task bar, so it gives you more flexibility to
manage your windows.[/context]

I have found that having 4 virtual desktops isn't enough for me. I now have 5.
I still have about 3 things in each task bar

I think it's kind-of since I started using Boa-Constructor. Boa takes a whole
desktop of its own, because it needs a debugger window, editor, and shell
window, and some toolbar window at the top that I've never used, but which
can't be closed without closing the whole thing.

I have also started doing a lot of development using a different user for
developing each project, and another for testing, and I find that it helps to
keep each account on its own desktop.[context]Linux (and Mac, I think) allow
multiple users *using* the same machine *at the same time*. This is illegal
on Windows.[/context]

This trend towards increasing numbers of virtual desktops is interesting,
because when I started using linux (SuSE) it only had 2 by default, (this was
enough because I only had 128MB of RAM, so having too many programs open
slowed down my computer). I wonder when I will get to 6, or even 12. When I
start using Virtual Machines, and want a new VD for each VM?

Friday, August 10, 2007

New keyboard

I went out yesterday and got a microsoft ergonomic keyboard. It's interesting
having a split down the middle of the keyboard, because I often use b with my
right hand, and y with my left. I'm not such a fan of the ridiculously long
enter key, because it takes a bit of effort to press until you get used to
it.

There are a few keys that don't generate events ("zoom", which is a rocker
button along the center of the keyboard, the "customizable" buttons 1-5
and "My Favorites" along the top, and the "spell" button that shares the f10
button (which I plan never to use, as it requires the function keys to be
disabled))

I am really quite fond of how they've put '=', '(', and ')' in the space just
above the numpad. Shame I hardly ever use the numpad... and shame the bracket
symbols don't produce X events :P

I've also noticed something quite good about the linux/kde way of doing
things: you can use ctrl to modify the actions of even non-standard keyboard
keys, so in amarok: next track=ctrl+volumeup, previous=ctrl+volumedown.

One thing I'm not too fond of is how you can only have two shortcuts assigned
to each action, and there are programs *coughAmarokcough* that have actions
that can be mapped to global shortcuts, but not normal shortcuts.

Tuesday, August 07, 2007

Progress Report (summary of the things that interest me)

This

Please comment if there's something in here that looks interesting, or you
want more info on. This is a list of the projects that I am
currently/previously working on, organized by progress. Entries take the
form:

Project name(description):
tasks completed
tasks still to do

cupsandstring.pymsn(text-based msn in <128 lines of python):
works (can send/receive chats, and view a list of online users)
shorten to <128 lines, convert to GNU readline to allow tab completion

cupsandstring.telepathy(text-based multi-protocol in 256 lines):
can list contacts sometimes.
remove references to pymsn. Add incoming/outgoing chats

telepathy-butterfly (connection manager to support cupsandstring):
written a few patches
still keeps doing odd stuff to me, making cupsandstring hard

Windows Vista under QEMU(for development of kde/telepathy under windows):
see previous post (STOP:)
wait for new version of QEMU to officially support it

Windows XP under Qemu:
works, but is unreadable
get a *legal* version which isn't in spanish or portugese

telepathy-tick(DBus: com.Skype.API based telepathy connectionmanager):
not started. the com.Skype.API protocol is well documented though.
start with text chat and presence, then look at concurrent accounts

Left and Right handed mice (so that each hand is using the mouse naturally):
own two appropriate mice
work out how to identify mice *reliably* using evdev in xorg.conf

TheBus(a simplified dbus interface):
discontinued (after I realised how much of a nasty hack it was)
try adding features to existing dbus bindings. see about a pure python lib

Multi-PointerX (multiple people on the same computer at the same time :D ):
got it working a while ago. A lot has happened upstream since then
not tried recently. Doesn't work with nvidia driver. git is a bitch.

KDE4 (once again, just trying it out for now):
works quite well. Even kopete has started compiling and looks swish :D
check up on it periodically. Eventually start hacking telepathy into apps.

Windows package manager (like apt for .msi files rather than .debs)
Not started: Relies on me getting windows working in a vm.

Feedback/questions welcome. We love questions.

Friday, August 03, 2007

Craftsmanship in Consumerism

I have just finished reading The Culture of the New Capitalism (Richard
Sennett) and there is a section dealing with craftsmanship, and pride in
quality. There is also a chapter on consumers, and the way we are taught to
crave new things, and then not value them anymore once we have them. When
evaluating what to buy, we need to make decisions even though we often have
very limited knowledge of the production of the item. So what rules should we
use when deciding which items to buy?

One way to approach the problem is "How would I design this item?". My friends
will be able to pre-empt my answer: "unix", but when is this valid?

"Simplicity of implementation is more desirable than simplicity of interface."
This goes directly against the modern consumer's way of thinking: "If I can
buy something that is easier to use, why should I reject it because it is
more complicated to make? Let me give a few examples:
"Serrated knives vs straight bladed knives"
Serrated knives are often slightly more effective at cutting when they are
first bought, but have you ever tried sharpening one? I would go for a
straight knife, and buy a knife sharpener. It is possible to get a
microscopically serrated knife with just a single stroke of a knife
sharpener.
"Manual doors vs Automatic doors"
When I was in america, they had some busses with pneumatic doors, and some
that the driver had to operate by hand using a simple lever. The busses all
looked about the same age, and the doors on many of them were failing. The
difference was that the failing pneumatic doors were deathly slow, because
the driver pushed a button and waited. The manual doors were often just as
slow to close, in the wrong hands, because they often closed with the wrong
door on the outside, but the more experienced drivers could get them to open
and close in maybe a tenth the time of the pneumatic ones.

So when is it beneficial to pick the unix design in these cases?
"When people will be working with it for a long time". The reason being that a
complicated interface can be learnt over time, while a complicated
implementation will often get warn out, and be very difficult to fix.
Annoyingly, a commercially successful product must aim for the opposite
ideal.

In the case of products like the bus door, the products last longer because
the operator has more subtle control over them, and can optimise them to make
them work better for longer. I could sharpen a knife so that it could saw
through meat, or I could sharpen it to give me a nice fine shave. I enjoy
that kind of thing. I think that learning subtle control of simple tools like
that could be automatically done by machines in the near future. Obviously,
it will be the electronic tools that get tuned first, and I can't wait for
zigbee devices to come out and for standards to emerge to enable remote
controlled machine learning systems.


Footnote:
Those who know me will know that I have a long history of being dreadful at
buying clothing: it takes me ages, and I often buy items that I quickly tire
of. This is mainly because I don't have much practice: I buy new clothes very
rarely.

I'm sure I could have phrased this better...

A very pointed comment

I was reading some crap on the net about python3000, and I got a link to:

http://www.joelonsoftware.com/articles/fog0000000069.html

It reminded me very strongly of Alex and his obsession with re-inventing the
wheel. He seems to be the founder of way too many projects that re-implement
things. He would do well to read the above page very carefully.

Note: another post is coming shortly, but I thought I would put this as a post
on its own, as the two audiences differ greatly

Thursday, August 02, 2007

Amarok Moodbar

Is it fitting that the moodbar for
file:///share/music/not/Mariah%20Carey/Butterfly.mp3 is mostly pink?

*skips*

FIN

Right: well that's over with.

Time for bed.

Wednesday, August 01, 2007

Harry Potter Frustrations

Am I the only one who wishes he could do this:

cat hp7.txt | sed -e %s/round/around/g \
| sed -e %s/[.][^.]*(that had nothing to do with)[^.]//g \
> hp7_slightly_less_annoying.txt

I'm halfway through, and I'm off to bed now. I will doubtless finish it
tomorrow.