Search Results: "ema"

13 June 2007

Isaac Clerencia: First complete user-contributed module for eBox

eBox has reached an important milestone recently, it has just got its first complete user-contributed module. I guess that’s quite important for a company-backed free software product, meaning that there is really a community out there, and it’s ready to contribute stuff :) In addition it’s always great to know that you are doing a good work (snippet from Nacho’s mini-interview to the module author):
Quite honestly it s to me the most exciting open source projects I ve come across in some time - the flexibility it provides is remarkable. The developers are great and happy to help. My first experience of coding for eBox has been thoroughly enjoyable. I m looking forward to getting on with my next module now and learning more about eBox!

MJ Ray: the Connection, paperless billing and post offices

Just got my copy of the Connection for June in the email today. Highlights: expansion of paperless billing and putting savings into a new sustainability fund that will be used to "green" the co-op further; profiles of Emerge, Cycle Training UK, Low Carbon Lifestyle, and Resurgence Magazine; not following BT's introductions of charges for 1571 ( 1/month), non-DD payment and late payment (up to 7.50/bill); free line transfers until end of August; new mobile phone services; previously-posted ADSL charging plan changes. (Note: I'm a member of this consumer co-op and my main company is Phone Co-op agent 471 if you'd like to join through us.) An interesting question is how that new sustainability fund will be allocated. I can't see an answer in this newsletter, but I've signed up for the extra paperless services anyway. I have mixed feelings about that: it may be helping save trees and fuel, but is it also further harming my rural post service by reducing the amount of post sent to me? Then again, it looks like the government has caused most harm to rural post offices by moving social service payments to banks and slowly reducing the number of services at rural sub-offices, while the Post Office themselves are doing "ludicrous" things like moving main post offices out of historic buildings and into the backs of newsagent chains. I care more about the offices than the delivery service and they don't seem very connected here.

Adam Rosi-Kessel: Parmet on Public Health and Individualism

Via Jason, my brilliant former Constitutional Law professor Wendy Parmet weighs in on the XDR-TB scare. Unlike most coverage, Professor Parmet brings out the big picture of how the incident fits into a larger flawed public health policy:
…It is trite but true that in America we admire individual self-sufficiency and rugged individualism. Not only do we admire this taking care of number 1 attitude, but public health has encouraged it. Over the last several decades, public health has emphasized the role that individuals can and should play in determining their own health. Indeed, every day of week, we are bombarded with messages about how we can do this or that to take care of ourselves. Sometimes the message extends to what we can do for our families. Seldom are we told what or how we can do for unnamed others. Even infectious disease policies perpetuate this myth of self-control. We are told to vaccinate our children to protect them. We are told to help ourselves by getting a flu shot. And the federal government provides us with information about how we should prepare to help ourselves and our family in the event of an influenza pandemic. This privatization of infectious disease control is even evident in the U.S. approach to quarantine. During the SARS epidemic, governments in Canada and in Asia quickly realized that quarantines would not be effective without income protection. So laws were passed to assure that people would receive compensation while under quarantine. In the United States, in contrast, despite all the efforts that have been made at public health preparedness and public health law modernization, income replacement remains off the table (the Family and Medical Leave Act only guarantees unpaid leaves for some ill employees). Perhaps even more astonishingly, in its proposed quarantine regulations, the CDC failed to ensure that it would provide all necessary health care to those it quarantined. …

12 June 2007

Biella Coleman: Housebreaking Your Health Insurance

Are you having trouble with your health insurance? Are they stalling on paying a bill? Denying a claim? Not telling you what the heck is going on?? Well you can and should take action to eliminate some of the mystery and move forward, and possibly win fight against the health insurance company. Thanks to my unpleasant ordeals with BCBS of NJ, I have compiled some handy resources and tips to get you started. Good luck and I welcome any other tips that you think should be here. Please email them to me at biella(at)gmail(dot)com Can’t get a straight answer when dealing with health insurance representatives on the phone? Are different representatives providing different and contradictory information? Does talking to the representatives leave you with a pounding headache? Then the following may be helpful: 1. Ideally you should tape record all conversations. If this is not possible, get the name or employee number of the person you are talking to and write down what they told you along with the time and date. If they have agreed to something, make sure they send it to you in writing. This sort of documentation may come in handy later when you are trying to contest or prove something. Is your insurance company flip flopping on a claim? For example telling you that the claim is still being “reviewed” but sending you statements that indicate it has not been paid and never will be? What action can you take to inch things forward? The following may help: 1. Most states have a Department of Banking and Insurance and they are there to help you. Many (perhaps all) provide a service for filing a complaint against your health insurance company and other insurance and banking companies too. When I used the service in NJ , I got assigned an investigator and their service was prompt and helpful. It was my experience that even though they were not able to resolve my issue, the insurance company started to make firm decision on many claims and this alone has been helpful. Before this, it was impossible to get a clear answer from them as to the state of all sorts of claims. They said “NO,” & you think they should say “YES, YES, YES, YES!!!!” In other words, appealing a denial: 1. This site has some great information on how to avoid a denial and what you can do to fight one. 2. Included on their site is the Health Insurance Laws and Benefits Tool which will provide specific information about your rights in different states. For example, you will want to know if there is an external or independent grievance system to appeal your plan’s decisions. In the case of NJ, which is the state I am fighting, the tool provided the following helpful information:
Does New Jersey require an external or independent grievance system to appeal your health plan’s unfavorable decisions? Yes, for all health plans.

On what grounds can you file your external grievance?
Investigational treatment appeal, medical necessity. What is the status of the external grievance panel’s decision?
Binding. External grievance systems allow you to take a dispute with your health plan to a doctor or review board unaffiliated with your health plan. Thus, both you and your health plan receive an impartial ruling on its decision to deny coverage of services or treatment. Additionally, you can file a complaint against your health insurer with your state’s department of insurance.
Additional Helpful Information and Resources 1. The message boards on lawyers.com are a great place to hit for information. I have found folks there helpful.
2. You many want to blog about your experience as you may get an unexpected response directly from your insurance company. I think there are pro’s and cons to blogging about your experience but it does provide a public face to your ordeal and allows you to chronicle exactly what has transpired.
3. If your cases is particularly shocking, do not hesitate to hit the local media.
4. If your claim has been denied by an external review panel, you may not have much luck suing but if there is no external review panel, you can and should also try Small Claims Court or other legal action. Further, even if your claim was denied by an external review board, you may have other options for suing, for example, due to their bad faith handling of a claim. And on that note, here is a great legal resource covering the topic.

Bastian Venthur: 1 Kilobyte = 1000 24 bytes

Could you exactly say how big your hard disk has to be at least when the vendor claims it’s 500 Gigabytes big? Do you know how many bytes a file has when the filemanager says 2 Megabytes? Do you know what your DSL-provider actually means with 2 Megabit per second? Experienced users surely can since they know the meaning of “Kilobyte” depends on the context. Sometimes it’s 1000 bytes, sometimes it’s 1024. Non technical users will tend to assume that a 1 Kilobyte is 1000 bytes (which is correct, since k is the SI prefix for kilo) while users with technical background will tend to assume (depending on the context of course) it’s 1024. There is a solution for this ambiguity, but unfortunately it doesn’t come for free: First, it sounds really stupid (kibi-what?) and second it will add an extra character (kB -> kiB) and we all know how stuffed our 80 column terminals already are nowadays. If you have better arguments against the binary prefix notation please, join the discussion. Personally I’d find it very cool if we could use SI prefixes where we mean n * 10^3 and binary prefixes where we mean n * 2^10 in Debian consistently.

Rob Bradford: GUADEC Speaker Registrations

We interrupt this transmission to provide this valuable news flash: I’ve just sent emails to everyone who is on my list of speakers for GUADEC asking them to complete their details. If you are expecting to talk at GUADEC and don’t get an email asking you to provide your details then please email Ross and CC me in. We now return to our scheduled broadcast…

Antti-Juhani Kaijanaho: Benja on denotational semantics

My friend Benja Fallenstein got carried away in the comment section of my latest post on recursion and wrote a tutorial on how it all relates to denotational semantics. It’s a shame it is buried somewhere in the comments, so I am reposting the comment here with Benja’s permission. The tagline is, Denotational semantics tutorials. It s the new monad tutorials!
Benja Fallenstein writes: Having read and understood [the] entire post, I can now summarize Antti-Juhani s complaint in a way that programmers with no theoretical background will understand: The definition is an infinite recursion. Sure, it s self-referential, but since it recurses forever, it doesn t actually define what recursion is! :-) That said, I find it kind of a pity to introduce all this theory without talking about why it nicely models the real world. Antti-Juhani argues that this pretty much the definition of popularized science, but I have to admit that, as definitions go, I like recursion: see recursion better. :) So let me have a quick go. [UPDATE: Didn t turn out to be quick at all. This is, in fact, as long as Antti-Juhani s original post. Proceed at your own peril.] All of this comes from denotational semantics, which is concerned with what expressions in a programming language mean and which ones mean the same thing. For example, 7 denotes the number seven, 7+2 denotes the number nine, and 5+4 also denotes the number nine. Now, here s the knotty problem. If we have f(x) = if x = 0 then 1 else x*f(x-1) then f(4) denotes the number twenty-four, but what does f(-2) denote? So, denotational semantics introduces a new, special value, recurses forever. An expression of type integer either denotes an integer, or, like f(-2), it denotes recurses forever. Now, about these partial orders. (Reminder: A partial order says, for every pair (x,y) of elements of a certain set, that x is smaller than y, equal to y, larger than y, or incomparable to y.) Here is Benja s guide to what the partial orders of denotational semantics mean: Let s say that you write a program where, in one place, you can plug in either x or y. If you can write such a program that prints foo when you plug in x and prints bar when plug in y, then x and y are incomparable. If you can t do that, but you can write a program that prints foo when you plug in y, and recurses forever when you plug in x, then x is smaller than y. If every program you can write will do the same thing whether you plug in x or y, then x and y are equal. (We ignore details like out-of-memory errors and *how long* a program takes to do something.) Examples: - 5 and 7 are incomparable. Proof: if ___ == 5 then print foo else print bar . - f(-2) f(2). Proof: if ___ == 2 then print foo else print foo if you plug in f(-2), this will loop forever, if you plug in f(2), it ll print foo . - (5+2) = 7. Whatever program I write, it will do the same thing, no matter which of these expressions I plug in. Now, with expressions of type integer, the resulting partial order is: Recurses forever is smaller than everything else. All other values are incomparable. Recall from Antti-Juhani s post that the bottom element ( ) is defined to be the smallest element of a mathematical universe (if such a beast exists). Since recurses forever is smaller than everything else, it s the bottom element of this universe. That s what denotational semantics calls it. (Haskell, too.) Of course, this partial order is kind of boring (the technical term is flat ). It gets more interesting when we consider functions. In general, we can talk about functions from values of type S to values of type T, where we already know the partial orders of S and T. In particular, we can talk about functions from integers to integers. Now, if you can find an x and a program that prints foo when you plug in f(x) and bar if you plug in g(x), then you can write a program that prints foo when you plug in f, and bar when you plug in g. (Exercise! ;-) ) Further, denotational semantics wants applying a function to a parameter and then doing something with the result to be the *only* way you can get information about a function. No f.get_function_name, please. (If your programming language has that, you can t map the functions of your programming language 1:1 to the functions of denotational semantics.) By my rule above, this implies that f = g if and only if f(x) = g(x) for all x. Since formal theories can t have fuzzy stuff like my rule, denotational semantics takes this as the *definition* of the partial order on functions. The bottom element of this mathematical universe, then, is the function that always returns bottom, no matter what it is given or in other words, a function that recurses forever, no matter what parameter you pass to it. (Side note. Denotational semantics allows only monotone functions that is, if x = y, then f(x) = f(y) for all f, x, and y. That s an example of how all these definitions allow us to make formal statements about the real world. In the real world, if you can find a function f and a program that prints foo when given f(x) and bar when given f(y), then you have a program that prints foo when given x and bar when given y so if f(x) and f(y) are incomparable, then x and y must be incomparable, and the other way around, if x and y are comparable, then f(x) and f(y) must be comparable, too. (This reasoning doesn t exclude the case that x = y and f(x) >= f(y). If you really care, prove it yourself. :) ) This ends the side note.) Recall, now, Antti-Juhani s definition of recursion: An equation of the form x = some expression (which may contain x), interpreted as a recursive definition, defines x to be the smallest value satisfying this equation. The models constructed in denotational semantics have the property that for any equation of this form, the set of values satisfying it does have a smallest element, so x is well-defined no matter what the equation is. It s important to note that this does not mean that x has to be bottom, because there are equations to which bottom is not a solution. Let s look at a slightly simpler example than the one Antti-Juhani gave. f(x) = if x = 0 then 0 else f(x-1) We have f(0) = 1, but bottom(0) = bottom, so f can t be bottom. The equation has more than one solution, though. It is satisfied by a function that returns 0 for x >= 0 and returns bottom (recurses forever) for x 0; but it is also satisfied by a function that returns 0 for every input. And by an infinite number of functions that return 0 for some negative inputs and bottom for others. We want the first of these solutions, of course, because that s what we get if we interpret the equation as a computer program, and computer programs are what we re trying to model. But we re in luck: The first solution is smaller than all the other ones, because for all inputs, they either return the same value, or the solution we want returns bottom and the solution we don t want returns 0 (and bottom 0). The point of it all is, of course, that when we interpret an equation as a computer program, we always get the least value satisfying the equation (if we use a partial order that follows my rule, above). And that, my friend, is denotational semantics.

Antti-Juhani Kaijanaho: On recursion

Note: This entry has been edited a couple of times (and might be edited in the future) to remove errors. Thanks to Benja Fallenstein for critique. My previous post about recursion drew some comments. This is a topic that frequently confuses me, and there is a lot of confusion (some of it mine) in the blog post and its comments. On reflection, it seems prudent to examine what recursion really is. Consider the following recursive definition: 0 is an expression; if T is an expression, then sT is an expression; nothing is an expression that doesn’t have one of these two forms. Now, it is clear that 0 is an expression. It is equally clear that sssssK is not an expression. In some applications, it makes sense to consider infinite expressions like “…ssssss0“; that is, an infinite number of ss before the final 0, and in others it doesn’t. Is that infinite utterance and expression? It does have one of the forms given in the definitions, so it is not forbidden from being an expression, but neither is there anything in the definition requiring that it is. It is helpful to do this a bit more formally. Let us translate the self-referential definition into a set equation: The set of expressions is the set E that satisfies the equation

E = 0 ∪ se e ∈ E

But this definition is bogus! There are more than one set E that satisfies the equation, as remarked above, and thus there is no “the set E”! We need to fix the definition in a way that makes the set E unique. The key question is, do we want to regard the infinite utterance discussed above as an expression. It is simplest to just say “the set of expressions is the smallest set E that …” if we want it to not be an expression, and if we want it to be an expression we should say “the set of expressions is the largest set E that …” Let us make the following definitions:
Consider the set equation S = … S …, in which the set S is alone on the left-hand side and occurs at least once on the right-hand side. This equation is a recursive definition of the smallest set S satisfying this equation, and a corecursive definition of the largest set S satisfying this equation.
Thus, a definition like

E = 0 ∪ se e ∈ E

is not recursive because of its form; it is self-referential. By itself, it is an ambiguous and thus bogus definition. We use the words “recursive” and “corecursive” to indicate the intended method of disambiguation. A rather nice example of this can be seen in the treatment of algebraic data types in strict (ML-style) and nonstrict (Haskell-style) functional programming languages. Consider the declaration (using Haskell syntax)
data IntList = Nil   Cons Int IntList
This can be read as a set equation as follows:

IntList = Nil ∪ Cons n x n ∈ Int ∧ x ∈ IntList

Now, as a recursive definition, it is restricted to finite lists as found in ML, but as a corecursive definition, it also allows infinite lists as found in Haskell. (It unfortunately fails to address the question of bottom-terminated lists, which also can be found in Haskell.) As it happens, the technique is not limited to set definitions; but to generalise it, we need to discuss a bit what we mean by the terms “smallest” and “largest”. In a set context, a set is smaller than another set if it is the other’s subset. Notice how this makes the ordering partial, that is, there are sets that are not comparable (for example 1 and 2 ; neither is smaller than the other, but neither are they equal). A collection of sets does not necessarily have a “smallest” set (that is, one of the sets that is a subset of all the others). However, we can always find the lowest upper bound (”lub” or “join”) of a collection of sets as the union of the sets, and the greatest lower bound (”glb” or “meet”) as the intersection of the sets, and if the lub or glb is itself a member of the collection, it is the smallest or largest set of the collection. Haskellists will find things instantly familiar when I say that the smallest element of a mathematical universe (if it exists) is called bottom and is denoted by ⊥; somewhat less familiar will be that the greatest element (if it exists) is called top and is denoted by ⊤. A partial function is any function that needs not be defined everywhere. For example, f(x) = 1/x is a partial function on the reals (it is not defined for x = 0). We can form a partial ordering of (partial) functions having the same domain and codomain by specifying that f is smaller than g if f(x) = g(x) for all such x that f(x) is defined. Sometimes it will make sense to specify that f is smaller than g if f(x) is smaller than g(x) for all such x that f(x) is defined. Now, it happens that all collections of functions have a lub; and in particular, the partial function that is defined nowhere is the smallest function (the bottom function). Now, with this definition of “ordering” of functions we can apply the definitions of recursion and corecursion to functions. For example, consider f(x) = f(x) + 1. The bottom function (defined nowhere) qualifies, since undefined + 1 is undefined; thus it is the smallest solution to the equation and thus this equation is a recursive definition of bottom. However, consider f(x) = if x = 0 then 1 else x*f(x-1): any solution to this equation must have f(0) = 1 and thus the bottom function is disqualified. In fact, the smallest solution is the factorial function, and thus the equation is a recursive definition of factorial. In the comments to my previous entry, I was asked whether the Haskell definition “ones = 1 : ones” is recursive. Of course, the question in itself is nonsensical; whether it is a recursive definition or something else (such as corecursive) depends on what the programmer intends. I will interpret this question as whether the equation is a recursive definition of the intended result, the infinite list of all ones. First, observe that we can order Haskell lists (including the special “undefined” list) partially as follows: l1 is smaller than l2 if l1 is undefined, if they both are empty lists or if a) the first element of l1 is smaller than the first element of l2 and b) the tail (the list with the first element removed) of l1 is smaller than the tail of l2. The undefined list does not qualify as a solution for “ones = 1 : ones”. No finite list qualifies either. The infinite list of all ones does qualify, and it is the only solution; hence, the equation is a recursive definition of the infinite list of all ones; it is also a corecursive definition of the same list. Finally, let us consider the question that started it all: what should we make of the definition “recursion: see recursion”. First, note that a equation x = x admits all elements of the universe as a solution; hence, the proper reading of “recursion: see recursion” as a definition is that it is ambiguous and hence bad. It is a recursive definition of the bottom element of the universe (whatever that might be for a dictionary), and a corecursive definition of the top element of the universe (whatever that might be). In any case, it does not define recursion (unless of course, the concept of recursion is the smallest or the largest concept in the universe of concepts).

MJ Ray: Views on spelling and textarea Sizes

Update: Debian, and other stuff writes about A solution for a better spell checker in firefox : a better editor Joey Hess commented:
"I'm suprised that noone has mentioned how to get a text area to fit the whole width of the browser window, no matter what width it's set to (I prefer approximatly 60 characters wide sometimes, and nearly 120 other times..): Just put width: 100% in a stylesheet for the textarea. Unfortunately I don't know a good way to dynamically scale a textarea vertically."
That's container-width, which is not window-width for my site, but I'll give it a go.

11 June 2007

Remi Vanicat: A solution for a better spell checker in firefox : a better editor

I’ve recently complain here about the iceweasel Spell checker, and the fact that it is less effective than Aspell for proposing correction for French misspelled word. I also lake the nice key binding for correction available in Emacs with flyspell. There seem to be a solution to all my problem, and it is a comment made by Josh Triplett on the MJ Ray blog that give it to me: the It’s All Text Firefox(and Iceweasel) extension give me the possibility to use my preferred editor for editing text in edit box (and yes, it is editor agnostic: you can use vi, vim, or even ed). So, thank you Debian planet, MJ Ray and Josh Triplett. I now have to try it to see if it’s really effective.

Biella Coleman: Blue Cross Blue Shield Chronicles: Blue Distinction, Not

A few weeks ago, I posted an account of my trials and tribulations with Blue Cross Blue Shield Horizon of New Jersey. Well now it is high time for an update, an update I think readers of this blog will be interested in because it tells a fascinating story about the Internet, blogging, and perhaps new uses of Google Alerts. My goal in writing the post was to inform readers of their options when faced with problems caused by their health insurance company. Well, I had no idea a response would arrive from Blue Cross Blue Shield, and so quickly. For within 2 hours of posting my blog entry, the Public Relations Director of Blue Cross Blue Shield of NJ wrote me an email, which basically said that he came across my blog posting and was offering his assistance. Needles to say, I was shocked. After months of getting some of the worst customer service I have ever received (when on the phone with Blue Cross, I always felt like I was talking to smarmy collection agency reps), I get an email from upper-level management, offering his assistance. At first, I thought some of my geek readers were playing a practical joke on me. While it seemed plausible that Blue Cross monitors links to their site, and probably do so with Google Alerts, I had a harder time believing that the Director of Public Relations would fire off an email to me, directly. Naturally, following the arrival of his message in my inbox, a small glimmer of hope flickered, especially after he had someone from the Appeals Department contact me. And this small intervention had a large noticeable effect: decent and transparent customer service became a reality, for the very first time. Instead of interactions that were opaque and frustrating, I finally had ones that were crystal clear and intelligible. According to the main Blue Cross Blue Shield Web Site, they pride themselves on Blue Distinction:
Blue DistinctionSM is the Blue Cross and Blue Shield companies’ nationwide program that will create an unprecedented level of transparency with two goals: engaging consumers to enable more informed healthcare decisions and collaborating with providers to improve quality outcomes and affordability.
The contrast of my service before and after having the Public Relations director contact me speaks volumes to the actual nature of Blue Distinction as it pertains to BCBS of NJ. For most of my interactions with Blue Cross Blue Shield, I encountered an unprecedented level of opaqueness and frustration until there was intervention from high-above. I actually appreciated the service I received and saw it as a laudable move. Unfortunately, the outcome has been far from my liking. I recently got word they are not paying up for any of the dermatological services. So perhaps the fact that a PR person contacted me was significant because in the end, it has panned out as a typical PR move: all gloss and lacking substance. What now? I am moving to an internal BCBS appeal process and if that does not work, I will move on to small claims court in NYC and perhaps a more organized web campaign. In the mean time I have basically have decided to blog about the process so look out for future updates!

MJ Ray: Views on textarea Sizes

Matt Palmer wrote:
"Aaah, OK. I have no idea whether [pingbacks] work or not; they're deeply in the black magic category -- never used them."
They're just a remote procedure call. Shouldn't be black magic at all, but a surprising number of blogs seem to do them brokenly, while supporting the more complicated (but just as spammable) comment and trackback systems. On size:
"40x20 would be a good size for me. I'm not sure why people would complain that the comment box is too big, unless perhaps it interfered with the good layout of the page."
I don't think it interfered with the layout. I'll increase the size again Real Soon Now. Josh Triplett commented:
"For me, the size of the edit box doesn't matter much, because I don't use it. I just click the little "edit" button next to it that the Firefox^WIceweasel extension It's All Text provides, and then type my comment in Emacs. :)"
James commented:
"I use the resizeable form fields extension so I don't have a problem with small textareas, but http://www.sabadelli.it/edoardo/projects/javascript/form.element.resize has a script that'll make it resizeable for everyone."
Well, everyone who lets web site scripts use their CPU and electricity... Thanks for all the helpful comments.

Russell Coker: Nixforce unauthorised use

Just over two days ago I sent a DMCA take-down request to nixforce.com for copying my content in violation of the non-commercial license that I offer, I have not had a response from them and they have kept mirroring my site. I have just sent a DMCA take-down to tierzero.net which appears to be their ISP. The email address listed in the whois record for that ISP bounces as does the postmaster address. It seems that I’m not the only person with this problem, Antti-Juhani Kaijanaho is also having problems with them. Any suggestions on how to deal with them would be appreciated. One possibility that I will eventually persue is to file a DMCA request with Google, this can result in their Google Adwords account being terminated.

Russell Coker: Easy Search Engine Optimisation in Wordpress

The first thing you need is to have meta keywords in the pages. The solution I discovered for doing this is the All In One SEO Pack, this automatically makes the categories of a blog post become meta keywords, allows adding arbitrary meta keywords when editing the blog post, and supports keywords for the entire blog. It also re-writes the titles to have the title of the post appear before the title of the blog in the <TITLE> tag which is rumored to be a good thing to do. The next thing you want to do is to create a Google sitemap. A sitemap is an XML file that describes all the URLs in your web site which tells Google (and other search engines) the last change dates of all the URLs and the change frequencies (or how often they should be checked for changes). Note that the format is called Google Sitemaps because Google invented it, other web search engines also use the same format. To generate my sitemap I use the Google Sitemaps Generator which tells earch engines to index my main blog page daily and the category pages weekly (which is configurable). It also has an option to notify Google of changes by pinging the Google service. Having multiple names for the same web page hurts you when it comes to search engines. Having two separate pages at the top of page 2 is not nearly as good as having one page on page one! To solve this problem I use the Permalink Redirect plugin to make sure that each page has only one URL pointing to it. This plugin also allows redirecting the feed URL to feedburner.com. Feedburner serves the feed data (thus saving you some bandwidth if you are on a slow link) and also tracks statistics on it which are interesting. Under the Writing section of the Options menu there is an option to enter a list of URLs for update services that can be notified of every post. I use http://rpc.pingomatic.com/ and http://rpc.technorati.com/rpc/ping. The Update Services entry in the Wordpress Codex has more information on how this works. Social networking sites such as digg.com can direct a large amount of traffic to your site if you write about a popular topic. The Share This plugin is the simplest way I found of adding social networking hooks to Wordpress (I tried a few others that had both less functionality and less ease of use). Finally before publishing a post, I often check the Google Adwords Keyword Tool. This often gives me ideas on how to make the meta tags and title match what people are searching for.

Antti-Juhani Kaijanaho: Nixforce, cease and desist

Update Amazingly, they seem to have complied with this notice by taking down my content :) Nixforce, you are republishing (parts of) my blog without permission, and without indicating that you are republishing stuff written elsewhere. You are required to do all of the following, or cease and desist from republishing my content: If you do both, you have my permission to continue republishing my content. Additionally, you should verify that you have the legal right to republish content by the other authors. (This has been mailed to their contact email address.)

10 June 2007

Adam Rosi-Kessel: Hospital Thoughts

Hospital CEO Paul Levy is seeking responses to some remarkably frank comments on competition in the hospital industry:
…Please remember that health care is not like other industries, in which companies are rewarded in the marketplace for being the high-quality, low-cost provider. That situation does not yet exist in the health care system. So, am I better off being a industry leader with regard to that approach, or am I better off biding my time and continuing to follow the traditional path until there is a real sign of change in the marketplace?
As I’ve written before, this kind of openness is refreshing and potentially a brilliant business strategy. (It may continue to be so even once every one is doing it.) Paul’s comments and receptivity to feedback remind me of my numerous concerns about Children’s Hospital Boston, which, as far as I know, has no analogous public forum. I’ve sent in comment cards, but they may just drop into a black hole. Two principal complaints about Children’s Hospital: television and food. There are TVs everywhere, including in the waiting rooms. They are always on, even if no one is watching them. On one occasion, we were the only ones in the waiting room. When we attempted to turn the TV off, the staff told us we couldn’t. When we went in examination rooms and our daughter was unhappy, the first response by the medical staff was often to turn on a TV. Our daughter (just over two years old) has never watched TV, and doesn’t find it comforting. Research indicates that TV is not good for young kids, and especially not infants:
Babies are glued to television sets these days, with 40 percent of 3-month- olds and 90 percent of 2-year-olds regularly watching TV, according to a University of Washington study released Monday. …”While appropriate television viewing at the right age can be helpful for both children and parents, excessive viewing before age 3 has been shown to be associated with problems of attention control, aggressive behavior and poor cognitive development,” Frederick Zimmerman, the UW study’s lead author, said in a news release…. The American Academy of Pediatrics recommends no television for children younger than 2, and only one to two hours a day of quality programming for older children.
Recently, we had to stay over in the hospital for a night. There were no private rooms available, so we requested at least not to be stuck in a room where the TV would always be on. They looked at us like we were from Mars. (In the end, our roommate’s TV was always on. The three month old patient didn’t care, but his private nurse wanted to watch TV.) Why is a pediatric healthcare facility encouraging TV for infants? The food complaint is similar: so much of the hospital food provided for children is high in fat, refined sugar, white flour, and artificial ingredients. I was looking for a fruit-juice popsicle for our daughter (what she eats at home), and the only options the hospital could offer had high glucose corn syrup as the first ingredient after water. Again, this is not rocket science — these are not appropriate foods for one- and two-year old children. I realize in both cases (TV and food), the hospital is just mirroring popular culture in an attempt to provide familiarity for most kids, but I wish they would at least provide an option for those families whose kids don’t watch TV and eat a high-sugar diet.

Remi Vanicat: A better spell checker for firefox

I’m using firefox as a web browser (well, Iceweasle in reality, but it is mostly the same, no ?). One thing I like, is that there is a spell checker that can spell check what one enter into a web form. But this spellchecker is not the one I would have choose. For exemple, when you are typing in French, and you type “ame”, the iceweasel spell checker propose as possible correction : but not “ me”, which is the obvious correction. I’m not sure of what spell checker iceweasel/firefox use, but for sure, the first corrections to propose in French are the one where only difference is the presence or absence of accent. Even good old ispell in this case propose “ me”, even if it can’t find “ t ” as a possible correction for “ete”
Aspell do that for French, but I cannot find a way to use Aspell for Firefox version 2 or latter.
It seem that there are other browser that could use Aspell (at least Opera and Konkeror), but I don’t really want to change of web browser for this… And I don’t want to install kde (I’ve learnt to use gnome, don’t want to change), and there is no debian package for opera (is opera even free? I haven’t follow the evolution there, and is there an amd64 build somewhere? on opera.com they give me an i386 version it seem). Is there any solution ? Another think I lake, is the equivalent of M-TAB when one is using flyspell-mode in emacs : when one have just enter a word, it can use M-tab to go through the possible correction of the misspelled word. But there might be a keybord binding I don’t know about there.

9 June 2007

Axel Beckert: .org registration rules arbitrariness

For about nine years, my domain deuxchevaux.org was hosted (which means web, DNS and a catchall e-mail forward) by Internett at Saarbr cken. Although it was a sponsered hosting without much support I was quite happy with their service. But especially my ideas and demands regarding spam filtering grew out of the possibilities of a mass hosting solution. Since I run my own web, mail and name servers for a while now, it was no question that also deuxchevaux.org should become self-hosted. Since I run a root-server at Hetzner and their “robot” also offers domain handling, I planned to transfer deuxchevaux.org to them. Therefore I first had to register my two DNS servers (sym.noone.org and virt.noone.org) with them. In the documentation there was a note that for .org domains, name servers in a .org domain have to be registered with the same registrar. And just a few hours after registering the name servers via their web interface I got a mail from Hetzner Support that the domain of my name servers are not registered with Hetzner and so I cannot use them form .org domains. Asking for the cause of this rule, I got the answer that this is a rule by Hetzner’s upstream registrar, Cronos AG. Well, since I don’t understand such arbitrarily looking rules, I was looking around for another registrar with usable web interface. On the DaLUG mailing list, someone recommended eDNS. Since their single user account is free of setup and monthly fees, I signed up with them and started playing around with their web interface. When I tried to transfer deuxchevaux.org using the Auth-Code, I got the response that the transfer failed and when I clicked on “Details”, I got “$VAR1 = [];” as detailed information about the failure. Data::Dumper says hello. I wrote them and asked if they can tell me, what that should mean last Thursday and got no answer so far. I don’t think, I’ll register domains with them anymore. So where to try it now? Someone recommended GoDaddy, but I neither like their website (way too much targeted on beginners and mainstream) nor do I want to apply for a credit card or a PayPal account to be able to pay their bills. So a bill from my UML hoster Korypet (aka VD Server) caught my eye: They were lowering prices for registrations at some top level domains (and in comparison to the recent lowerings at eDNS the new prices also apply to existing contracts) including .at and .org (and I only have .at, .ch and .org domains). I didn’t knew they also do domains outside of selling them in packages with UML hosts. So I wrote to Korypet support, if they offer a web interface for domain handling and got a reply less than two hours later: Not yet, but they’re working on it. Until then, I can request domain handling tasks by e-mail to their support. Since I know their UML managing web interface – which works fine – and since I’m happy with their support, service and prices since years (I’m customer there since 2003), I replied with all the necessary data for the transfer. Well, the transfer failed, too. But in comparsion to Hetzner or eDNS, they made the effort to exactly find out, what happened. So what did happen? The rule which the Hetzner support guy told me that it was from their upstream registrar wasn’t from there but from Public Internet Registry (PIR) itself. And the rule seems to match not that often, so that many people involved in domain registration don’t know about it (and usually neither understand its existence when they hear about it). Also I have no understanding for this harassment and so I felt the strong urge to get one over on them. Korypet suggested several solutions fitting my needs (i.e. the usage of my DNS servers for my domains). They even offered A records under some of their PIR registrered domains pointing to the IP addresses of my DNS servers for no fee, but luckily some A records under my own .ch domain sufficed. So the transfer was successful on Friday evening, 6pm local time, my own mail server (running Postfix) was happily rejecting a lot of spam to (and even from) non-existing users (which came in over the catch-all before) as well as hosts greeting with not fully qualified or invalid HELOs and greylisting others via David Schweikert’s Postgrey. The number of accepted mails and recognized spam sunk immediately by approximately factor four on the whole mail server, although deuxchevaux.org isn’t the only domain that receives mail there (but was the only one which had a catch-all before). So in the long run, I’ll probably move all .org and .at domains over to Korypet since they have not only fair prices but also a competent and individual support. (And yes, this is a recommendation. ;-)

Adam Rosi-Kessel: Introducing the Taft Hill Neighborhood Association

This is the first link to the Taft Hill Neighborhood Association. Probably only of interest if you live on or near Taft Hill Park/Terrace in Roslindale, Massachusetts, but I’ve got to get it out there somehow. This was also my first experience with the Google Maps API. It took about two minutes to figure out, except that the syntax to display a “hybrid mode” map was not trivial to find. For the record, it turns out the answer was:
map.setCenter(new GLatLng(latitude, longitude), zoom, G_HYBRID_MAP);
Let’s see how long it takes for my new email address to start receiving spam.

8 June 2007

Daniel Burrows: Blogger annoyingness

Two days ago, I noticed that a post from last year about my wallet getting stolen had attracted over 60 spams. So I went in, deleted all of them individually (because I can't select multiple comments to delete in Blogger), then closed comments on the post.

This morning, I caught up on my Planet Debian email, and discovered that Blogger had decided to make that post "new", so it showed up on Planet again! Argh!

So don't worry, I didn't lose my wallet again. Blogger is just nuts.

Next.

Previous.