Similar to the recent RcppClassic release, this update was triggered by the CRAN maintainers desire to keep the Makefile free of GNU make extensions. At the same time we simplified the configure file a little, and refreshed the look and feel of the vignette.
No user-facing changes were made.
The NEWS file entries follows below:Changes in version 0.2.3 (2015-01-10)
The src/Makevars.in was pruned of GNU make features at the request of the CRAN Maintainers
configure.ac and configure were updated, and shortened
The RcppGSL-intro.Rnw vignette was updated for its look and feel.
I've recently made more updates to Lumicall, the free, open source and secure alternative to Viber and Skype.
Here are some of the highlights:
- The dialing popup is now optional, so if you want to call your friends with Lumicall / SIP but they don't want to see the popup when making calls themselves, you can disable the popup on their phone.
- The dialer popup now shows results asynchronously so you can dial more quickly
- SIP SIMPLE messaging is now supported, Lumicall is now taking on WhatsApp
- Various bugs in the preferences/settings have been fixed and adding SIP accounts is now easier
- Dialing with a TURN relay is now much more reliable
- It is now possible to redial SIP calls in the call history without seeing the nasty Android bug / popup telling you that you don't have Internet calling configured
F-Droid is not yet carrying the latest version. The F-Droid team may need assistance as they appear to be reviewing a lot of the third-party dependencies used by apps they distribute to make sure the full stack is 100% free software. If people want to continue having the option to get Lumicall and other free software through F-Droid instead of Google Play then helping the F-Droid community is the number one way you can help Lumicall.
You don't have to be a developer to help with Lumicall.
Taking on Viber, Skype and now WhatsApp as well may not sound easy. It isn't. Your help could make the difference though.
Here are some of the things that need assistance:
- Helping to get it on Wikipedia, they keep deleting the page while happily hosting pages about similar products like Sipdroid and CSipSimple
- Helping get the latest dependencies and Lumicall version into F-Droid
- UI design ideas
- Web site assistance
- Documentation and screenshots, e.g. for use with Asterisk and FreeSWITCH and various SIP proxies
- Messaging: to be the default SMS app on an Android device, Lumicall would need a full messaging UI and the ability to replace all functions of the default SMS app. Can anybody identify any other free software that does this and is modular enough to share the relevant code with Lumicall?
- ZRTP: can you help improve the ZRTP stack used by Lumicall?
When composing a message to a Lumicall user, the SIP address is written sip:number @sip5060.net. E.g. if the number is +442071234567 then the SIP address to use when calling or composing a message is sip:+442071234567 @sip5060.net
Debian Developers should be able to interact with Lumicall users from rtc.debian.org using the SIP over WebSocket messaging.Getting the latest Lumicall
It is available from:
A few days ago, the Free Software Foundation announced a new video explaining Free software in simple terms. The video named User Liberation is 3 minutes long, and I recommend showing it to everyone you know as a way to explain what Free Software is all about. Unfortunately several of the people I know do not understand English and Spanish, so it did not make sense to show it to them.
But today I was told that English subtitles were available and set out to provide Norwegian Bokmål subtitles based on these. The result has been sent to FSF and made available in a git repository provided by Github. Please let me know if you find errors or have improvements to the subtitles.
Dear Lazy Web,
I have an HP Envy J104TS laptop. Recently I saw an interesting message in the kernel log.
[99360.969652] [Firmware Bug]: battery: (dis)charge rate invalid.
Does anybody know what firmware is it referring to here ? I don't think the current set of firmwares shiped by linux are involved in battery related information. Is it the BIOS ?
[95474.561491] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready [95474.803578] r8169 0000:0f:00.0 eth0: link down [95474.803627] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [95474.933797] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready [95477.111599] wlan0: authenticate with 00:03:7f:fe:00:02 [95477.127389] wlan0: send auth to 00:03:7f:fe:00:02 (try 1/3) [95477.129315] wlan0: authenticated [95477.131352] wlan0: associate with 00:03:7f:fe:00:02 (try 1/3) [95477.133605] wlan0: RX AssocResp from 00:03:7f:fe:00:02 (capab=0x411 status=0 aid=3) [95477.133686] wlan0: associated [95477.133703] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready [99125.123138] device vethNLAABF entered promiscuous mode [99125.123377] IPv6: ADDRCONF(NETDEV_UP): vethNLAABF: link is not ready [99125.188568] IPv6: ADDRCONF(NETDEV_CHANGE): vethNLAABF: link becomes ready [99125.188615] lxcbr0: port 1(vethNLAABF) entered forwarding state [99125.188631] lxcbr0: port 1(vethNLAABF) entered forwarding state [99140.239301] lxcbr0: port 1(vethNLAABF) entered forwarding state [99360.969652] [Firmware Bug]: battery: (dis)charge rate invalid. [99361.729291] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter. [99361.864205] EXT4-fs (dm-2): re-mounted. Opts: errors=remount-ro,data=writeback,commit=0 [99361.905210] EXT4-fs (sda6): re-mounted. Opts: data=ordered,commit=0 [102236.267648] lxcbr0: port 1(vethNLAABF) entered disabled state [102236.556452] lxcbr0: port 1(vethNLAABF) entered disabled state [102236.557476] device vethNLAABF left promiscuous mode [102236.557483] lxcbr0: port 1(vethNLAABF) entered disabled stateCategories:
A few months ago I gave a lecture about systemd for the Linux Users of Victoria. Here are some of my notes reformatted as a blog post:
Scripts in /etc/init.d can still be used, they work the same way as they do under sysvinit for the user. You type the same commands to start and stop daemons.
To get a result similar to changing runlevel use the “systemctl isolate” command. Runlevels were never really supported in Debian (unlike Red Hat where they were used for starting and stopping the X server) so for Debian users there’s no change here.
The command systemctl with no params shows a list of loaded services and highlights failed units.
The command “journalctl -u UNIT-PATTERN” shows journal entries for the unit(s) in question. The pattern uses wildcards not regexs.
The systemd journal includes the stdout and stderr of all daemons. This solves the problem of daemons that don’t log all errors to syslog and leave the sysadmin wondering why they don’t work.
The command “systemctl status UNIT” gives the status and last log entries for the unit in question.
A program can use ioctl(fd, TIOCSTI, …) to push characters into a tty buffer. If the sysadmin runs an untrusted program with the same controlling tty then it can cause the sysadmin shell to run hostile commands. The system call setsid() to create a new terminal session is one solution but managing which daemons can be started with it is difficult. The way that systemd manages start/stop of all daemons solves this. I am glad to be rid of the run_init program we used to use on SE Linux systems to deal with this.
Systemd has a mechanism to ask for passwords for SSL keys and encrypted filesystems etc. There have been problems with that in the past but I think they are all fixed now. While there is some difficulty during development the end result of having one consistent way of managing this will be better than having multiple daemons doing it in different ways.
The commands “systemctl enable” and “systemctl disable” enable/disable daemon start at boot which is easier than the SysVinit alternative of update-rc.d in Debian.
Systemd has built in seat management, which is not more complex than consolekit which it replaces. Consolekit was installed automatically without controversy so I don’t think there should be controversy about systemd replacing consolekit.
Systemd improves performance by parallel start and autofs style fsck.
The command systemd-cgtop shows resource use for cgroups it creates.
The command “systemd-analyze blame” shows what delayed the boot process and
“systemd-analyze critical-chain” shows the critical path in boot delays.
Sysremd also has security features such as service private /tmp and restricting service access to directory trees.Conclusion
For basic use things just work, you don’t need to learn anything new to use systemd.
It provides significant benefits for boot speed and potentially security.
It doesn’t seem more complex than other alternative solutions to the same problems.
Over Christmas I found the above puzzle at my parent's house. I don't know if it has a name but it seemed apt to name it after The Giant's Causeway.
The idea is that you swap and/or rotate the outer tiles until the colours at the edges match. The center tile is fixed, or at least I assume it is as the wooden edges are deliberately less rounded.
Of course, solving it manually would be boring so here's a dumb brute force solution. I actually admire how inefficient and stupid it is...
import itertools class Tile(list): def __getitem__(self, x): return super(Tile, self).__getitem__(x % len(self)) def rotate(self, x): return Tile(self[x:] + self[:x]) COLOURS = ('YELLOW', 'WHITE', 'BLACK', 'RED', 'GREEN', 'BLUE') YELLOW, WHITE, BLACK, RED, GREEN, BLUE = range(len(COLOURS)) TILES = ( Tile((WHITE, YELLOW, RED, BLUE, BLACK, GREEN)), Tile((RED, BLUE, BLACK, YELLOW, GREEN, WHITE)), Tile((WHITE, BLACK, YELLOW, GREEN, BLUE, RED)), Tile((WHITE, BLUE, GREEN, YELLOW, BLACK, RED)), Tile((GREEN, BLUE, BLACK, YELLOW, RED, WHITE)), Tile((RED, YELLOW, GREEN, BLACK, BLUE, WHITE)), ) CENTER = Tile((WHITE, BLACK, RED, GREEN, BLUE, YELLOW)) def pairwise(it): a, b = itertools.tee(it) next(b, None) return itertools.izip(a, b) def validate(xs): for idx, x in enumerate(xs): if x[idx + 3] != CENTER[idx]: raise ValueError("Tile does not match center") for idx, (a, b) in enumerate(pairwise(xs)): if a[idx + 2] != b[idx + 5]: raise ValueError("Tile does not match previous anticlockwise tile") return xs def find_solution(): # For all possible tile permutations.. for xs in itertools.permutations(TILES): # ... try all possible rotations for ys in itertools.product(range(len(COLOURS)), repeat=len(COLOURS)): try: return validate([x.rotate(y) for x, y in zip(xs, ys)]) except ValueError: pass raise ValueError("Could not find a solution.") for x in find_solution(): print ', '.join(COLOURS[y] for y in x)
This prints (after 5 minutes!):
$ python giants.py GREEN, BLUE, RED, WHITE, BLACK, YELLOW WHITE, BLUE, GREEN, YELLOW, BLACK, RED YELLOW, GREEN, BLACK, BLUE, WHITE, RED GREEN, WHITE, YELLOW, RED, BLUE, BLACK RED, BLUE, BLACK, YELLOW, GREEN, WHITE BLUE, BLACK, YELLOW, RED, WHITE, GREEN python giants.py 269.08s user 0.02s system 99% cpu 4:29.36 total
UPDATE: Seems like this puzzle is called "Circus Seven". Now to dust off my Prolog...
A brand new and shiny version of rfoaas is now on CRAN. The rfoaas package provides an interface for R to the most excellent FOAAS service--which provides a modern, scalable and RESTful web service for the frequent need to tell someone to f$#@ off.
There are two (internal) changes of merit in this version. First off, as FOAAS was refactored upstream, we are now forced to supply an accept: text/plain http request header. Which, sadly enough, is not something the url() function in R can do---so we brought in more cavalry and now depend on the httr package by Hadley, and use its GET() method. A second change is that we added a (simple but effective enough) regression test which simply calls all foaas entry points available throug rfoaas, and compares this to the anticipated result. To run it, you need to set an environment variable RunFOAASTests=yes as eg out Travis script does. Finally, we aligned the version number with upstream to signal that we cover all available entry points of that version.
Greedy people exploit our cultural differences to justify fighting wars to seize wealth for themselves, when sharing and enjoying cultural diversity makes us far richer than if we possess material wealth!
I was browsing Eric Kim’s street photography blog, when I stumbled across one article about the well-known “Gear Acquisition Syndrome” that plagues enthusiast photographers.
Gear Acquisition Syndrome is the obsession that enthusiasts tend to have for new gear, new gadgets, new stuff, as an excuse for not developing their skills or taking action. You can recognize it by phrases like: If only I had that new gear, I would be better at what I do… I can’t do that project until I buy this gear… My super expensive camera is not good for that, I need an even more expensive one… (etc).
The article, “How to Be Grateful For What You Have” is a funny and well argued look on why photographers, or artists in general, can get lost in what they don’t have, instead of what they have.
The article is a recommended read in itself and delivers the point whether you are into photography or not. That said, inside the article I found three nice links worth noting:
The Tiny Collective
A group of photographers that use only their phones as their camera. It’s inspiring to see a specific, curated, selection of images made with phones. It definitely makes you wonder why would you need anything but a phone to make great images (answer: phones work great, even old ones).
A Guide to Practical Contentment
One of the most simple and effective messages about contentment that I have read. It’s not about “not wanting things” or settling for “whatever”. It’s all about taking a step back and realizing that life is not about absolutes. If you are not a billionaire, that doesn’t mean you have failed in life. Perhaps you are just a millionaire, and that’s fine :).
(…) if you start in this place of fixing what’s wrong with you, you keep looking for what else is wrong with you, what else you need to improve. So maybe now feel like you don’t have enough muscles, or six pack abs, or you think your calves don’t look good, or if it’s not about your body, you’ll find something else.
So it’s this never-ending cycle for your entire life. You never reach it. If you start with a place of wanting to improve yourself and feeling stuck, even if you’re constantly successful and improving, you’re always looking for happiness from external sources. You don’t find the happiness from within, so you look to other things.
If you’re externally looking for happiness, it’s easy to get too into food, or shopping, or partying, or overwork, to try to be happy.
If instead, you can find contentment within and not need external sources of happiness, then you’ll have a reliable source of happiness.
So, instead of looking at sources of external happiness, why don’t you look into sources of internal happiness? It’s one of the hardest things to learn how to do, but I’m personally slowly getting there. It’s life changing.
Bonus points: quotes on simplification and minimalism
For extra credit, here are some interesting quotes on the above topics, note that as every internet quote page it might be filled with false quotes. I happen to like the one attributed to Donald Horban, who apparently doesn’t exist outside quote pages in the internet. Maybe that’s the biggest minimalism? Not existing?
“We don’t need to increase our goods nearly as much as we need to scale down our wants. Not wanting something is as good as possessing it.”
Anyway, take these with a grain of salt, and just read them as interesting phrases. Just take it easy :).
First weekend back home after being away for the holidays. That was a lot of fun, but it's also nice to be back home with all my stuff and my normal schedule. Apparently nice enough that today I went on a productivity binge and did lots of random chores that had been building up. Quite satisfying.
This is a catch-up haul post for a few random things that popped up over the past few months apart from a full book order.
Ibraheem Abbas and Yasser Bahjatt — HWJN (sff)
Ibraheem Abbas and Yasser Bahjatt — Somewhere! (Hunaak!) (sff)
Shannon Appelcline — Designers & Dragons: The '70s (non-fiction)
Shannon Appelcline — Designers & Dragons: The '80s (non-fiction)
Shannon Appelcline — Designers & Dragons: The '90s (non-fiction)
Shannon Appelcline — Designers & Dragons: The '00s (non-fiction)
Tor.com — Some of the Best from Tor.com: 2014 (sff anthology)
The Appelcline four-volume history of RPGs was a gift from a friend, and a lovely set of books. The first two were available for free on the Kindle (as was the last) as part of an effort to publicize Arab SF, and I always like to broaden my cultural reading horizons.
Time for another update on my work for UEFI improvements in Jessie!
I've spent more time on the integration of 32-bit grub-efi with a 64-bit Debian system, and just published a new test image on pettersson. I've added:
- a patch to the Linux kernel add a new /sys file which exposes the size of the underlying UEFI platform (32- or 64-bit). (I'd add a link, but gmane.org seems to be down atm!)
- a patch to grub2 to read that new /sys file in grub-install to determine the right version of grub-efi to install by default
- a patch to grub-installer to do similar
These remove the manual steps that were necessary for a 64-bit installation with the previous build. I've just used this exact image (and a network mirror) to install a fully-functional 64-bit Gnome system on the X205TA, simply by selecting "64-bit install" from the GRUB menu and following prompts. Yay! Visit http://cdimage.debian.org/cdimage/unofficial/efi-development/jessie-upload3/ to download and test the image.
Now, there's no guarantee that the kernel patch I've submitted to the linux-efi folks will be accepted in its current form, and even if it is I'll have to get it and the other code I've written accepted into the various packages and then into Jessie! But for now this image should work just fine for Bay Trail folks I hope!
WARNING: this CD is provided for testing only. Use at your own risk! If you have appropriate (U)EFI hardware, please try this image and let me know how you get on, via the debian-cd and debian-boot mailing lists.
For now, I'm going to pause development here. The core code I'm using to make these images is all in the debian-cd and d-i repos, and I'll push the other patches once I know they'll work with the kernel. But I've got a slew of other things that I need to work on in the next few weeks, in no particular order:
- RC bugs filed against abcde
- Sorting out Mac-only 32-bit netinst images (only EFI boot? without EFI?)
- Regular openstack image generation for Jessie
- Regular debian-live image generation for Jessie
I'm currently not planning to make all of Debian's amd64 images bootable using 32-bit UEFI like this image - I'm happy to leave this as just an option for our multi-arch i386/amd64 images (netinst or DVD only). I think that's a reasonable compromise here, and it's also the easiest thing for me to do with the current debian-cd build system.
Finally, apologies if you've asked me questions about the earlier images in this series and I've not responded yet. Fixing that ASAP!
There was a regression in Linux 3.2.65, which unfortunately was included in this weekend's Debian stable point release (7.8) as I didn't point out the bug reports to the stable release team. At least some systems are now failing to resume after suspending to RAM; instead they reboot.
I have tracked down the change that caused this, and it should be fixed as part of a security update soon. The change is in code specific to 64-bit x86 (i.e. the Debian amd64 architecture). If you need suspend/resume to work, you might wish to avoid upgrading the linux-image-3.2.0-4-amd64 package until that future update.
A maintenance release of RcppClassic, now at version 0.9.6, went out to CRAN today. This package provides a maintained version of the otherwise deprecated first Rcpp API; no new projects should use it.
No changes were in user-facing code. The Makevars file was change to accomodate a request by the CRAN Maintainer to keep it free of GNU Make extensions. At the same time, we overhauled the look and feel of the (very short) vignette. Build instructions were updated both in the vignette and in the included example package. Other accumulated changes since the last release were updates to the DESCRIPTION and NAMESPACE file as well two namespace-related R code updates.
Dear X2Go Community, dear friends,
as many of you may know, I have been contributing a considerable amount
of time to upstream-maintaining X2Go over the past 4 years. I provided
new X2Go components (Python X2Go, PyHoca X2Go Client, a publicly
available X2Go Session Broker, X2Go MATE Bindings, etc.) and focused on
making X2Go a wide-spread community project. For the last 2-3 years I
have been in the role of the X2Go project coordinator and various other
With the beginning of 2015, I will pass on several of those roles to
other people in the project, see the below list for already assigned and
- project/community coordinator (continued by Stefan Baur)
- development coordination (continued by Heinz-Markus Graesing,
very probably introducing some sort of agile development)
- release management (n.n.)
- i18n team leader (n.n.)
- package maintenance (continued by Oleksandr Shneyder)
- Git administrator (continued by Mihai Moldovan)
- bug tracker administrator (continued by Michael DePaulo)
The reasons for tremendously reducing my workload on X2Go are these:
- more time for development, less involvement in organizational tasks
- more time for paid/contracted work (also in the X2Go context)
- spend some of my time on doing Remote Desktop Computing research
- be more available to Debian and Ubuntu as a package maintainer
- be more available to my family
In several internal exchanges we (Heinz, Stefan, Mihai, Mike#2,
Thursday was my first day back with HP. I've joined Steve Geary's group to work on Linux support for “the machine”
I had a great time at Intel and wish my old team all the best.
First sequel to my Link Pack “series” (I’ll remove the quotes when it’s LP#05): Link Pack #01.
This time I’m going for fewer articles, to try to keep things less overwhelming. There’s no special theme, and I’m actually leaving out some nice things I read recently. On the plus side, that means I have good material for a Link Pack #03.
Also, I’m gonna stick with Link Pack as a name, because it’s good enough :-).
A Teenager’s View on Social Media: Written by an actual teen
A well thought and realistic take on how social media is being used nowadays by teenagers. I have seen the patterns the author describes, and actually follow many of them. Does that mean I’m still a teenager?
It’s interesting that the messaging and group-messaging part of the article is very US centric, or at least very US centric from my point of view. WhatsApp is the default messenger application south of the states, and fills the role of “somewhere you can chat with people without having to give them your full personal information”, that is, a place where you can chat with someone without running out of SMS and without adding them on Facebook (which would open them to stalk your whole profile and other friends). Some carriers in South América offer unlimited plans for specific applications like WhatsApp.
What Would Jesus Buy? (2007) — Full movie
“Reverend” Billy Talen from the Church of Stop Shopping Gospel is trying to prevent the Shopocalypse from happening. It’s an entertaining story of a group of funny guys and girls trying to share a message with comedy (that means A+ on my list). Simple and independent, a nice film.
13 Nutrition Lies That Made The World Sick And Fat
A pet peeve of mine. Nutrition is not really that complicated, but unfortunately there are a lot of myths that make people take really bad decisions. If you only read one thing in 2014 2015, read this.
Bottom Line: The low-fat, high-carb diet recommended by the mainstream nutrition organizations is a miserable failure and has been repeatedly proven to be ineffective.
Bottom Line: Low-carb diets are the easiest, healthiest and most effective way to lose weight and reverse metabolic disease. It is pretty much a scientific fact at this point.
GM’s hit and run: How a lawyer, mechanic, and engineer blew open the worst auto scandal in history
Cars are so complex nowadays, and dependent on electronics, that I’m honestly afraid of them. I have made software for many years and I know how hard, impossible, it is to get things “perfect”. I can’t imagine how hard it is for something so critical as brakes, steering wheels, etc. Even cameras can’t get focus right some times, and it’s been many many years.
Countless articles have been written about General Motors and its massive recalls earlier this year. What hasn’t been fully told is how GM might have gotten away with multiple counts of consumercide were it not for the efforts of three men: a Georgia lawyer, a Mississippi mechanic, and a Florida engineer.
Brooke Melton needn’t have died that night. She was killed by a corporation’s callous disregard for the safety of its customers, made worse by a regulatory agency reluctant to regulate.
The Long Game: Part 1 and The Long Game: Part 2
Two very short (less than 5 minutes) video essays about how notable people in the story of creativity are always celebrated without mentioning the boring years when they were nothing but losers. It’s a fun little video, worth a watch for the idea and the interesting editing. It feels like someone really wanted to create these.
The UDD bugs interface currently knows about the following release critical bugs:
- In Total:
177 bugs affecting
- Affecting Jessie:
157 (key packages:
92) That's the number we need to get down to zero
before the release. They can be split in two big categories:
- Affecting Jessie and unstable:
124 (key packages:
74) Those need someone to find a fix, or to finish the
work to upload a fix to unstable:
- 19 bugs are tagged 'patch'. (key packages: 12) Please help by reviewing the patches, and (if you are a DD) by uploading them.
- 4 bugs are marked as done, but still affect unstable. (key packages: 0) This can happen due to missing builds on some architectures, for example. Help investigate!
- 101 bugs are neither tagged patch, nor marked done. (key packages: 62) Help make a first step towards resolution!
- Affecting Jessie only: 33 (key packages: 18) Those are already fixed in unstable, but the fix still needs to migrate to Jessie. You can help by submitting unblock requests for fixed packages, by investigating why packages do not migrate, or by reviewing submitted unblock requests.
- Affecting Jessie and unstable: 124 (key packages: 74) Those need someone to find a fix, or to finish the work to upload a fix to unstable:
- Affecting Jessie: 157 (key packages: 92) That's the number we need to get down to zero before the release. They can be split in two big categories:
How do we compare to the Squeeze and Wheezy release cycles?Week Squeeze Wheezy Jessie 43 284 (213+71) 468 (332+136) 319 (240+79) 44 261 (201+60) 408 (265+143) 274 (224+50) 45 261 (205+56) 425 (291+134) 295 (229+66) 46 271 (200+71) 401 (258+143) 427 (313+114) 47 283 (209+74) 366 (221+145) 342 (260+82) 48 256 (177+79) 378 (230+148) 274 (189+85) 49 256 (180+76) 360 (216+155) 226 (147+79) 50 204 (148+56) 339 (195+144) ??? 51 178 (124+54) 323 (190+133) 189 (134+55) 52 115 (78+37) 289 (190+99) 147 (112+35) 1 93 (60+33) 287 (171+116) 140 (104+36) 2 82 (46+36) 271 (162+109) 157 (124+33) 3 25 (15+10) 249 (165+84) 4 14 (8+6) 244 (176+68) 5 2 (0+2) 224 (132+92) 6 release! 212 (129+83) 7 release+1 194 (128+66) 8 release+2 206 (144+62) 9 release+3 174 (105+69) 10 release+4 120 (72+48) 11 release+5 115 (74+41) 12 release+6 93 (47+46) 13 release+7 50 (24+26) 14 release+8 51 (32+19) 15 release+9 39 (32+7) 16 release+10 20 (12+8) 17 release+11 24 (19+5) 18 release+12 2 (2+0)
This is long overdue, so here goes:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1,SHA512 I'm transitioning my GPG key from an old 1024D key to a new 4096R key. The old key will continue to be valid for some time, but I prefer all new correspondance to be encrypted to the new key, and will be making all signatures going forward with the new key. This transition document is signed with both keys to validate the transition. If you have signed my old key, I would appreciate signatures on my new key as well, provided that your signing policy permits that without re-authenticating me. Old key: pub 1024D/0x5DD5685778D621B4 2000-03-07 Key fingerprint = 0F3C 34D1 E4A3 8FC6 435C 01BA 5DD5 6857 78D6 21B4 New key: pub 4096R/0x1D661A372FED8F94 2013-12-30 Key fingerprint = 9A17 578F 8646 055C E19D E309 1D66 1A37 2FED 8F94 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlSwEaIACgkQXdVoV3jWIbQW5QCgoFHVU/D4fKSbvmGv3nNy3MAW S2UAn075ztmxQ8Y9/22crbUug1sEjfh5iQIcBAEBCgAGBQJUsBGiAAoJEB1mGjcv 7Y+U9PgP/29jPvrNcdWsLI8YK9U6+JzS+TMXNyfp6CQXc8O/+zJwqvvxNpqY3rLM 5otRLIEJ2EVdiF8sCWTDGusS9NkMePzumR0AFAR0iltIkekO5O0HbHhK0sXJQv0s EipDpFRO9k4/CBpJEy6Pkkxwd3ndtmwrL1/oKeVmM4E62PJd9ofMpQb/gMUsrA8u F8xoOXY8Os82Rrd759PypSxNecjd6SYaVJTHgFbZ0QIMJkdKaufifzARdw+v5jwg 8Q11BhpYxvUSugZgiciKA6RjRK5bfRnT8VQPFd0zneilsIW13zz/jub9df/vtM5L vY/6jHvXczYXSG8EGpHJQCD3KtQJPWZ0Nz9rAm4emEPmR2qav6KGARatYAm0RBqZ Y81YUEuiWzGli6DH1m9SQe8bqM/J94vQAAX9VqUn2gz0Z0Ey25kVQE7NOGsbbGVS vD/E74FSk1At9/RGpstrfEjsDKPRman2xk/oZe+08sRB22CJl40N4tZV9AkCJNom HHGZKp+VEKaCEiLUIRjKTHt2HTThg39zmxl+OnoTSFYvloxrDJyi9SxZgCAmBhbD 7kLkaSDmdUj6CmoilGU+gd2zmQl2D+RHinYZBxOUf1vi1MDLWNcLIMgrz4mRXgzE YKkG0newf9UbyJw42sXe2ukNQBIqBcL/DmAhG7V+r0RD7MQnMEYy =09bN -----END PGP SIGNATURE-----
The new key is available from keyservers, e.g. pgp.mit.edu or others.
In other news: Yes, I've not been blogging much recently, will try to do updates more often. In the mean time, you can also refer to my Twitter account for random stuff or the new sigrok Twitter account for sigrok-related posts.
I recently had to upload a large number (~1 million) of files to Amazon S3.
My first attempts revolved around s3cmd (and subsequently s4cmd) but both projects seem to based around analysing all the files first, rather than blindly uploading them. This not only requires a large amount of memory, non-trivial experimentation, fiddling and patching is also needed to avoid unnecessary stat(2) calls. I even tried a simple find | xargs -P 5 s3cmd put [..] but I just didn't trust the error handling correctly.
I finally alighted on s3-parallel-put, which worked out well. Here's a brief rundown on how to use it:
- First, change to your source directory. This is to ensure that the filenames created in your S3 bucket are not prefixed with the directory structure of your local filesystem — whilst s3-parallel-put has a --prefix option, it is ignored if you pass a fully-qualified source, ie. one starting with a /.
- Run with --dry-run --limit=1 and check that the resulting filenames will be correct after all:
$ export AWS_ACCESS_KEY_ID=FIXME $ export AWS_SECRET_ACCESS_KEY=FIXME $ /path/to/bin/s3-parallel-put \ --bucket=my-bucket \ --host=s3.amazonaws.com \ --put=stupid \ --insecure \ --dry-run --limit=1 \ .
[..] INFO:s3-parallel-put[putter-21714]:./yadt/profile.Profile/image/circle/807.jpeg -> yadt/profile.Profile/image/circle/807.jpeg [..]
- Remove --dry-run --limit=1, and let it roll.
I have just backported the php-redis (php5-redis) 2.2.5-1~bpo70+1 package for Debian Wheezy. Thanks to the ftp-masters for their quick ACCEPT :)
Now you can install and use the redis PHP extension from the offical repositories, see: