Search Results: "Andres Salomon"

26 November 2023

Niels Thykier: Providing online reference documentation for debputy

I do not think seasoned Debian contributors quite appreciate how much knowledge we have picked up and internalized. As an example, when I need to look up documentation for debhelper, I generally know which manpage to look in. I suspect most long time contributors would be able to a similar thing (maybe down 2-3 manpages). But new contributors does not have the luxury of years of experience. This problem is by no means unique to debhelper. One thing that debhelper does very well, is that it is hard for users to tell where a addon "starts" and debhelper "ends". It is clear you use addons, but the transition in and out of third party provided tools is generally smooth. This is a sign that things "just work(tm)". Except when it comes to documentation. Here, debhelper's static documentation does not include documentation for third party tooling. If you think from a debhelper maintainer's perspective, this seems obvious. Embedding documentation for all the third-party code would be very hard work, a layer-violation, etc.. But from a user perspective, we should not have to care "who" provides "what". As as user, I want to understand how this works and the more hoops I have to jump through to get that understanding, the more frustrated I will be with the toolstack. With this, I came to the conclusion that the best way to help users and solve the problem of finding the documentation was to provide "online documentation". It should be possible to ask debputy, "What attributes can I use in install-man?" or "What does path-metadata do?". Additionally, the lookup should work the same no matter if debputy provided the feature or some third-party plugin did. In the future, perhaps also other types of documentation such as tutorials or how-to guides. Below, I have some tentative results of my work so far. There are some improvements to be done. Notably, the commands for these documentation features are still treated a "plugin" subcommand features and should probably have its own top level "ask-me-anything" subcommand in the future.
Automatic discard rules Since the introduction of install rules, debputy has included an automatic filter mechanism that prunes out unwanted content. In 0.1.9, these filters have been named "Automatic discard rules" and you can now ask debputy to list them.
$ debputy plugin list automatic-discard-rules
+-----------------------+-------------+
  Name                    Provided By  
+-----------------------+-------------+
  python-cache-files      debputy      
  la-files                debputy      
  backup-files            debputy      
  version-control-paths   debputy      
  gnu-info-dir-file       debputy      
  debian-dir              debputy      
  doxygen-cruft-files     debputy      
+-----------------------+-------------+
For these rules, the provider can both provide a description but also an example of their usage.
$ debputy plugin show automatic-discard-rules la-files
Automatic Discard Rule: la-files
================================
Documentation: Discards any .la files beneath /usr/lib
Example
-------
    /usr/lib/libfoo.la        << Discarded (directly by the rule)
    /usr/lib/libfoo.so.1.0.0
The example is a live example. That is, the provider will provide debputy with a scenario and the expected outcome of that scenario. Here is the concrete code in debputy that registers this example:
api.automatic_discard_rule(
    "la-files",
    _debputy_prune_la_files,
    rule_reference_documentation="Discards any .la files beneath /usr/lib",
    examples=automatic_discard_rule_example(
        "usr/lib/libfoo.la",
        ("usr/lib/libfoo.so.1.0.0", False),
    ),
)
When showing the example, debputy will validate the example matches what the plugin provider intended. Lets say I was to introduce a bug in the code, so that the discard rule no longer worked. Then debputy would start to show the following:
# Output if the code or example is broken
$ debputy plugin show automatic-discard-rules la-files
[...]
Automatic Discard Rule: la-files
================================
Documentation: Discards any .la files beneath /usr/lib
Example
-------
    /usr/lib/libfoo.la        !! INCONSISTENT (code: keep, example: discard)
    /usr/lib/libfoo.so.1.0.0
debputy: warning: The example was inconsistent. Please file a bug against the plugin debputy
Obviously, it would be better if this validation could be added directly as a plugin test, so the CI pipeline would catch it. That is one my personal TODO list. :) One final remark about automatic discard rules before moving on. In 0.1.9, debputy will also list any path automatically discarded by one of these rules in the build output to make sure that the automatic discard rule feature is more discoverable.
Plugable manifest rules like the install rule In the manifest, there are several places where rules can be provided by plugins. To make life easier for users, debputy can now since 0.1.8 list all provided rules:
$ debputy plugin list plugable-manifest-rules
+-------------------------------+------------------------------+-------------+
  Rule Name                       Rule Type                      Provided By  
+-------------------------------+------------------------------+-------------+
  install                         InstallRule                    debputy      
  install-docs                    InstallRule                    debputy      
  install-examples                InstallRule                    debputy      
  install-doc                     InstallRule                    debputy      
  install-example                 InstallRule                    debputy      
  install-man                     InstallRule                    debputy      
  discard                         InstallRule                    debputy      
  move                            TransformationRule             debputy      
  remove                          TransformationRule             debputy      
  [...]                           [...]                          [...]        
  remove                          DpkgMaintscriptHelperCommand   debputy      
  rename                          DpkgMaintscriptHelperCommand   debputy      
  cross-compiling                 ManifestCondition              debputy      
  can-execute-compiled-binaries   ManifestCondition              debputy      
  run-build-time-tests            ManifestCondition              debputy      
  [...]                           [...]                          [...]        
+-------------------------------+------------------------------+-------------+
(Output trimmed a bit for space reasons) And you can then ask debputy to describe any of these rules:
$ debputy plugin show plugable-manifest-rules install
Generic install ( install )
===========================
The generic  install  rule can be used to install arbitrary paths into packages
and is *similar* to how  dh_install  from debhelper works.  It is a two "primary" uses.
  1) The classic "install into directory" similar to the standard  dh_install 
  2) The "install as" similar to  dh-exec 's  foo => bar  feature.
Attributes:
 -  source  (conditional): string
    sources  (conditional): List of string
   A path match ( source ) or a list of path matches ( sources ) defining the
   source path(s) to be installed. [...]
 -  dest-dir  (optional): string
   A path defining the destination *directory*. [...]
 -  into  (optional): string or a list of string
   A path defining the destination *directory*. [...]
 -  as  (optional): string
   A path defining the path to install the source as. [...]
 -  when  (optional): manifest condition (string or mapping of string)
   A condition as defined in [Conditional rules](https://salsa.debian.org/debian/debputy/-/blob/main/MANIFEST-FORMAT.md#Conditional rules).
This rule enforces the following restrictions:
 - The rule must use exactly one of:  source ,  sources 
 - The attribute  as  cannot be used with any of:  dest-dir ,  sources 
[...]
(Output trimmed a bit for space reasons) All the attributes and restrictions are auto-computed by debputy from information provided by the plugin. The associated documentation for each attribute is supplied by the plugin itself, The debputy API validates that all attributes are covered and the documentation does not describe non-existing fields. This ensures that you as a plugin provider never forget to document new attributes when you add them later. The debputy API for manifest rules are not quite stable yet. So currently only debputy provides rules here. However, it is my intention to lift that restriction in the future. I got the idea of supporting online validated examples when I was building this feature. However, sadly, I have not gotten around to supporting it yet.
Manifest variables like PACKAGE I also added a similar documentation feature for manifest variables such as PACKAGE . When I implemented this, I realized listing all manifest variables by default would probably be counter productive to new users. As an example, if you list all variables by default it would include DEB_HOST_MULTIARCH (the most common case) side-by-side with the the much less used DEB_BUILD_MULTIARCH and the even lessor used DEB_TARGET_MULTIARCH variable. Having them side-by-side implies they are of equal importance, which they are not. As an example, the ballpark number of unique packages for which DEB_TARGET_MULTIARCH is useful can be counted on two hands (and maybe two feet if you consider gcc-X distinct from gcc-Y). This is one of the cases, where experience makes us blind. Many of us probably have the "show me everything and I will find what I need" mentality. But that requires experience to be able to pull that off - especially if all alternatives are presented as equals. The cross-building terminology has proven to notoriously match poorly to people's expectation. Therefore, I took a deliberate choice to reduce the list of shown variables by default and in the output explicitly list what filters were active. In the current version of debputy (0.1.9), the listing of manifest-variables look something like this:
$ debputy plugin list manifest-variables
+----------------------------------+----------------------------------------+------+-------------+
  Variable (use via:   NAME  )   Value                                    Flag   Provided by  
+----------------------------------+----------------------------------------+------+-------------+
  DEB_HOST_ARCH                      amd64                                           debputy      
  [... other DEB_HOST_* vars ...]    [...]                                           debputy      
  DEB_HOST_MULTIARCH                 x86_64-linux-gnu                                debputy      
  DEB_SOURCE                         debputy                                         debputy      
  DEB_VERSION                        0.1.8                                           debputy      
  DEB_VERSION_EPOCH_UPSTREAM         0.1.8                                           debputy      
  DEB_VERSION_UPSTREAM               0.1.8                                           debputy      
  DEB_VERSION_UPSTREAM_REVISION      0.1.8                                           debputy      
  PACKAGE                            <package-name>                                  debputy      
  path:BASH_COMPLETION_DIR           /usr/share/bash-completion/completions          debputy      
+----------------------------------+----------------------------------------+------+-------------+
+-----------------------+--------+-------------------------------------------------------+
  Variable type           Value    Option                                                 
+-----------------------+--------+-------------------------------------------------------+
  Token variables         hidden   --show-token-variables OR --show-all-variables         
  Special use variables   hidden   --show-special-case-variables OR --show-all-variables  
+-----------------------+--------+-------------------------------------------------------+
I will probably tweak the concrete listing in the future. Personally, I am considering to provide short-hands variables for some of the DEB_HOST_* variables and then hide the DEB_HOST_* group from the default view as well. Maybe something like ARCH and MULTIARCH, which would default to their DEB_HOST_* counter part. This variable could then have extended documentation that high lights DEB_HOST_<X> as its source and imply that there are special cases for cross-building where you might need DEB_BUILD_<X> or DEB_TARGET_<X>. Speaking of variable documentation, you can also lookup the documentation for a given manifest variable:
$ debputy plugin show manifest-variables path:BASH_COMPLETION_DIR
Variable: path:BASH_COMPLETION_DIR
==================================
Documentation: Directory to install bash completions into
Resolved: /usr/share/bash-completion/completions
Plugin: debputy
This was my update on online reference documentation for debputy. I hope you found it useful. :)
Thanks On a closing note, I would like to thanks Jochen Sprickerhof, Andres Salomon, Paul Gevers for their recent contributions to debputy. Jochen and Paul provided a number of real world cases where debputy would crash or not work, which have now been fixed. Andres and Paul also provided corrections to the documentation.

25 December 2009

Martin-&#201;ric Racine: Bad, bad Linux kernel!

Ever since Linux kernel 2.6.31 was released, my AMD Geode LX800-based FIC ION 603 can no longer boot; I get a fatal kernel crash near the end of the initramfs loading phase. At the crux of the issue seems to be a recently added kernel feature for caching filesystem ACL. I don't even use the ACL feature on my hosts, but there you go; it still crashes the kernel. Sigh. Having filed a bug on Launchpad and reported the issue upstream failed to produce a fix - despite the sustained involvement of two members of the Ubuntu kernel team members to help me narrow down the cause of this fatal kernel crash. Mentioning the issue to OLPC kernel developer Andres Salomon, he commented how he finds the new ACL caching code in the ext2/ext3/ext4 filesystem drivers downright creepy, but added that he currently lacks the time to further investigate the issue. I'm thus wondering if anyone else is experiencing this issue and might possibly have a fix to propose? Alternately, help towards debugging and fixing this issue is extremely welcome, as this bug will seriously affect users upgrading from older Debian and Ubuntu releases based on pre-2.6.31 kernels, when Debian/Squeeze and Ubuntu/Lucid are published in spring. PS: yes, the issue still exists in kernel 2.6.32 also.

8 September 2008

Holger Levsen: We had joy we had fun we had changelogs in the sun

In an hour the online part of this combined embedded+fai meeting in Badajoz in Extremadura, Spain, will sadly be over, but the sadness will hopefully be compensated by good food (yes, the food at the last dinner was great) and more fun! To me it were three intensive days (plus some two half days of intense travelling) which were really productive. This post is a summary of what I did here, to document how useful these meetings are. I'm only one person out of 18, who did some Debian work here, much more stuff was done, most of it I probably didnt even notice, as 14 people where working on embedded stuff, which I mostly ignored... ;-) That said, I think it was still very nice to have this meeting together, a.) because I'm quite interested in embedded stuff and b.) because the embedded crowd is a fun one to hang around with!

Right now I'm quite tired so that I dont fully remember what I have done on the first day :) It included uploading the DebConf7 mpeg videos which will now be used by Miguel Gea to create DVDs from those, so that he gets familar with the toolchain, so that he then can do the DebConf8 DVDs once those videos are (fully) ready. That will still take some time though, but hopefully not too long.

Unlike DebConf8 I also brought my fancy new fonera2 with me, in the hope to give it to someone to work on emdebian support for it. This is quite a longer road, as currently uclibc is not part of Debian, but thats only one step in this puzzle. Much to my joy Per Andersson took the opportunity to play with it and now took it home with him to document how to run Debian on it. I'm looking forward to see progress on this in the future ;-) Update: uclibc support is only needed for running Debian from the 4mb flash it has. But since it also has an usbport one can attach some storage there and run a full Debian system, just like on the nslug, which also has 32mb of RAM.

Unfortunatly I basically forgot about the FSG-3 I also took with me (which was for good reasons, one the second and third day I mostly did FAI work), but then I remembered 90min before the end, which was really too late. Narf. But Riku had a short look at it and told me one thing I didn't knew before: (at least) arm(el) kernels need to have the cpu id set in the kernel and the debian kernels don't have that, as they are build for more than one cpu type, so one has to prepend an arm assembler code instruction before running the kernel... I'm curious to do this soon :-)

But I have more hardware news to tell: C sar G mez Mart n (thanks for organizing this meeting, too!!!1) gave me back my OLPC laptop which I borrowed to him quite some time ago, so he could use it for a talk he gave at a university in Extremadura, so now I finally could give Andres Salomon new debian image for the XO a try. It was really nice to finally see a nice Debian gnome desktop on the device :-)

Today the FAI group, that was Sebastian, Michael, Thomas and me, also took a break to visit the Alcazaba de Badajoz (built around 1100, so roughly 900 years ago) which is an amazing building (thats why I linked to the spanish wikipedia entry as it has nicer pictures), from where you can see most of the city. I've been to Badajoz at least three times now and I'm really glad I finally did that, it's only 5min away from the office where the meeting was held and I highly recommend it to anyone going here.

Oh, and last and definitly not least I did a lot of work on FAI too. Besides discussing stuff which will hit planet after I posted this (hah! Michael already posted it, though without proper credit, so I will do a repost) I mostly reviewed changes and patches and discussed bugs, I didn't develop many patches myself (well, except one for the changelog..) but I've read every change at least twice, once as a commit msg and once in a full review. Plus many patches I read more often... all in all I think FAI is now in an great shape for lenny (which was the only thing we worked on during the weekend, we discussed some future plans, but work was only done for lenny), except that we want to another upload (with only documentation changes) after the upcoming one (which has quite some documentation changes already, but also some RC+important and some trivial bugfixes).

As you might have guessed, I started this entry on saturday and am finishing it now. According to the topic of the #extremadura2008 channel, which we created to coordinate between the groups, we also fixed 7 RC bugs (or 8? one should really document the bug numbers and not the number of bugs..) affecting lenny and 3 more which are only relevant to sid. Which is not as many as I would have liked to be fixed, but then, it wasn't a ("traditional") bug squashing party either. Which makes me wonder, are there any planned in the coming weeks?

So all in all I think this meeting was really very productive. Plus, I also enjoyed a special half an hour of real holidays: on saturday we had to leave lunch without having a chance to have a coffee afterwards, so I stumbled into a random cafe on the way to the venue. Turned out it was a very nice one, where due to its nice interiour I managed to reflect on life, 42 and all the rest almost immediatly. A totally unexpected but needed break. I wont say more here, because the thoughts and memories are really mostly relevant for me, but I'm really happy I found that space. DebConf8 and this meeting both were really fun, but I really didnt have a minute to reflect things. 30 minutes to do that is definitly not enough, but it was a good start. Now I just need to find another opportunity to continue with it. I hope this will happen before the next Extremadura meeting ;-)

26 July 2008

Philipp Kern: Stable Point Release: Etch 4.0r4 (aka etchnhalf)

Another point release for Etch has been done; now it's the time for the CD team to roll out new images after the next mirror pulse. The official announcements (prepared by Alexander Reichle-Schmehl, thanks!) will follow shortly afterwards. FTP master of the day was Joerg Jaspert, who did his first point release since Woody, as he told us on IRC. We appreciate your work and you spending your time that shortly before going to Argentina. This point release includes the etchnhalf update introducing a new kernel image (based on 2.6.24) and some driver updates. Additionally the infamous openssl hole will be fixed for good, even for new installs. Again I want to present you a list of people who contributed to this release. It cannot be complete as I got the information out of the Changed-by fields of the uploads. From the Release Team we had dann frazier (who drove the important kernel part of etchnhalf), Luk Claes, Neil McGovern, Andreas Barth, Martin Zobel-Helas and me working on it. ;-)

12 January 2008

Holger Levsen: xorg backports for etch updated

I'm uploading new backports of xorg for etch at this moment. They are based on what was on unstable on the 9th on January, which was xorg 1:7.3+10. Thanks to XSF for their great work!

I've also included a backport of Andres Salomons xserver-xorg-video-amd package, as the one in sid is not uptodate enough for the OLPC laptop.

20 September 2006

David Nusinow: Checklist

Things to do for Etch:

[X] Transition from XFree86 to Xorg
[X] Transition from the monolith to modular
[X] Put Xorg 7.1 in to unstable so it can be shipped with Etch
[ ] Fix all the bugs

The heroes for this one were Drew Parsons, Andres Salomon, and Steve Langasek. Onward to the release!

4 September 2006

Benjamin Mako Hill: A Done Deed

It's about time for a wrap-up on the recent major event in my life. On May 29th, Mika Matsuzaki and I were married. The festivities kicked off with a parade through Somerville's Davis Square. Andres Salomon kept rhythm on drums and, thanks to my new lab adviser Chris Csikszentmih lyi, we had a couple dozen other wikipedians, hackers, technologists, and biologists keeping tune on kazoos. Like all good Somerville parades, we forgot our parade permit. Which was fine.
/copyrighteous/images/marriage-parade-small.jpg
On the marginally more traditional side, we exchanged vows (written under a mathematical constraint -- Mika's idea) and rings. The marriage was made official by Oxford/Harvard professor of "Cyberlaw" -- who I once worked as teachers' assistant for many years ago -- and Massachusetts Justice of the Peace, Jonathan Zittrain.
/copyrighteous/images/marriage-vows-small.jpg
We ended the day watching the sunset with the serious party-goers from out of town, Debian, and the FSF. Then off to dinner and "happily ever after."
/copyrighteous/images/marriage-sunset-small.jpg
Lots more pictures are linked the Cambridge wedding page on our wedding wiki. If you have pictures, you should link them there or mail them to use and we'll upload them. If you want to send messages of congratulations, please visit that page for mailing instructions (best!) or a wiki page to write them up on. Just yesterday, we received (via Joey Hess) four wonderful pages of tightly packed congratulations messages from the attendees at DebConf. Although it's not a constitutional matter, I'm pretty confident we had more than 3Q developers signing that form which, in a Debian election methods sort of way, really warms my heart. Thank you everyone! It's really too bad we missed DebConf but we're both determined to make next year!

25 August 2006

Julien Danjou: DeFuBu contest #2

Bug Welcome to this 2nd issue of the DeFuBu contest, the monthly championship of the funniest bug reported to the Debian BTS. The challengers How the vote has been done Five Debian related people voted for these bugs: Roland Mas, Alexis Sukrieh, Cl ment Stenac, kolter and Yves-Alexis Perez. Full ranking Bugs Challengers The winners Notes To participate, simply drop me an email with a bug number. About DeFuBu

31 July 2006

Andres Salomon: my new baby

I bought a new bass today, it sounds incredible. A close-up picture, and the the entire thing. It’s a Warwick Corvette (fretless).

28 July 2006

Andres Salomon: Strange statues

Pictures of weird statues from around the world, pointed out by Danamania.

24 July 2006

Andres Salomon: Israeli female soldiers

“The girls I encountered were so immersed in this lifestyle, in their new reality, and completely divorced from the outside world. How could I explain to them that what they are doing means nothing in the outside world, yet will affect them for the rest of their lives? They have given up who they are for now; they have put their dreams on hold; their lives for the next two years have become a wistful compromise.”

23 July 2006

David Nusinow: burp

What a couple of weeks.

So I went off to Europe. I had planned to meet up with Daniel Stone and many others in Paris, but fate decided to piss in my cornflakes and delay my flight out of Boston so that we missed the connecting flight to Paris. I spent the whole next day in Montreal's airport, and while I got a lot of reading about Norse mythology done, I didn't have nearly as much time in Paris and didn't get to meet up with anyone. Daniel and I will have to postpone drinking and bashing X in person until a latter date. The time that I did spend there, was great though, and I got to do some of the tourist things that I didn't get to do last time I was there. Nicole, my girlfriend, had never been to Europe, so she was thrilled to see things for the first time.

Then it was off to Munich, where I did get to spend some time with Michael Banck, who is even more awesome in person than on the internets. Michael was my sponsor in Debian for well over a year, as well as my advocate, and now we're both ops in #debian together, so it was a real thrill to finally meet up with him. He was too polite to let me buy him dinner or a drink as thanks, so I'm hoping he comes to visit so I can repay him. I also got to meet several others, including release manager extraordinare Andreas Barth, which was a lot of fun. We were in town when Germany was playing Sweden in the world cup, and Germany actually won, so the whole city was singing until dawn. Ever since I've been back I've been drinking lots of Hefeveisens and wishing that they were served in 1 liter form.

Surprisingly, since I've been back, I've had the opportunity to do some programming at work and push Free Software at the same time. A co-worker of mine recently did an experiment that got her a list of 900 genes, and she wanted to narrow that list by comparing them to another list or two, but had no idea how to get this done in a reasonable amount of time. So one afternoon I wrote a small ruby script to do this, and all of a sudden my boss is looking at me wondering what other sort of neat computer things I could whip up. I also had to start doing some statistics, and I found a test that I needed to do which Excel couldn't do, so I started learning and coding a bit of R, which is pretty nice so far. The co-worker of mine just invested $800 in a two day class on learning to use an add-on for R, which is cool because I've totally failed until now to get anyone to use Free Software in the lab. The whole thing is making my labmates look at me a little funny though, since this stuff is way out of their league for the most part.

The bad news is that a few days after I came back, I found that my laptop's hard drive started making some very bad noises. I moved my data to backup computer that I'd inherited but not really used, only to find that the backup machine was prone to weird random errors. That left me without a functional computer at home. I took the opportunity to order a new machine for myself, but for now I'm kind of stuck with a web browser at work. In the meanwhile, I've taken to teaching myself statistics, and in order to do that, I've been re-learning calculus. I find it a little weird that I'm going home at night and picking up a calculus text book in my free time.

As far as X work goes, not having a working computer has caused a bit of a problem. Luckily, just before my machine died, Andres Salomon had nearly finished work on backporting Xorg 7.1 to sarge. Afterwards, he decided that he wanted to join the XSF, so since then he's been spearheading getting 7.1 in to experimental. He's been continuing the work that I haven't been able to do lately, and I'm excited to work with him in the future. In addition, Jurij Smakov joined the team as sparc driver maintainer, and Drew Parsons is officially joining the team, bringing Xprint officially in to the XSF. So even though I haven't been able to do much, things are moving forward, which is wonderful to see. As soon as I can get set up, I'm going to keep working with Andres to get 7.1 ready to ship in December.

Surprisingly, I drink far more lately than when I had a working computer. I think something is wrong with me if working on Debian helps to keep me from seeking chemical modification.

25 June 2006

Andres Salomon: freenode again

So apparently last night, Freenode was compromised. Even worse, there’s the potential that passwords were compromised. Freenode’s policy of requiring you to register via Nickserv created a nice policy of forcing people to use passwords for IRC (of all things), which makes this even sadder. Then again, it also finally chased me off that godawful network (which is a good thing).

12 June 2006

Andres Salomon: trac 0.10dev

I’ve uploaded Trac 0.10dev packages to experimental; upstream is stabilizing and readying for an RC release. Please try it out and report bugs. There are lots of cool new features to play with!

10 June 2006

Andres Salomon: rpm makes babies cry

This is an old bug, but an amusing kuro5hin article pointed it out to me: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=119185.
Back in the days of Redhat 8 and 9, I had to deal w/ many corrupt rpm databases. Never again. The behavior displayed by Jeff in that bug report makes me pleased that Debian has the formal means (the ctte) to deal w/ such issues (that is, maintainers acting like autistic cunts).

9 June 2006

Andres Salomon: Holy Tango of Literature

Holy Tango of Literature, by Francis Heaney. The author creates poems in the style of famous poets, using anagrams of their names as the poem titles. For example, the following is the first stanza of “Brr, Footrest” (in the style of Robert Frost):

This ottoman is in my way.
I tripped on it again today;
It chills me with a nameless fear
To think it sees me as its prey.
And the best part? It’s under a Creative Commons license, and is freely available online.

Andres Salomon: delish

http://www.whatjeffkilled.com harmoney pointed out this one; great stuff!

24 May 2006

Andres Salomon: social fallacies

This bit entitled “Five Geek Social Fallacies” was really well done. Go read it. Think about it. As a homework assignment, find one example of each fallacy that was expressed in a post on a public debian mailing list, by a (then registered) debian developer. Bonus points if an example that you cite is in a post of your own, and you’ve actually recognized that your opinion was based on a fallacy. (As seen in gravity’s blog)

Andres Salomon: Actually, they re kinda bland till you scoop sugar on em.

Last night, I opened up a jar of Mott’s Apple Sauce and proceeded to eat half the jar. At some point, I looked at the ingredients; basically apples, high fructose corn syrup, and water. Just how much high fructose corn syrup? I looked at the nutrition facts and realized that I was eating 25g of sugar *per serving*. 5 servings (which is how many are in the jar) would have amounted to eating 125 sugar packets! I tossed the rest of the jar in the garbage. The apple sauce was a lot more appealing when I thought it might actually be healthy. [edit] No, I don’t normally eat a jar of apple sauce; the rest of the food is packed away in boxes, however. Looking at the unsweetened apple sauce, it looks like it has 12g of sugar in the apples themselves. So to correct my figures, eating the jar would have amounted to eating 65 sugar packets, plus some apples.

17 May 2006

Andres Salomon: whee, packing!

dilinger’s first rule of packing: no matter how well you prepare, you will end up needing something that you’ve already packed. In 15 days, I will no longer be a resident of New York. I certainly won’t miss Queens at all!

Next.