Recent blog entries

24 Sep 2016 LaForge   » (Master)

(East) European motorbike tour on 20y old BMW F650ST

For many years I've always been wanting to do some motrobike riding accross the Alps, but somehow never managed to do so. It seems when in Germany I've always been too busy - contrary to the many motorbike tours around and accross Taiwan which I did during my frequent holidays there.

This year I finally took the opportunity to combine visiting some friends in Hungary and Bavaria with a nice tour starting from Berlin over Prague and Brno (CZ), Bratislava (SK) to Tata and Budapeest (HU), further along lake Balaton (HU) towards Maribor (SI) and finally accross the Grossglockner High Alpine Road (AT) to Salzburg and Bavaria before heading back to Berlin.

It was eight fun (but sometimes long) days riding. For some strange turn of luck, not a single drop of rain was encountered during all that time, travelling accross six countries.

The most interesting parts of the tour were:

  • Along the Elbe river from Pirna (DE) to Lovosice (CZ). Beautiful scenery along the river valey, most parts of the road immediately on either side of the river. Quite touristy on the German side, much more pleaant and quiet on the Czech side.
  • From Mosonmagyarovar via Gyor to Tata (all HU). Very little traffic alongside road '1'. Beatutil scenery with lots of agriculture and forests left and right.
  • The Nothern coast of Lake Balaton, particularly from Tinany to Keszthely (HU). Way too many tourists and traffic for my taste, but still very impressive to realize how large/long that lake really is.
  • From Maribor to Dravograd (SI) alongside the Drau/Drav river valley.
  • Finally, of course, the Grossglockner High Alpine Road, which reminded me in many ways of the high mountain tours I did in Taiwan. Not a big surprise, given that both lead you up to about 2500 meters above sea level.

Finally, I have to say I've been very happy with the performancee of my 1996 model BMW F 650ST bike, who has coincidentially just celebrated its 20ieth anniversary. I know it's an odd bike design (650cc single-cylinder with two spark plugs, ignition coils and two carburetors) but consider it an acquired taste ;)

I've also published a map with a track log of the trip

In one month from now, I should be reporting from motorbike tours in Taiwan on the equally trusted small Yamaha TW-225 - which of course plays in a totally different league ;)

Syndicated 2016-08-16 14:00:00 from LaForge's home page

22 Sep 2016 pixelbeat   » (Journeyer)


Enhance introspection at the python interactive prompt.

Syndicated 2016-09-22 12:23:33 from

21 Sep 2016 wingo   » (Master)

is go an acceptable cml?

Yesterday I tried to summarize the things I know about Concurrent ML, and I came to the tentative conclusion that Go (and any Go-like system) was an acceptable CML. Turns out I was both wrong and right.

you were wrong when you said everything's gonna be all right

I was wrong, in the sense that programming against the CML abstractions lets you do more things than programming against channels-and-goroutines. Thanks to Sam Tobin-Hochstadt to pointing this out. As an example, consider a little process that tries to receive a message off a channel, and times out otherwise:

func withTimeout(ch chan int, timeout int) (result int) {
  var timeoutChannel chan int;
  var msg int;
  go func() {
    timeoutChannel <- 0
  select {
    case msg = <-ch: return msg;
    case msg = <-timeoutChannel: return 0;

I think that's the first Go I've ever written. I don't even know if it's syntactically valid. Anyway, I think we see how it should work. We return the message from the channel, unless the timeout happens before.

But, what if the message is itself a composite message somehow? For example, say we have a transformer that reads a value from a channel and adds 1 to it:

func onePlus(in chan int) (result chan int) {
  var out chan int
  go func () { out <- 1 + <-in }()
  return out

What if we do a withTimeout(onePlus(numbers), 0)? Assume the timeout fires first and that's the result that select chooses. There's still that onePlus goroutine out there trying to read from in and at some point probably it will succeed, but nobody will read its value. At that point the number just vanishes into the ether. Maybe that's OK in certain domains, but certainly not in general!

What CML gives you is the ability to express an event (which is kinda like a possibility of sending or receiving a message on a channel) in such a way that we don't run into this situation. Specifically with the wrap combinator, we would make an event such that receiving on numbers would run a function on the received message and return that as the message value -- which is of course the same as what we have, except that in CML the select wouldn't actually read the message off unless it select'd that channel for input.

Of course in Go you could just rewrite your program, so that the select statement looks like this:

select {
  case msg = <-ch: return msg + 1;
  case msg = <-timeoutChannel: return 0;

But here we're operating at a lower level of abstraction; we were forced to intertwingle our concerns of adding 1 and our concerns of timeout. CML is more expressive than Go.

you were right when you said we're all just bricks in the wall

However! I was right in the sense that you can build a CML system on top of Go-like systems (though possibly not Go in particular). Thanks to Vesa Karvonen for this comment and the link to their proof-of-concept CML implementation in Clojure's core.async. I understand Vesa also has an implementation in F# as well.

Folks should read Vesa's code, after reading the Reppy papers of course; it's delightfully short and expressive. The basic idea is that event composition operators like choose and wrap build up data structures instead of doing things. The sync operation then grovels through those data structures to collect a list of channels to pass on to core.async's equivalent of select. When select returns, sync determines which event that chosen channel and message corresponds to, and proceeds to "activate" the event (and, as a side effect, possibly issue NACK messages to other channels).

Provided you can map from the chosen select channel/message back to the event, (something that core.async can mostly do, with a caveat; see the code), then you can build CML on top of channels and goroutines.

o/~ yeah you were wrong o/~

On the other hand! One advantage of CML is that its events are not limited to channel sends and receives. I understand that timeouts, thread joins, and maybe some other event types are first-class event kinds in many CML systems. Michael Sperber, current Scheme48 maintainer and functional programmer, tells me that simply wrapping events in channels+goroutines works but can incur a big performance overhead relative to supporting those event types natively, due to the need to make the new goroutine and channel and the scheduling costs. He quotes 10X as the overhead!

So although CML and Go appear to be inter-expressible, maybe a proper solution will base the simple channel send/receive interface on CML rather than the other way around.

Also, since these events are now second-class, it must be OK to lose these events, for the same reason that the naïve withTimeout could lose a message from numbers. This is the case for timeouts usually but maybe you have to think about this more, and possibly provide an infinite stream of the message. (Of course the wrapper goroutine would be collected if the channel becomes unreachable.)

you were right when you said this is the end

I've long wondered how contemporary musicians deal with the enormous, crushing weight of recorded music. I don't really pick any more but hoo am I feeling this now. I think for Guile, I will continue hacking on fibers in a separate library, and I think that things will remain that way for the next couple years and possibly more. We need more experience and more mistakes before blessing and supporting any particular formulation of highly concurrent programming. I will say though that I am delighted that we are able to actually do this experimentation on a library level and I look forward to seeing what works out :)

Thanks again to Vesa, Michael, and Sam for sharing their time and knowledge; all errors are of course mine. Happy hacking!

Syndicated 2016-09-21 21:29:15 from wingolog

21 Sep 2016 sye   » (Journeyer)

Winding Up by Derek Walcott

Winding Up
by Derek Walcott

I live on the water,
alone. Without wife and children,
I have circled every possibility
to come to this:
a low house by grey water,
with windows always open
to the stale sea. We do not choose such things,
but we are what we have made.
We suffer, the years pass,
we shed freight but not our need
for encumbrances. Love is a stone
that settled on the sea-bed
under grey water. Now, I require nothing
from poetry but true feeling,
no pity, no fame, no healing. Silent wife,
we can sit watching grey water,
and in a life awash
with mediocrity and trash
live rock-like.
I shall unlearn feeling,
unlearn my gift. That is greater
and harder than what passes there for life.


我们卸下负荷 而非对自我的

和 浮世一生

based on reader azur@douban 's another fine translation  ( without the title and #13 line onwards...)

Tension in contextualized translation...from English to Chinese, wor(l)ds apart... ? - ResearchGate. Available from: [accessed Sep 21, 2016].
syndicated from

Syndicated 2016-09-21 20:00:00 (Updated 2016-09-21 20:01:19) from badvogato

21 Sep 2016 louie   » (Master)

Copyleft, attribution, and data: other considerations

Public licenses for databases don’t work well. Before going into solutions to that problem, though, I wanted to talk briefly about some things that are important to consider when thinking about solutions: real-world examples of the problems; a common, but bad, solution; and a discussion of the motivations behind public licenses.

Bullfrog map unavailable“, by Peter Desmets, under CC BY 3.0 unported

Real-world concerns, not just theoretical

When looking at solutions, it is important to understand that the practical concerns I blogged about aren’t just theoretical — they matter in practice too. For example, Peter Desmet has done a great job showing how overreaching licenses make bullfrog maps (and other data combinations) illegal. Alex Barth of OpenStreetMap has also discussed how ODbL creates problems for OSM users (though he got some Wikipedia-related facts wrong). And I’ve spoken to very well-intentioned organizations (including thoughtful, impactful non-profits) scared off from OSM for similar reasons.

On the flip side, because these rules are based on such flimsy legal grounds, sophisticated corporate legal departments often feel comfortable circumventing
the requirements by exploiting loopholes. (Needless to say, they don’t blog about the problems with the licenses – they just go ahead and use the loopholes.) So overreaching attempts to create new rights are, in many ways, the worst of both worlds: they hurt well-intentioned cooperation, and don’t dissuade parties with a significant interest in exploiting the commons.

What not to do: create new “rights”

When thinking about solutions, it is unfortunately also important to say what isn’t a good idea: create new rights, or override limitations on old ones. The Free Software Foundation, to their great credit, has always consistently said that if weakening copyright also weakens the GPL, they’ll take that tradeoff; and that vice-versa, the GPL should not ask for rights that go beyond copyright law. The most recent copyleft licenses from Creative Commons, Mozilla, and the FSF all make this explicit: limitations on copyright, like fair use, are not trumped by our licenses.

Unfortunately, many people have a good-faith desire to see copyleft-like results in other domains. As a result, they’ve gone the wrong way on this point. ODbL is probably the most blatant example of this: even at the time, Science Commons correctly pointed out that ODbL’s attempt to create database rights by contract outside of the EU was a bad idea. Unfortunately, well-intentioned people (including me!) pushed it through anyway. Similarly, open hardware proponents have tried to stretch copyright to cover functional works, with predictably messy results.

This is not just practically wrong, for the reasons I’ve explained in earlier posts. It is also ethically wrong for those of us who want to see more data sharing, because any “rights” we create by fiat are going to end up being used primarily to stop sharing, not encourage it.

Remembering why we do share-alike and attribution

Consider this section a brief sketch for a future post – if I forgot something
big, please let me know, but please don’t roast me in comments for being brief
or reductive about your favorite motivation.

It is important when writing about public licenses to remember why the idea of
placing restrictions on re-use is so intuitively appealing outside of software.
If we don’t understand why people want to do less-than-public domain, it’s hard
to come up with solutions that actually work. Motivations tend to be some
combination (varying from person to person and community to community) of:

  • Recognition: Many people want to at least be recognized for their work, even when they ask for nothing else. (When Creative Commons assessed usage after their 1.0 licenses, [97-98% of people chose attribution]( This sentiment underlies many otherwise “permissive” licenses, as well as academic norms around plagiarism and attribution.
  • Reducing free riding: Lots of people are afraid that commons can be destroyed by people who use the resource without giving back. Historically, this “tragedy of the commons” was about [rivalrous]( goods (like fisheries), but the same concern is often raised in the context of collaborative communities, whose labor can be rivalrous even when their goods are non-rivalrous. Some people like share-alike requirements because, pragmatically, they feel such requirements are one way to prevent (or at least reduce) this risk by encouraging people to either participate fully or not participate at all. (If you’re interested in this point, I’ve [written about it before](
  • “Fairness”: Many people like share-alike out of a deep moral sense that if you take, you should also give back. This often looks the same as the previous point, but with the key distinction that at least some people focused on fairness care more about process and less about outcomes: a smaller, less productive community with more sharing may, for them, be better than a larger, more productive community where not everyone shares perfectly.
  • Access to allow self-help: Another variation on the previous two points is a use of copyleft that focuses less on “is the author helping me by cooperating” and more on “did the author give me materials I can then use to help myself”. In this view, increased access to raw material (like source code, or data) can be good even the authors are non-cooperative. (To those familiar with the Linux kernel discussions, this is essentially “I got a lousy driver, and the authors hate me, but at least I got *a* driver”.)
  • Ethical: Many people simply think data/source should never be proprietary, and so will use any means possible, like copyleft, to increase the amount of non-proprietary code in the world.

All of these motivations can be more or less valid at different points in time, in ways that (again) deserve a different post. (For example, automatic attribution may not have the same impact as “human” attribution, which may not be a surprise given the evidence on crowding out of intrinsic motivations.)

Finally, next (and final?) post: what solutions we’ve got.

Syndicated 2016-09-21 18:22:38 from Blog – Luis Villa: Open Law and Strategy

21 Sep 2016 mjg59   » (Master)

Microsoft aren't forcing Lenovo to block free operating systems

There's a story going round that Lenovo have signed an agreement with Microsoft that prevents installing free operating systems. This is sensationalist, untrue and distracts from a genuine problem.

The background is straightforward. Intel platforms allow the storage to be configured in two different ways - "standard" (normal AHCI on SATA systems, normal NVMe on NVMe systems) or "RAID". "RAID" mode is typically just changing the PCI IDs so that the normal drivers won't bind, ensuring that drivers that support the software RAID mode are used. Intel have not submitted any patches to Linux to support the "RAID" mode.

In this specific case, Lenovo's firmware defaults to "RAID" mode and doesn't allow you to change that. Since Linux has no support for the hardware when configured this way, you can't install Linux (distribution installers will boot, but won't find any storage device to install the OS to).

Why would Lenovo do this? I don't know for sure, but it's potentially related to something I've written about before - recent Intel hardware needs special setup for good power management. The storage driver that Microsoft ship doesn't do that setup. The Intel-provided driver does. "RAID" mode prevents the Microsoft driver from binding and forces the user to use the Intel driver, which means they get the correct power management configuration, battery life is better and the machine doesn't melt.

(Why not offer the option to disable it? A user who does would end up with a machine that doesn't boot, and if they managed to figure that out they'd have worse power management. That increases support costs. For a consumer device, why would you want to? The number of people buying these laptops to run anything other than Windows is miniscule)

Things are somewhat obfuscated due to a statement from a Lenovo rep:This system has a Signature Edition of Windows 10 Home installed. It is locked per our agreement with Microsoft. It's unclear what this is meant to mean. Microsoft could be insisting that Signature Edition systems ship in "RAID" mode in order to ensure that users get a good power management experience. Or it could be a misunderstanding regarding UEFI Secure Boot - Microsoft do require that Secure Boot be enabled on all Windows 10 systems, but (a) the user must be able to manage the key database and (b) there are several free operating systems that support UEFI Secure Boot and have appropriate signatures. Neither interpretation indicates that there's a deliberate attempt to prevent users from installing their choice of operating system.

The real problem here is that Intel do very little to ensure that free operating systems work well on their consumer hardware - we still have no information from Intel on how to configure systems to ensure good power management, we have no support for storage devices in "RAID" mode and we have no indication that this is going to get better in future. If Intel had provided that support, this issue would never have occurred. Rather than be angry at Lenovo, let's put pressure on Intel to provide support for their hardware.

comment count unavailable comments

Syndicated 2016-09-21 17:09:31 from Matthew Garrett

20 Sep 2016 wingo   » (Master)

concurrent ml versus go

Peoples! Lately I've been navigating the guile-ship through waters unknown. This post is something of an echolocation to figure out where the hell this ship is and where it should go.

Concretely, I have been working on getting a nice lightweight concurrency system rolling for Guile. I'll write more about that later, but you can think of it as being modelled on Go, though built as a library. (I had previously described it as "Erlang-like", but that's just not accurate.)

Earlier this year at Curry On this topic was burning in my mind and of course when I saw the language-hacker fam there I had to bend their ears. My targets: Matthew Flatt, the amazing boundary-crossing engineer, hacker, teacher, researcher, and implementor of Racket, and Matthias Felleisen, the godfather of the PLT research family. I saw them sitting together and I thought, you know what, what can they have to say to each other? These people have been talking together for 30 years right? Surely they are actually waiting for some ignorant dude to saunter up to the PL genius bar, right?

So saunter I do, saying, "if someone says to you that they want to build a server that will handle 100K or so simultaneous connections on Racket, what abstraction do you tell them to use? Racket threads?" Apparently: yes. A definitive yes, in the case of Matthias, with a pointer to Robby Findler's paper on kill-safe abstractions; and still a yes from Matthew with the caveat that for the concrete level of concurrency that I described, you'd have to run tests. More fundamentally, I was advised to look at Concurrent ML (on which Racket's concurrency facilities were based), that CML was much better put together than many modern variants like Go.

This was very interesting and new to me. As y'all probably know, I don't have a formal background in programming languages, and although I've read a lot of literature, reading things only makes you aware of the growing dimension of the not-yet-read. Concurrent ML was even beyond my not-yet-read horizon.

So I went back and read a bunch of papers. Turns out Concurrent ML is like Lisp in that it has a tribe and a tightly-clutched history and a diaspora that reimplements it in whatever language they happen to be working in at the moment. Kinda cool, and, um... a bit hard to appreciate in the current-day context when the only good references are papers from 10 or 20 years ago.

However, after reading a bunch of John Reppy papers, here is my understanding of what Concurrent ML is. I welcome corrections; surely I am getting this wrong.

1. CML is like Go, composed of channels and goroutines. (Forgive the modern referent; I assume most folks know Go at this point.)

2. Unlike Go, in CML a channel is never buffered. To make a buffered channel in CML, you spawn a thread that manages a buffer between two channels.

3. Message send and receive operations in CML are built on a lower-level primitive called "events". (send ch x) is instead euivalent to (sync (send-event ch x)). It's like an event is the derivative of a message send with respect to time, or something.

4. Events can be combined and transformed using the choose and wrap combinators.

5. Doing a sync on an event created by choose allows a user to build select in "user-space", as a library. Cool stuff. So this is what events are for.

6. There are separate event type implementations for timeouts, channel send/recv blocking operations, file descriptor blocking operations, syscalls, thread joins, and the like. These are supported by the CML implementation.

7. The early implementations of Concurrent ML were concurrent but not parallel; they did not run multiple "goroutines" on separate CPU cores at the same time. It was only in like 2009 that people started to do CML in parallel. I do not know if this late parallelism has a practical impact on the viability of CML.

ok go

What is the relationship of CML to Go? Specifically, is CML more expressive than Go? (I assume the reverse is not the case, but that would also be an interesting result!)

There are a few languages that only allow you to select over message receives (not sends), but Go's select doesn't have this limitation, so that's not a differentiator.

Some people say that it's nice to have events as the common denominator, but I don't get this argument. If the only event under consideration is message send or receive over a channel, events + choose + sync is the same in expressive power as a built-in select, as far as I can see. If there are other events, then your runtime already has to support them either way, and something like (let ((ch (make-channel))) (spawn-fiber (lambda () (put-message ch exp))) (get-message ch)) should be sufficient for any runtime-supported event in exp, like sleeps or timeouts or thread joins or whatever.

To me it seems like Go has made the right choices here. I do not see the difference, and that's why I wrote all this, is to be shown the error of my ways. Choosing channels, send, receive, and select as the primitives seems to have the same power as SML events.

Let this post be a pentagram on the floor, then, to summon the CML cognoscenti. Well-actuallies are very welcome; hit me up in the comments!

Syndicated 2016-09-20 21:33:41 from wingolog

19 Sep 2016 iddekingej   » (Observer)

I released new version of bdgui, a block device information GUI:
found here

18 Sep 2016 sye   » (Journeyer)

Song of Foresight 謝選駿三部詩集

Xie, Xuanjun Three Collections of Poems by Age 26

出版說明 1980年代的學者、二十一世紀 的思想者,謝選駿在1970年代前 後(1967年──1980年)寫下了 這裏的三百六十餘首詩歌。這些 早期的詩行先於其學術和思想, 卻是其學術與思想的雛形,作為 「未與社會環境同化之前的靈魂 之作」,堪稱《先覺之歌》。

eBook .pdf









syndicated from

Syndicated 2016-09-18 17:35:00 (Updated 2016-09-18 17:36:44) from badvogato

17 Sep 2016 glyph   » (Master)

Hitting The Wall

I’m an introvert.

I say that with a full-on appreciation of just how awful thinkpieces on “introverts” are.

However, I feel compelled to write about this today because of a certain type of social pressure that a certain type of introvert faces. Specifically, I am a high-energy introvert.

Cementing this piece’s place in the hallowed halls of just awful thinkpieces, allow me to compare my mild cognitive fatigue with the plight of those suffering from chronic illness and disability1. There’s a social phenomenon associated with many chronic illnesses, “but you don’t LOOK sick”, where well-meaning people will look at someone who is suffering, with no obvious symptoms, and imply that they really ought to be able to “be normal”.

As a high-energy introvert, I frequently participate in social events. I go to meet-ups and conferences and I engage in plenty of public speaking. I am, in a sense, comfortable extemporizing in front of large groups of strangers.

This all sounds like extroverted behavior, I know. But there’s a key difference.

Let me posit two axes for personality type: on the X axis, “introvert” to “extrovert”, and on the Y, “low energy” up to “high energy”.

The X axis describes what kinds of activities give you energy, and the Y axis describes how large your energy reserves are for the other type.

Notice that I didn’t say which type of activity you enjoy.

Most people who would self-describe as “introverts” are in the low-energy/introvert quadrant. They have a small amount of energy available for social activities, which they need to frequently re-charge by doing solitary activities. As a result of frequently running out of energy for social activities, they don’t enjoy social activities.

Most people who would self-describe as “extroverts” are also on the “low-energy” end of the spectrum. They have low levels of patience for solitary activity, and need to re-charge by spending time with friends, going to parties, etc, in order to have the mental fortitude to sit still for a while and focus. Since they can endlessly get more energy from the company of others, they tend to enjoy social activities quite a bit.

Therefore we have certain behaviors we expect to see from “introverts”. We expect them to be shy, and quiet, and withdrawn. When someone who behaves this way has to bail on a social engagement, this is expected. There’s a certain affordance for it. If you spend a few hours with them, they may be initially friendly but will visibly become uncomfortable and withdrawn.

This “energy” model of personality is of course an oversimplification - it’s my personal belief that everyone needs some balance of privacy and socialization and solitude and eventually overdoing one or the other will be bad for anyone - but it’s a useful one.

As a high-energy introvert, my behavior often confuses people. I’ll show up at a week’s worth of professional events, be the life of the party, go out to dinner at all of them, and then disappear for a month. I’m not visibily shy - quite the opposite, I’m a gregarious raconteur. In fact, I quite visibly enjoy the company of friends. So, usually, when I try to explain that I am quite introverted, this claim is met with (quite understandable) skepticism.

In fact, I am quite functionally what society expects of an “extrovert” - until I hit the wall.

In endurance sports, one is said to “hit the wall” at the point where all the short-term energy reserves in one’s muscles are exhausted, and there is a sudden, dramatic loss of energy. Regardless, many people enjoy endurance sports; part of the challenge of them is properly managing your energy.

This is true for me and social situations. I do enjoy social situations quite a bit! But they are nevertheless quite taxing for me, and without prolonged intermissions of solitude, eventually I get to the point where I can no longer behave as a normal social creature without an excruciating level of effort and anxiety.

Several years ago, I attended a prolonged social event2 where I hit the wall, hard. The event itself was several hours too long for me, involved meeting lots of strangers, and in the lead-up to it I hadn’t had a weekend to myself for a few weeks due to work commitments and family stuff. Towards the end I noticed I was developing a completely flat affect, and had to start very consciously performing even basic body language, like looking at someone while they were talking or smiling. I’d never been so exhausted and numb in my life; at the time I thought I was just stressed from work.

Afterwards though, I started having a lot of weird nightmares, even during the daytime. This concerned me, since I’d never had such a severe reaction to a social situation, and I didn’t have good language to describe it. It was also a little perplexing that what was effectively a nice party, the first half of which had even been fun for me, would cause such a persistent negative reaction after the fact. After some research, I eventually discovered that such involuntary thoughts are a hallmark of PTSD.

While I’ve managed to avoid this level of exhaustion before or since, this was a real learning experience for me that the consequences of incorrectly managing my level of social interaction can be quite severe.

I’d rather not do that again.

The reason I’m writing this, though3, is not to avoid future anxiety. My social energy reserves are quite large enough, and I now have enough self-knowledge, that it is extremely unlikely I’d ever find myself in that situation again.

The reason I’m writing is to help people understand that I’m not blowing them off because I don’t like them. Many times now, I’ve declined or bailed an invitation from someone, and later heard that they felt hurt that I was passive-aggressively refusing to be friendly.

I certainly understand this reaction. After all, if you see someone at a party and they’re clearly having a great time and chatting with everyone, but then when you invite them to do something, they say “sorry, too much social stuff”, that seems like a pretty passive-aggressive way to respond.

You might even still be skeptical after reading this. “Glyph, if you were really an introvert, surely, I would have seen you looking a little shy and withdrawn. Surely I’d see some evidence of stage fright before your talks.”

But that’s exactly the problem here: no, you wouldn’t.

At a social event, since I have lots of energy to begin with, I’ll build up a head of steam on burning said energy that no low-energy introvert would ever risk. If I were to run out of social-interaction-juice, I’d be in the middle of a big crowd telling a long and elaborate story when I find myself exhausted. If I hit the wall in that situation, I can’t feel a little awkward and make excuses and leave; I’ll be stuck creepily faking a smile like a sociopath and frantically looking for a way out of the converstaion for an hour, as the pressure from a large crowd of people rapidly builds up months worth of nightmare fuel from my spiraling energy deficit.

Given that I know that’s what’s going to happen, you won’t see me when I’m close to that line. You won’t be in at my desk when I silently sit and type for a whole day, or on my couch when I quietly read a book for ten hours at a time. My solitary side is, by definition, hidden.

But, if I don’t show up to your party, I promise: it’s not you, it’s me.

  1. In all seriousness: this is a comparison of kind and not of degree. I absolutely do not have any illusions that my minor mental issues are a serious disability. They are - by definition, since I do not have a diagnosis - subclinical. I am describing a minor annoyance and frequent miscommunication in this post, not a personal tragedy. 

  2. I’ll try to keep this anonymous, so hopefully you can’t guess - I don’t want to make anyone feel bad about this, since it was my poor time-management and not their (lovely!) event which caused the problem. 

  3. ... aside from the hope that maybe someone else has had trouble explaining the same thing, and this will be a useful resource for them ... 

Syndicated 2016-09-17 21:18:00 from Deciphering Glyph

16 Sep 2016 olea   » (Master)

Publicada la vieja web de TLDP-ES/LuCAS en Github

Desde hace unos buenos años CICA ha tenido la gentileza de alojar el servidor principal del viejo TLDP-ES que los linuxeros más fogueados recordarán como Fue imperativo migrar el servicio desde el momento en el que mantenimiento de los sistemas de Hispalinux empezó a colapsar y tuve suerte de que CICA nos ofreciera una VM pequeñita donde alojar lo que se pudo salvar de la web. Claro que ya no era una web importante, pero me dolía mucho dejar que desapareciera el testigo de toda una época y el fruto del trabajo de muchas personas durante muchísimas horas. Tampoco me gusta ir dejando enlaces rotos en la web si puedo evitarlo.

En este mismo proceso de «arqueología» hace ya tiempo que pensé en publicar otro repositorio que usábamos para el mantenimiento de TLDP-ES, el control de versiones con el que queríamos facilitar el trabajo de los voluntarios. Así creé este repo en Github: Ahora, de la misma manera me he propuesto publicar igualmente el contenido de la web que ahora está disponible también en Github:

Prácticamente no es más que un pequeño ejercicio de nostalgia, pero en fin, ahí queda.

Gracias a todos los que hicisteis posible ese gran servicio que fue TLDP-ES/LuCAS. Definitivamente creo que fue algo grande.

Syndicated 2016-09-15 22:00:00 from Ismael Olea

14 Sep 2016 sye   » (Journeyer)


泰戈爾《零散的鸟语》葉氏(yezi)  一片冰心 滿紙馮唐 =  造化?翻异 ?


现世里孤孤单单的小混蛋啊  混到我的文字里留下你们的造孽?  (yezi)

大千世界在情人面前 解开紗丽 绵长如舌吻 纤细如诗行 (yezi)

如果因为思念太阳 而终日哭泣 星星也将离你而去

新的一天 我坐在窗前 世界如过客 在我面前走过 停了 点头 又走了

你无法看到真身  你能看到的多是自生的印象 (yezi)

端莊的美 在敬爱中 自作的秀 在镜愛里。(yezi)

不要为了收集花朵而留步 花朵也盛开在你前头?

飞黄腾达的人 号称有如神佑 神羞愧地低下了头?

鸟觉得它把鱼叼离海面 是积德行善

一个太忙着做好事的人 发现自己没时间做好人

当我无所事事时 请让我在深深的从容中 无所事事 仿佛水波不兴的岸边的漫漫长夜?
姑娘 你的简单仿佛湖水的碧蓝 彰显真理的绚烂

因为失去的爱情 生命变得更丰盈?

别说,“又早晨了” 别用一个早已用过的名字 见每个早晨如同初相见 如见一个还没有名字的孩子?

当我们爱这个世界的时候 我们才活在这个世界上 人变成禽兽时 禽兽不如

that i exist is a perpetual surprise which is life
我的存在無外與一个永恒的问号化梵。 (yezi)

Sorrow is hushed into peace in my heart like the evening among the silent trees. 痛在我心里渐渐平和/ 如夜被屏息的深林哄睡。(yezi)

Most Like an Arch This Marriage
John Ciardi

Most like an arch - an entrance which upholds
and shores the stone-crush up the air like lace.
Mass made idea, and idea held in place.
A lock of time. Inside half-heaven unfolds.
Most like an arch - two weaknesses that lean
into a strength. Two fallings become firm.
Two joined abeyances become a term
naming the fact that teaches fact to mean.
Not quite that? Not much less. World as it is,
what's strong and separate falters. All I do
at piling stone on stone apart from you
is roofless around nothing. Till we kiss
I am no more than upright and unset.
It is by falling in and in we make
the all-bearing point, for one another's sake,
in faultless falling, raised by our own weight.
如彼拱门 此桩婚姻
如彼拱门 横空似练
磐石叠立 一门洞天
以物喻理 理在其间
时不逝兮 内展穹天
如彼拱门 俩弱成强
相依偎兮 双坠弥坚
浪迹之侣 终成眷属
宣彼神迹 彰其美意
有念如斯 当无大谬
独强难存 天理如斯
我日垒石 盼伊相随
无你之空 如厦无顶
无获爱吻 吾乃鄙夫
相濡以沫 在彼深渊
无私相爱 我为卿狂
纵身跃下 永结连理

Children's Day and Father's Day, where has the time gone? - ResearchGate. Available from: [accessed Sep 14, 2016].
syndicated from

Syndicated 2016-09-14 19:30:00 (Updated 2016-09-14 19:30:13) from badvogato

14 Sep 2016 marnanel   » (Journeyer)

Miniver Cheevy

by Edwin Arlington Robinson

Miniver Cheevy, child of scorn,
Grew lean while he assailed the seasons;
He wept that he was ever born,
And he had reasons.

Miniver loved the days of old
When swords were bright and steeds were prancing;
The vision of a warrior bold
Would set him dancing.

Miniver sighed for what was not,
And dreamed, and rested from his labors;
He dreamed of Thebes and Camelot,
And Priam’s neighbors.

Miniver mourned the ripe renown
That made so many a name so fragrant;
He mourned Romance, now on the town,
And Art, a vagrant.

Miniver loved the Medici,
Albeit he had never seen one;
He would have sinned incessantly
Could he have been one.

Miniver cursed the commonplace
And eyed a khaki suit with loathing;
He missed the mediæval grace
Of iron clothing.

Miniver scorned the gold he sought,
But sore annoyed was he without it;
Miniver thought, and thought, and thought,
And thought about it.

Miniver Cheevy, born too late,
Scratched his head and kept on thinking;
Miniver coughed, and called it fate,
And kept on drinking.

This entry was originally posted at Please comment there using OpenID.

Syndicated 2016-09-14 15:49:26 from Monument

14 Sep 2016 sye   » (Journeyer)

whose head is on the plate?

syndicated from

Syndicated 2016-09-14 14:56:00 (Updated 2016-09-14 14:57:51) from badvogato

14 Sep 2016 louie   » (Master)

Copyleft and data: databases as poor subject

In my last post, I wrote about how database law is a poor platform to build a global public copyleft license on top of.  Of course, whether you can have copyleft in data only matters if copyleft in data is a good idea. I no longer think that is the case, because the way databases are used in the wild makes copyleft impractical even for good-faith users who want to share back. As with the last post, when we compare software (where copyleft has worked reasonably well) to databases, we’ll see that databases are different in very significant ways that impact whether or not we can expect copyleft (and to some extent other standardized public licenses) to work.

Card Puncher from the 1920 US Census.
Card Puncher from the 1920 US Census.

How works are combined

In software copyleft, the most common scenarios to evaluate are merging two large programs, or copying one small file into a much larger program. In this scenario, understanding how licenses work together is fairly straightforward: you have two licenses. If they can work together, great; if they can’t, then you don’t go forward, or, if it matters enough, you change the license on your own work to make it work.

In contrast, data is often combined in three ways that are significantly different than software:

  • Scale: Instead of a handful of projects, data is often combined from hundreds of sources, so doing a license conflicts analysis if any of those sources have conflicting obligations (like copyleft) is impractical. Peter Desmet did a great job of analyzing this in the context of an international bio-science dataset, which has 11,000+ data sources.
  • Boundaries: There are some cases where hundreds of pieces of software are combined (like operating systems and modern web services) but they have “natural” places to draw a boundary around the scope of the copyleft. Examples of this include the kernel-userspace boundary (useful when dealing with the GPL and Linux kernel), APIs (useful when dealing with the LGPL), or software-as-a-service (where no software is “distributed” in the classic sense at all). As a result, no one has to do much analysis of how those pieces fit together. In contrast, no natural “lines” have emerged around databases, so either you have copyleft that eats the entire combined dataset, or you have no copyleft. ODbL attempts to manage this with the concept of “independent” databases and produced works, but after this recent case I’m not sure even those tenuous attempts hold as a legal matter anymore.

  • Authorship: When you combine a handful of pieces of software, most of the time you also control the licensing of at least one of those pieces of software, and you can adjust the licensing of that piece as needed. (Widely-used exceptions to this rule, like OpenSSL, tend to be rare.) In other words, if you’re writing a Linux kernel driver, or a WordPress theme, you can choose the license to make sure it complies. Not necessarily the case in data combinations: if you’re making use of large public data sets, you’re often combining many other data sources where you aren’t the author. So if some of them have conflicting license obligations, you’re stuck.

How attribution is managed

Attribution in large software projects is painful enough that lawyers have written a lot on it, and open-source operating systems vendors have built somewhat elaborate systems to manage it. This isn’t just a problem for copyleft: it is also a problem for the supposedly easy case of attribution-only licenses.

Now, again, instead of dozens of authors, often employed by the same copyright-owner, imagine hundreds or thousands. And imagine that instead of combining these pieces in basically the same way each time you build the software, imagine that every time you have a different query, you have to provide different attribution data (because the relevant slices of data may have different sources or authors). That’s data!

The least-bad “solution” here is to (1) tag every field (not just data source) with licensing information, and (2) have data-reading software create new, accurate attribution information every time a new view into the data is created. (I actually know of at least one company that does this internally!) This is not impossible, but it is a big burden on data software developers, who must now include a lawyer in their product design team. Most of them will just go ahead and violate the licenses instead, pass the burden on to their users to figure out what the heck is going on, or both.

Who creates data

Most software is either under a very standard and well-understood open source license, or is produced by a single entity (or often even a single person!) that retains copyright and can adjust that license based on their needs. So if you find a piece of software that you’d like to use, you can either (1) just read their standard FOSS license, or (2) call them up and ask them to change it. (They might not change it, but at least they can if they want to.) This helps make copyleft problems manageable: if you find a true incompatibility, you can often ask the source of the problem to fix it, or fix it yourself (by changing the license on your software).

Data sources typically can’t solve problems by relicensing, because many of the most important data sources have different structures. In particular:

  • Governments: Lots of data is produced by governments, where licensing changes can literally require an act of the legislature. So if you do anything that goes against their license, or two different governments release data under conflicting licenses, you can’t just call up their lawyers and ask for a change.
  • Community collaborations: The biggest open software relicensing that’s ever been done (Mozilla) required getting permission from a few thousand people. Successful online collaboration projects can have 1-2 orders of magnitude more contributors than that, making relicensing is hard. Wikidata solved this the right way: by going with CC0.

So what to do?

So if data is legally hard to build a license for, and the nature of data makes copyleft (or even attribution!) hard, what to do? I’ll go into that in my next post.

Syndicated 2016-09-14 13:00:42 from Blog – Luis Villa: Open Law and Strategy

13 Sep 2016 marnanel   » (Journeyer)


[suicide mention]

In counselling today we started going over the timeline of my life I drew up. We only got up to the start of sixth form, and about my early suicidal ideation, and how I set myself free by giving up having ambitions. We'll carry on next time, which means we're five sessions in and still haven't finished talking about why I'm there!

This entry was originally posted at Please comment there using OpenID.

Syndicated 2016-09-13 20:43:38 from Monument

13 Sep 2016 benad   » (Apprentice)

HTTPS, the New Standard

The “web” used to be simple. A simple plain-text protocol (HTTP) and a simple plain-text markup format (HTML). Sadly, after 20 years, things are not as simple anymore.

Nowadays, it is commonplace for ISPs to inject either “customer communications” or downright advertisement into unencrypted HTTP communications. Using web sites from an unencrypted or “open” WiFi is often a vector for a malicious user to inject viruses into any web page, let alone steal passwords and login tokens from popular web sites. On a larger scale, governments now have the capability to do deep packet inspection to systematically either censor or keep a record of all web traffic.

So, indirectly, my simple, unencrypted web site can become dangerous.

Buying an SSL certificate (actually TLS) used to be something both expensive and difficult to set up. Now with the help of “Let’s Encrypt”, any web site can be set up to use HTTPS, for free. Sure, the certificate merely says that HTTPS traffic came from the real web site, but that’s good enough. And for a personal web site, there is limited value in buying one of those expensive “Extended Validation” certificates.

This is why my web site is now using HTTPS. In fact, HTTPS only, though by doing so I’ve had to cut off browsers like Internet Explorer 6, since they do not support secure cryptographic algorithms anymore. It breaks my rule of graceful degradation, but ultimately the security of people that visit my web site is more important than supporting their 15-year old web browser.

What is sad with this though is that as older cryptographic algorithms become obsolete, so too are machines too old to support the new algorithms, let alone those “Internet appliances” that aren’t supported anymore. This means that, unlike the original idea of simple, plain-text protocols, web browsers have to be at most a decade old to be usable.

And still, HTTP with TLS 1.2 is merely “good enough”. There are simply too many root certificates installed in our systems, with many from states that could hijack secure connections to popular site by maliciously create their own certificates for them. HTTP/2 is a nice update, but pales to modern techniques used in QUIC. Considering that even today only a fraction of the Internet is using IPv6, it may take another decade before QUIC becomes commonplace, let alone HTTP/2.

For now, enjoy the green lock displayed on my web site!

Implementation Notes

The site is an excellent starting point to configure your web server for maximum security. I also used the Qualys SSL Labs SSL test service to verify that my server has the highest security grade (A+).

I was also tempted to move from Apache to Caddy, as Caddy supports HTTP/2, QUIC and even Hugo (what I use for the blog section of this site), but then I remembered that I specifically chose Apache on Debian for its long-term, worry-free security updates, compared to a bleeding edge web server.

Syndicated 2016-09-13 01:15:00 from Benad's Blog

12 Sep 2016 marnanel   » (Journeyer)

Alcoholic hat

In a waiting room. Marn is wandering around listening to music.

Woman in top hat: (something)
Marn (removes headphones) Sorry?
W: I said, hi!
M: Oh! Hi. Awesome hat, by the way.
W: Alcoholic.
M: Your hat is alcoholic?
W: No, me. I've been in jail. I have DTs.
M: Oh, I'm sorry.
W: Don't be. It's a self-inflicted injury.
M: (randomly) Well, what isn't, in the end?
(W smiles and wanders off while M is still considering whether all injuries are self-inflicted by virtue of the will to live)

UPDATE: W returned and started telling me her life story. She says I'm goodlooking and that she'd go out with me. She also showed me several of her tattoos. On enquiring as to whether I'm unattached, she looked crestfallen, and then said that if that ever changes I should contact her. She appears to be entirely serious. During part of the story about school bullying she abruptly got up and went outside to smoke, leaving me to look after her bag. When I had to leave, she hadn't returned, and I couldn't find her outside, so I handed in the bag at reception. Reception said yes, they knew her quite well.

This entry was originally posted at Please comment there using OpenID.

Syndicated 2016-09-12 17:37:00 (Updated 2016-09-12 19:37:55) from Monument

12 Sep 2016 louie   » (Master)

Copyleft and data: database law as (poor) platform

tl;dr: Databases are a very poor fit for any licensing scheme, like copyleft, that (1) is intended to encourage use by the entire world but also (2) wants to place requirements on that use. This is because of broken legal systems and the way data is used. Projects considering copyleft, or even mere attribution, for data, should consider other approaches instead.

Hollerith Census Machine Dials, by Marcin Wichary, under CC BY 2.0
The original database: Hollerith Census Machine Dials, by Marcin Wichary, under CC BY 2.0.

I’ve been a user of copyleft/share-alike licenses for a long time, and even helped draft several of them, but I’ve come around to the point of view that copyleft is a poor fit for data. Unfortunately, I’ve been explaining this a lot lately, so I want to explain why in writing. This first post will focus on how the legal system around databases is broken. Later posts will focus on how databases are hard to license, and what we might do about it.

FOSS licensing, and particularly copyleft, relies on legal features database rights lack

Defenders of copyleft often have to point out that copyleft isn’t necessarily anti-copyright, because copyleft depends on copyright. This is true, of course, but the more I think about databases and open licensing, the more I think “copyleft depends on copyright” almost understates the case – global copyleft depends not just on “copyright”, but on very specific features of the international copyright system which database law lacks.

To put it in software terms, the underlying legal platform lacks the features necessary to reliably implement copyleft.

Consider some differences between the copyright system and database law:

  • Maturity: Copyright has had 100 or so years as an international system to work out kinks like “what is a work” or “how do joint authors share rights?” Even software copyright law has existed for about 40 years. In contrast, database law in practice has existed for less  than 20 years, pretty much all of that in Europe, and I can count all the high court rulings on it on my fingers and toes. So key terms, like “substantial”, are pretty hard to define-courts and legislatures simply haven’t defined, or refined, the key concepts. This makes it very hard to write a general-purpose public license whose outcomes are predictable.
  • Stability: Related to the previous point, copyright tends to change incrementally, as long-standing concepts are slowly adapted to new circumstances. (The gradual broadening of fair use in the Google era is a good example of this.) In contrast, since there are so few decisions, basically every decision about database law leads to upheaval. Open Source licenses tend to have a shelf-life of about ten years; good luck writing a database license that means the same thing in ten years as it does today!

  • Global nature: Want to share copyrighted works with the entire world? Copyright (through the Berne Convention) has you covered. Want to share a database? Well, you can easily give it away to the whole world (probably!), but want to reliably put any conditions on that sharing? Good luck! You’ve now got to write a single contract that is enforceable in every jurisdiction, plus a license that works in the EU, Japan, South Korea, and Mexico. As an example again, “substantial” – used in both ODbL and CC 4.0 – is a term from the EU’s Database Directive, so good luck figuring out what it means in a contract in the US or within the context of Japan’s database law.

  • Default rights: Eben Moglen has often pointed out that anyone who attacks the GPL is at a disadvantage, because if they somehow show that the license is legally invalid, then they get copyright’s “default”: which is to say, they don’t get anything. So they are forced to fight about the specific terms, rather than the validity of the license as a whole. In contrast, in much of the world (and certainly in the US), if you show that a database license is legally invalid, then you get database’s default: which is to say, you get everything. So someone who doesn’t want to follow the copyleft has very, very strong incentives to demolish your license altogether. (Unless, of course, the entire system shifts from underneath you to create a stronger default – like it may have in the EU with the Ryanair case.)

With all these differences, what starts off as hard (“write a general-purpose, public-facing license that requires sharing”) becomes insanely difficult in the database context. Key goals of a general-purpose, public license – global, predictable, reliable – are very hard to do.

In  upcoming posts, I’ll try to explain why, even if it were possible to write such a license from a legal perspective, it might not be a good idea because of how databases are used.

Syndicated 2016-09-12 17:22:31 from Blog – Luis Villa: Open Law and Strategy

16 Sep 2016 olea   » (Master)

Acceso VPN a la red de CICA usando Fedora

Esta es una entrada de servicio público. Si eres usuario de la VPN de CICA y usas un linux moderno como Fedora (23 en este caso) puede serte de utilidad esta entrada.

CICA usa OpenVPN. Lo ideal sería poder configurar el acceso con NetworkManager, que dispone de la funcionalidad de openvpn, pero en ninguna de mis pruebas he conseguido una configuración operativa, creo que porque NM espera que el certificado de usuario sea emitido por la misma CA que la configuración de la red en cuestión, que no es el caso. El caso es que tras varias pruebas he conseguido conectar desde la CLI contando con la ayuda del CAU de Sistemas de CICA.

Básicamente necesitas:

dev tun
proto udp
remote 1194
resolv-retry infinite
user nobody
group nobody
ca /home/usuario/cica-vpn/TERENASSL2_PATH.pem
pkcs12 /home/usuario/.X509/FNMTClase2CA.p12
verify-x509-name name
cipher AES-128-CBC
verb 3

Para poder conectar basta lanzar algo parecido a:

  sudo /usr/sbin/openvpn --config /home/usuario/cica-vpn/cica-config.ovpn

Entonces openvpn te solicitará tres datos:

  • usuario de la red CICA
  • contraseña asociada
  • contraseña de acceso a tu certificado X509 emitido por FNMT.

Por dejarlo completamente claro

  • /home/usuario/cica-vpn/TERENASSL2_PATH.pem es el certificado que descargas de
  • /home/usuario/.X509/FNMTClase2CA.p12 es tu certificado de la FNMT-RCM exportado probablemente desde tu navegador y protegido por una contraseña.

Que ojalá os sirva.

Syndicated 2016-09-15 22:00:00 from Ismael Olea

8 Sep 2016 marnanel   » (Journeyer)

dentist talk

[teeth, dentistry, violence]

I have a wonderfully chatty dentist. Recently we have discussed:
1) the problems of being a dentist in Pakistan. Apparently some people's first resort for toothache is an amateur tooth puller. If you're his first patient of the day, you have to wait until the second patient turns up. Then the second patient holds the first patient down, while the tooth puller attaches string to your tooth and pulls very hard. When most of the tooth is removed, the first patient gets up and punches the second patient for holding him down. After all this, the dentist has to fix all the damage.

2) the political situation in Burma, and why the news here doesn't report it much, and how come westerners think Buddhists are never politically violent.

3) why Camden, New Jersey is such a terrifying place.

This entry was originally posted at Please comment there using OpenID.

Syndicated 2016-09-08 12:35:53 from Monument

7 Sep 2016 philiph   » (Journeyer)

6 Sep 2016 iddekingej   » (Observer)

I'm writing a GUI which displays information on block device (found here).
It was developed for KDE v5, but after some changes the same source tree can also compile under KDE4!.

6 Sep 2016 cbbrowne   » (Master)

Speaking on PostgreSQL

I’m doing a talk on Sept 13th at GTALUG GTALUG Sept 2016 where I’ll be talking on things new in PostgreSQL 9.5 (released in January 2016) and upcoming in 9.6.

Here’s a copy of the material…
PostgreSQL New Stuff

Syndicated 2016-09-06 15:37:25 from

6 Sep 2016 CaptainNemo   » (Journeyer)

Hi, future me. Don't be a slacker and wait 3 and a half years before updating your blog again.

Today is a Tuesday.

I also just realized that the .tk domain name that I have listed is now some form of Japanese site. Oh well. I guess I shall change that.

5 Sep 2016 sye   » (Journeyer)


2016-03-27 | 信息来源: | 原作者: | 查看:520
摘要: 中国的古代诗歌题材,一向以中原文明及其周边地区的素材为主。近代以来,中国突然发现自己必须面临三千年未有之大变局。外面的那个陌生新世界,对古老的华夏文明从政治、经济和科技等几乎所有领域都发起了剧烈冲击。即使是在最为坚固的文化壁垒上,亦开始有了稍稍的撬动。

syndicated from

Syndicated 2016-09-05 12:38:00 (Updated 2016-09-05 12:38:25) from badvogato

5 Sep 2016 marnanel   » (Journeyer)


KIT: And how are things with you?
PRACTICE NURSE: Oh, the usual. Busy, busy, busy. Though I don't mind busy-- it's when things are over-busy, when I'm running late...
KIT: Busy good, stressed bad?
PN: Right.
MARN: It's interesting how the sense has shifted. If you look at how Spenser uses it in the "Fairie Queene", he's using it in your sense of "over-busy". Which is odd, because words usually become more negative over time...
KIT: Marn? If we stay here talking about etymology, she'll be running late and then she'll get stressed.
MARN: Oh yeah. Sorry.

This entry was originally posted at Please comment there using OpenID.

Syndicated 2016-09-05 11:08:19 from Monument

5 Sep 2016 philiph   » (Journeyer)

Why You Should Change Your Language

My thoughts on why we should change our language

Syndicated 2016-09-05 03:30:26 from HollenbackDotNet

5 Sep 2016 philiph   » (Journeyer)

Home Page

update link to wayback machine

Syndicated 2016-09-05 02:11:08 from HollenbackDotNet

4 Sep 2016 sye   » (Journeyer)

Harris' footnote here gives a rare glimpse of his social philosophy, which was for him a matter of deeply committed practice and not a merely theoretical espousal: "The pitting of one linguistic tool against another has in it something of the absolutist postwar temper of social institutions, but is not required by the character and range of these tools of analysis." It is entirely in keeping with his views, for example, that he did not seek to impose them upon others. The absolutism Harris mentions here is also seen in the recurring demand for `the' `correct' grammar of `the' language. An early instance of this is the controversy over non-uniqueness in phonology, alluded to earlier, and Householder's famous (and oversimplifying) dichotimization of `God's Truth' linguists vs. `hocus-pocus' linguists (see Hymes & Fought 1981:150- 151). Harris admitted different, non-unique descriptions by application of alternative distributional procedures, so long as, given the primitive contrasts, "the defining of the elements and the stating of the relations among them be based on distribution, and be unambiguous, consistent and subject to check" (1951a:9). "In any case, there is no harm in all this non-uniqueness, since each system can be mapped onto the others, so long as any special conditions are explicit and measurable" (1954:5; Harris [1951a:32] gives an earlier formulation). The notion that there is some sort of harm in non-uniqueness reflects a conception that because the ideal of science is to give a "correct" description eventually, failure to find "the correct" description at every stage constitutes failure to be scientific. Hymes & Fought (1981:148- 149) identify this character in Trager's insistance that one start with phonetic data and proceed in rigid, stepwise fashion, never mixing levels, in contrast with Harris' much more flexible (though no less rigorous) approach. 31 Harris' footnote here reads: Because of the mass of idiomatic and quasi-idiomatic expressions in language, each type of description has to treat of various special small categories of words, and in some cases even of unique words. But in the case of string and transformational analyses, and less adequately in the case of constituent analysis, the statements for aberrant and idiomatic material can be made in the terms of the given description (constituent, string, or transformation) or in limited extension or weakenings of the rules of that description. In these analyses, the treatment of difficult material does not require us to go completely outside the terms of the given description into the terms of another or into the metalanguage. In the elided text is a slightly different statement of the footnoted passage: "Each of these properties can be used as the basis for a description of the whole language because the effects of the other properties can be brought in as restrictions on the chosen property". In this formulation, the import of added restrictions is emphasized. 32 Contrast this with the long-running controversies over the generative capacity of one or another formal metalanguage, construed as systems of generative rules for language.
syndicated from

Syndicated 2016-09-04 16:22:00 (Updated 2016-09-04 16:22:19) from badvogato

4 Sep 2016 dyork   » (Master)

Do you use Docker Swarm? If so, how?

Docker swarm page

Do you use Docker Swarm? If so, how?  I have been incredibly intrigued ever since reading about the release of Docker 1.12 earlier this week.

As Benjamin Wooten writes, now with only two commands:

  • We get a deployment platform which gives us resilience, robustness, failover and fault tolerance for our containers.
  • We get load balancing and a routing mesh which makes service discovery simple.
  • We can use our server resources more efficiently with various allocation strategies.
  • We can scale containers up and down with one command.
  • Communications within the cluster are secured with dynamically rotating certificates.

Ever since, I have been reading more, such as this piece about setting up a swarm with Raspberry Pi systems.

Now I am curious… how are any of you reading this using Docker Swarm? What are doing with it?  I am intrigued and curious to do more…

Syndicated 2016-09-04 01:19:11 from Code.DanYork.Com

3 Sep 2016 marnanel   » (Journeyer)

I don't like Thursdays

filk: "I Don't Like Mondays" by the Boomtown Rats.

now the silicon chip inside your ship
gets switched to overload
and nobody's gonna leave the Earth today
you're gonna make the place explode
and your latest verse is a Vogon curse
with a pain that you can't resolve
you can see no reasons
cos there are no reasons
what reason do you need to evolve?

Tell me why. I don't like Thursdays
Tell me why. I don't like Thursdays
Tell me why. I don't like Thursdays
I want to shoot the planet down.

well it's not too far to the local star
where the plans were on display
so your sympathy for their apathy
just blows them all away
it's okay with you
cos you've just gone through
a painful love affair
you can see no reason
cos there is no reason
what reason do you need to care?

Tell me why. I don't like Thursdays
Tell me why. I don't like Thursdays
Tell me why. I don't like Thursdays
I want to shoot the planet down.

six billion folk go up in smoke
and a trillion angry mice.
you were bought and bribed
it was all prescribed
by the man who paid your price:
there's a secret link
to a scheming shrink
but Halfrunt's just this guy
who has every reason
to destroy the reason--
what reason do you need to die?

Tell me why. I don't like Thursdays
Tell me why. I don't like Thursdays
Tell me why. I don't like Thursdays
I want to shoot the planet down.

This entry was originally posted at Please comment there using OpenID.

Syndicated 2016-09-03 01:22:05 (Updated 2016-09-03 01:32:32) from Monument

2 Sep 2016 Pizza   » (Master)

Progress with the Mitsubishi CP-K60DW-S and Kodak 305

As mentioned earlier, the Kodak 305 is a rebadged variant of the popular Mitsubishi CP-K60DW-S. Both models, along with their siblings (ie the CP-D70/D707/D80 and the Fuji ASK300), utilize a print engine that requires the host system to perform thermal compensation and other processing typically handled within the printer itself.

Not knowing how those algorithms work, these printers haven't been terribly useful under Linux, with the only prospect being a painful reverse-engineering of the Windows drivers.

A couple of months ago, Mitsubishi released a x86 binary-only CUPS driver for the D70 and D707 models. Other models weren't supported, and naturally this wouldn't work on other CPU architechures. Still, it provided a much more attractive reverse-engineering target, and as my interest came and went, I made slow progress.

Another wrinkle is that the CP-K60DW-S and Kodak 305 are slightly different from the others, to the point where my backend code was unable to print at all -- the printer communicates fine until the image data is sent over, and then nothing. All attempts to diagnose this further hit a dead end. That said, due to the unknown image processing algorithms, it was largely an academic exercise anyway.

Fast forward to a week ago. I lowballed a bid for a used Kodak 305 along with some unused media, in an "as-is, no warranty or returns" state. The printer arrived two days ago, and I got lucky; not only did the printer work, but it had about 140 prints worth of remaining media, far more than enough to get things going. An added bonus is that the printer had only logged 587 prints in total, a pittance for this kind of printer.

I quickly found and fixed a small pile of bugs, but successful printing still eluded me. I could find no differences in the data being sent between Windows vs Linux. Lacking a true hardware USB sniffer, I turned my attention to the enumeration to see if anything different was going on there.. and in the process I discovered something unexpected.

It turns out that these two printers enumerated differently under Linux than under Windows. Under Windows, only two endpoints were reported, one each for bulk input and output. However, under Linux, there were three endpoints; two for output and one for input. It seems that the backend was attaching to the second output endpoint, which accepted all commands, but not the actual image data needed to submit prints.

I'm at a loss to explain why the device would enumerate differently under Windows vs Linux; perhaps there's somthing funky going on behind the scenes and usbpcap only saw "cooked" data based on the driver's needs, whereas Linux's view more accurately represented the actual negotiation?

In any case, the backend now binds to the first pair of endpoints it finds, and can now print on all models of the printer family -- but the output is still unusably awful.

That success enables me to resume my reverse-engineering efforts, with an actual printer to test my experiments upon. Fortunately, the printers all use the same algorithms, differing only in a couple of tabular (CSV-based) data files. Inferring the internal data structures based on how the data flows into the system will be my next step.

Things are looking up, and perhaps sooner rather than later Mitsubishi's current printer family will be fully usable with Free Software. It's a shame this effort is even necessary, but I do love a challenge!

Syndicated 2016-09-02 13:22:23 from I Dream of Rain (free_software)

31 Aug 2016 marnanel   » (Journeyer)

Oolon Colluphid's triology, now in Pelican

This entry was originally posted at Please comment there using OpenID.

Syndicated 2016-08-31 22:19:40 from Monument

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Advogato User Stats

New Advogato Members

Recently modified projects

14 Jun 2016 luxdvd
8 Mar 2016 ShinyCMS
8 Feb 2016 OpenBSC
5 Feb 2016 Abigail
29 Dec 2015 mod_virgule
19 Sep 2015 Break Great Firewall
20 Jul 2015 Justice4all
25 May 2015 Molins framework for PHP5
25 May 2015 Beobachter
7 Mar 2015 Ludwig van
7 Mar 2015 Stinky the Shithead
18 Dec 2014 AshWednesday
11 Nov 2014 respin
20 Jun 2014
13 Apr 2014 Babel

New projects

8 Mar 2016 ShinyCMS
5 Feb 2016 Abigail
2 Dec 2014 Justice4all
11 Nov 2014 respin
8 Mar 2014 Noosfero
17 Jan 2014 Haskell
17 Jan 2014 Erlang
17 Jan 2014 Hy
17 Jan 2014 clj-simulacrum
17 Jan 2014 Haskell-Lisp
17 Jan 2014 lfe-disco
17 Jan 2014 clj-openstack
17 Jan 2014 lfe-openstack
17 Jan 2014 LFE
1 Nov 2013 FAQ Linux