Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Jon Udell on the Nerd's Spreadsheet

Posted by kdawson on Fri Sep 28, 2007 10:23 AM
from the easy-way-to-generate-code dept.
rcs1000 writes "Jon Udell has a interesting article on a new type of spreadsheet: one targeted specifically at techies. The skinny is that any spreadsheet is actually a computer program, only in Resolver One, the product profiled in Udell's piece, this is explicit rather than implicit. And the code is IronPython rather than VBA. There are some other cool things it does — allowing cells to contain objects, and allowing spreadsheets to back-end websites." Udell's screencast gives a good demo, though the presenters are a bit hard to hear due to the phone connection. Resolver's own screencast is an alternative.

Related Stories

This discussion has been archived. No new comments can be posted.
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • Can it... (Score:5, Funny)

    by O('_')O_Bush (1162487) on Friday September 28, @10:25AM (#20782707)
    Multiply 850*77.1 correctly?
    • Re:Can it... by Daimanta (Score:3) Friday September 28, @11:16AM
      • Re:Can it... by maxwell demon (Score:2) Friday September 28, @06:24PM
        • 1 reply beneath your current threshold.
    • Re:Can it... by RobBebop (Score:1) Friday September 28, @12:21PM
      • 1 reply beneath your current threshold.
    • Re:Can it... by a.d.trick (Score:2) Friday September 28, @08:04PM
    • 2 replies beneath your current threshold.
  • Logical conclusion (Score:1)

    by MeditationSensation (1121241) on Friday September 28, @10:28AM (#20782749)
    (http://memechan.org/)
    Oh jeez, this reminds me of the last company I worked at, where they tried to do *everything* in spreadsheets, even documents that would have been much better in word processors or databases.
  • by quanticle (843097) on Friday September 28, @10:29AM (#20782761)
    (Last Journal: Sunday December 04 2005, @12:42PM)

    SQL databases have become much lighter and more efficient these days. Why should I use this store data over a lightweight SQL database?

  • Solution looking for a Problem (Score:3, Insightful)

    by OverlordQ (264228) on Friday September 28, @10:30AM (#20782781)
    (Last Journal: Thursday February 15 2007, @08:00PM)
    In a Resolver spreadsheet, these objects are visually persistent. I haven't yet got my hands on Resolver, but here's an example of what I think that will mean. Suppose that I have a data set I want to transform, against which I'm testing five different versions of a transformation function. I'd put the data in cell A1, the functions in cells B1..B5, and the results in C1..C5. Now I'll see everything at a glance.

    That . . . sounds just like a normal spreadsheet to me.
    Solution looking for a problem?
  • 2D programming? (Score:3, Informative)

    by 16384 (21672) on Friday September 28, @10:33AM (#20782827)
    Organising code on a spreadsheet... I guess it will resemble Befunge [wikipedia.org]
  • and allowing spreadsheets to back-end websites

    munge them?
    hack them?
    copulate with them?
  • Misuse of spreadsheets (Score:5, Interesting)

    by Tablizer (95088) on Friday September 28, @10:39AM (#20782925)
    (http://www.geocities.com/tablizer | Last Journal: Saturday March 15 2003, @01:22PM)
    A good portion of spreadsheets actually should be database tables of some kind. People end up manually grouping and other stuff that report-writers can do automatically. What is needed is a kind of "dynamic" RDBMS tool that has open-ended columns and column widths. A "spreadbase"? The Oracle clones are all too rigid.

    As far as spreadsheets for programming, I've experimented a lot with data dictionaries to simplify column management and column sub-sets for regular ol' edit-and-report screens. So far it is tricky because one often wants to tweak something for a particular context and one-size-fits-all hits a wall. The trick is finding a good, clean way to "override" specifics from the table when needed or just make alternative entries of a given column and select them via set notation when needed; but I've yet to find a clean, simple convention. It ends up fairly messy such that regular copy-and-paste is unfortunately the cleaner solution much of the time. Maybe if the toolset and the language was geared toward nimble data dictionaries, these approaches would be smoother. Forcing a non-data-oriented language to act data-oriented is like trying to keep a toddler in line.
           
  • by russ1337 (938915) on Friday September 28, @10:44AM (#20782999)
    (http://nzruss.blogspot.com/)
    Wow... that screencast is perfect for me to sit facing the screen with my eyes closed, and anyone that walks past my cube will think i'm doing some spreadsheet wizardry....

    nice. Now i'll go someway toward meeting the quota for those that sleep at work [slashdot.org].
  • Spreadsheet, Or... (Score:2)

    by Nom du Keyboard (633989) on Friday September 28, @10:50AM (#20783117)

    There are some other cool things it does -- allowing cells to contain objects, and allowing spreadsheets to back-end websites.

    Is this a spreadsheet, or a poor man's database?

  • by pembo13 (770295) on Friday September 28, @10:54AM (#20783173)
    (http://www.pembo13.com/)
    Seems like a fairly on-topic question. Anyone know the answer?
  • Hex handling (Score:2)

    by hedley (8715) <hedley@pacbell.net> on Friday September 28, @10:58AM (#20783239)
    (Last Journal: Wednesday August 20 2003, @10:39PM)
    Importing and manipulating hex would please me no end.

    H.
  • Great Idea (Score:1)

    by declining (1163481) on Friday September 28, @10:58AM (#20783241)
    This is a really interesting idea. If you think about it, every spreadsheet is a computer program. Excel is probably the most widely used development environment in the world. And it sucks. Big time. Watching the screencast, it looks like this is a great halfway house between bad, ad hoc, spreadsheet development, and a traditional IDE. The choice of Python as the language is a great idea - it's much, much easier for someone than VBA, and it's much more semantically powerful. I'd be interested in discovering whether it works existing Python and .NET libraries.
  • by exploder (196936) on Friday September 28, @11:08AM (#20783375)
    (http://slashdot.org/)
    [quote]I haven't yet got my hands on Resolver, but here's an example of what I think that will mean.[/quote]
    I said "WTF?" and stopped reading right there.
  • by gubol123 (933609) on Friday September 28, @11:11AM (#20783429)
    is that this is the first time i am seeing a demo developed in silverlight. Yeah, i know, there are lots of demos on MS site. But this is the first time i am seeing somebody using SilverLight for some real demo on their own site. is this the sign of things to come? Time will surely tell
  • by cad106uk (1163635) on Friday September 28, @11:11AM (#20783435)
    I had an interview with these people about 18 months ago (didn't get the job) but I thought there product was pretty cool. Its basically a simple spreadsheet that allowed you run an IronPython script in each cell. So you can run your spreadsheet with all the power the Python and .NET can give you ... say you wanted your spreadsheet of investments to update against a stock exchange web site every 30 seconds
  • I never, ever want to see A1..A10 again.

    Give me an item dispenser, the program should name things sensibly as they're created and all formulas should read as plain text like: profits = sales - expenses.

    Please.

    William

  • Windows Only (Score:2)

    by cmacb (547347) on Friday September 28, @11:20AM (#20783591)
    (http://blog.macb.net/ | Last Journal: Monday March 05 2007, @04:38PM)
    From the website:

    Please note that Resolver is currently a Windows-only application . While we have no immediate plans to produce versions for other platforms, if there is enough interest then that will change.


    There may be some exceptions, but I haven't found any... Once a bloger, journalist, programmer, and I'm sure lawyer, goes to work for "the Borg" they lose all sense of objectivity.

    Why in this day and age would someone want to lock themselves into yet another Windows-only application?

    I would avoid this thing like the plague. Even if Linux hasn't taken over the desktop, there are certainly enough Apple users these days that OS portability should be BUILT-IN to the design process from day one.

    The whole point of an OS is to isolate the application from the hardware. But what good does that do us when so many new applications are designed to work with only a single OS, and that single OS is designed to work with only one type of hardware? Has our industry gone mad?
  • A Better Headline (Score:1)

    by mdmkolbe (944892) on Friday September 28, @11:21AM (#20783605)

    "Spreadsheets with First-Class Functions and Objects"

    This is just a spreadsheet with the ability to put functions and other objects into cells. It's a good idea, but there is no need to dress this up in marketspeak. We understand techno-babel just fine here.

  • homebrew (Score:2)

    by kisrael (134664) on Friday September 28, @11:27AM (#20783725)
    (http://kisrael.com/)
    Not reading TFA, it reminds me a bit of my custom db/ui solution that I use for generalized information storage: links, books and movies I watch, developer notes, etc... it some web-based Perl CGI and is, in effect, a big old flat table database, the columns defined by text files, and it auto-generates a convenient form with the usual spattering of HTML input types...
  • by itsybitsy (149808) on Friday September 28, @11:57AM (#20784273)
    There was a Spreadsheet made for the CIA by Xerox that would easily be the Nerds Nerd of spreadsheets as it enabled full access to the underlying programming language, Smalltalk.

    Here are some links to the old version and newer developments.
    http://wiki.cs.uiuc.edu/VisualWorks/The+Analyst [uiuc.edu]
    http://www.mojowire.com/TravelsWithSmalltalk/DaveThomas-TravelsWithSmalltalk.htm [mojowire.com]
    http://www.sunless-sea.net/wiki/SmallTalk [sunless-sea.net]
    http://www.google.ca/search?num=100&hl=en&newwindow=1&q=%22the+analyst%22+xerox+smalltalk&btnG=Search&meta= [google.ca]
  • No matter how good a tool is, it's only as good as the raw data.

    1. $500 per month in sales after 6 months.
    2. ???
    3. Profit! $320,000,000 per month after 12 months.

    These people need a reality resolver instead of a spreadsheet replacement.

  • VBA already does this... (Score:4, Insightful)

    And does it poorly. And insecurely.

    You can already access spreadsheet content from Visual Basic, and include VB script in spreadsheets. The same scripting ability which allows the "wow" features in spreadsheets also creates the potential for abuse - remember macro viruses? Suddenly, documents which formerly contained only data now contained executable code, and it gave rise to a security nightmare.

    Yes, today, with VBA, you can do what the article mentions. In fact, it's been possible for years. Problem is that:

    1. Very few people use it, and
    2. Those who do use it tend to use it poorly.
    Yes, you can back end a website with your spreadsheet. But why would you? A spreadsheet is a horrible way to manage data; there's no referential integrity checks, no versioning, no security, and doesn't scale well. Furthermore, your crucial data is tied to a particular application, rather than a database.

    Just like VBA, it's a nice nerd's toy, but the wise system programmer recognizes that it has limitations.

  • by legirons (809082) on Friday September 28, @12:36PM (#20784861)
    And for Gantt charts, there's a program which lets you express each task in python code (including whatever calculations, remote data, or whatever that it needs to get data from)

    http://faces.homeip.net/ [homeip.net]
  • by Locutus (9039) on Friday September 28, @01:01PM (#20785261)
    and here is why, even moderately smart programmers are more comfortable with a spreadsheet than a database or full blown application. Example which I believe still applies today:

    I was a member of a "club" of techies who were investing in the stock market in the 1996 timeframe. We cycled the clubs officer positions through the club membership so everyone knew what others were doing and how. The 2nd year, I got the Treasurers position and my job was to collect "investments" at each meeting and provide a overall club report and reports for every member's position/investment in the club. I was handed a spreadsheet with tons of data entry cells sheets to fill in data. I could have cleaned this up but hey, this was the age of the internet right. So I build a SQL database to handle the accounting, wrote code to drive a CGI interface to a web server and wrote scripting to trigger updates on stock valuation and triggers to update the database on changes. It was all accessible from a web browser with a login. And very repeatable. It worked great after the 3rd months meeting and for the remainder of the year. Because it was cross platform, it would run on anybodies computer and did not need to be on the internet.

    Here's the kicker( finally ). The next Treasurer was the guy who started the club, owned his own business, was a Windows software engineer who's product he built over close to 10 years and was a signal processing kit(PC and software appliance ). He knew what I was saying when I described the package I'd built to do the books but he wanted none of it. He wanted the latest report and then he write a spreadsheet to handle the task. And for every meeting from then on until the end of the club 2 years later, we were constantly correcting data in the spreadsheet and sometimes, corrections required pulling out paperwork from previous months meetings.

    There is a fools familiarity with spreadsheets which people find comforting. They will go to great extremes to try and get the spreadsheet to work for what they are trying to do. Great extremes. And with the plethora of Neanderthal-ish computer users out there who think they are computer guru's because they can do "=(A2+B2)" in MS Excel, it is a long long road to get movement outside of the spreadsheet.

    I just found out a buddy has taken on a 2nd job and is trying to build a business out of it. He's under charging to get experience in more aspects of the field and to construct a spreadsheet to "automate" the task(s). He's thinking that the business will grow around the "application"/spreadsheet.

    So I think the title should be, "Jon Udell on the Geek's Spreadsheet" because the nerd is really not that 'into' the technology to really know or want to work outside of a standard spreadsheet. IMO.

    LoB
  • by FranTaylor (164577) on Friday September 28, @01:14PM (#20785493)
    I've always felt that MS Access is a really shitty implementation of a really good idea. Yes, it was backed by an SQL database, but you can do spreadsheet stuff, too, and behind the scenes you could tie it all together and make it look nice. Another nice feature is that managers, with no programming experience and just a bit of SQL knowledge, can create and generate their own reports without having to bother a developer. Alas, the SQL engine has many fatal flaws, the scripting language is junk, and the GUI is just too quirky and weird. The report stuff is pretty nice, though.

    Unfortunately nobody else has ever tried to do it right. The pieces are all out there, but they're not integrated.

    I may be a diehard Red Sox fan, but I still cheer when a Yankee makes a good play.
  • by kubusja (581677) on Friday September 28, @01:34PM (#20785827)
    Python scripting was possible for a long time for Openoffice users ...
  • by tom's a-cold (253195) on Friday September 28, @01:35PM (#20785845)
    (http://slashdot.org/)
    Like other posters said: half the time they're busted, denormalized lame-ass substitutes for databases. The other half of the time they lead to convoluted algorithms that would be expressed more simply in code. Spreadsheets are the shits-- logic and presentation layer tightly coupled. The only value they give is in sortable and filterable views, and grid controls on a webpage will do that for you nowadays.

  • Scheme on a Grid, anyone? (Score:3, Interesting)

    by PaulBu (473180) on Friday September 28, @02:06PM (#20786289)
    (http://slashdot.org/)
    I am wondering if we have forgotten this cute little app... Thwe webpage says
    2000-12-07, but I think I've played with it long before that. And yes, it had
    database connectivity, could serve data over HTTP and, of course, the extension
    (and half of implementation, I'd guess) language was Scheme.

    http://siag.nu/siag/ [siag.nu]

    Paul B.
  • InstaCalc (Score:1)

    by kazad (619012) on Friday September 28, @02:10PM (#20786347)
    (http://instacalc.com/)
    (shameless plug)
    I'm a nerd as well, and built an online calculator/spreadsheet for myself. It's a new take to an old problem: instant answers, inline units (MB, GB), and shareable results. Yes, it handles 850 * 77.1 and more [tinyurl.com].

    Thought you might find it useful.
  • by uhlume (597871) on Friday September 28, @05:23PM (#20788869)
    (http://www.last.fm/user/uhlume/)
    Wolfram [wolfram.com] called; they want their concept back.
  • It isn't as useless as you think (Score:2, Interesting)

    by heinzkunz (1002570) on Friday September 28, @06:05PM (#20789309)
    The idea reminds me of "Cells" by Kenny Tilton. From the site [common-lisp.net]:

    Cells is a mature, stable extension to CLOS that allows you to create classes, the instances of which have slots whose values are determined by a formula. Think of the slots as cells in a spreadsheet (get it?), and you've got the right idea. You can use any arbitrary Common Lisp expression to specify the value of a cell. The Cells system takes care of tracking dependencies among cells, and propagating values.

    Resolver seems to take this idea a step further. It looks like you can write nice reporting tools with this. There is no need to bash Resolver because you don't like Access or Excel.
  • Here's a similar proposal for distributed, extensible, language-neutral spreadsheets [livejournal.com]! Someone at Google, please implement this? Cheers!
  • from the web site (Score:2)

    by m2943 (1140797) on Friday September 28, @08:05PM (#20790275)
    Every time a user changes a Resolver spreadsheet, the software generates Python code expressing their desires;

    Oh yeah? How does Python express hot, naked babes and a sixpack?
    • 1 reply beneath your current threshold.
  • by AaronLawrence (600990) * on Saturday September 29, @02:59AM (#20791973)
    Hilarious! Joel wrote flippantly about this exact intellectual exercise here:

    http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html [joelonsoftware.com]

    People who are Smart but don't Get Things Done often have PhDs and work in big companies where nobody listens to them because they are completely impractical. [...] For example, they will say, "Spreadsheets are really just a special case of programming language," and then go off for a week and write a thrilling, brilliant whitepaper about the theoretical computational linguistic attributes of a spreadsheet as a programming language. Smart, but not useful."
  • As someone who wrote exactly this kind of thing [sourceforge.net] for Java, I can attest to the idea that it can be useful and not a security issue. The trick is to think of its uses in a completely different way than what we tend to associate with Excel. The way I use Bean Sheet (my programmer's spreadsheet) is in the following ways:
    - To hold and manipulate small amounts (usually sub-100,000 rows) of formatted and structured data.
    One thing I've never seen anybody do in Excel is script your own sorting algorithms for example.
    - To have a format compatible with a version control system so as to see diff's in simple, but formatted, lists of data.
    - A more visual way of modeling/testing/debugging API and components.
    - To allow programmatic access to the spreadsheets.
    This is what this guy was talking about as a good opportunity to seed quickly changing business rules into an otherwise static system. Suppose you have a piece of code that needs to perform some business-rules driven operations on a data set. You can encapsulate those business rules in such a spreadsheet containing no data, test it, and deploy it with your application. The app then loads the data into the spreadsheet (the spreadsheet might even contain information on where to put the data set into it, so the interaction can be quite generic) and the app then queries the spreadsheet's "result" cells. And since these kinds of spreadsheets can contain all manners of data types, integration can be really simple. Then, if need be, pop open the spreadsheet, tweak the business rules, and deploy it back into your app -- perfect component-oriented programming model implementation
    .
  • Re:Python (Score:1)

    by LiquidCoooled (634315) on Friday September 28, @10:54AM (#20783177)
    Neither is VBA ;)
    [ Parent ]
  • by julesh (229690) on Friday September 28, @03:54PM (#20787871)
    Aside from having a console window for custom formulae and a debug output window, it is not that much different from a typical spreadsheet program. This can easily be built on top of existing office suites, if they haven't include them already.

    While I haven't used this program yet, I believe the major difference is that it allows you to declare new classes and use values of those classes as cells in the sheet. This sounds remarkably useful to me.

    Imagine having a CurrencyAmount object. A1 contains =CurrencyAmount(50.00, "USD"). B1 is =A1.ConvertTo("GBP"). CurrencyAmount includes the code to look up the exchange rate on a web server, so whenever you click recalculate you get an up-to-date sheet.

    Also consider other cell types you could use: complex numbers, vectors, matrices, value with unit: A1: =UnitValue(50,"meters") B1: =UnitValue(17,"seconds") C1: =(A1/B1).In("miles per hour")
    [ Parent ]
  • Re:Python (Score:2)

    by julesh (229690) on Friday September 28, @04:02PM (#20787973)
    IronPython is not a language!

    Actually, I believe it is. There are substantial differences [codeplex.com] between IronPython and the reference Python implementation. C++/CLI is a language, IMO, and so is IronPython.
    [ Parent ]
    • Re:Python by voidspace (Score:1) Friday September 28, @04:49PM
  • by ResolverSystems (1163669) on Friday September 28, @07:44PM (#20790129)
    Possibly, but we think there significant differences in our approach Resolver expresses a spreadsheet as a Python program. The code pane shows the entire spreadsheet as an executable Python program. User code, data and system code are cleanly modularized. The result, in our experience, is dramatic improvement in programmability and modeling power.

    Certainly a nice console window and debug output window would improve, in our opinion, most existing spreadsheet applications. However, this will not fundamentally change the interaction patterns between the cells, user code, and application code, nor the architecture of the application. One of the reasons why we can deploy Resolver spreadsheets to the web so easily is that they are Python programs, one of the benefits of this architecture.
    [ Parent ]
  • by AnEmbodiedMind (612071) on Friday September 28, @10:48PM (#20791101)
    One thing that is different is that it auto generates python code that fully describes the spreadsheet (structure, display properties, and cell values!) - and which apparently is then executed to actually draw the spreadsheet itself (kinda a weird bootstrapping thing going on there).

    Anyway, I wonder how well modifications you make to the generated code are treated by changes made to the spreadsheet itself...
    Anyone who has tried to hack auto-generated code - e.g. from UI code generators (VC++?) knows how ugly this can get. Maybe with the closed loop (from generating code, back to displaying the spreadsheet) they have managed to deal with this, but the screencasts only show such trivial examples of editing so you have to wonder.

    The thing that seems REALLY cool about this tool (and the real answer to your question I think), is that you can take this auto-generated code + your custom code, and drop it into a .Net app as is, and you have a powerful python-powered spreadsheet engine inside your custom app. This means you can give your users a familiar spreadsheet UI as part of a larger app where appropriate, with all your business logic, without the unconstrained craziness of an excel VB App. Nice!
    [ Parent ]
  • 8 replies beneath your current threshold.