Emacs: The most successful malleable system - <AUTHOR> https://malleable.systems/blog/2020/04/01/the-most-successful-malleable-system-in-history/ <comment><USER2> Thanks for sharing this. My personal experience speaks to a lot of what the author mentions: I'm an academic with little programming experience to speak of (mainly some Java in high school), and it always seemed to my younger self like there was this insurmountable hurdle between the language-learning phase and the part when you can actually develop useful applications. Now, of course, I know that this is not necessarily true of programming, and that this discouraging feeling is something beginners experience in many fields--but that's how it seemed back then.

Flash forward to now: I picked up Emacs a year or so ago because of Org-mode and its promise of organizing my tasks. Gradually growing my init.el to fit with my way of thinking was my first encounter with programming with any kind of direct practical application, since (as the author mentions) a beginning user frequently pastes simple Lisp functions off StackExchange, and you can kind of puzzle out how they work with your own eyes, immediately, even if you lack significant training. It soon gave me the goal of using code that I could understand (at least somewhat) when I needed new Emacs functionality, rather than just downloading a big package off MELPA that would be far beyond my comprehension. And that was the point I started to learn Emacs Lisp.

Currently I've been working on a minor mode. Who knows how long it'll take me, but it's been a fun ride, and I credit this personal development to the lack of barriers in Emacs that the author describes.

<comment><USER3> Ironically I think org-mode is a great example of a non-malleable system. When I started using it I slowly tried to customize it to better suit my needs, but everything was quite brittle.

Posted a comment awhile back with some specific examples from my experience: [https://news.ycombinator.com/item?id=20551598](https://news.ycombinator.com/item?id=20551598)

<comment><USER4> I'd say it's very customizable, but requires (sometimes significant) time investements.

I'll respond here since can't reply to the original comment:

1\. "leading stars" \-- I think the solution is org-hide-leading-stars (and it is basically the hack you are describing)

2\. "now it takes multiple seconds to refresh my agenda view" \-- org-super- agenda is a pretty mature library handles groups well. As for performance, the most significant speedup for me was setting org-agenda-span to a lower value

3\. "it's actually pretty hard to find good examples of a full org-mode workflow." \-- agree. One reason is perhaps because it's quite hard to communicate your workflow to other people becaue it's too specific to your needs.

4\. "But problematically I now have a lot of files with similar names" \-- yep, refile-outline-path, but also uniquify helps a lot.

5\. "Apparently org-mode deliberately prevents the end user from adding their own custom emphasis formats" \-- don't know whether that's the case; but you can abuse org-add-link-type, then you could write [highlight:Some text to highligtht], and do whatever styling you want during the export. Hacky, but kinda does the job.

Finally, it's at least possible _in theory_ to override any org-mode function and change the logic. Of course, you can do it with any other text editor, but it would be way less effort to hack Emacs (even if it's dirty and adhoc).

I can however understand the frustration. It took me several attempts to pick up Emacs and Org-mode specifically. And I'm still very often frustrated by it, but I personally find being able to bend your editor into doing exactly what you want worth the effort.

<comment><USER5> See [0] for for #5 (customized highlighting).

[0]: [https://www.reddit.com/r/orgmode/comments/f7amq2/weekly_rorg...](https://www.reddit.com/r/orgmode/comments/f7amq2/weekly_rorgmode_open_discussion_february_21_2020/fiacx88/)

</comment></comment></comment></comment><comment><USER6> I've been a long time Emacs user since ~1997 until ~2011, when I started developing mostly with ruby on rails on a mac, discovered TextMate and falled in love with it, with its slick UI, freshness (at the time) of ideas, ease of use, despite its obsession with mac based stuff, like the use of Finder for project navigation.

After a few years I discovered Sublime Text, with its tons of extensions and exceptional speed, bought a subscription and learned as much of it as possible, ditching TextMate.

Then I switched to Atom, mostly for the discoverability and the speed (back then) of development (and, frankly, for the hype). The only problem with Sublime Text, at least at the time, was the slow development process: new builds were few and far between.

I tried VS Code too soon, and wasn't impressed by how the navigation between buffers used to work (it has changed since then, I think).

A few years ago I did a serious attempt at learning Vim for good, but in the end I gave up, and I've come back to Emacs, this time to stay, unless something radically new is introduced.

The good thing is that I can usually tell my coworkers about features of the editors they use that they don't know, because I've used them a lot.

The only feature I miss from all other editors is the incredible speed of Sublime Text: to this day, if I ever have to edit an SQL dump (which I hope I will never ever have to do again), I'm surely reaching for Sublime Text, no other editor can AFAIK open a 200+MB file without freezing and/or crashing.

The odd thing about Emacs is that its vastly superior customizability (or malleabilty, as the article says) tend to be a trap, for one can spend hours, and days, getting lost in its huge universe and falling into rabbit hole after rabbit hole instead of actually getting stuff done, but I've not yet decided if that's a bad thing or a good one.

<comment><USER7> > I'm surely reaching for Sublime Text, no other editor can AFAIK open a > 200+MB file without freezing and/or crashing.

For this I use the xi-editor. 20 Gb text file? No problem.

<comment><USER8> I didn't realize Xi was in a "usable" state now. What frontend do you use?

<comment><USER7> It is usable for reading and editing files. Not something I'd use all day, but if I need to edit a huge file, there aren't really great options for that.

</comment></comment></comment></comment><comment><USER9> While I am a fan of Emacs (IMO any one of Org, AUCTeX, or Magit is in itself a worthwhile reason to use Emacs, though of course the ease of customizing nearly anything with just a few lines of elisp is the main comfort), I think it's also worth looking at lessons from the _failures_ of Emacs — what prevents or prevented Emacs from being even more successful? (As the post says, Emacs's "success" is only when considered relative to other malleable systems.)

<comment><USER10> As a die-hard Emacs user, this is also something that has been occupying me lately. There is too little thought going into the deficits of Emacs; many people I convinced to give it a try went back to Sublime, VSCode etc. Emacs has two main shortcomings, in my opinion. The first is that the visual aspect of programming is completely left out. You can have nice outlines, pop-ups, tree views etc. in most other editors; Emacs completely ignored these. The main argument has always been "won't work in a tty", but there should come a point where tty is deprecated or at least treated differently. The other is evolving the language. Elisp was great for its time, but compared to modern languages its age clearly shows. There are no namespaces, it can be dead slow, support for networking is limited, regular expressions are weird etc. I think there should be more work going into modernizing the language, which can also be used to introduce facilities for GUI elements and networking code, especially async.

<comment><USER11> I strongly believe that TTY compatibility is a feature which should not be discarded. But that doesn't, I think, prevent the kind of features you mention: they just need to be first-class UI features like the minibar is.

Agreed that Elisp needs to be upgraded. I think that it should just be replaced with Common Lisp, which has namespaces (packages), and is very fast, and whose implementations support networking & threads just fine. Of note, part of why Emacs regexps are so unusual is that they are pragmatic: since they will be used to match Lisp source so often, () are not the metachars they are in other regexp dialects.

<comment><USER12> > Emacs regexps are so unusual

Parentheses are also not metachars in Vi (and Vim) regexps by default, and are not metachars in POSIX BRE (basic regular expressions).

[https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1...](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03)

The grep utility, for instance, understands BREs by default; you must use grep -E to get ERE (extended regex) in which ( and ) are grouping characters, or else the deprecated egrep command (not in POSIX).

</comment></comment></comment></comment><comment><USER13> The strength of emacs is that once you can program it it's extremely easy to write extensions for it, even for one off tasks, because it's so quick and easy.

Compared to this writing extensions for vscode, for example, is much more convoluted. You wouldn't create a new vscode extension for a 1 hour task, while with emacs it's trivial to write some small code which can help you with your current task. I often do.

<comment><USER14> > The strength of emacs is that once you can program it it's extremely easy to > write extensions for it

It's not easy by many miles. It's possible but learning the emacs-environment to some aceptable level can take much time and toll.

> Compared to this writing extensions for vscode, for example, is much more > convoluted.

Depends on your competence and tooling I would say. From what I've seen, it isn't much harder than writing something midly complex for emacs, But very simple stuff is easier done in emacs, something like single functions. But those have the price that you need to learn emacs lisp on decent enough level first.

But the question is, if you already can code, then why bother with creating elisp-code or an vc code-extension? Today there is a good change that you already known some useful tooling-language.

<comment><USER15> > It's not easy by many miles.

Depends on the perspective of-course. I mean, LISP is a real barrier, but once you got over the parenthesis and suck-up some quirks [1], you can get productive quite easily.

Here are two example extensions from my `init.el`.

        (defun hh-curl (url)
          "Create tmp buffer with curl output"
          (interactive "sURL: ")
          (let ((buffer url))
            (with-output-to-temp-buffer buffer
              (shell-command (format "curl -s %s" url) buffer)
              (pop-to-buffer buffer))))

        (defun hh-insert-date ()
          "Insert current date in ISO format"
          (interactive)
          (insert (format-time-string "%Y-%m-%d")))

It's really not all that much syntax. You can get interactive help by navigating to a function call and press `C-h f`. Installation is trivial: Just drop it to init.el.

Use this function my typing `M-x hh <tab>` to see all my extensions, if I forgot the name. I have bound hh-insert-date to a key b/c I use it frequently.

[1] [https://www.heinrichhartmann.com/blog/problem- lisp.html](https://www.heinrichhartmann.com/blog/problem-lisp.html)

<comment><USER14> I'm not talking about lisp or syntax. Learning that is fast. But this is worthless. Learning syntax is fast in any language after a certain point of knowledge.

The juice is in the batteries. The datatypes, the libraries, the environment. Getting to know how to do the most simple things can be very cumbersome in any language, and especially in something old and loaded like emacs.

There is a reason why popular external libs like s.el or f.el are so widely used, and why emacs-projects itself has started modernizing on that front. But those are things you don't know as a beginner.

<comment><USER16> After spending lots of time customizing various software from macOS to Emacs to Vim to AppleScript to iOS with Workflow, I've come to the conclusion the language and environment are practically irrelevant. There are simply two kinds of people:

1\. People who complain about this or that problem in the environment (and say that's why they don't customize it).

2\. People who learn and use the environment.

These two groups exist in every one of these communities. There just a fact of life in the world of customization.

(PS: I'm trying to put this in the most neutral way possible, I'm trying not to make any judgements here, personally I'm a customizer, but I'll be the first to admit that I waste a lot of time customizing, and I won't make the argument that customizing is inherently better, just that I prefer it. The point is, the _very nature of customizing_ is what makes it hard, the quirks of the individual environment just don't seem to make much a difference.)

</comment></comment></comment></comment></comment><comment><USER17> Emacs is more like an Elisp programming environment that happens to have a text editor built in. And a window manager, process manager, shell, terminal multiplexer, async event loop, cross-platform OS APIs, debugger, a bazillion libraries for everything you could need.

Just to see how far one can go I cobbled together a few libraries one afternoon and wrote a Dockerfile that enables one to write web applications in Elisp: [https://github.com/agentultra/Dockmacs](https://github.com/agentultra/Dockmacs)

I'm having trouble finding them but I've read stories of hackers developing and deploying useful applications they built in emacs to end users. I don't know that I'd go that far but... you do get cross-platform GUI controls so it doesn't seem impossible for simple, straight forward tools.

<comment><USER18> One you may be thinking of is that Amazon used an Emacs Lisp interface for their customer service for a number of years.

[https://sites.google.com/site/steveyegge2/tour-de- babel](https://sites.google.com/site/steveyegge2/tour-de-babel)

Search for "Mailman" to find the relevant bit.

</comment></comment><comment><USER19> One idea I've always wanted to try out if I had the knowledge and time is creating a text editor in Racket that effectively worked like Emacs, but instead of elisp you leveraged the language creation features of Racket. So your init.el could be #lang Python and then you would configure it using Python, or #lang Java or even #lang elisp. Of course all of those languages are just being translated back into Racket but that's not the point. The idea would be that you could customize the editor using the syntax you preferred.

There are definitely some cons to this approach. But the goals would be accessibility and customizability for the end user especially people without a programming background.

Oh and you could choose Emacs or Vim keybinding and all editor functionality would be supported using either.

<comment><USER4> That's my dream! Do you know of any existing efforts towards it? I don't know much about Racket, how would #lang Python thing work (i.e. in terms of calling foreign functions etc)?

<comment><USER20> As to `#lang python` interop with Racket, it's possible, but the farther a language's semantics and object model differ from Racket, the harder and less pleasant it is to build and use in practice. In other words, you need converters between runtime values between Racket and Python when their semantics differ. For example, Python strings are instances of Python's string class, with a bunch of methods, and you can mutate the string class at runtime. They are very different from Racket's strings. Then you have all the differences in core reduction semantics, how concurrency and parallelism is handled, etc, and there are a lot of differences to smooth over.

There is a project called PyonR ([https://github.com/pedropramos/PyonR](https://github.com/pedropramos/PyonR)) that implements Python 2.7 as a Racket #lang, but it hasn't been developed for a while, and I'm not sure how interoperable it actually is. It certainly isn't to the point where you could pull in your favorite Python package from PyPI to use in Racket, but it does claim that you can use Racket functions in your Python code at least. The hardest part just using PyPI packages is probably that many of the most important Python packages lean on Python's C FFI, which is a large extra hurdle, though there are many worthwhile packages that are pure Python code.

The most successful Racket #langs are languages that fit a particular domain or style of programming better than basic Racket, but that lean on Racket's core semantics and object types as a building block rather than something to be constantly slightly different from in ultimately unimportant ways. While working with Racket, these languages may be very different from the core Racket language, such as documentation languages (scribble), logic languages (datalog), shells (rash), database query languages, etc. If you just wanted to let people write new code for their editor in a language that looks and feels like Python alongside Racket and its #langs, it would be a much easier project to make a language with Pythonic syntax (syntax is shallow), easy constructors for Python-like lists and such (just a few custom datatypes), and a Python- like way of providing generic operators (eg. __magic_method__), etc, but otherwise with semantics closer to Racket's. Frankly, you would end up with a better language than Python anyway, with powerful features that most Pythonistas haven't dreamt of. (Bias revealed!) But I do dream of having a `#lang python` implementation good enough to just use Python packages in a pinch when Racket doesn't have an equivalent package. It's possible, but it's a big enough project and there is little enough manpower in the Racket world that nobody is seriously working on it.

<comment><USER19> I agree with you. In a perfect world you would be able to drop in Python code and only have to add a #lang Python at the top of it. But realistically I think it would be closer to what you were saying about creating a pythonic language.

So maybe the practical solution is to have a language that looks like Python, Java, Ocaml, etc. I'm not sure how many #langs you would need to make the majority of programmers feel comfortable but I think even implementing a few would be a huge step up in accessibility than what we currently have.

</comment></comment></comment></comment><comment><USER21> Emacs is amazing. I stopped using it a few years ago because I became lazy to keep my configuration and extensions up-to-date.

I was also extremely bothered by the fact that the cursor cannot live outside the current viewport and scrolling the buffer would drag the cursor as well. At the time, it seemed impossible to fix because of the way Emacs works, and the solution was something like "you are using it wrong - you need to use marks instead".

But I would love to go back to it, to be honest. VSCode is very good, but Emacs is a whole other level of automation and convenience.

<comment><USER22> > I was also extremely bothered by the fact that the cursor cannot live > outside the current viewport and scrolling the buffer would drag the cursor > as well.

I can see how that would be annoying. I can also see why the developers might not have noticed. When I'm in Emacs, I tend to navigate using the keyboard, which means I scroll by moving the cursor and dragging the viewport with it.

So they probably added the ability to scroll without moving the cursor so Emacs would have the feature. But if they never really used it, they wouldn't have noticed the shortcomings in their implementation.

Sorry for the rambling, not sure if I really had a point to make ;)

<comment><USER21> If well configured, mouse support can be handful when navigating code. There is a niche editor called Acme[1] that is almost "mouse-only", where even Return won't put you in the next line :)

When using Emacs, my workflow was very keyboard-centric, but sometimes navigation was a pain (even with tags and whatnot).

[1][https://www.youtube.com/watch?v=dP1xVpMPn8M](https://www.youtube.com/watch?v=dP1xVpMPn8M)

<comment><USER22> Oh sure, I'm not saying it's not a useful feature. Just an observation of how different usage patterns can lead to blindspots.

</comment></comment></comment></comment><comment><USER23> Author mentions web browsers and extensions in the context of barriers to creating a successful malleable system.

Surely the web browser - considered in relation to web pages & technologies (HTML, Javascript etc), rather than extensions - is perhaps the _most_ successful malleable system in history.

The core browser "functionality" has been and can be extended in an almost infinite number of ways via web "pages". You could consider his dichotomy between "foundational" features (unavailable to the user/tinkerer) and extendable features to be comparable between Emacs (C vs elisp) and the Browser (C++ [for example] vs HTML/Javascript/CSS).

I realise that to "extend" the browser by building a web page includes a great deal more friction than playing with elisp in _scratch_. Does this rule out the browser as a "malleable" system?

<comment><USER24> Emacs includes a web browser out of box (just saying; I know its limitations).

<comment><USER25> Doesn't that argument just indicate that web browsers are in fact more widely used and "successful"?

</comment></comment></comment><comment><USER26> Emacs is malleable enough that someone implemented a whole screen reader in it.

The basic idea is that you have a library that lets you stick your own code at the beginning/end/around existing functions. So, someone did that for functions responsible for moving to the next/previous line/word/character, and they had a basic screen reader in place. In about 30 minutes.

Now, it's far more advanced, and, because of the malleability, you can "hack" information out of someone else's code if they don't provide it to you directly, which comes in very handy for such things.

As an aside, NVDA, the main screen reader for Windows at this point, is very malleable too. It's written in Python, so extensions can modify anything they wish. Amazing things have been built for it, including a whole remote access package, team-viewer style.

</comment><comment><USER27>
        (global-set-key (kbd "å")  'hippie-expand)

        ; Swedish "å" is useless in Finnish keyboard.
        ; After 40 years I finally understood I do not
        ; have suffer this injustice anymore. Quite logical
        ; because "ååå" pronounced in Gay Swedish way is an
        ; expression of frustation and indecisiveness.

</comment><comment><USER28> For those who are intrigued by all of this, I will mention that the built-in tutorial (Help->Read the Emacs Manual) and the intro lisp tutorial (Help->More Manuals->Introduction to Emacs Lisp) are both interactive and very readable.

I've recently decided to start writing my miscellaneous scripts in Emacs Lisp, both as a way to learn a lisp and a way to get more productive in a platform which I expect to be around until I die. And it's pretty fun.

</comment><comment><USER29> I used emacs for a year and a quarter as a common lisp developer.

There was an integration into emacs from the compiler that provided support for a lot of things like jumping definitions and seeing who calls, and it was much better than the IDE IMO, in that syntax highlighting worked correctly for one, along with the ability to use multiple buffers and windows.

I used it as my main place of development while I worked at that company, and it was a pretty great pleasure minus a few issues.

I never tried using SLIME because our lisp didn't seem to automatically support having project files being loaded into it, but I probably would have had I stayed too much longer.

</comment><comment><USER30> I use emacs for two primary use cases:

\- Niche programming languages tend to have invested resources into building an emacs mode for their language. Importantly, these emacs modes tend to be maintained by core language contributors. In contrast, VSCode or other editors tend to be community contributions which are discarded over a period of months/years.

\- markdown editing

\- that's it (I've tried magit (too clunky/sensitive), org-mode (too much lock-in), etc

On windows i find Emacs horribly slow to render text/buffer updates.

On linux it is blazing fast.

<comment><USER31> I find it weird that your point against org-mode is "too much lock-in".

It is a plain text format, which looks good even wherever it is viewed.

Pandoc even supports org-mode[1], which should let you convert an org-file to say markdown if you want.

<comment><USER30> sure, only if you stick to bare-bones org-mode. if you start using any of the "power-features" unique to org-mode you're stuck. If you restrict yourself to markdown-compatibilty, why not just write in markdown?

</comment></comment></comment><comment><USER32> Wouldn't there be a stronger argument for Excel?

Excel has probably put more programming power in the hands of more people than any piece of software in history.

<comment><USER33> Malleability refers to the ability to make your tool fit your needs. Excel is not as malleable a system as Emacs, but it's indeed one of the most powerful tools out there.

</comment></comment><comment><USER34> I've been curious about emacs, and tried it once without know what the hell I was doing. But I've heard enough good things that I'm considering trying again.

I run i3 and vim, so I already have my tiling WM dialed in, and I'm good enough with vim that I don't struggle with using it. I have almost 0 interest in learning Lisp, beyond what I'm willing to learn to make emacs fit my use- case. I spend all day in terminal windows. I've heard about ORG-mode, and wondered if it will help me become more organized.

I killer-feature of vim that I've edited into my work-flow is that I have it auto-save a backup copy+time stamp of any file I save. It's a VCS-style hack, that 'works for me' and I think it is a better fit then git would be under the situation. (i.e. httpd.conf_2020-04-15_14:10:01)

Can a similar hack be incorporated into emacs?

<comment><USER35> Yes.

Though, I would say, you should really look at something like [https://github.com/ryuslash/git-auto-commit- mode](https://github.com/ryuslash/git-auto-commit-mode) so your directories don't get cluttered with save files.

</comment></comment><comment><USER36> > Note: Geoffrey Litt's post on browser extensions takes a different point of > view, considering browser extensions as a way to modify not browsers but Web > applications.

This one rang a bell. When I was working for Canonical, I built an extension to make Launchpad more comfortable for me. It still has some users (but probably needs a lot of fixing): [https://chrome.google.com/webstore/detail/launchpad- tweaks/p...](https://chrome.google.com/webstore/detail/launchpad- tweaks/pinhffhfibgmfgjjafafhiaegdmomhhk)

</comment><comment> dan-robertson Emacs is an excellent malleable system because elisp is an excellent programming language.

A few important qualities that make it particularly good for this sort of environment:

1\. Dynamic scope. Dynamic scope (aka special variables) means that if I locally bind the variable foo to bar, that binding is available for the dynamic extent of the let (ie a function deep in the call stack may access that binding of foo even if it was not defined lexically inside the binding). This allows passing state or options or configuration between different places which are amenable to extension, or modifying the behaviour of existing features by temporarily modifying their state. In other systems these problems may be solved by using lots of arguments, special mechanisms for passing custom parameters around, or well defined protocols to extensions with their own state. In those alternatives the fallback is either to impossibility or to storing state in poorly managed global variables. Elisp handles that "local global" state better and eg makes sure it correctly deals with multiple bindings or stack unwindings. One example usage would be for some custom comment syntax. You can just (locally) bind custom values to the variables which define the comment syntax and then call the usual comment function.

2\. Hooks are very natural data structures which extensions use to make explicit extension points. Because books are lists, they may be conveniently dynamically bound (e.g. (let ((foo-hook (cons blah foo-hook))) ...)).

3\. Buffer-local variables attach arbitrary state to each buffer and make it available as global variable bindings when that buffer is current. The alternative would be less begged local state, state attached to many more different things, and doing lots of requests for current-buffer.state.foo. Maybe these would make you think more about the current buffer changing but I'm not sure thinking about the problems leads to less buggy code. Buffer local variables makes writing modes easier and it makes it easy to not have to care much about the existence of other buffers while still easily being able to write code that spans multiple buffers.

4\. Advice. Advice is like complex hooks except you can put it almost anywhere. You can "advise" any function with extra code to run in various places (eg before, after, around, just modifying the arguments, before but the advice is and'd with the function so if it returns nil the function isn't called, and so on). This lets you tweak just about anything. For example I was using a build-managing mode which was not so extensible but by advising process creation I could modify its behaviour to nice the compiler executable.

5\. Various save-restore macros. This could be done with first class functions but programming against the macros makes common idioms so much easier. Maybe an argument could be made that not having global state would make things a lot more manageable but I think macros like save-excursion, with-temp-buffer, and so on generally keep things under control

6\. Most state is globally accessible. By this I mean most variables are special, and there is lots of important state which is global or buffer local like the point, mark, window configuration, or current buffer. This means that the current state is generally available to any extension code that runs and not kept private to some other bit of code (prohibiting extensions from getting at it). It allows most behaviour to be tweaked.

7\. Recursive editing. It's just really nice that you can pause half way through your program, have some editing done, then resume where you were: the user may live inside as well as outside the elisp call stack. Though mostly this is infrequently used.

8\. Simple data structures. Because most things are text in buffers, you generally move around this data structure in a rough way (search forward for this, edit that, and so on) which is resilient to that data structure being changed/extended under you.

It's curious that a lot of these qualities are generally considered terrible features for writing maintainable code. This is because maintainable code generally wants different things to not be able to affect one another much. If you want an extensible, malleable system, it probably makes sense to have things which are easy to modify the behaviour of from just about anywhere.

<comment><USER37> Nicely written summary!

This paper was written by Richard Stallman in 1981 and delivered in the ACM Conference on Text Processing which touches on all of your points and a few more: [https://www.gnu.org/software/emacs/emacs- paper.html](https://www.gnu.org/software/emacs/emacs-paper.html)

<comment> dan-robertson It doesn't mention some of the newer things like hooks.

I love how much emphasis there is on efficiently updating the display. That mostly isn't a problem these days (indeed it's somewhat likely that emacs is slowed down by trying to compute efficient updates instead of just sending out the updates as soon as possible)

<comment> dan-robertson By hooks I meant advice

</comment></comment></comment></comment><comment><USER38> > Lesson #1: Provide significant out-of-the-box utility

There has been a push to move certain modes out of the core Emacs distribution and into package repos, I guess because it makes it makes them easier to maintain. Emacs comes with a Python mode, for example, and that conceivably could go to ELPA. But not everyone has access to package repos, and switching from a kitchen-sink model to a framework-for-external-repos model would make Emacs far less useful for such users.

<comment><USER13> Only a tiny minority of users can't access package repos. They can download the packages at home and mail themselves in a zip file.

It's trivial to create a zip file containing the necessary files, plus a config elisp file which has the personal customizations.

<comment><USER38> > Only a tiny minority of users can't access package repos.

That sounds like a verifiable claim. Do you have any proof?

<comment><USER13> Only my personal experience. I never encountered a situation in my professional life where I couldn't access the net.

How is it verifiable? Is there some statistics of this?

<comment><USER11> You must never have worked on airgapped systems then. Or had to justify non- standard software to gatekeepers.

<comment><USER39> Surely workers in airgapped systems are (objectively) a minority, if not a tiny minority ('tiny' is subjective..)

</comment></comment></comment></comment></comment></comment><comment><USER40> what about minecraft? seems way more successful and malleable

<comment><USER41> Yep, with vanilla minecraft you can make a ton of interesting changes to the game using command blocks, redstone, etc. And then you have to consider modding, which opens up infinite possibilities.

<comment><USER42> Plus redstone is much easier to read than elisp

<comment><USER39> I find it to be riddled with limitations and oversights. For instance, why can't I fill cauldrons with dispensers?

</comment></comment></comment></comment><comment><USER43> I think that title must go to Excel.

<comment><USER44> Excel is malleable? Not really. For example while it is possible to port org- mode to excel, AFAIK nobody did it.

<comment><USER45> They built ray tracing engines and games and whole financial systems in Excel, it's possible. Probably nobody cares to do it as "org-mode" for Office is called Outlook ;-)

</comment></comment></comment><comment><USER46> Does anyone have a favorite example of the coolest thing done in Emacs / coolest, most interesting configuration?

</comment><comment><USER47> Sure, would be nice if there was an alternative to install that didn't need a MySQL client though!</comment>


Lulu.com - My experience with self publishing - <AUTHOR> http://litlift.com/lulu-a-review <comment><USER2> The cost of distributing books is plummeting. The relative value of editorial process is going up, but we haven't noticed yet.

Instead we are witnessing the literary equivalent of Gresham's Law. Gresham's Law is the recognition that whenever more than one type of currency is legal tender, (e.g. gold and silver) the more valuable one disappears from circulation.

Now a "book" is like currency in that it is a token of its valuable contents. Some are better than others, but people buy a book without fully evaluating the quality. Indeed that is the reader's job.

"Old publishing" may be dying but a side effect is that any old manuscript can now be published. The downside is that the "good" books will be harder to find in this democratized world. Eventually we will have to re-create the editorial process of old publishing on top of the new distribution channels. Then readers will associate some e-publishing brands with quality--even more so than today. But it hasn't happened yet.

<comment><USER3> Some of my startup ideas are based partly on the expectation that trusted curators will become more in demand in the future in any area where the Internet is disrupting like you described.

<comment><USER2> Makes sense. Obviously books are an area where search alone won't cut it. Knowing that a book exists and knowing you would like to read it are very different questions. How do you identify the boundary between search and trusted curators? How do you integrate trusted curators with collaborative filtering? How do you filter out books filled with rookie mistakes?

A similar issue is being worked out in news. Most people would still rather read the NY Times and WSj rather than wikinews. The reason: editorial input. Wikinews is a noble effort but has not got the magic formula for editorial control.

</comment></comment></comment><comment><USER4> As a former intern at Lulu I'm very happy to see a post on HN about it. Lulu has come a very long way, in many aspects, but specifically in print quality. The UX department while I was there was way more into testing users, and working long hours trying to be as usable as possible than I would have ever have expected.

<comment><USER5> As a former user of Lulu, I'm very happy to hear about the improvements in print quality and can now move Lulu from "Oh hell no, never again" status to "viable alternative next time Blurb wants to charge me $80 for a 50 page book."

<comment><USER6> What exactly were your problems with Lulu? I have been meaning to get a hard copy of Creative Commons licensed math textbook made and was considering using Lulu. Is it okay for printing technical books?

<comment><USER5> The time I used it (which I think was right after they launched) the paper was incredibly low quality and the print quality was lacking compared to what I'd consider most laser printers capable of. This was for novel-type text. This was also something like 7 or 8 years ago. I'm sure they've improved by now!

</comment></comment></comment></comment><comment><USER7> I really like Lulu.com. I have published 2 books on Lulu (and 15 through conventional publishers). Lulu is perfect for projects with limited market potential that authors want to write anyway. I use Lulu for things I want to give away free as PDFs and give people the option of getting a print book.

</comment><comment><USER8> >"What it doesn't do is make it easy for you to understand which section of the cover your actually editing"

Hope he proofread.

FWIW I make these mistakes (homophones) at a depressingly increasing rate; I blame it on dying neurons.

<comment><AUTHOR> I proofread the book. I guess I should have proof read the blog post.

<comment><USER8> What would I do then if there weren't silly little writing errors to nitpick about...</comment></comment></comment>


R.I. may defer loans for young entrepreneurs - <AUTHOR> http://www.bostonglobe.com/business/2013/08/26/considers-deferring-student-loans-for-young-entrepreneurs/R1CUAZrGz5OtqEuHX040kM/story.html

<comment><AUTHOR> Think it would be helpful to defer loans for graduates who go to work for start-ups or launch their own entrepreneurial ventures in the state?</comment>


Ask HN: Why most SaaS companies are leaving money on table - <AUTHOR> In SaaS subscription billing, some developers simply add stripe and are done with it.
In many countries, people don't have debit or credit cards with high transaction limits. Sometimes monthly limit is like $200 and if someone's paying $400 for a product then charge doesn't go through.
I think this is leaving 20% of money on the table which comes through other payment methods like cryptos including bitcoin, wire transfer (manual), skrill, western union, yandexpay, webmoney which is very popular in Soviet block countries.
Why there isn't any subscription management product which supports all of these gateways? <comment><USER2> Is 20% just a guess?

SaaS companies want to automate as much as possible. If there's a payment provider offering to cash in checks or make wire transfer less of hassle then that's good. At some point through it gets too complex to support 3-4 payment providers. So most just choose one unless they really see "money on the table", which would require customers to ask for a certain payment method.

[https://www.bspayone.com/DE/en/services/payments](https://www.bspayone.com/DE/en/services/payments) is a German company offering some methods you've likely never heard of, even paying cash at a supermarket (you receive a barcode, then you pay online by scanning it with your mobile phone).

There must be 100s in the world. Here's a list what Spree Commerce supports, payone isn't even on the list [https://github.com/activemerchant/active_merchant#supported-...](https://github.com/activemerchant/active_merchant#supported- direct-payment-gateways)

</comment><comment><USER3> I think those subscription box startups are going to blow up and dry away with the rest of the 'Bezzle' when the economy slows down.

[https://www.newyorker.com/news/john-cassidy/bitcoin-falls- vi...](https://www.newyorker.com/news/john-cassidy/bitcoin-falls-victim-to- galbraiths-bezzle)

GE used to run ads saying it was as cool a place to work for young people as those subscription box startups and now we know it was part of the Bezzle.

Even reputable companies (with something to lose) like Amazon can't seem to stop billing me for Music Unlimited.

Once consumers discover that they only way they can stop a rouge subscription service from billing them forever is to change their credit number they won't get any more and they will think twice before moving existing subscriptions to the new credit card number -- which will end them.

If there is a need for something it is serving the need for customers be able to cancel their subscriptions. Some kind of service specialized for recurring payment that lets you end them with one click and no harassment.</comment>


Ask HN: Recommended blogs by smart people you read? - <AUTHOR>

I've asked this before but like to do it periodically as new people may answer.
What are some blogs by really smart people you read?
Ideally the less well known/obvious the better.
I think blogs can be a really good source of insight because they give you access to less known and less commoditized knowledge.
So what are your recommendations?
Doesn't have to be restricted to any topic necessarily, some categories come to mind such as science, business, philosophy, art, culture, or whatever you're interested in.
Looking forward to answers! <comment><USER2> Ben Horowitz -> [http://www.bhorowitz.com/](http://www.bhorowitz.com/) Seth Godin -> [http://sethgodin.typepad.com/](http://sethgodin.typepad.com/) Tim Ferriss -> [http://fourhourworkweek.com/blog/](http://fourhourworkweek.com/blog/) Neil Patel -> [http://www.quicksprout.com/](http://www.quicksprout.com/) Yours truly -> [http://danielscocco.com](http://danielscocco.com)

</comment><comment><USER3> Ben Evans (partner at Andreessen Horowitz): ben-evans.com ... On that note, there's a lot of great content on their website (a16z.com). I highly recommend both.</comment>


Radeon Gallium3D Performance Gets Close To Catalyst On Ubuntu 14.04 - <AUTHOR> http://www.phoronix.com/scan.php?page=article&item=amd_radeon_trusty&num=1

<comment><AUTHOR> AMD releases real documentation for their chips and pays programmers to write free, in-kernel drivers for their cards. The idea that nvidia has better drivers needs to die.</comment>


Ask HN: Please Review My Startup -- a SaaS for Local TV Stations - <AUTHOR>

Hi Everyone,
I am a solo founder . I have  bootstrapped my start-up NewsPVR.TV and now  I am launching.  I will appreciate any feedback you may have.
This is the problem I am solving :
(My target customers are  Web-admins & Marketing folks at  Television Stations with Local News and Programming. )
Local TV stations promote their content by Tweets, Email alerts and Facebook posts .  These posts/links are driven by their content as opposed to viewers' interest.  A One Hour news show  might cover more 15  than topics  -- but if a viewer is interested in 4 things --e.g.  Price of Gas,Military ,  Football , schools -- she or he is unlikely to sit through the whole video to get to the bits  she or he is interested in.
This is how I solve it:
My product,  NewsPVR.TV,  will figure out which exact segments of the  news  video corresponds to the topics  each member of  audience is interested in ; it creates a play-list with only these items extracted from the news video and posts it to the viewer's wall as a video clip or emails to it the viewer.  This way each viewer gets his or her own personalized new videos. We let the viewer define exactly what they want to watch and we deliver just that along with targeted video advertising.  By delivering personalized video news to subscribers, we can improve open rate and click through rates  -- thereby increasing revenues.
Sales: I am currently using LinkedIN InMail to reach out to sales prospects. No luck yet ;-(
I would appreciate any help  I could get  with sales and business development.
I believe in this product so much that I have decided not to charge any money from my clients until my product starts generating marginal revenues for them.
I can be reached at email@example.com. <comment><USER2> Most stations in the US are now posting content transcribed directly to their own websites with clips of the appropriate story already. Promotion is the then directed to twitter/fb on an automatic or selective basis. Is this basically what you are talking about? In the scenario above, people find out about the content through search or directed discovery or one of the aforementioned social streams.

If so, then please understand that I don't think you've thought through your hypothesis and gauged demand enough. News shows purposefully put the best content at the end of a show because they want people to slog through the 15 or so commercials in the 3 breaks before consuming it. Notice this whenever there is a juicy story or big weather prediction.

Enmass show viewership pays more than selectively pulling out the good bits. AftEr the fact, the value of the content would be zero anyway, so it's repurposed for web use.

I would validate your hypothesis with both the consumer and customers. If you can't see it working, pivot. Perhaps a subscribable video playlist based on topics (like good alerts) not channels (like YouTube) _.

_ if you use this idea and it generates revenue, I want 2 percent.

<comment><AUTHOR> Hi bigohms I totally agree with what you said ; I suck at getting my message across.

I am doing exactly what you said I should be doing "Perhaps a subscribable video playlist based on topics (like good alerts) not channels (like YouTube)". Could you be so kind as to just check my website and help me tweak my message.

<comment><USER2> Sure. Checked the site and yes, message and presentation is a bit off for B2B. Email me and I'll reply with my thoughts omid at Rennzer dot com

Also your sales process will need to be a little more expansive than just linkedin in mail messages. Download or buy "Selling to Big Companies" by Jill Konrath. B2B is a slow slog but there is some potential. Be advised that what you're proposing isn't really defensible from being replicated. There is no secret sauce. Broadcasters news feeds are already running through packaging scripts for the web, this would be the Facebook component. Companies may want to just put their own ads on a HTML5 player and keep 100% of the revenues. And they have the resources to get it done.

</comment></comment></comment><comment><USER3> You should very quickly talk to a local station and validate that your idea makes sense with regard to business objectives and content restrictions.

Specifically, I think you may find that stations will not let you copy content or ads to clips on your Amazon CDN account as it is not in line with how they manage content rights and restrictions, nor does it allow to them to manage ads and tracking.

I believe you can access segment clips on a local stations website - why not do your alerts/preferences as a marketing feature/service that alerts then direct folks to the clips on the stations' site?

<comment><AUTHOR> I want to make the user experience seamless " if a user is interested in 3 items -- I don't want him jump from clip to clip; instead I want a seamless newscast with just his/her items , while giving him or her the option of going deeper.

The second reason is controlling the exposure to ad. The idea is that we not to force the viewer to view an ad unless we know that he or she has consumed more than X second of news videos.

As far as the CDN bucket goes -- the broadcaster owns the bucket. I have them set up their buckets ( for which Amazon bills them). My application just needs access rights to that bucket.

Also, I expect TV stations would be flexible in content management as news is a fungible and highly perishable commodity ( 5 pm news is stale by the time is 11 pm ). Also, unlike entertainment content ( sitcoms etc.) , Local TV stations produce their own news content; so they less encumbered by third party copyright issues.

<comment><USER3> Understand your desire around consumer experience, but you really need to engage now with a few stations to vet your assumptions.

</comment></comment></comment><comment><USER4> I think this idea is potentially useful and having a news/tv background, I can see the value both the the broadcaster and to the audience. Have you tried offering this to a large broadcaster, such as NBC, as a test pilot, working together to refine the product and use as a case study? NBC is interested and actively integrating emerging digital tech. Local news is a very tough sell as they don't have much money and take limited risk.

<comment><AUTHOR> Thanks , your feedback was encouraging.

Quick question : when I talk to a news broadcaster e.g. NBC -- who are the right people e.g. should I approach marketing or web team or the producers ?

</comment></comment><comment><USER5> i really like the idea. how are you getting around the copyright issues of parsing out their shows and displaying it online?

<comment><AUTHOR> Thanks for liking it! I am building this as SaaS for TV stations ; the TV stations would continue to own the copyright of their content. My solution will just provide a value-add service for their content.

</comment></comment><comment><AUTHOR> Clickable Link: <http://www.newspvr.tv></comment>


What is a shell and how does it work? - <AUTHOR> http://experiments.oskarth.com/unix01/ <comment><USER2> The shell I use on x86 returns the value in ax as the shell variable $?.

I have always thought about the idea of a shell that could return values from other registers.

I guess there are reasons this would be a stupid experiment. Or maybe I am the only one could see the utility of it.

Did anyone see Bourne's keynote at BSDCan about how sh was developed? I only looked at the slides.

Meanwhile I use a debgger for asm programs called ald to trace register values. I found a nasty bug in this program but I am not aware of any similar debuggers aimed at asm (cf. C).

<comment><USER3> I think eax is the only register guaranteed to have its value preserved by the ABI. So the other registers might end up with junk loaded during the exit() syscall.

Plus IMHO, the added confusion of having extra output channels doesn't seem worth it.

</comment></comment><comment><USER4> Great post. Not beeing a systems dev though it kinda lost me when he talks about pipes. Pretty great overall though, I learnt some stuff :)

<comment><USER5> Author here. Glad that you liked it and that you learned some new things! Would you mind elaborating on what you found confusing about the explanation of pipes?</comment></comment>


What's the difference between a console, a terminal, and a shell? - <AUTHOR> https://www.hanselman.com/blog/WhatsTheDifferenceBetweenAConsoleATerminalAndAShell.aspx <comment><USER2> And to further confuse people, the graphical interface is also called a shell.

[https://en.wikipedia.org/wiki/Windows_shell](https://en.wikipedia.org/wiki/Windows_shell)</comment>


Larry Garfield Expelled from the Drupal OSS Community for Gor Interest - <AUTHOR> http://www.inc.com/sonya-mann/drupal-larry-garfield-gor.html <comment><USER2> This shit is out of control. Put aside the sexual aspect of situations like this for a second, regardless of what you think of them (a tall order for some, I know). These days it seems as if people aren't allowed to have any individual personality anymore. The Internet has the immensely incredible potential to connect the world, to bring together people of different backgrounds/cultures/communities/etc. Yet this political correctness bullshit means that if you express even the tiniest hint of being anything other than "plain Jane" straight down the middle-of-the-road you are likely to be lambasted, railroaded, harassed, and possibly lose your job/place to live/goodness knows what else.

What is even the point of things like "social media" if you can't truly be yourself? People are strange. Too many people act like like they are in the business of being professionally offended. They jump on the outrage bandwagon far too easily, seemingly just to be able to point out to other people that "yep, see, I too was against that, see my Tweet on the matter? Did ya? Did ya see it!?"

Stephen Fry was right on the money when he said people declaring they were "offended by ..." was the equivalent to the adult version of whining. OK... so you're "offended" by that... so fucking what? People act like if they declare they are offended, or point out how "wrong" something they don't agree with is that it automagically puts them on some sort of moral high ground. Ridiculous.

<comment><USER3> "These days" ??

It's always been this way. Many people are self-rightous, nosey, and judgemental.

<comment><USER4> yes but "these days" they have greater reach so we all have to listen to the crazies more often (constantly)

</comment></comment></comment><comment><USER5> Regressive. The loss of privacy is scary. Having to ideologically conform to certain arbitrary standards even in the privacy of your home cannot be the right way to go forward. Larry didn't hurt anybody, everything was consensual. Moral police following you into your bedroom is unacceptable. The fact that you're a perfectly healthy, productive, and sane member of society is not enough, you must be punished for thought crime.

The last thing I want to know is what my coworkers do at home in their spare time, what kind of sexual preferences they have and how they choose to express their sexuality and kinks. Why is this so important for the Drupal community?

<comment><USER6> Absolutely. Not only the condemning of a consensual sexual practice (that should be nobody's business but the involved persons') but the invasion of privacy that led to this "outing" (because it's not like he was publicly announcing his sexual preferences).

</comment></comment><comment><USER7> I've seen this kind of situation unfold before in a tech community. Without picking a side here, I will say that one thing that really bothers me is the lack of transparency. The whole concept of being able to publicly shame/expel someone without providing real evidence to support that action because of "privacy" seems extremely unfair.

</comment><comment><USER8> I see people are getting outraged on both sides, but the thing is we really don't know anything about what happened.

>Buytaert capped off his rebuttal by implying there's more to the story than Garfield indicated. "What makes this difficult to discuss, is that it is not for me to share any of the confidential information that I've received, so I won't point out the omissions in Larry's blog post," he wrote. Within the Drupal world, the air of mystery created by Buytaert's insinuation has only served to heighten the controversy.

So there is missing information. Community projects, ones where you are having to make important decisions and interact with many people, require many positive attributes. This may be a case of discrimination for their private life, but it may also be a deeply vested ideal that seeps into their work.

Transparency is also a double edged sword for Larry and the org, too. If he really did confess that he believes women should be subservient to men, should you put that in a blog post, or just let them go? I think letting them go is a much more proffessional and moral method, so they can continue on without a worse stain.

<comment><USER9> When I hear someone make an insinuation like that I assume there's no factual basis and that they're a huge asshole. It's only fair. If you really have something you can't talk about, then the right thing to do is shut your mouth, not say "Oh, there's just so, so much more to this story, if only I could tell you you'd really know what a horrible person this guy is"

That should never be acceptable. Anyone can do it to anyone and it's bullshit.

<comment><USER10> The process has been set up so that supposedly the reason is to protect the victims but I just don't think it's possible to allow accusations to be completely anonymous and release no details at all to the community or even to the accused.

</comment></comment></comment><comment><AUTHOR> Hey everybody, I'm the journalist who wrote this. Let me know if you want to call anything to my attention — my email is email@example.com

<comment><USER11> It seems like this story (like others similar to it) may have already been flag killed from appearing on the front page.

<comment><USER12> I didn't realize you worked for Acquia, but I have used your Ansible DevOps repos on Github heavily, thank you for those!

I would be interested in reading your take on this situation, but working for Acquia I guess you may not have complete freedom of speech on the topic.

</comment></comment></comment><comment><USER13> Yikes.</comment>


Netflix Uses Big Data to Build Mountains of Money - <AUTHOR> https://medium.com/swlh/how-netflix-uses-big-data-to-build-mountains-of-money-829364caefa7 <comment><USER2> This is somewhat disingenuous.

The main thing Netflix uses to build mountains of money is an even bigger mountain of money, as they're burning through four billion in cash every year.</comment>


Despacio: the 50,000-watt sound system designed for discerning audiophiles - <AUTHOR> http://www.wired.co.uk/news/archive/2013-11/29/despacio

<comment><USER2> I see they trotted out the ol' "vinyl is better" argument. Pity they put so much time and money into something, and then dictated that it would only be used with a medium of inferior fidelity.</comment>


Ask HN: Why learn to code when you can rent a coder? - <AUTHOR>

If you are contemplating a startup but don't have the technical chops to code or interest in coding, the best way to go is renting a coder to get you to a prototype. <comment><USER2> I have a few startups brewing right now. For one I'm working with technical co-founders, and another I'm not. Trying to "rent a coder" for the latter has proven to be much more difficult both short term and long term than having partners who code.

First, I had to come up with cash to pay someone. A painful thing to do when you're bootstrapping with no real income.

Second, I had to spend copious amounts of time not only writing a technical spec for someone who didn't grok the app but also carefully crafting a contract that would assure that I kept the IP.

Third, maintenance has been a bitch. Iterations take weeks instead of days, and I'm never a contractor's top priority.

In contrast, my partners are (like me) working for equity, have a deep, intuitive grasp of the product and what it does, and are engaged enough to not only turn around changes quickly, but also suggest improvements themselves.

Obviously, there are situations where renting a coder will be one's only option. My experience has been that it's an awkward, painful process.

In the future, I would choose to cobble together a non-functional prototype (I'm a UX designer who writes display layer markup) to help me attract a technical co-founder or an investor rather than hire another contractor.

</comment><comment><USER3> It depends on the type of startup. If your startup isn't completely tech- oriented, e.g. soemthing like Airbnb where the value is in the service provided, renting a coder would probably work, since the technology isn't your core competency. If it is something more like Dropbox, where the value is the technology, you will have difficulty outsourcing that.

An analogy is that you don't have to learn everything about cars if you are just driving to your day job. Let a mechanic take care of that, and you can focus on what you do best. If you want to be a NASCAR driver, you should know everything your pit crew knows.

<comment><USER4> Disagree with the nascar bit, you do not need to know how to change a tire in in X sec because when this happens you will always be sitting in the race car. What the driver cares about is that everything that needs to happen does and is done as quickly as possible consistently, in a word metrics. Now the pit crew chief needs to know the pit crews jobs to ensure things get done properly.

<comment><USER3> Obviously you don't have to be the best pit crew member, but you do have to know how every part of the car works to be an effective driver. Find me a successful NASCAR driver who didn't know his/her car inside out and I'll eat my words. The reason for this is that as you are starting out, you have to do your own mechanic work, because you won't have the budget to hire a crew. And drivers who know their cars drive better, and they can communicate better with the pit crew.

</comment></comment></comment><comment><USER5> If you are starting a technical company you will need more than a passing familiarity with technology. To be successful as a software company you will need to assess the quality of the code you receive as well as need to know enough to manage a software development project.

To think that you can contract a coder and get a company back is fairly naive.</comment>


How Privacy is Ruining the World - <AUTHOR> http://www.marinatingthemind.com/?p=399

<comment><AUTHOR> Given the frequent privacy-related news stories that appear here, I thought that this anti-privacy essay was an interesting alternative view point. And actually a fairly persuasive argument against privacy.</comment>


Ask HN: tutorials on using the file system for storing data? - <AUTHOR>

I have to admit it, I am always extremely scared of simply using the file system for storing data. What if something happens in the middle of a write operation? How to avoid data corruption?
Another thing is I am not sure how to write data effectively, or is that covered with random access files? Like say some data item in the middle of the file changes, can I just change it on the spot?
Just saying, I am clueless about this. Maybe there are some tutorials for people who want to understand this alternative to using databases? <comment><USER2> For transactional file systems and transactional databases, the lower-level software deals with this for you. This whether a transactional SQL, or Mac OS X Core Data and its undo, or otherwise. ACID is goodness.

For non-transactional databases (and non-transactional file systems in general), look at the concept of "careful writes". At its simplest, you seek to allocate and work and read and write structures outside of the live application data structures and only add your structures into the static storage with a single-block or other canonical write as the last step of the update or change. To always avoid having inconsistent structures.

In the event of an application or system crash, you can (will?) need a clean- up daemon that finds and releases any dangling allocations.

And one that threw me: there are cases where multiblock writes might not see all blocks written. Some storage devices might either cache the data, or might (due to a power failure) not write all blocks.

You'll find various discussions and papers on "careful writes" around. And ACID. And related.

Once you get the hang of this sequencing, the next level of complexity upwards here can involve distributed access and coordinating and sequencing write operations. This can involve locking or queuing.

</comment><comment><USER3> Generally, sane file metaphors try very hard _not_ to change stuff in the middle of the file. Try to keep with one "record" (which might be a bigger object than a single row in a database!) per file, and read/write them all in one swoop. If you need indexes other than the one you get for free (the path name, of course), keep them in separate files and make sure your toolchain can rebuild them as needed.

The filesystem has looser rules about data loss than the database will by default, so unless you want to handle this yourself (which can be done), you should probably to turn on "ordered data" journalling in your filesystem (e.g. for ext3: "mount -o data=ordered"). Then you only need to be able to recover from a crash (or killing) of your own software, which is a problem you'll have to handle anyway.

The classic application for this sort of technique is a mail server. Software like sendmail and postfix has been doing reliable on-disk storage for decades now, and they don't have to jump through too many hoops to do it.

</comment><comment><USER4> I would recommend reading Transaction Processing: Concepts and Techniques by Gray and Reuter, particularly the sections about ways to construct Atomic commits.

SQLite's atomic commit design is also good food for thought - <http://www.sqlite.org/atomiccommit.html>

However, while it's good to think about low-level consistency (e.g. disk writes) I think you're better off spending your time on your application's high-level consistency (e.g. procedures for identifying inconsistencies, logging your changes, recovering from backups). Your os developers have already spent countless hours on the issue of getting your blocks to disk, but you may be the only one who has spent any time thinking about what things are important to preserve in your application.

</comment><comment><USER5> Maybe you want something like Berkeley DB aka. libdb

It's a library that you link to your application which exposes a database API for storing and retrieving records in tables (which are stored in files). No DB server is involved, and since you use the programmatic API, there is no need for SQL (and it's not supported).

Reference guide: [http://www.oracle.com/technology/documentation/berkeley- db/d...](http://www.oracle.com/technology/documentation/berkeley- db/db/ref/toc.html)

</comment><comment><USER6> I started using the filesystem for storage a while back, and then realized that I'm re-implementing a lot of DBMS functionality in my own buggy code. I switched over to using a database.

I'm just saying that you should consider all of your requirements first, figure out how much code you're going to need that just manages your data, and then decide whether a database is really such a bad idea.

<comment><AUTHOR> I have no problems with databases, but anti-dab articles crop up on Hacker News every now and then. I was wondering if my fixation on db's would hamper my progress...

</comment></comment><comment><USER7> Among other document-oriented databases mentioned, also check out CouchDB <http://incubator.apache.org/couchdb/>

</comment><comment><USER8> Have you considered using Amazon SimpleDB? Its a very simple and fast way to persist data. Avoids the scaling and implementation headaches associated with a typical database.

<comment><AUTHOR> I did not really have headaches with databases yet. One issue might be not having database drivers, though (LISP programming???). Another might be use cases that don't match databases well. For example I could imagine search engines would be better off saving their data in a different way (specialized index files). Or twitter-like things?

<comment><USER9> "One issue might be not having database drivers, though (LISP programming???)."

Huh?

<comment><AUTHOR> I know there are probably drivers, I just have not figured it all out yet (MzScheme). What about orm mappers, for example?

Sorry, that really wasn't meant as a criticism of LISP.

<comment><USER9> Well, I'm not too familiar with MzScheme, but <http://planet.plt-scheme.org/> would probably be a good place to look.

Common Lisp certainly does have good database support: CLSQL probably supports whatever combination of OS, Lisp implementation, and RDBMS you need.

ORM tools and other object persistence solutions are there too. <http://common-lisp.net/> is a good source.

</comment></comment></comment></comment></comment><comment><USER10> consider using sqlite made for being an allmost universal fileformat also allowing transactions. Its fully ACID (Atomicity, Consistency, Isolation, Durability) and even allows concurrent access (serializes writes)

it's probably the most deployed "database" (thousends of embedded devices, it's the fs one some ;-) .</comment>


Low-level MS guy says: Windows 7 is different, better - <AUTHOR> http://www.crunchgear.com/2008/10/17/low-level-ms-guy-says-windows-7-is-different-better/

<comment><USER2> " _Ballmer has described 7 as being 'Windows Vista with clean-up in user interface [and] improvements in performance'_ "

I'm sold!

</comment><comment><USER3> Good luck to them. Linux and Apple need some snappy competition, they're getting lazy. Also, it would be nice if (for the first time in recorded history) all the major OSes didn't suck.

<comment><USER4> Sorry, but until it gets a desktop environment that's user-friendly for mainstream folk, Linux still falls into the suck category.

<comment><USER5> Many distributions (including mine) have that. Although they're rare, I know Linux users who never touch the command line.

</comment></comment></comment><comment><USER6> Triads comprised of a developer, a tester, and a manager, operating independently?

Does that alone strike anyone else here as a recipe for a high-overhead high- complexity software development disaster?

<comment><USER7> In general, Microsoft has too many PMs. While many PMs do incredibly valuable work, many are simply an added layer of indirection and approval to hinder progress. My understanding is that there was a time at Microsoft where the "dual ladders" broke down and people had to switch from Dev to PM or individual contributor to people manager in order to make more money. It appears that Stephen Sinofski has reversed that trend in the Windows organization and is shifting power and decision making back to the developers while rewarding them without regard for their number of reports. Windows is a big product built by a big team. These things take time, so this triad concept seems like a pretty good stepping stone.

</comment></comment><comment><USER8> I love that ASCII Windows 7 logo, not to be missed.

</comment><comment><USER5> The ASCII graphic: is that this so-called "Hungarian notation" I've been hearing about? Or is it something in Perl?</comment>


Nokia Lumia sales beating expectations - <AUTHOR> http://www.bloomberg.com/news/2012-11-22/nokia-gains-as-danske-says-lumia-is-beating-expectations.html

<comment><USER2> Well if you expect zero, everything is beating it. Unless we have real sales figures it is hard to tell what is going on.

</comment><comment><USER3> But no sales(not shipped) numbers to date. Just expectations and projections for next year.</comment>


The Commoditization of Scale (2012) - <AUTHOR> https://hbr.org/2012/03/the-commoditization-of-scale/ <comment><USER2> This is why Apple still tries to own their entire supply chain, to a point where their suppliers don't have excess capacity to sell to others (or legally can't). It continues to protect their scale.

Amazon Web Services is in a very similar boat -- it would be hard for others to replicate their scale.

Ironically in the AWS case, it is their selling of such scale that enables a whole lot of other companies to buy scale (in this case infrastructure) and eliminate that advantage from their competitors.

</comment><comment><USER3> > Build things that people want.

That sentence has a very familiar ring to it. :)</comment>


The new emberjs.com - <AUTHOR> http://emberjs.com

<comment><USER2> Beautiful site -- lovely to see open source design in action.

It's fun to look at this new site in the context of the progression in the various iterations of the SproutCore saga over the years:

[http://web.archive.org/web/20081003190606/http://www.sproutc...](http://web.archive.org/web/20081003190606/http://www.sproutcore.com/)

[http://web.archive.org/web/20110211051741/http://www.sproutc...](http://web.archive.org/web/20110211051741/http://www.sproutcore.com/)

<http://sproutcore.com/>

<http://emberjs.com/>

</comment><comment><USER3> I'm sad that the on-site docs are still inferior compared to the in-code comment docs. For example, the on-site docs hardly mention the built-in state manager, but they're very thoroughly documented in the code [1]. Many people (myself included) people will usually resort to searching Google before looking in the code when trying to figure out how to do something.

Ember team, any insight as to what's being done to rectify this, or why this is?

[1] [https://github.com/emberjs/ember.js/blob/master/packages/emb...](https://github.com/emberjs/ember.js/blob/master/packages/ember- states/lib/state_manager.js#L5)

<comment><USER4> Anything doc'ed in code is also available on the documentation subdomain: [http://docs.emberjs.com/#doc=Ember.StateManager&src=fals...](http://docs.emberjs.com/#doc=Ember.StateManager&src=false)

</comment></comment><comment><USER5> Can someone describe emberjs in one line?

(Their description of a _framework for making ambitious web apps_ is a bit vague imho and i don't want to spend 15 mins reading docs about something that may not be of any use to me at all.)

<comment><USER6> It's an MVC framework in the vein of Backbone that provides baked-in support for data binding.

<comment><USER7> Could you say what differentiates it from Backbone?

<comment><USER8> It has a "Railsier" "Convention over Configuration" type ethos. Certainly more opinionated, if nothing else, where as Backbone is more of an empty canvas & instruments to cover it.

There are technical difference as well, but I think that's less of an issue.

</comment></comment></comment></comment><comment><USER9> The documentation is underwhelming, from a get-up-and-running POV ... protip for authors of new libraries etc. I should be able to cut and paste your code and have it just work right away.

If you don't add

var MyApp = Em.Application.create();

to the examples in the docs page the code simply won't work.

</comment><comment><USER10> It's a bit odd that the main example on the home page references an object called DS on 8 of 10 lines, but DS is never referenced elsewhere in the documentation.

I know from prior exploration at their github account that DS stands for "data store" but I still think it's pretty weird that searching for "DS" on the docs page brings up nothing.

<comment><USER11> I've used ember for a little bit. DS is the root namespace of ember-data (<https://github.com/emberjs/data>), which if you look at the github is pretty clearly still in Alpha and not recommended for production use. I've asked on IRC but haven't been able to get a straight answer out of anyone as to whether ember-data is ready for mass usage or not...

edit: kept trying on IRC and got an answer. Basically Tom Dale said that if you're using rails and ember you should be using ember-data now - should also be using Active Model Serializers gem too.

</comment></comment><comment><USER12> Woo! I was at first a bit disappointed to see only two guides - good thing I checked out the docs.

Hopefully now the docs around EmberJS can stabilize and really take off.

<comment><USER13> More guides are in progress.

<comment><USER14> Thanks for the guides, I especially like the comparison to Rails. One tiny note, I noticed a few spelling errors briefly browsing through. "recieve" and "appropirate" on <http://emberjs.com/guides/ember_mvc/>

</comment></comment></comment><comment><USER15> On a more personal note, it would be great if someone could compare this with meteor.js (which recently got featured on HN)? I mean a brief comparison would be really great..without having to dig up the docs in detail..

<comment><USER16> Meteor covers the client and the server, and tries to hide the different roles they play and how they communicate with each other. Ember is purely a client- side MVC framework, server's up to you (besides some conventions).

<comment><USER15> Wow, thanks a ton! Exactly what I wanted..

</comment></comment></comment><comment><USER17> On a more personal note, it would be great if someone could compare this with spine.js (which recently got featured on HN)? I mean a brief comparison would be really great..without having to dig up the docs in detail..

<comment><USER18> Ember is probably more comparable to something like AngularJS (But I don't now 100% because I've never used Ember, just looked at their site for a few minutes). Backbone and Spine are much lighter-weight infrastructure frameworks.

<comment><USER19> Ember is a much more complicated than spine.js. I recently did work with Backbone.js and Ember.js and reviewed the documentation for Spine.js. Ember has a lot of magic that's really awesome, but it can be difficult to learn how to work within the framework properly.

</comment></comment></comment><comment><USER20> What makes me sad about js client-side frameworks and Ember.js in particular is that they are still only client-side. Nevermind the code duplication, but the bare fact that I have to actually think about how to construct my server so that it works with Ember.js. The reason why people hooked up on Rails so quickly is because it solved all of their problems, not just one. Novices are not going to try Ember.js just because it works on the client, while having no idea about the server-side.

<comment><USER21> There are some nice new tools emerging to solve this problem, but don't force front end devs into an entirely new platform. One of my projects is an open source server (<https://github.com/deployd/deployd>) that's totally un- opinionated on the front end, but makes it really easy to add robust backends to client apps.

<comment><USER20> What I'm saying is that a tool for webdev that wants to stand any chance of becoming popular must be able say to developers: here's the familiar MVC structure, you write your models, you create your views (hopefully out of set of widgets that are highly replaceable/customizable at any moment), we take care of talking to the server, saving your models to the storage and syncing between different instances of an app. Sure, there are problems to solve here, but since everybody does it their own way at the moment, I don't see no reason why we can't have a framework that solves them for you.

</comment></comment></comment><comment><USER22> Comparing it to Backbone, feels to me that Ember uses a notation that is closer to what I already know about Javascript, for example all the object methods and prototype class emulation. I was going through the API and everything seemed like it made sense right away. The only thing I wish the site had is more examples with bi-directional bindings.

</comment><comment><USER23> This _seems_ cool, but as someone who has never seen emberjs before, the "js" part of the "getting started with emberjs is easy" was not very clear.

It's clearly some model/controller logic, but what is ArrayController? And how is the view chosen?

Just some feedback from fresh eyes

<comment><USER24> A quick and dirty getting started tutorial can be seen here: [http://www.adobe.com/devnet/html5/articles/flame-on-a- beginn...](http://www.adobe.com/devnet/html5/articles/flame-on-a-beginners- guide-to-emberjs.html)

</comment></comment><comment><USER25> Looks nice, but it's pretty difficult to read that typeface on that dotted background, especially on Windows. Better on a Mac, but still not great.

</comment><comment><USER26> We just started playing with this, it seems like a great alternative to backbone for those who want a bit more of the common stuff done for you (esp data binding).

Backbone is a great starting point if you have strong opinions and want to own it from the ground up.

Just my $0.01

</comment><comment><USER27> It would be nice to have an explanation of what the 'Starter Kit' contains and what it's for.

<comment><USER28> I wasn't expecting a download link for the Starter Kit.

These days, I think it's easier to point beginners to a CDN and a JSFiddle than require any download.

</comment></comment><comment><USER29> On Chrome in Windows 7, the smallest text under your initial images is dropping bars.

</comment><comment><USER30> NOW designers will use it...

</comment><comment><USER31> Is the 42k min+gzip all in? Or are jQuery and Handlebars still separate downloads?

The example on the front page shows code from ember-data. Is that a separate, additional download too?

<comment><USER19> Ember uses a built-in customized version of Handlebars, so there's no extra download for that. However, jQuery is a separate download.

</comment></comment><comment><USER32> Bravo. Congratulations to you all on a great piece of open software

</comment><comment><USER33> Ember makes me think of longer burning coals at the end of a bbq. Maybe better to call it "Lighter Fluid"?

</comment><comment><USER34> How mature are the ember community's various supporting libraries and boilerplate builds? This kind of bothered me:

<http://emberjs.com/documentation/#toc_getting-started> >> __If your needs are simple or you're interested in just playing around, you can download the Ember.js Starter Kit. The Starter Kit is based on HTML5 Boilerplate and does not require any build tools or other dependencies...For larger apps, you may want to consider using Ruby on Rails. Rails helps you manage your source code and other assets, while also providing the REST API that your application will talk to. __

(not saying that backbone et. al have better boilerplate builders. Just that hopefully there's a medium ground between HTML5 templates and RoR, the latter which I hope to mostly avoid through the use of JS frameworks)

<comment><USER35> Yea, I would _not_ recommend using Rails for this purpose. Middleman (<http://middlemanapp.com>) is the best parts of Rails asset packaging in a more lightweight package.

<https://github.com/emberjs/website> is developed with Middleman so may serve as a good model.

This leverages Middleman as well: <https://github.com/wbinnssmith/ember- frontend-boilerplate> .

</comment></comment><comment><USER36> Click API -> Click Docs -> At home page?</comment>


Leaving my job & starting my own thing - <AUTHOR> http://macournoyer.com/blog/2009/09/29/leaving-and-starting/

<comment><USER2> I don't understand what improvement this app is bringing. All he says is that he's disappointed in Campfire. There are more people in the comments here saying Campfire needs to be superseded. Why?

My business uses Campfire in place of an office and it works great. We make heavy use of the api to generate notifications of completed work (like a passively updated Yammer).

It's so important to me though, that I could easily be convinced to switch. But nobody seems to be able to say why I would want to. Even in the comments here, there are people talking about Mibbit and Shoptalkapp without saying why.

<comment><USER3> Hi, I wrote Mibbit. For me, last time I used campfire, it was pretty minimalist. That's great if 'chat' is all you need, but it seems like there's a ton of different use cases, and an absolute _TON_ of feature suggestions. A lot of it may also come down to taste. Some people like minimalism, some don't.

>> "There are more people in the comments here saying Campfire needs to be superseded. Why?"

 _everything_ needs superseding at some point, it's how things improve. Surely. Unless they are actively superseding themselves with new versions. You can't really stand still.

Is campfire still being developed and improved upon? Is it really the best it can be? What features did they add in the last month?

There's certainly space for a lot of webchat apps, and I'm skeptical that campfire is 'the best webchat can be' (And neither is Mibbit for that matter).

I can't speak for the other webchat developers, but in my case, working on mibbit is just plain fun. It's somewhere I can think up fun new features and plug them in. Like the recent addition of flags/timezones in the user list (patent pending) so you know where/when people are. And (after seeing an example on HN ;) the addition of LaTeX rendering).

<comment><USER2> That's a great story for all of the entrepreneurs that read HN, including me, but I was asking as a potential customer. So far the customer story for all three of these products has been pretty weak. I read the comments and I visited the sites. The thing that stood out for me most was that all three products think Campfire is bad. If I don't think that, does that mean your products aren't for me? I'm not trying to cause an argument, but wanted to give some honest feedback, that you guys could work on the customer pitch.

<comment><USER3> I don't know really. Mibbit usage is growing really well, I don't particularly think Campfire is bad, I just think it's minimalist, and that I can do better than campfire (for my definition of better).

</comment></comment></comment></comment><comment><USER4> To provide some context, Marc is the guy behind the Create Your Own Programming Language e-book/screencast discussed recently on HN: <http://news.ycombinator.com/item?id=813133>

</comment><comment><USER5> I congratulate him for starting his own thing, but it's going to be very hard to get me to leave my google apps group chat. Transcripts are saved and searchable alongside my email. I do wish they'd support xmpp persistent rooms though.

</comment><comment><USER6> I guess I'm either getting old or just have a different mindset. I think of chat as as enormous distraction to getting work done. I am one of those people who disables intrusive alerts from email and anything else that might lurk in the system tray and interrupt me. I check my email a couple of times a day, and generally sign off of chat services if I want to concentrate. Good luck to you though; clearly a lot of people have a different view on this.

</comment><comment><USER7> Sounds good. I signed up. Campfire deserves to be superseded. Somehow I always thought Mibbit would be the one to do it, but I guess not.

<comment><USER3> I think Mibbit has a _few_ more users than Campfire ;) So in quite a lot of ways, I believe it has superseded Campfire.

That said, still _plenty_ more to be done...

Nice to have more entrants to the 'webchat' space in any event :D

PS. Latex support is cool! <http://www.mibbit.com/tex.png>

<comment><USER7> They're not the same users. Mibbit doesn't offer a persistent, private chatroom like Campfire does.

<comment><USER3> Sure it does :/ you just setup a private channel, and put a bot in there to log it.

I do get what you're saying though, and agreed. It's not "packaged" as that.

</comment></comment></comment></comment><comment><USER8> Seems like, when it comes to group chat, Google Wave is going to be the 800lb gorilla in the room.

</comment><comment><USER9> It goes without saying and I'm sure you already know it, but it's so important that it needs to be said (again):

Get something out there, sooner rather than later.

Many of us have been there. We want to make something so good that we just want to add "one more thing" before we release. Next thing you know, it's a year later and we wonder where the time went. I imagine you guys are just too saavy to let that happen. Good luck!

</comment><comment><USER10> Free startup idea for you: IRC as a service.</comment>


Ask HN: Super-rich getting ready for Doomsday? - <AUTHOR> It is apparently an everlasting anxiety but it seems coronavirus fueled it once again. Do you see such a trend in tech moguls or Silicon Valley?<p>[30 Jan 2017] Doomsday Prep for the Super-Rich (https://www.newyorker.com/magazine/2017/01/30/doomsday-prep-for-the-super-rich)<p>…<p>[6 Mar 2020] Coronavirus 'fuelling spike in doomsday bunker sales as mega-rich build virus-free panic rooms (https://www.thesun.co.uk/news/11114776/coronavirus-spike-doomsday-bunker/)<p>[21 Apr 2020] Panicky super-rich flee to luxury doomsday bunkers in New Zealand to escape coronavirusm (https://www.thesun.co.uk/news/11444200/panicky-super-rich-flee-to-luxury-nz-bunkers/)<p>[21 Apr 2020] 'We Needed to Go': Rich Americans Activate Pandemic Escape Plans (https://www.bloomberg.com/news/articles/2020-04-19/-we-needed-to-go-rich-americans-activate-pandemic-escape-plans)<p>[15 May 2020] Super-rich buying underground bunkers with SHOOTING RANGES over fears coronavirus will spark social meltdown (https://www.the-sun.com/news/833092/super-rich-underground-bunkers-shooting-ranges/)<p>[15 May 2020] How the super-rich spent lockdown (https://www.bbc.com/news/av/stories-52669638/how-the-super-rich-spent-lockdown)<p>[19 May 2020]  Ultra-wealthy purchasing bunkers with underground shooting ranges amid coronavirus meltdown fears (https://www.foxnews.com/lifestyle/ultra-wealthy-purchasing-bunkers-with-underground-shooting-ranges-amid-coronavirus-meltdown-fears) <comment><USER2> It's a nice linkbait topic for the newspaper.

<comment><AUTHOR> Probably. But after all virus movies we wathed for years and what we currently experience, one cannot be so sure.</comment></comment>


Ask HN: How does your business manage passwords? - <AUTHOR>

I'm curious how the startups and small to medium businesses out there manage their passwords. I work for a company that's experiencing massive growth and up until now, Keepass had worked for the Operations team as it was made up of six people. Now there is almost 40 of us, it's unmanagable. We don't know who's doing what and we can't revoke access to the files after someone leaves.<p>Unfortunately, most 'enterprise' grade software out there is horribly designed, has a terrible UI and is very hard to use. Does anyone have any recommendations for a product? Would be particularly interested to hear if there's any startups in this space looking to help with team password management. <comment><USER2> My question would be: what massive number of third party services could your company possibly be using to require password management for all users? Most companies I've worked for use enterprise versions of services that integrate with central authentication, making multiple logins unnecessary. I could see admins, web devs, and social media types needing a dedicated solution but not all 40 in your company. Keepass isn't perfect but its just as good as most other solutions I've seen. I believe lastpass offers an enterprise product you may want to check out.

</comment><comment><USER3> We face this problem in our business (a law firm). The current solution is 1Password. I don't know how to share a single data file among everyone so the problem is keeping all of the files in sync as passwords change. And then we have employees who use 1Password for personal passwords. This means lots of hand editing.

We would throw money at a solution to this problem. Give us a shared password vault for the enterprise login stuff while letting each person run his/her personal life untouched by the business username/password stuff.

</comment><comment><USER4> As a single founder startup, I store all my passwords in text files buried in my My Documents folder. No one besides myself uses my computer so I haven't had any issues thus far. Not the safest route but then again it's just me.

I don't have any product recommendations but I do have a question: What exact features are you looking for in a team password management product?

<comment><USER5> [http://www.keepassx.org/](http://www.keepassx.org/)

</comment></comment><comment><USER6> _Unfortunately, most 'enterprise' grade software out there is horribly designed, has a terrible UI and is very hard to use_

I believe you have just identified a product niche. Quick hackers, lets get on it!

<comment><USER7> I believe this is sarcasm :D</comment></comment>


Ask HN: Stripe failed payments - <AUTHOR>

I contacted stripe and looked at the help but didn't get any real answer, so I'm perplexed as to why people who enter their credit cards for a 14-day trial, the payment fails every single time.
Are they using one time credit cards or doing something on their end?
Won't getting failed charges hurt their credit rating? Wouldn't want that to happen but seems like some users are being dishonest with me. <comment><USER2> It could be anything, Stripe will tell you everything they know from the user's bank. Most likely the bank thought it was fraud (for charges way more than usual, in different countries, etc.), they've not got enough money in their account, or perhaps people are carding[1], which will generally happen if you charge a very small amount that people are unlikely to notice missing.

[1] [http://en.wikipedia.org/wiki/Credit_card_fraud#Carding](http://en.wikipedia.org/wiki/Credit_card_fraud#Carding)

</comment><comment><USER3> Are you including the 'cvc' field in your payment form?

It's not strictly required by Stripe, but (in my experience) many banks do require that it be sent along, in order for them to approve the charge.</comment>


First government to make obligatory open source administration software - <AUTHOR> https://translate.google.com/translate?sl=auto&tl=en&js=y&prev=_t&hl=en&ie=UTF-8&u=http%3A%2F%2Fwww.bitelevision.com%2Fkakvo-shte-ni-spesti-i-dade-elektronnata-identifikatsiya-obyasnyava-ekspertat-vasil-velichkov%2F&edit-text=&act=url <comment><AUTHOR> Bulgaria's government becomes the first in the world to obligate by law its administration not only to publish, but to develop in open source mode every software product that gets created in a public tender.

Older news of the intent: [https://joinup.ec.europa.eu/community/osor/news/bulgaria- sta...](https://joinup.ec.europa.eu/community/osor/news/bulgaria-start-open- source-repository)

Yesterday the parliament accepted the law that makes open source development mandatory.</comment>


CSS Cursor's - <AUTHOR> http://css-cursor.techstream.org <comment><USER2> I was struggling the other day for a 'can be moved' cursor, and a 'will be deleted' one. I settled for 'move' and 'crosshair' in the end; thoughts?

<comment><AUTHOR> You can make an image of icon you need and use it inside

div or class { cursor : url('images/cursor.cur') }</comment></comment>