Metacircular thoughts

June 30, 2007

Advocation of violence against record companies and record company employees

Filed under: Pop culture — metacircular @ 12:40 pm

There has recently been buzz about the fact that the music industry as it exists today is fucked.

I say, good riddance. I hope record executive dickheads and their retarded exploitative business models die. I hope ClearChannel goes bankrupt.

We face the possibility of a future with no Britney Spears? No P. Diddys polluting our lives with retarded bullshit? I hope so. I look forward to a brave new world free of Maroon 5 and Fallout Boy.

Music is older than recorded history and probably as old if not older than spoken language. Even the most primitive, backward bush tribes express their cultural heritage through song and dance. Music cannot be killed, not by scumbag capitalist dickheads at Viacom or anyone else.

If music returns to what it has been for all of time, a local phenomenon that expresses the beliefs, values, hopes, and interests of the local community, I will be overjoyed. I eagerly await the death of all major record labels.

June 26, 2007

Someone please make the bubble die

Filed under: Life, Politics, RIAs, The Dark Side, Web development — metacircular @ 11:38 pm

OK, we’re now deep in 1998-1999 territory with respect to Web 2.0 bullshit. Like the real estate crash, if you don’t see what’s going to happen in about 8-24 months coming a mile away you’re living under a rock.

Look at what’s on the top blogs, mang. Remember all those experimental psychology papers you’ve seen which make a pretty convincing, fairly scientific argument that people aren’t effective at multitasking? Disregard that and embrace meaningless phrases like connected mode: do stupid shit faster! That’s right. All the old facts (who has time for facts anymore?) are irrelevant. It’s different this time. Smug dipshits who can’t produce code wearing ironic t-shirts gather at parties and rub each other’s balls in a circlejerk of self-congratulatory praise. We are so awesome. We’re wiseguys. Everyone outside our incestual Valley echo chamber is a sucker.

Somehow, human nature has changed in the last three years: cool office + caffeine + slave labor = startup success! Or, alternatively: MacBook Pro + Rails + Ajax todo-list app = startup success!

Another forgettable blog proclaims non-chalantly: “…as businesses … get more productive to remain competitive…” The same message is everywhere: no one (an absolute) has time to do anything: (another absolute) read books (except masturbatory productivity ones), write coherent essays, or learn new things that don’t involve Javascript. The same people using motherfucking PHP talk about increasing productivity without a hint of irony in their high-pitched voices! Unfuckingbelievable!

OK, so proprietary vendor Z wants to lock users in to new platform C, which garners significant mindshare from developers busy locking people in to platforms A and B from proprietary vendors X and Y, and I’m supposed to be impressed? Ignore the fact that you can’t link to a single fucking thing in this RIA widget shit Z is pushing, and you can’t increase the size of the text, or use Firefox extensions on it, or do most of the things a web browser is currently useful for. Nevertheless: game-changing!

TechCrunch is a sea of forgettable names: PopSugar, Meebo, Cellfish, Jobster, Topix, Kiptronic, PicLens, Pixoh, Snipshot, Cumshot, Gazeebo, Dildo, whatever. That sinking feeling in your stomach and glaze in your eyes as you read those names is the knowledge that this has all happened before (and that it doesn’t have to be like this). Yes, it’s not as insane as it was during the first bubble. But there are still millions of dollars going after companies that can’t possibly actually have, you know, customers, revenue, the stuff that actually sustains business. This Valley-blog-startup-TechCrunch-iPhone-Digg bullshit is not indefinitely sustainable. Like Sarah Connor stuck in her Armageddon nightmare, you can pound against the fence and scream all you want, but the mushroom cloud is coming, man.

Look, you little Bay Area-dwelling, public transportation-using, podcatching, bespectacled too-cool-for-cool circlejerk pricks: calm the fuck down. Chill the fuck out and read a computer science textbook. Learn a functional/concurrent/logic programming language. Read Steve Yegge. Face the fact that your startup, rather than being “game-changing,” is boring and banal, just like most businesses; what matters is whether revenue - expenses > 0 or not. Learn how code generation in a modern compiler works. Make a toy operating system. Learn how the CLR in .NET works by reading books, documentation, and examining IL bytecode. Tinker with OpenBSD and write a solid technical article about what Mac OS X/Linux users could learn from it (crypto? firewalls? there has to be something). Do something real for once, for fucks’ sake! Do something a bright teenager could grasp the outcome of but when asked how he’d do it would scratch his head and say, “uh… hm.” REAL! And I’m not talking about robotic toys that don’t do anything interesting from a science/engineering perspective! And no data center/sysadmin shit that only applies to web hosting companies who are hosting 50 terabytes of data, nor something a smart 15 year old kid could do in a weekend in between Bangbus marathons. You’re driving me nuts. Less TechCrunch, more Fog Creek. OK?

(Am I just jealous I’m not on the gravy train? Uh, obviously.)

June 17, 2007

If Ruby is so great

Filed under: Politics — metacircular @ 9:40 pm

Why do I always see Ruby programmers using hash parameters as a substitute for keyword/optional arguments? Why don’t they cook up a DSL that adds that to Ruby, huh? Why do they destroy the readability of their code by making 80% of their functions take one or two parameters and then a completely uninformative one called “options?” Why do they, in spite of this wannabe Common Lisp phenomenon, then insist that Ruby is an acceptable Lisp?

Why doesn’t Ruby have a decent VM?

Why do I have to drop down to C if I want to do anything that requires performance and there’s not a major bottleneck like a database? Like, say, large unit test suites?

Why do available Ruby development tools imitate IDEs for Java/C/C++ rather than imitating Squeak and VisualWorks? In fact, why does Ruby ignore so much of the valuable prior art the Smalltalk community has accumulated?

June 16, 2007

More thoughts on spreadsheet modelling

Filed under: Uncategorized — metacircular @ 11:24 pm

The last rant I wrote led me to wonder how business people use spreadsheets in the real world. Summary: they need help; let’s do it by appropriately applying stuff from software development and computer science that we as programmers know is useful.

What I have found is absolutely terrifying. Study after study shows that the majority of non-trivial spreadsheets contain serious errors. Furthermore, the poor quality of existing spreadsheet software directly causes firms to unnecessarily lose tons of money. (Thankfully, unlike PowerPoint, Excel probably hasn’t directly contributed to the horrific deaths of talented scientists.)

What flaws am I talking about?

  • The lack of version control makes collaborating and developing complicated models tedious. Seeing how something has changed over time is invaluable. Being able to regress to when a problem or feature first become visible is invaluable.
  • The total lack of abstraction in Excel and its imitators. Creating real functional relationships, even simple vector-wise ones of the kind found in linear algebra, is tedious. Making a knowledge worker copy and paste like a monkey just to make the software happy is retarded and has no place in a modern workforce. Not being able to rename cells to create meaningful equations (”profit = revenue - expenses”) is a part of the lack of abstraction, but the major problem is not being able to move beyond applying formulas to individual cells one-at-a-time.

    One of the major strengths of the spreadsheet is that it doesn’t induce unnecessary separation between data and logic. But there’s better ways to do that. Making users waste time and possibly introduce costly errors in order to make the software happy is not the goal of developing a piece of productivity software.

  • Weak prevailing formula languages. If you have to drop down to VBA or whatever the extension language is to compute a standard financial ratio or some other common function in a readable, maintainable way, the language is too weak.

It seems obvious that these kinds of problems have already occurred in software development (not surprising, as software often involves a certain degree of building models and thinking about relationships between objects and entities in the real world), so maybe we should give the business analysts the solutions we’ve come up with. Specifically, this might mean:

  • Simple, integrated, specialized (i.e., domain-specific) distributed version control and bug tracking as a suggested replacement for sending emails with file attachments back and forth. To entice users to switch to the better way, make it easier and more rewarding (rather than presenting a cold plate of vegetables and barking “eat up, it’s good for you!”).
  • Optional strong typing, type inference, and other constraints that can be easily introduced and toggled once the initial rapid prototyping process has ended.
  • File formats that lend themselves to diffing in support of version control. How you would do this for what has historically been a binary file format is not a priori clear. XML is not the answer.
  • Introducing a terse, powerful command language as a replacement for entering one formula for each cell you wish to act upon. I’m imagining something inspired by the Unix command line, APL/J, and REPLs of the kind found in Lisp, Haskell, Scala, MATLAB, and other environments where interactivity is desirable.
  • Bundling better libraries; the best of the free software/open source world, like GSL and QuantLib.
  • Minor user interface improvements, like the ability to go from “C1, C2, C3, …” to “R&D expenditures Q1 ‘07, R&D expenditures Q2 ‘07, …”. I don’t think introducing significant changes to the user’s mental model, like multidimensional modeling, is all that helpful. The real significant change I’m proposing is shifting from a formula metaphor to an interactive hybrid command-formula entry metaphor.
  • Better visualization tools; in addition to mundane pie charts, give users easy access to clustering, mapping, animation, and other things which lend themselves to effective information visualization. Bundling libraries like prefuse would help.
  • In the tradition of Scheme and Emacs, implement as much of the core logic of the application as possible in the extension language, so that it can be changed and customized according to the whims of the user.

Other things I mentioned, like adding a really fast extension language, are great and should be eventually added, but I think the things above are what’s really at the heart of the problem.

The advantage of any kind of organized, formal modeling-based decision-making process is the increased transparency of the assumptions and preferences present in making a decision over informal, intuition-based decision making. Therefore, the guiding vision in designing any quantitative modeling software such as a spreadsheet should be to make it easy for users to maximize the transparency of their decision-making processes and to help them produce correct, useful models. This is in contrast to the goals of most spreadsheet software, which has either been “blindly imitate VisiCalc/1-2-3/Excel modulo unimportant extra features in order to score points with feature matrix androids” and/or “lock hapless users in to our shitty proprietary platform.”

What isn’t important in a spreadsheet app that’s intended to be used for serious modeling?

  • Kathy Sierra neo-marketing bullshit about not putting in powerful features because it only helps the people who deserve crave and deserve power. If Kathy Sierra were queen of programming language design, the following features would never be in any language: recursion; objects; higher-order functions; type inference. All of these only serve the unimportant, decadent interests of minority users. Amazingly, the neo-marketers also say to specialize and know your target user. When that target user happens to be an intelligent, hard worker who seeks mastery of his environment, all the rules must apparently be thrown out the window.
  • Coloring and pretty printing. Creating an organized, scannable work area is fine, but intelligently separating style from logic and data is key; Excel makes it easy to add formatting gunk that fucks up searching, sorting, copying and pasting, and other essential features.

So there you have it. A language snob’s take on one of the most important pieces of end-user software ever created.

Next Page »

Blog at WordPress.com.