![]() |
| This work is licensed under a Creative Commons Attribution-NonCommercial 2.5 License. |
Category Archives: software
Consistency
There exist two definitions of consistency: semantical and syntactical.
Semantical definition uses the notion of a model and says:
a set is consistent if it has a model.
Syntactical definition uses the notion of provability and says:
a set is consistent if one can’t prove a contradiction from it.
— Cse371, Math371, LOGIC, Fall 2011
— Professor Anita Wasilewska
2012.09.12 Wednesday ACHK
Audiosurf
Audiosurf is a puzzle/rhythm hybrid game created by Invisible Handlebar, a personal company created by Dylan Fitterer. Its track-like stages visually mimic the music the player chooses, while the player races across several lanes collecting colored blocks that appear in sync with the music.
— Wikipedia on Audiosurf
2012.09.06 Thursday ACHK
Logical implication
Entailment [logical implication] vs material implication
The difference between material implication and entailment is that they apply in different contexts. The first is a statement of logic, the second of metalogic. If p and q are two sentences then the difference between “p implies q” and “p is a proof of q” is that the first is a statement within formal logic, the second is a statement about it. Entailment is a concept of proof theory, whereas material implication is the mechanics of a proof.
— Wikipedia on Entailment
2012.09.03 Monday ACHK
Take over the world
At some point, Graham will ask his favorite question: “What’s your long-term plan to take over the world?” Eventually the Westclox buzzer goes off, Livingston snaps a picture of the candidates, and the next group is ushered in.
— Y Combinator Is Boot Camp for Startups
— Steven Levy
2012.08.26 Sunday ACHK
Make
Make something people *want*;
make something people *won’t*.
—
2012.08.25 Saturday ACHK
Functional programming 6.2
The I/O monad
In a purely functional language, such as Haskell, functions cannot have any externally visible side effects. Although a function cannot directly cause a side effect, it can construct a value describing a desired side effect, that the caller should apply at a convenient time. In the Haskell notation, a value of type IO a represents an action that, when performed, produces a value of type a.
We can think of a value of type IO as a function that takes as its argument the current state of the world, and will return a new world where the state has been changed according to the function’s return value. The state created in this way can be passed to another function, thus defining a series of functions which will apply in order as steps of state changes. This process is similar to how a temporal logic represents the passage of time using only declarative propositions.
— Wikipedia on Monad (functional programming)
2012.08.22 Wednesday ACHK
How Not to Die
Idea babies 3
If you look at a list of US cities sorted by population, the number of successful startups per capita varies by orders of magnitude. Somehow it’s as if most places were sprayed with startupicide.
I wondered about this for years. I could see the average town was like a roach motel for startup ambitions: smart, ambitious people went in, but no startups came out. But I was never able to figure out exactly what happened inside the motel — exactly what was killing all the potential startups.
A couple weeks ago I finally figured it out. I was framing the question wrong. The problem is not that most towns kill startups. It’s that death is the default for startups, and most towns don’t save them. Instead of thinking of most places as being sprayed with startupicide, it’s more accurate to think of startups as all being poisoned, and a few places being sprayed with the antidote.
Startups in other places are just doing what startups naturally do: fail. The real question is, what’s saving startups in places like Silicon Valley?
— Why Startup Hubs Work
— October 2011
— Paul Graham
2012.08.22 Wednesday ACHK
Don’t just fix the mistakes
4. Don’t just fix the mistakes — fix whatever permitted the mistake in the first place.
The process is so pervasive, it gets the blame for any error — if there is a flaw in the software, there must be something wrong with the way its being written, something that can be corrected. Any error not found at the planning stage has slipped through at least some checks. Why? Is there something wrong with the inspection process? Does a question need to be added to a checklist?
…
The way the process works, it not only finds errors in the software. The process finds errors in the process.
— They Write the Right Stuff
— By Charles Fishman | December 31, 1996
2012.08.19 Sunday ACHK
Database
What database did you use?
We didn’t use one. We just stored everything in files. The Unix file system is pretty good at not losing your data, especially if you put the files on a Netapp.
It is a common mistake to think of Web-based apps as interfaces to databases. Desktop apps aren’t just interfaces to databases; why should Web-based apps be any different? The hard part is not where you store the data, but what the software does.
While we were doing Viaweb, we took a good deal of heat from pseudo-technical people like VCs and industry analysts for not using a database– and for using cheap Intel boxes running FreeBSD as servers. But when we were getting bought by Yahoo, we found that they also just stored everything in files– and all their servers were also cheap Intel boxes running FreeBSD.
(During the Bubble, Oracle used to run ads saying that Yahoo ran on Oracle software. I found this hard to believe, so I asked around. It turned out the Yahoo accounting department used Oracle.)
— Viaweb FAQ
— Paul Graham
2012.08.17 Friday ACHK
Self aware, 2
Recursion 10
Consciousness is a self aware.
— Me@2012-03-09 10:44:35 PM
2012.08.15 Wednesday (c) All rights reserved by ACHK
Open source
Right-Click -> View Source is what made the web so successful and it’s awesome that we now have this for 3D graphics as well.
— Dominic Szablewski
2012.08.14 Tuesday ACHK
Negative reaction
IsaacL 286 days ago | link
Maybe it doesn’t apply so much for visual design, but I often find that a negative reaction to a new concept or piece of software is better than a “meh” reaction. One example: I made a browser game a few years back, one of the early players posted a huge rant about how frustrating the game was, I fixed the design issues they raised, they grew to love the game.
So I tend to think that a negative reaction is often a sign you have something good, but flawed. You don’t want people saying “yeah, that’s kinda cool”, you want them saying “OMG THIS THING SUCKS I’M TRYING TO GET IT TO DO X BUT I CANT BECAUSE IT DOESNT HAVE FEATURE Y” – at least in the second case you know you have something they want, and you know how to fix it.
— Hacker News
2012.08.13 Monday ACHK
Functional programming 6
A central concept in functional languages is that the result of a function is determined by its input, and only by its input. There are no side-effects!
— Why Haskell matters
My question is, if a function makes changes only within its local environment, and returns the result, how can it interact with a database or a file system? By definition, wouldn’t that be accessing what is in effect a global variable or global state?
What is the most common pattern used to get around or address this?
— edited Dec 7 ’11 at 2:10, Matt Fenwick
— asked Dec 6 ’11 at 20:18, juwiley
The most common pattern for dealing with side-effects and impurity in functional languages is:
- be pragmatic, not a purist
- provide built-ins that allow impure code and side-effects
- use them as little as possible!
Examples:
- Lisp/Scheme:
set! - Clojure: refs, and using mutating methods on java objects
- Scala: creating variables with
var - ML: not sure of specifics, but Wikipedia says it allows some impurity
Haskell cheats a little bit — its solution is that for functions that access the file system, or the database, the state of the entire universe at that instant, including the state of the filesystem/db, will be passed in to the function.(1) Thus, if you can replicate the state of the entire universe at that instant, then you can get the same results twice from such a function. Of course, you can’t replicate the state of the entire universe at that instant, and so the functions return different values …
But Haskell’s solution, IMHO, is not the most common.
(1) Not sure of the specifics here. Thanks to CAMcCann for pointing out that this metaphor is overused and maybe not all that accurate.
— edited Dec 7 ’11 at 2:11
— answered Dec 6 ’11 at 22:00, Matt Fenwick
— Stack Overflow
2012.08.12 Sunday ACHK
Meaningful 7
upgrade path
有出路
— Me@2012-08-06 8:28:47 AM
Somewhere in the course of doing Viaweb, someone gave me a very useful piece of advice: users always want an upgrade path, even though as a rule they’ll never take it. Rtml was our upgrade path. If you wanted to, you could get absolute control over everything on your pages.
— Lisp in Web-Based Applications
— Paul Graham
2012.08.11 Saturday (c) All rights reserved by ACHK
Chrono Trigger 3.2
Meta 4 | The Neverending Story 2
Each computer game is not never-ending, but the meta-game (the game of making and playing computer games) can be.
— Me@2012.08.02
2012.08.03 Friday (c) All rights reserved by ACHK
Cute cat theory of digital activism
The cute cat theory of digital activism is a theory concerning Internet activism, Web censorship, and “cute cats” (a term used for any low-value, but popular online activity) developed by Ethan Zuckerman in 2008. It posits that most people are not interested in activism; instead, they want to use the web for mundane activities, including surfing for pornography and lolcats (“cute cats”). The tools that they develop for that (such as Facebook, Flickr, Blogger, Twitter, and similar platforms) are very useful to social movement activists, who may lack resources to develop dedicated tools themselves. This, in turn, makes the activists more immune to reprisals by governments than if they were using a dedicated activism platform, because shutting down a popular public platform provokes a larger public outcry than shutting down an obscure one.
— Wikipedia on Cute cat theory of digital activism
2012.08.01 Wednesday ACHK
Backward compatibility, 4
Because the real cost of compatibility is not in the hacks. The hacks are small potatoes. Most hacks are just a few lines of code (sometimes as few as zero), so the impact on performance is fairly low.
No, the real cost of compatibility is in the design.
If you’re going to design a feature that enhances the window manager in some way, you have to think about how existing programs are going to react to your feature. These are programs that predate your feature and naturally know nothing about it. Does your feature alter the message order? Does it introduce a new point of re-entrancy? Does it cause a function to begin dispatching messages that previously did not? You may be forced to design your feature differently in order to accommodate these concerns. These issues aren’t things you can “take out”; they are inherently part of the feature design.
— The Old New Thing
— Raymond Chen
2012.07.28 Saturday ACHK
Semantics
The formal description of a process of assigning a logical value (true or false) to all formulas is called a semantics of the classical propositional logic.
— Cse371, Math371, LOGIC, Fall 2011
— Professor Anita Wasilewska
2012.07.24 Tuesday ACHK
Good teacher 2
Bad teacher 2
.
The answer to the paradox, I think, is that you have to design for the user, but you have to design what the user needs, not simply what he says he wants. It’s much like being a doctor. You can’t just treat a patient’s symptoms. When a patient tells you his symptoms, you have to figure out what’s actually wrong with him, and treat that.
– Paul Graham
.
.
.
2010.05.29 Saturday ACHK

You must be logged in to post a comment.