Search Results: "reg"

8 November 2005

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.

NOKUBI Takatsugu: limit of GNU regex

I have only one connectivity method between Motorola M1000 and Linux, it is Bluetooth. M1000 has "Desktop Suite" application to connect other PC via USB or Bluetooth. I refered an article posted on symbianos.org forum to connect my Linux box with M1000, but it was failed. pppd said:
Nov  8 16:04:59 otaniemi udev[10350]: creating device node '/dev/rfcomm0'
Nov  8 16:05:00 otaniemi dund[10348]: New connection from 00:0A:28:8E:F2:90
Nov  8 16:05:00 otaniemi pppd[10358]: pppd 2.4.3 started by root, uid 0
Nov  8 16:05:00 otaniemi pppd[10358]: using channel 31
Nov  8 16:05:00 otaniemi pppd[10358]: Using interface ppp1
Nov  8 16:05:00 otaniemi pppd[10358]: Connect: ppp1 <--> /dev/rfcomm0
:
(snip)
:
Nov  8 16:19:32 otaniemi pppd[10786]: local  IP address 192.168.99.1
Nov  8 16:19:32 otaniemi pppd[10786]: remote IP address 192.168.99.2
Nov  8 16:19:32 otaniemi pppd[10786]: Script /etc/ppp/ip-up started (pid 10797)
Nov  8 16:19:32 otaniemi pppd[10786]: Script /etc/ppp/ip-up finished (pid 10797)
Nov  8 16:19:32 otaniemi pppd[10786]: rcvd [LCP TermReq id=0x3]
Nov  8 16:19:32 otaniemi pppd[10786]: LCP terminated by peer
It seems that M1000 terminates the connection when it was established. I don't know why the reason...

7 November 2005

Andrew Pollock: [debian] Ouch

Greg Kroah-Hartman did say:
If you have a problem with the way Debian handles udev, I'll point you to the proper place to complain about that. Debian is slowly sinking into the muck and it's fun watching it happen.
That hurts.

6 November 2005

Philipp Kern: Happy Meal Ethernet

Probably it’s very old, but hey I had a good laugh...
Actually, it is a Sun engineer joke. The 10 Mbps predecessor was a chip called the “Big MAC Ethernet” in this case, it was a mere pun, since MAC stands for Media Access Control, i.e. the Ethernet data-link layer. When they designed the 10/100 Mbps chip later on, they decided to turn the pun into a full-out joke, and they called it the “Happy Meal Ethernet.”
528 static void happy_meal_tcvr_write(struct happy_meal *hp,
529                                   void __iomem *tregs, int reg,
530                                   unsigned short value)
531  
532         int tries = TCVR_WRITE_TRIES;
533         
534         ASD((“happy_meal_tcvr_write: reg=0x%02x value=%04x\n”, reg, value));
535 
536         /* Welcome to Sun Microsystems, can I take your order please? */
537         if (!(hp->happy_flags & HFLAG_FENABLE))  
538                 happy_meal_bb_write(hp, tregs, reg, value);
539                 return;
540          
541 
542         /* Would you like fries with that? */
543         hme_write32(hp, tregs + TCVR_FRAME,
544                     (FRAME_WRITE   (hp->paddr << 23)  
545                      ((reg & 0xff) << 18)   (value & 0xffff)));
546         while (!(hme_read32(hp, tregs + TCVR_FRAME) & 0x10000) && --tries)
547                 udelay(20);
548 
549         /* Anything else? */
550         if (!tries)
551                 printk(KERN_ERR “happy meal: Aieee, transceiver MIF write bolixed\n”);
552 
553         /* Fifty-two cents is your change, have a nice day. */
554  
[Taken from drivers/net/sunhme.c in linux-2.6]

Andrew Pollock: [code] Canberra Perl Mongers meeting

The Canberra Perl Users Group is having one of its extremely irregular meetings next week. If you're in Canberra, or will be on November 2, let me know. The last one wasn't too bad. http://mail.pm.org/pipermail/canberra-pm/2005-October/000146.html

5 November 2005

Anthony Towns: Britney's Memory Management

One of the things about the whole money thing and free software is the question of whether it’ll take all the fun and spontaneity out of hax0ring. As it turns out, that doesn’t even work when you try; so instead of doing dak work last weekend, like I’d planned and like the market was indicating, I ended up hacking on britney until about 5am Sunday morning, leaving the dak stuff to be spread over the week, instead. (After the last post, dak might seem cursed, but trust me it’s not. More on that RSN, but not just yet) For those playing along at home, britney is the name of the scripts used to update Debian’s testing distribution; basically it automates some of the hard problems of Debian release management. Naturally, this is a pretty tricky job – there’re over 200,000 packages in Debian unstable (spread across eleven architectures), with fairly complicated sets of interdependencies amongst them. It gets complicated enough, in fact, that the core analysis britney undertakes isn’t just too processor intensive to do in perl or python, it’s too memory intensive to use standard malloc for its data structures. (Cynical and Coding, and the UQ CS228 class of ‘98 will probably have some idea of the fun to come at this point…) The problem is that britney uses an absurd number of linked lists to resolve dependency issues, with each entry in the list being an independent block of a dozen or so bytes; and adding the usual malloc overhead to this can effectively double the memory usage. Worse, britney also likes to reuse memory quite a lot, does a fair bit of backtracking, and generally acts like the prima donna she is. Up until last week, britney’s memory was managed by the use of a parallel bitfield indicating whether memory was free or not: so britney would first allocate a 128kB block using standard malloc, note it’s all free, then every request for 12 or 52 bytes would result in some bits being twiddled; and every free would twiddle the bits back, so they could be reused later. This means two things: one is that the free invocation has to include the size of the memory to be freed as well as the address, and the other is that finding an appropriate sized block of freed memory can be awkward, leading to some degree of fragmentation. This fragmentation seemed to lead to britney having a gradual memory leak, which would mean that if the release managers were doing some complicated transitions gigabytes of memory would end up being used and OOMing; or, since britney runs on ftp-master and it’s probably not a good idea to have the OOM killer start on the machine that ensures the Debian archive’s integrity, the ulimit is reached, and britney aborts unhappily. Unfortunately, though, the use of a “roll your own” malloc means you can’t use the standard memory checkers to see what’s going on, so you’re left with guessing and hoping. And as a consequence the memory leak’s been around for ages, causing fairly regular minor annoyance. This changed last week when Micha Nelissen (neli) got into the act:
<neli> why does it need so much memory ?
<aba> neli: because it needs to check how the changes affect the installability count
<neli> aba: ok…but still does not seem like a big deal
<neli> how large trees are we talking then?
<aj> it has to do a lot of backtracking
<aj> how large is the longest dependency tree in debian?
<neli> backtracking only takes time, not space, right?
<aj> you need a list of things to backtrack over
<aba> neli: it also consumes memory, at least with the current dpkg-implem ntation
<aba> (well, there are ideas how to avoid this memory fragmentation, but that’s something else)
<aj> (it’s not actually memory usage, it’s memory fragmentation)
<neli> hmm, bad memory manager ?
<aj> imperfect, *shrug*
After poking around at getting britney to run locally, and doing some basic analysis on how it was used, neli decided to rewrite the memory manager to use chunk-size pools – so that a separate pool would be used for 4 byte allocations, for 8 byte allocations, for 12 byte allocations, etc. That’s possible due to two factors: one is that the special memory allocation is only needed for data structures which are all made from fairly small sizes, and are a multiple of the word size. It also means that fragmentation can be avoided completely – since you can use the “free” elements to store a free list taking up no extra space. Happily, that change also made the memory allocation much simpler. (It also shows the benefits of a fresh look at code; I’d been thinking of doing something similar for ages, but always been stopped because I couldn’t figure how to make it cope with the various different sized blocks I’d need. As it turned out though, I’d solved that problem ages ago when I wrote a separate allocator to deal with strings, which would’ve required my malloc to cope with a much larger variety of sizes) What it didn’t do was actually solve the memory leak. Which was pretty confusing, since the old memory checker had some tests to ensure that memory wasn’t really being leaked, and if the memory’s not being lost due to a missing free, or being lost to fragmentation, where is it going? At this point, the real benefit of having a simpler malloc implementation came across; because suddenly it was plausible to add some debugging code to allocate a separate pool for every memory allocation, and to report how much memory is being used at any point, per line of code. That gave me output like:
pool 8B/1:751; 1962683 used 1965960 allocated (99.8% of 22 MiB)
So I knew that line 751 (of dpkg.c), was allocating 8B chunks, had used up to 22MiB in the past, and was currently using 99.8% of that. (Actually, I made an off by one error initially, so the “8B” above is actually 12B, as you can see if you divide 22MiB by 1965960) That let me see two “leaks”. One turned out to be fairly easy to diagnose; as an optimisation, when I say “package foo is installable”, I note that “but we used bar to see that, so if we later update/remove bar, note that we’ll have to see if foo is still installable”. So the datastructure for bar ends up with a linked list of all the packages, foo, that relied on it. But I don’t check that list for dupes, so if I note that both bar and baz were required for foo to be installable, then update bar, when I recheck foo, I’ll add it to both bar’s and baz’s lists; which is fine for bar, whose list I cleared when I updated it; but not so fine for baz, because it’s now got two entries for foo. Having already added a check for dupes when trying to see if my guess was right, extending that check to skip the addition was pretty easy. The other leak required a little more investigation. It was in a fairly tight loop which could reasonably be using a fair amount of memory; but by the end of the loop it should all be freed. Adding some more debug code to the allocation functions confirmed the problem:
<aj> pool 8B/11:1231; 1618157 used 1703936 allocated (95.0% of 13 MiB, 9.05% current)
<aj> so it looks like ~9% of those allocations are never freed to me
<aj> 9.05% = used/alloc
<aj> where used is incrememnted on b_m, decremented on b_f
<aj> alloc is incrememneted on b_m, never decremented
The code was meant to either add the allocated block to a larger list that’s being traversed, or to free it immediately – the problem turned out to be that there were some nested ifs, and an internal if was lacking an else that should have freed the block. Fixing that changed the results to:
pool 8B/11:1228; 160 used 131072 allocated (0.1% of 1 MiB, 0.01% current)
Which both dropped the leak – only allocating a maximum of 130,000 nodes instead of almost 2,000,000 – and resulted in almost all the allocations that had ever been made, having been freed once britney had been running for even a fairly short while. As it turned out, though, the cure for the first leak was worse than the disease – checking for duplicates in a linked list turned out to take too long, and the memory wasted in that section wasn’t that big a deal. Using a red-black tree or similar instead would’ve been a solution, but so far doesn’t seem necessary. There haven’t been any OOMs since, happily; and even better, the reduced bloat seems to have made the overall checking a bit faster. Sweet.

Joe Wreschnig: Paint a bikeshed!

So we’re trying to come up with a name for the Podcast subscriber/player part of Quod Libet. For obvious reasons, we don’t want to call it “Podcasts” any more than we called the paned browser “Please Sue Us For Patent Violations, Apple”. “Audioblogs” and “Blogcasts” both have the disadvantage that I’d want to claw out my eyes after seeing the word “blog” every time I click on the View menu. While we’ve gotten plenty of suggestions that are perhaps even worse than blogcast (”Webtap”, “Audio Planet”, “Quodcast”, “Oggregator”), the only marginally good one we’ve found is “Audio RSS” or “RSS Audio”. Which is to say, that’s the only pair I’ve liked. Anyone got a better idea? Update: Many people have informed me that there are actually podcasts out there using Atom, which I was unaware of. “Audio Feed” seems to be the most popular. “RoggSS” is even worse than the ones I mentioned.

Mike Hommey: Nasty bugs

Recently, I’ve been going through mozilla-firefox’s list of bugs and took a look to some of them. I got interested in #336411, since I’m regularly hit by this one myself (remember ? I said I got strange crashes with 1.5beta1). It appears that this strange crasher is in fact due to extensions using binary components. ColorZilla was the one killing my firefox. Why does it crash on debian’s firefox and not on upstream’s ? Simple : upstream’s is built with gcc 3.4, debian’s with gcc 4.0. Both C++ ABIs are incompatible. Now the question is : what can we do for that ? A quick fix could be to check before loading the component, if it’s linked to the incompatible libstdc++.so.5, but it’s almost as nasty as the bug itself… I’ve not really investigated possible solutions yet, but if you have some better ideas, you’re welcome. Another bug I got interested in is #211010 and its dupe, #256384. This one was really nasty. One of the kind I hate : bad programming practices. The interesting thing with this bug, though, was that it’s been revealed because of 3 other issues in 2 separate programs. The first issue is that autoconf decides to use echo 'something\c' over echo -n something when both ‘\c’ and -n are understood by echo. The second issue is that when giving some options with spaces to configure (like in --enable-optimize="-pipe -w -O2"), the associated variable gets backslashed spaces (i.e. "-pipe\ -w\ -O2") (thus, being an autoconf feature) The third issue is that the mozilla configure.in script tries to get rid of these backslashed spaces with echo $enableval sed -e 's \\\ g', triggering the nasty dash bug. A simple workaround, as stated in #256384 is to quote $enableval Now, for the dash bug itself. What happens with dash is that whenever you echo a ‘\c’ escape sequence, all subsequent echo commands stop printing after the first argument containing a backslash. For example echo test1 'test2\ttest3' test4 outputs test1 test2<tab>test3. In the case of our echo $enableval, since its value was -pipe\ -w\ -O2, it printed -pipe\ without any space after the backslash, so that it was not removed by the sed call. This value was then substitued in config/autoconf.mk.in to create config/autoconf.mk, where the ending backslash was interpreted as its shell meaning (continue on next line), thus breaking the variable, and build command lines. And for the bad programming practice ? The dash bug is due to a global variable that never got re-initialized, leaving the “terminate echo” (kinda) flag turned on (which is only checked when there is a backslash in the argument, since it is used to stop printing after, guess what… ‘\c’). No wonder why one of the first things you learn in programming classes is : never use global variables. (or at least, be very very very careful about what you do with them)

3 November 2005

Adam Rosi-Kessel: Feed with Comments

Due to popular request, I’m now providing a separate RSS feed that includes comments. If you subscribe to my blog and would prefer to see people’s comments, just point your aggregator at http://adam.rosi-kessel.org/weblog/comments.rss.

2 November 2005

Philipp Kern: Gobby 0.3.0

Now with more people blogging about Gobby I could talk a bit about the upcoming 0.3.0 release, which is perhaps sponsored by the Free Software Foundation. We hope to release a new revision as soon as possible and although you wouldn’t see much differences when looking at the running program compared to 0.2.0, many things have changed under the hood. It features a new proven merging algorithm called Jupiter, which replaces the home-made algorithm currently present in obby. This results in less history keeping and a more reliable application of changes. Sadly this still requires Gobby to be a client/server application and does not help it on a way to a peer-to-peer one. Next there are also some new useful features. “Find and replace” with text and regular expressions comes to mind. Yes, we have to reimplement all features of an editor because “gedit” just didn’t meet our expectations when we considered to extend it. Sessions could be serialised into files and restored when needed, while preserving all information like who wrote what. We are currently writing a script which visualises this information on a web page to provide a log of a meeting. Our Tracker lists some more features, although it’s not clear if all could enter this release because of the deadline set by the FSF. I registered all our projects at Launchpad to get them translated through Rosetta. It would be nice if some more could help in translating Gobby. Well to come to an end: Matt Enks informed me today, that the word “gobby” is a slang term for “fellatio” in Australian. It’s a pity, really. It just sounded funny to us, but I won’t talk about the history of the name now because it’s weird. Perhaps we should rename it to something sane at any time in the future. We’ll accept proposals on the Wiki.

1 November 2005

Norbert Tretkowski: Caving

My first trip. We visited the Silberloch, one of the more difficult caves in our region. Maybe not the best way to start caving for me, but I really enjoyed it. I was there with four guys from the Caveseekers, all of them quite experienced. We have been about four hours in the cave. That was definitely not the last time I did that, but I need my own equipment next time.

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.)

30 October 2005

David Moreno Garza: Thinking of ska

I've been thinking what would happen if I were born and living on the other side of the world. I began thinking on that while listening to the wonderful Tokyo Ska Paradise Orchestra. Would I enjoy that band as much as I do now? Would I be listening to some ska Latin bands and enjoying them as much as I do now? Would I enjoy ska as much as I do now?
 
Of course everything would be different, but I couldn't realize of the differences. The only thing I can do is travelling to those places and searching good music there. While I was in Finland, I got a CD of The Valkyrians, a Helsinki ska band. I was unable to find more local ska music since everything I saw on the CDs shelfs was third-wave US bands. If you are interested on exchanging ska/punk/reggae music, please mail me , mail me now!
 
I'm planning also a trip to China, Korea and Japan (since I'm not spending money on travelling to DebConf6 :-) for next year. My very first step was to get a visa interview in the US embassy. I called on Tuesday and they gave me the interview for February 1st. Ana should also try to get her visa as soon as possible. Finding oriental ska would rock my world, definitively :)
 

Clint Adams: This garden that I built for you that you sit in now and yearn

I was cruelly manipulated into reading Three Ethical Moments in Debian by Dr. B. I laughed. I cried. I was shocked. I now regret not having read it while listening to Bit Shifter.

28 October 2005

Erich Schubert: Gmail issues

With all the hype that was around it, I got myself a GMail account some time ago, when they were rather "rare". While the UI is still very good for a webmail, it has also a lot of things I do not like. I don't use it heavily - not for personal emails, but only to recieve some mailing lists I don't want to clutter my regular mail (and there are no privacy issues there... Google will index them in the list archives anyway), and to recieve some off-site notifications by some servers (it's always better to get warning emails etc. off-site so you can still access them when the site is down... oh, and if you have an email relay, try to setup a direct transport for your email, so it works if there is something wrong with your email relay, too!) My top issues with gmail are: I used gmails feedback function before, but didn't get any reply.

26 October 2005

Joachim Breitner: Evil Self-Irony

Regular readers might remember me ranting about how evil google is. It seems that they are not only evil, but also very self-ironic. Check out their newest product, conquering yet another product field:

My favourite quotes are

No personally identifiable information of any kind related to your consumption of Google Gulp or any other current or future Google Foods product will ever be given, sold, bartered, auctioned off, tossed into a late-night poker pot, or otherwise transferred in any way to any untrustworthy third party, ever, we swear. See our Privacy Policy.
and
This “limited release” beta product is available to anyone who turns in a used Google Gulp bottle cap at any local retailer. If you don’t have any Gulp caps, ask a friend to give you one.
I’m looking forward to all my mailing lists being spammed with “I have Gulp caps to give away”!

Meike Reichle: Berlinux 2005

This weekend I was in Berlin, at the Berlinux 2005. I have to work until about 17:00 on Fridays so I couldn't attend the first day, instead I arrived at Berlin at about 19:00, just in time for the Social Event :) The Social Event was really nice, well organized with little group tables to sit and chat and very delicious food. Apparently there was also a tuxracer tournament planned but that couldn't be done due to some technical problems (didn't follow that too closely). The evening was very nice anyway I ate a lot and talked to the other attending Debian people. We didn't stay up too long since the exhibition was scheduled to start at 09:00 the next day.
When we got to the Technical University on the next morning the first thing I noticed was a huge transparent hanging over the entrance. Upon closer inspection however it advertised some events for this semester's new students, not Berlinux. Shame. We quickly checked with the Information desk, where we were told to check back with them before giving our talks, since there had been some last minute room changes. Given the quite chaotic organisation in the run-up of this event I must say I wasn't too surprised. (There had been quite a mess regarding the preparation of the talks, many speakers only read on the site when - and that - they were giving their talks, deadlines suddenly popped up and then started wandering ... All in all preparations had been a bit confusing.) Also the planned Berlinux CD had somehow not worked out, so there were no CDs available.
With such good news we went on to the Debian booth to set up the usual stuff. The biggest attraction certainly was Frank Ronneburg's Debian-controlled model railway. Kids had to be forcibly moved on and grown-up men were seen regressing to small children again ;) Unfortunately attendance was rather low anyhow and a lot of the people walking by were regular students on their way to some other events.
At least the talks managed to attract a higher number of people. I can't estimate for shit so I have got no idea how many people attended my talk on user friendly system administration. But I was rather content with the number and so were the other speakers I talked to (The only one who was a bit unfortunate was Alexander 'Tolimar' Schmehl who had to compete with Klaus Knopper giving a talk at the same time.) After the talks were over we killed some more time at the booth, playing with Frank's model railway and Wolfgang Borgert's Nokia 770 (It has Mahjong! Yay!). It should be noted that when we were finally taking down the booth a very brave person walked around with a laptop collecting criticism and suggestions for improvement. There were so many of them that I had to help him out with my Thinkpad's power supply :)

I am not sure how much the Debian project benefited from the whole event since the attendance was so low and we got very few questions. Personally though I quite enjoyed the event. The talk went well (I got a few laughs and good questions afterwards), I met a bunch of new and very interesting people and had a really great Pizza. I hope Berlinux Organisation picks up a few of the suggestions they received. For the moment, my conclusion is that I'd probably give a talk there again, I am however not so sure if I'd go there only to man the Debian booth.

PS: Sadly they didn't have name tags either, so I don't even have something to put on my "trophy board" :(
Hint: Most speaker love souvenirs, give them a piece of paper with their name and your logo on it and they are happy people :)

25 October 2005

Gerfried Fuchs: grml 0.5 released, some history

Yesterday night grml 0.5 - Codename Tokolytika was released. I can just repeat my last remarks: grml is a charm when it comes to restoring systems, or in other tricky situations where you need your sysadmin tools handy. Saved my day quite often so far, and I'm sure it won't stop. Get it now! I simply don't know any better live CD. For those who wonder what I was doing in the last time: I had been to the last Friday Night Skating of this year. The last hundred meters of the almost 2 hour lasting course I got pushed because my legs had finished early... Thank you very much, Conny!
All in all it was a great event and I'm sure to visit it more regularly next year. :) Workload both at work and private didn't really stop for quite some weeks, it was a horror. I wasn't even able to reasonably follow any mailing lists, left aside to do any real work. Though if you noticed my 1.2.2-16 upload of beep you might know that I also have invested quite much there. Furthermore I managed to get some people of our Debienna group interested in the g++ 4.0 transition. Greek0 wrote some scripts to bring the data of mfurr's page into one (for us) better suited to use and work from. In our wiki we write down our progress to keep us updated on who's working on getting what in.
I don't have real numbers, but from tracking mfurr's list of packages needing a recompile it went down quite a bit since we started, and we don't plan to stop soonish. And finally: I've written an article about jigdo-lite for my company's magazine. It's the 5th issue of the magazine, and my third article for it (first has been about gnupg and second about MUDs). I like writing, and from some of the feedback I received people like reading me, too. :)

Next.

Previous.