Loki Software

Loki Software, Inc. (sometimes also called Loki Games or Loki Entertainment Software) was a software firm based in Tustin, California, United States, that ported several video games from Microsoft Windows to Linux. It took its name from the Norse deity Loki.

Legacy

Loki Software, although a commercial failure, is credited with the birth of the modern Linux game industry. Loki developed several free software tools, such as the Loki installer (also known as Loki Setup), and supported the development of the Simple DirectMedia Layer. They also started the OpenAL audio library project (now being run by Creative Technology and Apple Inc.) and with id Software wrote GtkRadiant. These are still often credited as being the cornerstones of Linux game development. They also worked on and extended several already developed tools, such as GCC and GDB.

The book Programming Linux Games by Loki Software and John R. Hall is recognized as one of the prominent tutorials for the Simple DirectMedia Layer. Many of Loki’s free tools are still actively used and being developed, often by former employees of the company, many of them having moved to other computer game or Linux companies.

— Wikipedia on Loki Software

2012.06.15 Friday ACHK

Everything is a file

“Everything is a file” describes one of the defining features of Unix, and its derivatives — that a wide range of input/output resources such as documents, directories, hard-drives, modems, keyboards, printers and even some inter-process and network communications are simple streams of bytes exposed through the filesystem name space.

The advantage of this approach is that the same set of tools, utilities and APIs can be used on a wide range or resources. There are a number of file types. When a file is opened a file descriptor is created. The file path becoming the addressing system and the file descriptor being the byte stream I/O interface. But file descriptors are also created for things like anonymous pipes and network sockets via different methods. So it is more accurate to say “Everything is a file descriptor”.

— Wikipedia on Everything is a file

2012.06.11 Monday ACHK

Google Quickoffice

superxor 3 days ago | link

I once used Quickoffice on a Symbian S60 phone. I should say, it’s capabilities were pretty impressive. Especially with the meager resources available on those old so-called smart phones.

I hope this helps Google build better native Office apps. Obviously, will also be a big addition to their Docs back-end. But it has always puzzled me, with the infinite resources Google has, it still has not been able to develop a seamless import of MS Office files. Is it really that hard?

   
hesdeadjim 3 days ago | link

Having worked at Quickoffice years ago on the spreadsheet team, I can tell you that yes, it is really, really hard to do well.

People expect when they open their spreadsheet that the formulas they wrote on the desktop will provide the results they see on the desktop. Ok, well it’s just math right? Yes, and no. Excel actually has a lot of bugs with the execution of their formulas, so to be accurate you have to emulate all the mistakes they make. You also have to discover these bugs yourself, as they are not conveniently documented somewhere.

I ended up writing a unit test framework using generated Excel spreadsheets containing permutations of formulas with every possible input, just so I could identify where these bugs might be happening. Then you have to reverse engineer WHY they happen in the first place, and also find out if this was something the Excel team fixed in later releases, or left in because they themselves could not break backwards compatibility.

And this was what I would consider a small problem for us back then. The biggest problem was always round-tripping of unsupported data. The Office file format is large, complex, and full of crap you wouldn’t imagine supporting in a mobile product. However, your users expect that if they open a spreadsheet to change a number on their phone, when they save it and re-open it on the desktop all the fancy formatting and pivot tables still work and haven’t been lost.

Anyways, this is a great purchase for Google and I congratulate all the guys who have put in the hard work to make Quickoffice the amazing product it is today.

— Hacker News

2012.06.09 Saturday ACHK

Cyberpunk

Cyberpunk is a postmodern and science fiction genre noted for its focus on “high tech and low life.” The name was originally coined by Bruce Bethke as the title of his short story “Cyberpunk,” published in 1983. It features advanced science, such as information technology and cybernetics, coupled with a degree of breakdown or radical change in the social order. Cyberpunk works are well situated within postmodern literature.

Cyberpunk stories have also been seen as fictional forecasts of the evolution of the Internet. The earliest descriptions of a global communications network came long before the World Wide Web entered popular awareness, though not before traditional science-fiction writers such as Arthur C. Clarke and some social commentators such as James Burke began predicting that such networks would eventually form.

— Wikipedia on Cyberpunk

2012.06.07 Thursday ACHK

pLaY, 2

玩 = play = 角色扮演

— Me@2012-06-04 10:53:35 AM

2012.06.07 Thursday (c) All rights reserved by ACHK

Bayesian spam filtering, 2

General applications of Bayesian filtering

While Bayesian filtering is used widely to identify spam email, the technique can classify (or “cluster”) almost any sort of data. It has uses in science, medicine, and engineering. One example is a general purpose classification program called AutoClass which was originally used to classify stars according to spectral characteristics that were otherwise too subtle to notice. There is recent speculation that even the brain uses Bayesian methods to classify sensory stimuli and decide on behavioral responses.

— Wikipedia on Bayesian spam filtering

2012.06.06 Wednesday ACHK

Impossible to fail

The difference between devices which are possible to fail

and the devices which are impossible to fail

is that

when an impossible-to-fail device has failed,

you don’t know how to fix it.

2012.06.05 Tuesday ACHK

Bayesian spam filtering

Bayesian spam filtering (after Rev. Thomas Bayes) is a statistical technique of e-mail filtering. It makes use of a naive Bayes classifier to identify spam e-mail.

Disadvantages

Depending on the implementation, Bayesian spam filtering may be susceptible to Bayesian poisoning, a technique used by spammers in an attempt to degrade the effectiveness of spam filters that rely on Bayesian filtering. A spammer practicing Bayesian poisoning will send out emails with large amounts of legitimate text (gathered from legitimate news or literary sources). Spammer tactics include insertion of random innocuous words that are not normally associated with spam, thereby decreasing the email’s spam score, making it more likely to slip past a Bayesian spam filter.

However with (for example) Paul Graham’s scheme only the most significant probabilities are used, so that padding the text out with non-spam-related words does not affect the detection probability significantly.

Words that normally appear in large quantities in spam may also be transformed by spammers. For example, ? Viagra ? would be replaced with ? Viaagra ? or ? V!agra ? in the spam message. The recipient of the message can still read the changed words, but each of these words is met more rarely by the bayesian filter, which hinders its learning process.

As a general rule, this spamming technique does not work very well, because the derived words end up recognized by the filter just like the normal ones.

Another technique used to try to defeat Bayesian spam filters is to replace text with pictures, either directly included or linked. The whole text of the message, or some part of it, is replaced with a picture where the same text is “drawn”. The spam filter is usually unable to analyze this picture, which would contain the sensitive words like “Viagra”.

However, since many mail clients disable the display of linked pictures for security reasons, the spammer sending links to distant pictures might reach fewer targets. Also, a picture’s size in bytes is bigger than the equivalent text’s size, so the spammer needs more bandwidth to send messages directly including pictures. Some filters are more inclined to decide that a message is spam if it has mostly graphical contents. Finally, a probably more efficient solution has been proposed by Google and is used by its Gmail email system, performing an OCR (Optical Character Recognition) to every mid to large size image, analyzing the text inside.

— Wikipedia on Bayesian spam filtering

2012.06.03 Sunday ACHK

Humble Indie Bundle

The Humble Indie Bundles or Humble Bundles are a series of game bundles that are sold and distributed online at a price determined by the purchaser. The games are multi-platform, DRM-free, and independently developed, and buyers can set the revenue split between the developers, charities and humble bundle organizers.

    2.1 Main bundles
        2.1.1 Humble Indie Bundle 1
        2.1.2 Humble Indie Bundle 2
        2.1.3 Humble Indie Bundle 3
        2.1.4 Humble Indie Bundle 4
        2.1.5 Humble Indie Bundle V
       
    2.2 Game/Developer-specific bundles
        2.2.1 Humble Frozenbyte Bundle
        2.2.2 Humble Frozen Synapse Bundle
        2.2.3 Humble Voxatron Debut
        2.2.4 Humble Introversion Bundle
        2.2.5 Humble Bundle Mojam
        2.2.6 Humble Botanicula Debut
       
    2.3 Android-based bundles
        2.3.1 Humble Bundle for Android
        2.3.2 Humble Bundle for Android 2

— Wikipedia on Humble Indie Bundle

       
     
2012.06.02 Saturday ACHK

The “$” Operator

Next to the “.” operator there is another function-oriented operator that you’ll see often in Haskell code. This is the function application operator and it’s defined like this:

f $ x = f x

Weird right? Why does Haskell have this?

In Haskell, normal function application has a higher precedence than any other operator and it’s left-associative:

f g h j x == (((f g) h) j) x

Conversely, “$” has the lowest precedence of all operators and it’s right-associative:

f $ g $ h $ j $ x == f (g (h (j x)))

Using “$” can make Haskell code more readable as an alternative to using parentheses. It has other uses too, more on that later.

— Using the Dropbox API from Haskell

— by Rian on January 02, 2012

2012.05.31 Thursday ACHK

Machinarium

Machinarium is a puzzle point-and-click adventure game developed by Amanita Design.

Development

Machinarium was developed over a period of three years, by seven Czech developers, who financed the project with their own savings. The marketing budget for the game was a scant $1,000.

The game was in development for the Xbox 360 platform for a period of six months; however, Microsoft, whom the developers had approached to publish the title on Xbox Live Arcade, ultimately decided not to do so. Microsoft does not allow games to be released on Xbox Live Arcade without a publisher attached to the title, and the developers were reluctant to approach a third party to publish the game, as this would mean that profits for the developers from sales over Xbox Live Arcade would be greatly reduced.

Subsequently, Amanita Design approached Sony, whose policies do allow for self-publishing on the PlayStation Network platform, and have submitted the game to them for approval, in order to release the game on the PlayStation Network.

— Wikipedia on Machinarium

2012.05.31 Thursday ACHK

Nikola Tesla

Tesla died on 7 January 1943 at age 86 from heart thrombus, alone in room 3327 of the New Yorker Hotel.

— Wikipedia on Nikola Tesla

Another influential book was a biography of Nikola Tesla, the brilliant Serb scientist; though Tesla’s contributions arguably matched Thomas Edison’s — and his ambitions were grand enough to impress even Page — he died in obscurity.

“I felt like he was a great inventor and it was a sad story,” says Page. “I feel like he could’ve accomplished much more had he had more resources. And he had trouble commercializing the stuff he did. Probably more trouble than he should’ve had.

I think that was a good lesson. I didn’t want to just invent things, I also wanted to make the world better, and in order to do that, you need to do more than just invent things.”

— p. 13

— In the Plex: How Google Thinks, Works, and Shapes Our Lives

— Steven Levy

2012.05.30 Wednesday ACHK

Mobile phones

Perhaps most important, information can flow through even the remotest of villages, thanks to the massive increase in mobile telephones across regions that just a few years ago had no phones at all.

Mobile connectivity and the spread of wireless broadband are greatly strengthening rural health systems. In all of the Millennium Villages, and in more and more villages around the continent, lay community workers are bringing health services from the clinics right to the community. Mobile phones are critical in supporting these outreach workers, enabling them to call the doctors and nurses for advice, summon an ambulance or connect to a computerized expert system via text messaging.

— Global health within our grasp, if we don’t give up

— By Jeffrey Sachs, Special to CNN

2012.05.29 Tuesday ACHK

The Matrix

The conspiracy is so thorough that most kids who discover it do so only by discovering internal contradictions in what they’re told. It can be traumatic for the ones who wake up during the operation. Here’s what happened to Einstein:

Through the reading of popular scientific books I soon reached the conviction that much in the stories of the Bible could not be true. The consequence was a positively fanatic freethinking coupled with the impression that youth is intentionally being deceived by the state through lies: it was a crushing impression.

I remember that feeling.

By 15 I was convinced the world was corrupt from end to end. That’s why movies like The Matrix have such resonance. Every kid grows up in a fake world. In a way it would be easier if the forces behind it were as clearly differentiated as a bunch of evil machines, and one could make a clean break just by taking a pill.

— Lies We Tell Kids

— Paul Graham

2012.05.25 Friday ACHK

Quora

Wikipedia, which just recently celebrated its 10th birthday, is astonishing in its breadth and scope, but there’s only so much that any encyclopedia, limited to verifiable facts about discrete nouns, can capture within the entirety of human knowledge. On the other end of the spectrum, sites like Facebook and Twitter allow people to describe their lives and to make personal observations, but on such networks it’s hard to separate the informed opinion from the pure speculation.

The large expanse between the two approaches — the purely objective and the purely subjective — is the terrain that Quora hopes to occupy.

The early leader in social networking, Friendster, had terrible technology. The advertising-heavy MySpace, which dethroned Friendster, was a bit like Yahoo Answers: chaotic and low-rent, prone to spammers and scams. Yet both were immensely popular — until Facebook came along and figured out how to do social networking right.

— Does Quora Really Have All the Answers?

— Wired May 2011

— Gary Rivlin

2012.05.24 Thursday ACHK

Godel, Escher, Bach

Douglas Hofstadter’s Godel, Escher, Bach uses self-referencing mathematical (formal language) and English (natural language) sentences, pictures (M.C. Escher’s dragon for example), and music (Bach’s fugues) to convey the concept and its recursive nature.

— Wikipedia on Self-reference

In response to confusion over the book’s theme, Hofstadter has emphasized that GEB is not about mathematics, art, and music but rather about how cognition and thinking emerge from well-hidden neurological mechanisms. In the book, he presents an analogy about how the individual neurons of the brain coordinate to create a unified sense of a coherent mind by comparing it to the social organization displayed in a colony of ants.

— Wikipedia on Godel, Escher, Bach

2012.05.23 Wednesday ACHK

Python

Basically, Python can be seen as a dialect of Lisp with “traditional” syntax (what Lisp people call “infix” or “m-lisp” syntax).

Python can be seen as either a practical (better libraries) version of Scheme, or as a cleaned-up (no $@&% characters) version of Perl.

One of Python’s controversial features, using indentation level rather than begin/end or braces, was driven by this philosophy: since there are no braces, there are no style wars over where to put the braces. Interestingly, Lisp has exactly the same philosphy on this point: everyone uses emacs to indent their code, so they don’t argue over the indentation.

Take a Lisp program, indent it properly, and delete the opening parens at the start of lines and their matching close parens, and you end up with something that looks rather like a Python program.

— Python for Lisp Programmers

— Peter Norvig

2012.05.22 Tuesday ACHK