Metacircular thoughts

June 7, 2008

Imitating Ruby’s anonymous hashes in VB.NET

Filed under: Uncategorized — metacircular @ 10:13 pm

Module Program
    Sub PrintObj(ByVal obj As Object)
        Try
            Console.WriteLine(obj.B)
        Catch ex As MissingMemberException
            ' Do something appropriate here
        End Try
    End Sub

    Sub Main()
        PrintObj(New With {.A = 1, .B = eh})

    End Sub
End Module

Except here we’re passing in an anonymous object where one of the members is XML, something you can’t do in Ruby.

This seems like a reasonable workaround to VB.Net’s infuriating lack of collection initializers if you’re willing to give up type safety, I suppose.

February 25, 2008

What users want: porn, music, and video games

Filed under: Uncategorized — metacircular @ 10:41 am

Let’s get things nice and sparkling clear about what users want.

They want to download torrents of the latest episodes of their favorite TV shows. This is why torrent and P2P clients have billions of downloads. They want the utilities they need to watch, compress, decompress, and transfer around their media. This is why codec packs and utilities like WinZip have hundreds of millions of downloads. They want to keep their machines reasonably free of spyware. This is why applications like AdAware have hundreds of millions of downloads.

They want to communicate with their friends, be it through instant messaging, social networking websites, or whatever.

They do not give a shit about your blog or your productivity/organizational application (they don’t care about this blog or the little project I’m working on on the side, in particular). They won’t give a shit about it, anyway, unless you have an unusual angle, like Perez Hilton where you can get an eyeful just by scrolling, and without reading or taking the time to appreciate all the hard work the site’s creator puts in.

If you’re going to talk about what users want, look at how they’ve voted with their mice clicks: AdAware and celebrity gossip is in, Web 2.0 is out, not that it was ever in.

Maybe this is an indication that just because millions of people want something doesn’t mean that it has any intrinsic worth, eh?

Maybe spending your precious spare time on something that’s really tedious and difficult isn’t a good idea just because millions of dumb IE 6 users want it. Maybe, instead, you should spend your time on what you enjoy and value.

What you do to pay the bills or make your clients happy is a completely separate matter: you’re probably going to be logging quite a bit of time in Firebug because that’s quite possibly the most pragmatic way to do an application 5,000 people in a large corporation are going to use.

But when you finish the work day and you want to create excellent software for yourself, where you get to do the things your clients won’t let you do, why would you willingly make a Pentium 4 feel like a 386 with JavaScript hacks?

January 29, 2008

Paul Graham to programming community: fuck non-English speakers and web standards

Filed under: Uncategorized — metacircular @ 5:53 pm

Arc is finally out.

Choice excerpts:

I don’t want to spend even one day dealing with character sets. Character sets are a black hole. I realize that supporting only Ascii is uninternational to a point that’s almost offensive, like calling Beijing Peking, or Roma Rome (hmm, wait a minute). But the kind of people who would be offended by that wouldn’t like Arc anyway.

Apparently the only people who like Arc are people who use toy software that only they and their friends use. And none of them speak a language requiring a non-Latin character set.

Because Arc is tuned for exploratory programming, and the W3C-approved way of doing things represents the opposite spirit.

Durrrr, designing like it’s 1997 is great, because that’s the last time I learned anything new!

One is always a bit sheepish about writing quick and dirty programs. And yet some, if not most, of the best programs began that way.

On the Internet, you can make whatever claims you want without the need to ever provide evidence or facts. And if you disagree, you’re a moron who doesn’t understand closures or exploratory programming.

Nevertheless, I enjoyed my time with SLIME and SBCL during college, so I’ll try to give Arc a look one of these days. Maybe when it’s not so racist and has a cool app implemented in it.

December 11, 2007

The triumph of open source; or, Walt Mossberg is an annoying self-centered ignoramus

Filed under: Uncategorized — metacircular @ 7:43 pm

Nothing bothers me more than unchallenged ignorance.

For example, in a video interview with 37Signals’ Jason Fried, near the end Mossberg says the following:

How much time do we have left? About three? Let’s spend that three minutes talking about why open source is a failure.

It’s not a failure in the IT department of corporations where people from Mars run those IT departments … There is one huge open source success, called Firefox…

I’ve never seen something so wrong from someone so high-profile, except maybe our warmonger president lying yet again.

Let’s have a quick jaunt over to the download statistics on SourceForge to see the numbers on some of the most-downloaded open source applications. Keep in mind, this doesn’t include OpenOffice which has downloads in the tens of millions. There are quite a few other open source apps with millions of downloads, like WordPress, that are also not present.

The first thing to note about the list is that it’s dominated by P2P apps and utilities – people like downloading porn and utilities that help them unzip compressed porn files so they can enjoy the bounties of the evening’s copyright infringement. Because of the nature of the most popular applications, probably the users don’t give a rat’s ass that it’s open source.

But more importantly, the numbers are quite remarkable – three of the applications have over 100 million downloads!

Let’s do a quick calculation and add up the total downloads on the top 50 SourceForge projects as of December 11, 2007. Let’s see, 373,890,600 + 157,418,200 + 135,341,394 + … = 1,462,719,263. That’s 1.4 billion. Basecamp has something on the order of one million users. That’s three fucking orders of magnitude difference. Popular P2P apps are in a completely different league of popularity compared to all these stupid little web apps which you have absolutely no control over.

Put differently, compared to Azureus or eMule, Basecamp is an astounding failure.

Have Walt Mossberg’s columns been read 1.4 billion times? The Wall Street Journal’s circulation is only 2 million — not bloody likely.

Maybe proprietary software apologists like Mossberg and Jason Fried should shut their fucking pieholes before spouting off at the mouth with a bunch of patently incorrect bullshit.

November 28, 2007

Learning Lift – Step 0: Part a) Give a shit about the Java programming language

Filed under: Uncategorized — metacircular @ 11:39 pm

This is gonna be a doozy.

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.

May 30, 2007

The retarded sacred cow of Web 2.0: online spreadsheets

Filed under: Uncategorized — metacircular @ 8:37 pm

So, first of all, the basic idea of a spreadsheet as it currently exists today is pretty lousy. Excel is a turd. Now consider the Ajax hacks that are supposed to pass as Excel substitutes. What a wonderful idea, imitating software that hasn’t seen significant innovation since VBA was introduced in the early 90s. Except a lot less powerful.

In even the lamest of spreadsheets, you can fly around a sheet with thousands of rows, using only keyboard shortcuts, moving around entire columns and rows effortlessly. Because of the ability to do large-scale manipulation, sorting, and so on, many people use Excel as a partial workaround for the fact that as a text editor Word is, remarkably, even worse than it is as at laying out and typesetting documents.

Can you do this with Google Sheets or DabbleDB, which has certain spreadsheet-like elements? No.

But ignore me. I’m wrong. Users never have spreadsheets longer than 50 rows. They’re perfectly happy to store their corporation’s unreleased financial figures at a remote data center they have no control over. This is Web 2.0!

How about instead making a numerical tableau manipulation environment that has some of the following features:

  • Extensible in a fast, simple, customizable language so you can do things like data-driven estimation of distribution algorithms and Monte Carlo simulations without having to drop down to the plugin language (if you could get read/write Excel compatibility to work you could have all of Wall Street wrapped around your little finger). Think Stalin with reasonable compile times. Put a real library in there so you can do real work. Yes, I am advocating positioning Lisp as an extension language in an enduser product. It worked well for Emacs and AutoCAD. No, I don’t think having an indentation-based syntactic sugaring scheme of the kind found in Dylan and RTML makes prefix syntax more palatable.
  • Version control. Not having this after 20 years of spreadsheet usage by businesses, and not having it well after the introduction of Sarbanes-Oxley, is unbelievably retarded.
  • Real, programmable Internet connectivity. That means macho web scraping with information extraction algorithms from the literature along with brain-damaged-simple integration with web services.
  • User-toggleable, user-extensible, first-class column/row constraints (“strongly-typed spreadsheets”) and other tools to reduce the probability of introducing errors in mature spreadsheets which are in maintenance mode.

Good luck bringing some real innovation to the boring, stale world of office suites in Javascript running on the browser, where even simple effects and operations bring a reasonably powerful computer to its knees.

(But it’s on the Web! There’s nothing to install!)

There’s also nothing worth using.

Another reason the Semantic Web will fail

Filed under: Uncategorized — metacircular @ 1:53 pm

The vast majority of the valuable information on the Internet is contained in unstructured formats.

Good luck getting it out safely and sanely, you poor bastards.

May 22, 2007

Dang you to heck

Filed under: Uncategorized — metacircular @ 11:30 am

Attention, bloggers. This is the Internet. We are adults.

We can use words like “hell” and it’s OK.

Thank you.

May 16, 2007

Committees don’t always produce bad technology

Filed under: Uncategorized — metacircular @ 3:38 pm

Well, friends, things have been busy lately. I have been up to my eyes in database processing and cleaning code. So, in lieu of deeper material, consider:

EJB2 and COBOL are often pointed to as examples of the dangers of design by committee. But, what about ANSI Common Lisp and Haskell? I ask you. Interestingly, both were intended to unify and reduce unnecessary diversity in programming languages of a particular variety, so they built on a lot of prior art, none of which was designed by committee.

I have plans to write about natural language processing and evolutionary computation in Scala. Stay tuned, babies.

Next Page »

Blog at WordPress.com.