Search Results: "ron"

8 November 2005

Steve Kemp: Things I have never written #1

Coding Mistakes
I broke my debian administration website yesterday. Predictably enough I’d woken up around 9AM and thought that it would be a good time to make significant refactering changes. Tested them on my laptop, committed them to CVS, then updated the live site. Had a quick play to make sure nothing had obviously broken - but didn’t try to leave a comment on an article. Went to sleep and woke up around 4pm to find 15 emails telling me things were broken. Most mails on the site in a single day! Should be fixed now. But I’ll never again make changes before lunchtime, I’m just not good with the whole sleepy-coding thing.
Things I have never coded: 1
Inspired by Joey Hess’s “Ten years of free software”. Things I have never coded part 1. I have never coded a text editor. *shock* In the past I have written simple wrappers around the various text controls in different environments - for example under Windows I once coded a tabbed text editor called MyNotepad, which featured a novel dockable tree-control to the side which allowed navigation and loading of files easily. When I first started working with Java I coded a similar thing, but with the ability to load external Java .class files as plugins. This editor was called Rosetta, inspired by the band Rosetta Stone (who were in turn inspired by the actual Rosetta stone ) At times I think about text editors. I use them daily, obviously, and I love working with some more than others. My editor is usually GNU Emacs but I’m also partial to Vim. I will use both happily; although neither is pleasant without my personal customizations. Simple text editors are a traditional project for coders, and freshmeat is littered with their discared corpses. Probably the only reason I’ve not started - that and apathy. My ideal editor would be:
  • Both curses and x11 based.
  • Scriptable (Lua is love?)
  • Extensible.
  • Portable between (at least) GNU/Linux and Solaris.
  • Modeless.

Wouter Verhelst: That's why C is usually preferred.

As I wrote earlier, I've been playing with m68k assembly lately. My first program looked somewhat like this:
.LFORMAT:
	.string	"%c"
	.text
	.align	2
.LENDL:
	.string	"\n"
	.text
	.align	2
	.globl	main
	.type	main, @function
main:
	link.w %a6,#-4		  allocate a stack frame		
	moveq #65,#-4(%a6)	  Move 65 (ASCII A) to an address on our
				  local address space
.L0:
	move.l #-4(%a6),-(%sp)    push the address to the stack
	pea .LFORMAT		  push the format to the stack
	jbsr printf		  run printf
	add.l #1,#-4(%a6)	  add one to the letter
	cmpi.l #91,#-4(%a6)	  compare with 91 (ASCII Z + 1)
	jblt .L0		  if less, jump to label L0
	pea .LENDL		  push format to the stack
	jbsr printf		  run printf
	unlk %a6		  clear stack frame
	clr.l %d0		  store 0 in %d0 (return value)
	rts			  return
	.align 2
	.size	main, .-main
IOW, print out the alphabet. Nothing spectacular, and it worked. Then I decided to take it one step further, and rather than using an address in memory, I switched to using a register, which is supposed to be a tiny bit faster—even if that shouldn't be noticeable in this case:
main:
	link.w %a6,#-4		  allocate a stack frame		
	moveq #65,%d0		  Move 65 (ASCII A) to %d0
.L0:
	move.l %d0,-(%sp)	  push the address to the stack
	pea .LFORMAT		  push the format to the stack
	jbsr printf		  run printf
	add.l #1,%d0		  add one to the letter
	cmpi.l #91,%d0		  compare with 91 (ASCII Z + 1)
	jblt .L0		  if less, jump to label L0
	pea .LENDL		  push format to the stack
	jbsr printf		  run printf
	unlk %a6		  clear stack frame
	clr.l %d0		  store 0 in %d0 (return value)
	rts			  return
	.align 2
	.size	main, .-main
(that's only the main section, but please assume the rest is still there:-) When I ran that, it bombed. It would print out the A, and then whole lines of nothingness. When I ran it inside gdb, it wouldn't even print out the A. It took me quite some time to figure out what went wrong.
main:
	link.w %a6,#-4		   allocate a stack frame		
	moveq #65,%d7              Move 65 (ASCII A) to %d7
.L0:
	extb.l %d7	
	move.l %d7,-(%sp)	   push the address to the stack
	pea .LFORMAT		   push the format to the stack
	jbsr printf		   run printf
	add.l #1,%d7		   add one to the letter
	cmpi.l #91,%d7		   compare with 91 (ASCII Z + 1)
	jblt .L0		   if less, jump to label L0
	pea .LENDL		   push format to the stack
	jbsr printf		   run printf
	unlk %a6		   clear stack frame
	clr.l %d0		   store 0 in %d0 (return value)
	rts			   return
	.align 2
	.size	main, .-main
%d0 is used to store a function's return value. If I store my data in %d0, then the next time I call a function, that data is overwritten. Since I do call a function inside my loop, that function overwrites my data every time. Using a different register (say, %d7) fixes this. Right. Apart from the fact that it's totally non-portable, assembly language also has quite a few quirks that you don't learn about when taught structured programming. It'd be nice if there were a document somewhere that would explain how C functions expect to be called. I found out most of the above through trial and error, and through compiling stuff with -save-temps and looking at the result, comparing it with the 68k Programmers' Reference Manual. That works, but it's not really efficient—and not totally error-proof, too.

7 November 2005

Wouter Verhelst: Compiling belpcscd

Dear lazyweb, please tell me:
wouter@country:~/debian/eID/belpic-2.3.13.full$ LC_ALL=C make
Making all in winscarp
make[1]: Entering directory  /home/wouter/debian/eID/belpic-2.3.13.full/winscarp'
[...]
Making all in belpcscd
make[1]: Entering directory  /home/wouter/debian/eID/belpic-2.3.13.full/belpcscd'
if g++ -DPACKAGE_NAME=\"belpcscd\" -DPACKAGE_TARNAME=\"belpcscd\" \
	-DPACKAGE_VERSION=\"2.3.13\" -DPACKAGE_STRING=\"belpcscd\ 2.3.13\" \
	-DPACKAGE_BUGREPORT=\"\" -DPACKAGE=\"belpcscd\" -DVERSION=\"2.3.13\" \
	-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 \
	-DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 \
	-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 \
	-DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_TIMEB_H=1 -DHAVE__BOOL=1 \
	-DHAVE_STDBOOL_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 \
	-DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DHAVE_STDLIB_H=1 \
	-DHAVE_MALLOC=1 -DHAVE_STDLIB_H=1 -DHAVE_REALLOC=1 -DHAVE_SYS_SELECT_H=1 \
	-DHAVE_SYS_SOCKET_H=1 -DSELECT_TYPE_ARG1=int \
	-DSELECT_TYPE_ARG234=\(fd_set\ \*\) -DSELECT_TYPE_ARG5=\(struct\ \
	timeval\ \*\) -DRETSIGTYPE=void -DHAVE_FTIME=1 -DHAVE_INET_NTOA=1 \
	-DHAVE_MEMSET=1 -DHAVE_SELECT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRCHR=1 \
	-DHAVE_STRSTR=1  -I. -I.    -Wall -Dlinux -I. \
	-I../ObjectsMultiPlatform/Include -I/usr/include/PCSC  wx-config \
	--cppflags  -g -O2 -MT belpcscd-wxmainapp.o -MD -MP -MF \
	".deps/belpcscd-wxmainapp.Tpo" -c -o belpcscd-wxmainapp.o  test -f \
	'wxmainapp.cpp'   echo './' wxmainapp.cpp; \
then mv -f ".deps/belpcscd-wxmainapp.Tpo" ".deps/belpcscd-wxmainapp.Po";
else rm -f ".deps/belpcscd-wxmainapp.Tpo"; exit 1; fi
wxmainapp.h:88: warning: 'class MyApp' has virtual functions but non-virtual destructor
wxmainapp.cpp: In function 'int main(int, char**)':
wxmainapp.cpp:239: error: 'wxInitializer' was not declared in this scope
wxmainapp.cpp:239: error: expected  ;' before 'initializer'
wxmainapp.cpp:240: error: 'initializer' was not declared in this scope
make[1]: *** [belpcscd-wxmainapp.o] Error 1
make[1]: Leaving directory  /home/wouter/debian/eID/belpic-2.3.13.full/belpcscd'
make: *** [all-recursive] Error 1
wouter@country:~/debian/eID/belpic-2.3.13.full$ 
(line feeds added for readability) The offending bit of wxmainapp.cpp looks like:
int main(int argc, char **argv)
 
    wxApp::CheckBuildOptions(wxBuildOptions());
    wxInitializer initializer;
    if ( !initializer )
     
        fprintf(stderr, "Failed to initialize the wxWindows library, aborting.");
        return -1;
     
    MyApp *pTheApp= new MyApp();
    pTheApp->OnInit();
    
    while(1) sleep(1); /* run */
 
which doesn't look incorrect to me, but I could be wrong. class wxInitializer is defined in <wx/app.h>, which (according to gcc -E output) seems to be included (even if only indirectly), and its use is to initialize and cleanup the library automatically, so it would seem that upstream used it properly in the above bit of code. People with more C++/wx knowledge than me would make me very happy if they'd point out what's wrong. Even if they first need more info to do so. Thanks. Update: Seems I need wxbase-2.4-config, rather than wx-config. As the upstream makefile (which I'm ignoring for the time being) showed me. Really need to learn to trust other people's judgement some time...

Adam Rosi-Kessel: Boston City Council 2005 Endorsements

Hey, no one asked me, but here are my endorsements for tomorrow’s city council election: In any case, if you’re a Boston voter, be sure to participate tomorrow, whomever you choose to support.

Simon Law: Jeff Bailey Love Day


Jeff Waugh escaped
Originally uploaded by magicfab.
Two Sundays ago, Jim and I walked down to Ubuntu Love Day. The Ubuntu Below Zero conference is being held at the Holiday Inn in Chinatown. That's the one with the fake Chinese tiles on the roof, which is sort of tacky. We found our way downstairs to the conference room and sat down. The previous night's revelries still had quite the effect, so I'm afraid I drifted in and out while listening to people speak. I thought I had rid myself of this habit, but apparently university has trained me to consider digital projectors as sleeping aids. I'll have to do something about this one day. I got to see some fairly interesting people: Mattias Klaus, whom I met earlier at Jeff Bailey's place; Fabio Di Nitto, who is incredibly jolly; Chris Peterman, who was with his classmates from Clarkson; Colin Watson, whom I thanked for working so hard on Debian; Jeff Waugh, who dressed up as an inmate; and plenty of others. Oh, I managed to meet Andrew Mitchell in person, but we failed to have a proper CHUG meeting while we were all in town. We broke for lunch, which was held in the hotel restaurant. A buffet, with some Chinese-style dishes, was being served. There, we had to negotiate with the unilingual (Cantonese) staff to find out what Jeff could eat. We had a special order of plain white rice brought for him and we were informed that it was safe for him to eat the stir-fried vegetables. I suggested to Jeff that he ought to keep a phrasebook on him whenever he travels. On each page, one per language, there should be a written description of what he can and cannot eat. Then, he just has to show this to waiters who don't speak English or French.

Stocking the buffet
Originally uploaded by magicfab.
For reference, the characters that mean "vegetarian" in Chinese are and . Most of the time, they mean "vegan", but there are some places where eggs and oysters are considered vegetarian. After lunch, Mark Shuttleworth gave Jeff a very nice birthday speech. He also gave Jeff a nice bottle of wine, which was very nice. And Matthias came up to give Jeff a bottle of fish-oil pills, which was very odd. Then, there were two Birds Of a Feather sessions, involving how to make an Ubuntu package and how to be an Ubuntu advocate. Being upstream to both these issues, I sat in the middle of the room and listened to both presentations at once. This was quite interesting, and slightly taxing. After this was done, we broke up once more. The plan for the evening was to meet for dinner in the hotel lobby. This transformed to meeting outside the front door. Jim, [info]wlach, and I showed up and were greeted by this mass of people. Since there were stragglers and I knew where dinner was to be held, Jeff took a group of nineteen people in the metro. I followed about ten minutes later with a group of eighteen. We met up on St-Denis, and by this time we had lost some of the more impatient, and more hungry, people. Eventually, a group of twenty-three were milling about outside Le Nil Bleu. Angie had made arrangements for us to be served a set meal, and they had agreed to seat twenty-five of us. I went inside to let the staff know that we had arrived. When 20:30 came around, we were let into the restaurant and seated. I think the kitchen was still preparing food, because we had to wait about an hour before being served. Unlike my previous experience there with Jeff, the food was quite good this time and the service was very attentive. We enjoyed ourselves very much, and Jeff seemed to be having a very excellent birthday dinner. Some of the guests were not so happy, because the food was a little spicy for their European palates. Since gratuities are not standardised around the world, we discovered that some people had not tipped. To cover the embarassment, Angie and I made sure that the wait-staff were adequately compensated for their efforts. I'll be sure to go back to this restaurant again, but with a more significant crowd to ensure good service. After eating, a group of us including Matthias and Tollef went up to B l K , which was just a little north on Mont-Royal. That's a really interesting bar with beautiful tiled floors and ostrich heads on the walls. We enjoyed the lovely music, had a very good conversation there, and laughed until we were all exhausted. Since the Canonical people had to be awake for the 09:00 keynote speech the next day, they left early. Jim and I bid goodnight to them before we staggered home.

6 November 2005

Andrew Pollock: [code] Obfuscating email addresses with JavaScript

So I got pet peeved by Carlos Laviola in relation to by recent pondering about how MacOS X's SSH agent starts up on login. Perfectly reasonable grounds for complaint. I have had people contact me in relation to blog posts in the past, so it's obviously not impossible. People know I'm a Debian developer and can put two and two together and wind up at db.debian.org. Anyway, I'm the first to admit that my blog probably has too many of the Weblog Usability Top Ten Design Mistakes (something for me to work on). To date, I've been avoiding plastering my email address on my website because I didn't want to get it harvested. I try and use a per-list email address for this reason as well, and I haven't enabled blog comments because of comment spam, and because I haven't been clever enough to implement comments with Blosxom full stop. So I started getting an idea for reversibly encrypting my email address on my blog after reading about Hashcash for Wordpress the other day. I first started playing around with the Vernam cipher in High School, when I wanted to easily reversibly obfuscate some data for something. I'd read about this cipher in a magazine or something and seen it implemented in Pascal (it's not exactly hard). So I happened upon the idea of encrypting my email address with the Vernam cipher. Turns out another chap's already got a page for encrypting and decrypting on the fly with JavaScript. It even generates the JavaScript for putting in your own web pages. I had to use a different key to avoid getting dollar signs in the encrypted string, as this confused the tripe out of Blosxom (and me for a while when I tried to figure out what was going wrong). Then I thought it'd be nice to explain to people who had JavaScript disabled what they might be missing out on, so I fiddled around with some DOM stuff, and had some text get displayed if JavaScript was disabled. When JavaScript is enabled, this text is replaced by the decrypted text. So of course, like the Wordpress Hashcash, this is largely relying on the inability of spam bots to grok JavaScript. Once they can, this obfuscation technique is all for naught. Meanwhile, you can email me bit more easily now if you get the urge. View the source of my blog for an example of the implementation.

5 November 2005

Adam Rosi-Kessel: November Foliage

The New England tourism industry has been hit hard this year by a weak showing of autumn colors. This Japanese Maple in our front yard has finally turned brilliantly red, though:

4 November 2005

Matthew Palmer: When Technology Goes Wrong

A dramatic title for a not so dramatic post. The Sydney suburban train network runs several sorts of rolling stock. The newest of these are the much-maligned "Millenium Trains", which bring local train users (all 18 of them) into the 20th century. One of the features of these technological masterpieces is an irritatingly obsequious voice which announces the current and next stations on the train's journey, and an LED board displaying the same info. So far, so good. Of course, I was a little curious as to how the boards and little-miss-noisy were kept in-sync with where they were. I was thinking transponders, maybe something that the train guard did. Then, last week, I found my explanation. This train announced each station as being the preceding one. So, we'd stop at Central, l-m-n would announce "This train will stop at Museum". We stop at Green Square, l-m-n says "This train will stop at Central". And so on. At least the voice and the board were in sync, even if the voice and reality were eyeing each other off at quite some considerable distance... My goal now is to find a train which is announcing stations for the wrong line completely, rather than just one station behind on the current line -- but considering I only get these new-fandangled millenium trains a couple of times a week (they spend the rest of their time in the sheds being fixed, apparently) it may be a while.

3 November 2005

Jordi Mallach: Installing GNOME 2.12 in Debian

GNOME 2.12 is mostly in experimental now (for i386, builds for powerpc are very welcome), only missing a control center and gnome-panel upload, plus gal being ACCEPTed so evolution 2.4 can be installed. Trying these packages is easy: on an up to date unstable system, just issue: apt-get install -t experimental gnome-desktop-environment Due to a dbus transition, you might get some packages removed if they don't have an experimental build using the new versions. In many cases, there's nothing we can do about it so it's a matter of waiting. The good news is that KDE has finally entered testing, so I'd expect that we'll be able to upload all of these packages to unstable quite soon. Hopefully before April, when GNOME 2.14 is due. :) Update: By the way, in case you're still cursing about that major evolution breakage the other day... yes, it was totally me to blame. :)

Philipp Kern: Today we've got April Fool's Day, right?

IBM is now able to slow down light with “fairly standard materials”, and it’s only a question of time when photons replace electrons in computers. Thanks ZDNet for making me smile...

Joey Hess: walls

That didn't last long, the new computer got (literally) stuck inside a wall by the second day, which reduced the noise level to enough to not bother me during the day. I need to add some noise blocking stuff inside the wall to get it low enough for me to tolerate at night. I'm so broken when it comes to environmental noise, oh well. Anyway, this ended up with the bits of the computer that arn't in the wall occupying parts of the bookshelf next to it, which is kinda neat. I especially like the flat panel monitor up on my bookshelf. Since I don't use the monitor for anything most of the time, I set it up to be a slowly changing slide show. Always something new and interesting from my photo library when I look over there. I spent a long time today installing vmware on the new computer, which was so annoyingly proprietary. It's amazing what people put up with, with hard to navigate websites, cryptic installation instructions, binary patches to fix stupid bugs, and then a whole layer of license key fun on top of it. With vmware you even get the fun of upgrading your license keys independant of the software. Once installed it is a lot faster than qemu though, so I put up with it. For some reason, I then decided to install the Windows CD that came with the computer in a vmware instance running on it, which meant I got to go through the whole crazy installer and license key rigamarole a second time. It takes more keystrokes to enter a windows license key than it takes to do a complete Debian desktop install! Amazing. And they use a font that makes Q and O and 0 and D all look like the same letter without a magnifying glass, so you might get to enter that key three or four times before you get it right. The plan is to keep that snapshot of an installed windows system and use it to make sure d-i does appropriate things when confronted with a system running windows. Anyway, d-i runs nicely on the new vmware system, with a first stage install taking less than ten minutes. I've already found and fixed more d-i bugs today than I had in the last week or so, thanks to the improved environment.

Junichi Uekawa: cvs-commitinfo for cvs on alioth.

After searching and googling and testing, I finally figured out how to do CVS log message mails.In commitinfo file, add a line withDEFAULT /usr/bin/cvs-mailcommit --mailto mail-address --from mail-address --diff --full --root %r --dir %p % sVv .There are many different ways to write it, but most examples on the web were wrong, since apparently --cvs option no longer works with newer cvs releases.

2 November 2005

Wouter Verhelst: Warning: rant ahead.

I hate bugzilla. With a vengeance. Not because it doesn't have features or anything; because you need to log on to it to be able to use it. I've got way too many passwords as it is already that I need to remember. I don't want one to be able to file a bug, thank you very much! And no, I'm not going to give you one of my precious other passwords -- especially not one that I use to log on to my system. So that means I'll have to do ugly things to remember it. grumble. Why is it that everyone and their mother uses this fsck'ing I-love-passwords-bugzilla? There are only two Open Source projects that I know of who don't: Debian and FreeBSD. The former uses a home-grown BTS which predates bugzilla by several years; the latter uses Gnats which, ironically (since so many FreeBSD developers have philosophical problems with the GPL), is GNU software. It's no accident that I'm associated with one of them. One advantage of Free Software is that there's so many choice, and that you can use loads of different software—and this happens all the time, everywhere; consider Graphical User Interfaces (KDE, Gnome, ion, Enlightenment, WindowMaker, ...), shells (bash, dash, zsh, tcsh, ...), kernels (FreeBSD, Linux, NetBSD, ...) etcetera. So why doesn't this happen for bug tracking systems?

Marc 'Zugschlus' Haber: Why use Debian in commercial environments?

Philip Hands says it all

Guido Trotter: Hamachi

A colleague introduced me to Hamachi, a software that claims to be able to connect computers without a fixed internet connection to a VPN between them… The authors say their software is secure, because no communication passes through their server, that serves just as a way to establish the connection. Apart from the fact that in some cases I don’t see how it would be possible for it to work (eg, if both ends are behind a nat…) I also don’t think their protocol is as secure as they say! It seems that if the server wants to lie about the other endpoint public key and ip address it can, and so it is able to create VPN with a man in the middle with absolutely no effort… :( So their protocol is secure only if you put complete trust in their server… What do other people think? Am I right or wrong?

Benjamin Mako Hill: Double Occupancy

Last night I was out in Dublin and, due to the length that the night dragged on, I invited my friend to crash in the extra bed in my Hotel room in central Dublin rather than return to his place in the suburbs which, at that point, may well have been impossible. When someone came by to clean the room in the morning, they noticed both beds full and reported this to the Hotel managment who called me up to say that they knew the room had been "double occupancy" last night and that they wanted to know if it would "single occupancy" the next night. That's a pretty strange way to talk if you think about it. There is an extra person in my room and the Hotel complains that my room has somehow changed into a new state that they are unhappy with. I suppose this circuitous way of speaking is designed to avoid any potentially embarrassing discussion about who the extra body is and why they are there. That said, this type of obtuse conversation is difficult for patrons to puzzle through immediately after being awoken. Dublin, of course, is great.

John Goerzen: Being on a committee can be fun!

So I am on the Tabor Mennonite Church centennial committee (coming right up in 2008!). We've been going through the church archives, and I've been scanning in interesting photos. Here's one, taken about 1950. This is a photo of the original 1908 Tabor Church building, as remodeled in the 1930s. You'll notice the front door, the many windows. And the two well-worn paths out back. They are leading to the two outhouses. If I understand correctly, they continued to be used up until the mid-1960s when the "new" (present) church building was constructed. The building in the middle housed a Delco Light Plant (generator), which was used until rural electrification provided power to the church. So yes, this church had its own on-site generator, decades before it got indoor plumbing. There's a joke in there somewhere but it's late and somehow I can't come up with a good one. Feel free to post your own ;-)

1 November 2005

MJ Ray: Audiovisual

itv4 launches tonight on freeview and ntl cable, but it seems that Sky have an administrative problem that will stop it being on Sky until next week. Anyone else suspicious? To compensate, itv4 launch night is being broadcast on Men and Motors too (which is visible across Europe, I think). The talk on the newsgroups suggests that itv4 is on satellite and it's only the non-standard Sky EPG which won't be updated. If you want it sooner, you may be able to use a standard DVB-S receiver or "Add Channels". Eutelsat float price falls. The report suggests it's because of other floats, people not wanting to invest so much in communications and bad bank practices. BBC World closes 10 radio services, opens 1 TV service which might suggest how much more expensive TV is to make. Meanwhile, a report says:
"Public service broadcasters are compromising quality to compete with commercial channels, and many of them depend on Governments or political parties. Meanwhile, ever-larger concentrations are developing in the commercial sector, often with clear political affiliations."
(Television across Europe report from OSI EUMAP) There's a guide to what I'm planning to do Real Soon Now: konekti la komputilon al televido If you want to get involved with radio instead, you could answer this call for help with rampART radio, from ram radio. I think they were interesting listening during G8 and on 7 July, but maybe they need a different approach for the rest of the time. RampART broadcast over the internet, which was how I listened. Many of the documents describing the internet are non-free, which is a silly silly pain. I've supported the petition about Problems with the IETF's copying permissions, by Simon Josefsson (author of libidn and gnutls) but I haven't done more yet. Moving to games, Sam Hocevar's post about Monsterz is unhappy with the difficulty of finding items for it:
"it makes me feel like coders are years ahead in terms of sharing their digital work for everyone to use and improve."
He's not alone. Want a big example? Stuart Yeates noticed that ibiblio's torrents have poor copyright info. I've also spotted Sourceforge and BerliOS hosting non-free data in the past. That's really annoying: you can't adapt everything you download from them and you have to read the terms really closely if you want to develop free software. It surprises me that Sourceforge and BerliOS stick so closely to the FSF's software=programs myth. It might be surprising that ibiblio's torrents seem blind to copyright metadata, but it's probably little surprise that a European Commission group assumes that strong, standardised, zealously-enforced copy controls are The Only Way and has meant the EFF Urges Fresh Inquiry Into Ramifications of DRM. There's news of a peer-to-peer technology that honours copyright law, by Derek Sooman. Will it work? Will it support liberal copyright terms as well as Big Media Grabs? Might Big Media outdo ibiblio? I doubt it.

Gunnar Wolf: Lateness, angst, addiction - Trying to get hold of my life

This is by far the most stressful long period I can remember in my life. I was quite in control of things approximately until around June. Since then, things have been falling over me in a quick and heavy sucession - First of all, being co-organizer at Debconf was quite hard. I had run conferences before, but nothing ever like this - And, I should add, I never had a German boss running the show. [friend="Stockholm"], as a project leader, you really rule... But whoever works with you should be warned: It is not easy.
Gunnar's Rule of Future Life No. 2: It's easier to be the coordinator (remember I was officially the Tyrant for three years at CONSOL? :) ) than to be in the immediately subordinate team.
Back home, I expected the regular post-vacation rush, so having a hard August -trying to make everything on time- was expectable and OK. I don't remember exactly what projects was I in during August/September (I remember some minor stuff, but I think adding it all together was the mistake). There is one thing I did, though: Accepting way too many invitations as a speaker, at least one every two weeks. And, as many of you know, you cannot just travel somewhere and keep working - When I am at a conference, I want to get to talk with the people there, I want to know what are they interested in (why they invited me in the first place), and make friends with them. But this time it was (as it happens every year - Why are most conferences stuck together September-November?) just way too much.
Gunnar's Rule of Future Life No. 2: Be careful on what you accept. It's easy saying "yes" to a conference. It's hard keeping sanity afterwards.
Ok... I have been going places. For example, two weeks ago I was to San Luis Potos . Instead of staying there for two days, I left my office at 7PM, took the metro to the bus station, got the bus at 9PM, arrived at 2AM, went to my hotel, woke up at 7:30AM, had breakfast, coded for ~1hr, went to the conference theater, delivered my talk at 11AM, went for a quick lunch (which became a takeaway order) at 1:15PM, got on my bus at 2PM, arrived back in Mexico City at 7PM, got to a (fucking long) meeting at 8PM, left the meeting at 12AM, and finally got back home at 1AM. Fun, huh?
Gunnar's Rule of Future Life No. 3: Yes, it's fun to travel. It is much more fun to travel when you actually get to know the place!
...And pressure has not given way. As soon as I finish with one project, there is another one demanding my attention right away. October has been more than hectic. I had to cancel two invitations (on which I was to go to two cities each time) I was quite looking forward to, in Peru - I am very sorry, friends at Lima, Moquegua, Tacna and Arequipa... But I won't make it there this year. I am specially frustrated by not being able to make it to Concladeb in Arequipa - I really want to see DebianPeru/DebianArequipa's good work! And I am specially sorry on canceling today my trip to Moquegua, after they had already booked (and paid) for the tickets... It seems the money will not be lost after all, but I was such a pain in the ass for them, it is not fair I am cancelling... But anyway.
Gunnar's Rule of Future Life No. 4: Remember to learn from past experiences - It feels incredibly as a deja-vu from last year.
I hope I am not spoiling any surprises: Today, instead of blogging, I am supposed to be setting up the Comas server for Debconf6. Even with all of my worries, yes, I am still determined to be the man behind the show for Debconf. It will be in Oaxtepec, don't worry, and it will be a huge success. So let me finish this post quick, and it will be sooner you can register for it ;-) There are still too many points to work on Comas, though. I am setting up a tweaked version, against my will, but with the commitment to fix it transparently and soon. Oh... Yes, and I still have to coordinate with the locals here, as it's taking forever for us to open the fscking bank account so we can start receiving funds and paying money. Did I mention Debconf would be in Mexico? Ok, I will do my best not to make lateness the norm.
Gunnar's Rule of Future Life No. 5: Try not to bore your audience with too many details. Remember you have to work, and somebody might complain you lose too much time blogging!
But before I leave you alone: You might ask why do I mention the addiction in my post title... Well, because I have started treating my main addiction. It is really not easy, and I don't ever want to know what is it like to have a chemical addiction, like people who abuse drugs. If you have seen me face to face, it should be obvious: I have a very strong addiction to food. For one month already, I have been as conscious as I can every time I open my mouth - And, yes, it was not just three times a day. I have made some advances (sorry, I cannot really measure it, as home scales make it only to 120kg). Today is a big day for me: I was admitted in a pilot obesity control follow-up treatment at my University's sports health direction. I am very happy about this, as I do need mentoring and hand-holding. This is a seriously difficult process to follow, and I really hope to carry it thoroughly. Fortunately, my health has been perfect until now - But I cannot abuse myself forever.

31 October 2005

Eric Warmenhoven: Selling options

There are lots of cases where you can have a positive view of a stock, but still want a bit of investment protection. A fairly typical way of getting some protection against a drop in price is to place a stop-loss order with your broker, so that if a stock hits a certain price that you set, the broker will automatically sell the stock. This limits your loss (known as downside protection), and if the price doesn’t go down, then you keep all the stock, and you get to take full advantage if the price goes up (known as upside participation). Also, it should be free to place a stop-loss order with your broker, unless the price is hit and the stock is sold. So, stop-loss orders have three benefits: downside protection, upside participation, and no up-front cost. Unfortunately, there are a couple downsides (no pun intended) to stop-loss orders. The first is that if a stock is really plummeting (there aren’t any buyers at all), then it may be difficult or impossible for your broker to get the price that you’ve specified. That’s sort of an extreme situation though and only happens about once every thirty years (think October 19, 1987). The other, much more likely, scenario is that the stock goes through a temporary decline (causing your stock to be sold), but then recovers. In that case, you’ve sold for a loss and you miss out on the recovery. So instead of placing a stop-loss order with your broker, you can purchase what’s called a protective put. A “put” is a contract that says the buyer of the put has the right (not an obligation; it’s the buyer’s choice) to sell stock on (or before, in most cases) a predetermined day at a predetermined price to the person who sold (”wrote”) the put. For example, today RHAT closed at $23.22; you can buy an option to sell 100 RHAT shares at $22.50 (the strike price) anytime between today and November 18, 2005 (the option expiration date) for $55 (as reported by Yahoo!). So you get downside protection and full upside participation, for a price. (There’s also a married put, which is the same thing as a protective put, except you buy the stock at the same time as the put; a protective put implies that you already own the stock.) But there is still the annoying up-front cost. If you’re willing to risk missing out on some of the potential upside though, you can offset the costs. A collar is when you buy a protective put and at the same time selling a call option. By selling (writing) a call, you give someone else the right (again, not the obligation) to buy shares on a predetermined date for a predetermined price. For example, say you do buy the protective put above, and at the same time, write a call option for 100 RHAT shares that expires on November 18, 2005 for a strike price of $25. The proceeds from this sale will be $30 (again, minus fees). So for a cost of $25 ($55 to buy the put minus $30 to write the call), you’ve got downside protection, and upside participation up to about 7.7%. All of this assumes that your preference is to keep the stock. But say that your stock has done very well and it’s gotten to be a sizeable part of your portfolio, and you’d like to diversify a bit. That means that you’re serious about selling it, regardless of what you think the price is going to do. (There are lots of good reasons to sell a stock that’s enjoyed nice gains, not the least of which is that nice gains are generally caused by nice growth, and a company can only grow so big.) Selling the stock outright is one technique; another is a variant of dollar-cost averaging, but instead of buying a fixed dollar amount, sell a fixed number of shares. But you can combine either of these with writing call options to potentially achieve even better results. A covered call is when you own a stock and write a call option on it (like a married put, a buy-write is when you buy the stock and write the call at the same time). Instead of selling the stock immediately, you give someone else the option to buy it from you at a predetermined future date. Because the date is in the future, there’s a bit of a premium that buyers will pay (which means more money for you). For example, November 18, 2005 calls for RHAT with a strike price of $22.50 are selling for $120 for 100 shares; that means that if the option is exercised, you make $22.50 from the sale, plus $1.20 per share from the option, for a total of $23.70 as your effective sale price. If the option is not exercised though, then your shares are not sold, but you get to keep the $120, and do the whole thing over again. (Unfortunately for me, Brocade has a company policy prohibiting collars and covered calls. But fortunately for me, I don’t own very much BRCDE stock.)

Next.

Previous.