Currently I own and use an iPhone 3G. I bought it almost two years ago, when the local phone provider LMT started offering the iPhone legally. I had a pretty good experience with it most of the time, but now it is showing its age:
Hello,
check-deps.sh
Last weekend (2010-07-02 2010-07-04) nine people met at the FAI developer workshop at Linuxhotel in Essen/Germany. If you can t remember: FAI is a non-interactive system to install, customize and manage Linux systems and software configurations on computers as well as virtual machines and chroot environments, from small networks to large-scale infrastructures and clusters.
The participants of the FAI meeting:
second row from left to right: Michael Goetze, Michael Prokop, Andreas Schuldei
Between the hack sessions and discussions the attending people presented their FAI usage and approaches. Some notes from the presentations:
A demo video is available at blip.tv. Currently Stephan is searching for a nice name for his FAI management tool please send suggestions either to him or to the linux-fai-devel mailinglist.
Grml / Michael Prokop
Grml is a Debian based Linux live system specially made for system administrators. Grml uses grml-live for building the ISOs, whereas grml-live itself uses FAI s dirinstall feature to build the live system. This provides the Grml team with a nice way to autobuild 18 ISOs per day, known as daily.grml.org. Mika also presented Grml s netscript bootoption and the ethdevice bootoption of live-initramfs which is useful for booting Grml/FAI via PXE.
Host Europe / Michael Goetze
Host Europe uses FAI for installing Debian and Ubuntu (32+64 bit) in the support center. They have ~20 FAI classes and use a Debian lenny NFSROOT as base for all deployed systems. Their main problems with FAI aren t related to FAI itself, but instead e.g. broadcom NICs with lack of support for it in Lenny s kernel. They are not using softupdate (yet) and currently use Kickstart for deploying CentOS but are working on deploying CentOS with FAI as well.
LIS AG / Sebastian Hetze
Linux Information Systems AG (LIS AG) are using FAI 3.2.17 and provide a luma and PyQt based GUI to their customers. They use DHCP, LDAP and DDNS for inventory, configuration and deployment.
Mathematical Institute of the University of Bonn / Manuel Hachtkemper
The Mathematical Institute of the University of Bonn uses FAI 3.1.8 and 3.3.5 for managing ~150 systems. They are automatically running softupdates every day, reporting how many hosts actually did run the softupdate and how many didn t run. The involved failogwatch tool supports two regex files, one for excluding specific hosts and the other one for grepping for known problems in the logs.
Spotify / Andreas Schuldei + Mattias Jansson
Spotify is a peer-to-peer music streaming service and the operating people at Spotify use FAI for deploying the systems. Currently they are using FAI 3.3.3 to deploy ~400 bare metal machines and ~150 virtualised machines. They have their class names in DNS using the txt/Text record entry. They are using a self written prepend_class script to manage dependencies between classes.
University K ln / Thomas Lange
Thomas uses FAI s trunk version (of course
Some time ago, someone posted to a development mailing list about
a piece of code, Cc:ing some people who had modified the code in
recent past. Within hours, the original author replied to complain
about not being Cc'd.
Several thoughts went through my mind:
Ladies, Gentlemen, Doctors and children of all ages. Thank you for spending our last day at Waterloo, here with us. I am one of those people who won't be staying here after day, but somehow I was still chosen to be the valedictorian. So, when I was asked to be the valedictorian by some friends of mine, I was thrilled. I also though I could do a good job, heck, I got my degree in CS, therefore, I can do anything. So, I accepted the nomination. I looked at the nomination form and didn't find any hints on what to talk about. At this point I realized that this speech may be a little underspecified. In fact, there was no specification at all.
I gathered what I could from the form, i.e. a speech had to be written by, and performed on the 18th of June 2005. Skip forward a few weeks, I'd accomplished nothing more than vague thoughts on what to talk about, then I got an email. All potential speeches had to be presented on the 6th of April 2005 (the deadline had moved up, and still no specification). However, a performance objective was given in that email -- each speech must be completed in 5 minutes. Given that I don't have a spec, I can only hope no one else has one.
What follows is my implementation of this unknown specification.
Another cycle in our lives is over. We are finished our latest round of education. This time from the University of Waterloo, in some Math program. Many of us have changed significantly while we've been here, but we are still the same people. We know we are older, we can guess that we are wiser, and we are certainly more educated. So, here is a quick tour of my cycle through Waterloo.
When I got here back in September 2000, I was amazed at how many smart people could be put together in one small place. I am actually still amazed by all the smart people here. I simply happen to know a bit more about some of these people and the amazing things they have done. With all these smart people here, I even had to do homework to keep up.
Skip forward to second year. Second year is when the university decided there is no more room for me in residence. In fact, they do that to almost all second year students. So, I found a sleezy place to live off-campus and started discovering what life is like outside the university bubble. For example, there are stores not in the plaza. There are a couple malls, a bus station, and a train station.
By third year Waterloo had become home despite working in two other cities and growing up on the other side of Toronto. I no longer had to fear being kicked out of CS since I had enough courses with good marks racked up that my cumulative average wouldn't drop too low unless I started failing, which would have been a bad thing to do.
In fourth year, I could see the end in sight. Grad school applications needed to be done pronto and some interesting job prospects lured me away from yet more years of school. Co-op didn't help keep me in school, I enjoyed the working world. I know there are others that used co-op to find that the working world wasn't for them. I expect those people to be in some school for a good long time.
Now we are at the end, and the cycle is complete. I've been across the country, lived over in sunny California, and biked through Scotland, but no where has compared to Waterloo, or the great people that make it such a wonderful place to be. I'm sad to go, as I'm sure many of you are, but I hope you are excited about the next step at the same time.
That was my 5 years, in a non-chronologically accurate order. But it's been even better to help and see people do amazing things. Small things, like getting a group of friends together to go get pints of Bubbletea. To large things like running frosh week for thousands of first year students.
Now that we have looked at the past, what about the future? One of the things I didn't wan to say during this speech is that "We are the future". What does that even mean? Are we useless now? I don't know what it means, it could even be partially true, but we are not useless. In fact our time is now! Among this graduating class are those who are doing cutting edge research. There are those we are already running their own companies. There are those who are already half-way through there plan to rule the world. There are even those of us who are simply going to help others do those things. So, we are not "the future", we are "the now".
Being "the now", (don't I sound like Dubya?) is one thing, but we should always be "the now". We can always make now be our time. We should do this because if we aren't the ones living happily and making the world a better place, in our own ways, then who is going to do it?
If nothing else, I really hope everyone lives happily. For me, I found if I can keep my hat then I can be happy. Well, I can be happy promoting "No Pants Day"!
DOWN WITH PANTS!!
At the end, I finally figured out the specification for this speech. It's simple: Remind people of the awesome things they have done here, the amazing people they shouldn't forget. Lastly, to convince people to keep doing the awesome things despite what might happen or what obstacles appear.
Thank you, I enjoyed being your VD today.
My girlfriend and I were out picking up a cake at the bakery last week, when my phone rang:
Like other years,
Benimaclet's Neighbour Association
has organized a new cycle of film projections for the neighbours, by the
neighbours, with the intention to get people out of their homes and share
a good time with many others. Like in the other two editions, the selected
films try to deliver a message to the viewers, and this year the topics are
centered about labour and migration social issues. A change in this year's
edition is that there will be one more projection, for a total of 5 films,
every Sunday of July, at 22:00 in the Pla a de Benimaclet.
Last week, we saw El viaje de Teo, a Mexican film describing the
migration dramas going on in the Sonora Desert. This Sunday, we'll see
Arcadia, which will be followed by Recursos humanos,
Hijos de los hombres and La estrategia del caracol.
Before each film, some local artists will perform live for us. Make
yourself a sandwich, bring a chair to Benimaclet and enjoy some good
cinema with your neighbours every Sunday in July!
Since a few months, I have been playing around with Isabelle, a theorem prover system. I find it very intriguing to have proofs of mathematical statements checked by something as pendantic and comprehensive as a machine. Mathematicians always claim that their statements are true in all eternity, but the proofs are just checked by error-prone human beings. Especially with complex, large proofs that are only read by a handful of people, I doubt that these are always fully correct. Note that this does not imply that I doubt that the results are correct. They probably are. But a bit of doubt remains. A computer-checked proof, in contrast, can not accidentially omit corner cases, leave out seemingly trivial assumtions of used theorems or be misled by slightly differing definition from different sources.
I was hoping to check at least parts of my diploma thesis using Isabelle, but it turns out that the standard algebra library shipped with Isabelle is not complete enough. Even free groups were missing. This was motivation enough to try to formalize them and prove the universal property and some isomorphisms (The free group over the empty set is the unit group, the free group over one generator is the additive group of integers and free groups over sets of same cardinality are isomophic). I submitted the resulting theory to the Archive of Formal Proofs and it was accepted. You can view the complete document or the document without proofs.
I did not formalize the fact that isomorphic free groups have bases of same cardinality. As far as I know there is no simple argument that works directly with free groups. The proofs I have seen pass to the abelianization of the free group, i.e. the free module over and apply the well known proof from the analogous statement about vector spaces. But if someone knows an elementary proof of this fact, I d like to hear about it.
The inofficial rc bug tracker
currently knows about the following bugs:
| In Total: | 498 |
|---|---|
| Affecting Squeeze: | 397 |
| Squeeze only: | 72 |
| Remaining to be fixed in Squeeze: | 325 |
| Pending in Squeeze: | 22 |
|---|---|
| Patched in Squeeze: | 50 |
| Duplicates in Squeeze: | 51 |
| Contrib or non-free in Squeeze: | 12 |
| Claimed in Squeeze: | 4 |
| Delayed in Squeeze: | 11 |
| Can fixed in a security Update: | 30 |
| Otherwise fixed in Squeeze: | 31 |
Squeezereleased. However, the with the view of the Release Managers, 306 need to be dealt with for the release to happen. Please see my older post for an explanation of the different numbers.
My project.
This post assumes that the reader has read my last post.
This week I had less time to work on my project than the last ones, because it was kind of the last week of the semester for some disciplines. This was unfortunate from a point of view, but it s good in another, because now I ve finished most of my disciplines and can focus more. This is also the reason why the weekly report is slightly delayed.
Most of my work this week was continuing the investigation of the segfault caused by my implementation of allocation in lines. The most interesting thing I discovered came after a suggestion from my menthor: to use +RTS -DS to turn on the sanity checker. I runned the code with my allocation implementation and the sanity checker and got a segfault. I runned again only with the code to free memory in lines and I got also a segfault. Then I runned without all my patches, using sweep, and I got the segfault. So it seems that there is something wrong with sweep, and now I m investigating this new segfault.
I m using the bernouilli program from nofib to test, running with 148 as a parameter and, naturally, +RTS -w -DS passed to the RunTime System. The output of gdb:
Current directory is /home/marcot/trabalho/livre/ghc/nofib/imaginary/bernouilli/ GNU gdb (GDB) 7.1-debian Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /home/marcot/trabalho/livre/ghc/nofib/imaginary/bernouilli/Main...done. (gdb) r 148 +RTS -w -DS Starting program: /home/marcot/trabalho/livre/ghc/nofib/imaginary/bernouilli/Main 148 +RTS -w -DS [Thread debugging using libthread_db enabled] Program received signal SIGSEGV, Segmentation fault. 0x00000000006309cb in LOOKS_LIKE_INFO_PTR_NOT_NULL (p=12297829382473034410) at includes/rts/storage/ClosureMacros.h:225 (gdb) where #0 0x00000000006309cb in LOOKS_LIKE_INFO_PTR_NOT_NULL (p=12297829382473034410) at includes/rts/storage/ClosureMacros.h:225 #1 0x0000000000630a16 in LOOKS_LIKE_INFO_PTR (p=12297829382473034410) at includes/rts/storage/ClosureMacros.h:230 #2 0x0000000000630a4b in LOOKS_LIKE_CLOSURE_PTR (p=0x7ffff6c84062) at includes/rts/storage/ClosureMacros.h:235 #3 0x0000000000631427 in checkClosure (p=0x7ffff6853a08) at rts/sm/Sanity.c:320 #4 0x00000000006319ef in checkHeap (bd=0x7ffff68014c0) at rts/sm/Sanity.c:479 #5 0x000000000063222f in checkSanity (check_heap=rtsTrue) at rts/sm/Sanity.c:686 #6 0x000000000062dfdb in GarbageCollect (force_major_gc=rtsFalse, gc_type=0, cap=0x8d2ec0) at rts/sm/GC.c:768 #7 0x0000000000620431 in scheduleDoGC (cap=0x8d2ec0, task=0x8f5080, force_major=rtsFalse) at rts/Schedule.c:1420 #8 0x000000000061fa2c in schedule (initialCapability=0x8d2ec0, task=0x8f5080) at rts/Schedule.c:539 #9 0x0000000000620c77 in scheduleWaitThread (tso=0x7ffff6c80000, ret=0x0, cap=0x8d2ec0) at rts/Schedule.c:1902 #10 0x000000000065762b in rts_evalLazyIO (cap=0x8d2ec0, p=0x89d8b0, ret=0x0) at rts/RtsAPI.c:495 #11 0x000000000061d3db in real_main () at rts/RtsMain.c:66 #12 0x000000000061d4ca in hs_main (argc=5, argv=0x7fffffffe6d8, main_init=0x406558 <__stginit_ZCMain>, main_closure=0x89d8b0) at rts/RtsMain.c:115 #13 0x00007ffff6fbcabd in __libc_start_main (main=<value optimized out>, argc=<value optimized out>, ubp_av=<value optimized out>, init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x7fffffffe6c8) at libc-start.c:222 #14 0x0000000000403a69 in _start ()I started the investigation with the most obvious test: to remove the call to sweep() in rts/sm/GC.c.
if (major_gc && oldest_gen->mark)
if (oldest_gen->compact)
compact(gct->scavenged_static_objects);
// else
// sweep(oldest_gen);
The result was the same, same segfault in the same place. So I decided to do it a little stronger and avoid the blocks getting the BF_MARKED flag, so that they are not even marked.
if (!(bd->flags & BF_FRAGMENTED))
// bd->flags = BF_MARKED;
This one worked. The code in sweep() is not commented, but it s irrelevant, since it ignores blocks that don t have this flag. My third try was to comment the places where the BF_MARKED flag is read, to see each one was causing the segfault. I got a list of places to search with grep, and there weren t a lot of them.
$ grep BF_MARKED rts/sm/*.c rts/sm/Compact.c: if (bd->flags & BF_MARKED) rts/sm/Evac.c: if ((bd->flags & (BF_LARGE BF_MARKED BF_EVACUATED)) != 0) rts/sm/Evac.c: if (bd->flags & BF_MARKED) rts/sm/GCAux.c: if ((bd->flags & BF_MARKED) && is_marked((P_)q,bd)) rts/sm/GC.c: if (!(bd->flags & BF_MARKED)) rts/sm/GC.c: // time, so reset the BF_MARKED flags. rts/sm/GC.c: // compact. (search for BF_MARKED above). rts/sm/GC.c: bd->flags &= ~BF_MARKED; rts/sm/GC.c: // Also at this point we set the BF_MARKED flag rts/sm/GC.c: // BF_MARKED is always unset, except during GC rts/sm/GC.c: bd->flags = BF_MARKED; rts/sm/Sweep.c: if (!(bd->flags & BF_MARKED))The first one is in rts/sm/Compact.c, so it s not relevant to the use with -w. The second one, in rts/sm/Evac.c, is a bit indirect.
if ((bd->flags & (BF_LARGE BF_MARKED BF_EVACUATED)) != 0)
// pointer into to-space: just return it. It might be a pointer
// into a generation that we aren't collecting (> N), or it
// might just be a pointer into to-space. The latter doesn't
// happen often, but allowing it makes certain things a bit
// easier; e.g. scavenging an object is idempotent, so it's OK to
// have an object on the mutable list multiple times.
if (bd->flags & BF_EVACUATED)
// We aren't copying this object, so we have to check
// whether it is already in the target generation. (this is
// the write barrier).
if (bd->gen < gct->evac_gen)
gct->failed_to_evac = rtsTrue;
TICK_GC_FAILED_PROMOTION();
return;
/* evacuate large objects by re-linking them onto a different list.
*/
if (bd->flags & BF_LARGE)
info = get_itbl(q);
if (info->type == TSO &&
((StgTSO *)q)->what_next == ThreadRelocated)
q = (StgClosure *)((StgTSO *)q)->_link;
*p = q;
goto loop;
evacuate_large((P_)q);
return;
/* If the object is in a gen that we're compacting, then we
* need to use an alternative evacuate procedure.
*/
if (!is_marked((P_)q,bd))
mark((P_)q,bd);
push_mark_stack((P_)q);
return;
The first if, in line 466, is executed if any of the three flags is present: BF_LARGE, BF_MARKED or BF_EVACUATED. The second if, in line 474, checks for BF_EVACUATED, and returns. The third if, in line 487, checks for BF_LARGE and returns. The code in lines 502-505 is only executed if BF_MARKED is present, and not the other ones. I tried commenting this code, and got an assertion fail in the user code, so I think this is not a good path to follow.
The second occurence of BF_MARKED is in the same file.
if (bd->flags & BF_MARKED)
// must call evacuate() to mark this closure if evac==rtsTrue
*q = (StgClosure *)p;
if (evac) evacuate(q);
unchain_thunk_selectors(prev_thunk_selector, (StgClosure *)p);
return;
Commenting it, with or without the call to sweep() commented, causes the same segfault. So, I m tending to think this part of the code is unrelated to the issue.
The third occurence is in rts/sm/GCAux.c. I tried commenting it with all the four combinations of the two others commented and not commented, and all resulted in the segfault in the same place.
There s another place to check in rts/sm/GC.c. Again, commenting it made no difference. The last one is part of sweep(), so it s avoided anyway when the call to this function is commented.
From time to time I see people arguing that the wide deployment of IPv6 will force DNSBLs to significantly change their operations and semantics. Usually they have little or no actual experience with IPv6 and the main argument used to justify this view appears to be more or less "OMG so many bits!1!!!".
I have no reason to believe that this will really happen. People are already sending mail over IPv6 and I expect that the same reputation mechanisms used for IPv4 will be deployed as soon as they will be needed, with small policy changes to cope with the fact that end users typically get a whole network instead of a single IP address.
So I expect that DNSBLs will continue to operate as usual like they currently do for IPv4 addresses, optionally by promoting "single IP" listings to "whole /64" listings when appropriate.
Folks at last year's Wikimania may remember the presentation I gave
there. It was essentially a literature review of Wikipedia and
Wikimedia scholarship from the previous year. The idea was to give a
bird's-eye-view as well a series of highlights -- all aimed at
Wikimedians.
Apparently somebody found it useful because I've been asked to do it
again! I'm going to be paired up in a longer session with Felipe
Ortega -- whose excellent dissertation I summarized as part of my
talk last year -- and Mayo Fuster Morell has also agreed to help
out. Felipe is program chair for WikiSym this year and will be
focusing on providing folks with a summary of the papers published at
that conference. It will be held immediately before Wikimania in Gdansk.
For my part, I'm going to be focusing more broadly and talking about
papers published, well, anywhere else.
And this is where you come in!
With search engines and all, I've got a pretty good idea of breadth of
the work that's out there. I also "just know" stuff from my own areas of
interest and study. That said, I don't have as strong of an idea of
what's good and what's relevant beyond what I can grok from citation
counts. And after one year (or less!), that's clearly not very much
information.
As a result, I'm looking for suggestions or recommendations from anybody
on interesting, useful, important, or otherwise noteworthy scholarly
papers on or about Wikipedia or other Wikimedia projects published in
the last year. Feel free to leave a comment, email mako@atdot.cc, or
edit this page.
Since I have started to use Org-mode, I though it was missing something to
have appointment locations on a map. Of course, it's easy to get a LOCATION
property from an entry, and then browse-url on Google Maps.
But it is too easy for me, so once again I said: challenge accepted! I will
bring Google Maps into Emacs!
After several hours of work, the google-maps-el project shows a map!
It fully implements the Google Static Maps API and the
Google Maps Geocoding API.
You can type M-x google-maps and type some place to see it marked on map. Of
course you can do much more, as seen in the screen shot above.
I've also completed all of this with a small org-location-google-maps which
simply show a Google Maps' map for the location of an event in Org mode by
pressing C-c M-l in an Org buffer or in the Org agenda.
Inspired by various Planet Debian postings, I've spent some time
recently looking into a few RC bugs to help with the Squeeze release.
mpg123-el #581227 A
previous commenter on this bug suggested a proposed fix, which I tested
and uploaded. I think the bug's severity was inflated to begin with, so
I downgraded the bug as well.
doclifter #580246 This
one had to do with the python2.6 transition. I
pointed out a patch against Ubuntu's version of the package that fixes
this problem, and someone else made an NMU based on that. (Seemed like a
good idea to look in the PTS for Ubuntu patches since Ubuntu always
transitions to newer Python before Debian proper.)
gnuvd #580110 I
checked upstream and a new version that's supposed to fix this bug was
released today, so I updated the bug report to make note of this and
give the maintainer a chance to look at it.
libtommath #583820 This
FTBFS bug was caused by a previous NMU that fixed a different FTBFS and
also made some unrelated changes. I sent a message to the previous NMUer
noting this fact and made a new upload fixing the new FTBFS.
fceu #580820 Needs
new upstream packaged to fix. The maintainer seems pseudo-MIA but has
shown some signs of returning to activity; I sent an email inquiring as
to whether he intends to fix the critical issue in this package.
op-panel #582377 and #571427
These were not merged when I started out, so I merged them after
noticing they were the same. I spent some poking at the bug itself and
made a simple patch, only to find out that there was a pending patch in
pkg-voip's subversion repo. I hopped onto #debian-voip to prod the
person who'd prepared the patch in subversion about the importance of
updating the BTS when working on bugs. These bugs are currently blocking
on testing the patch.
Most all of these bugs I've subscribed to in case of follow-up. (Geez,
challenge-response subscription via email is kind of a pain.)
Next.