This year I was very nice, I made many contributions to open-source projects, I connected to wonderful people, and I boosted my productivity using Coda like never before. I’m so grateful for their forms. I’m sure you will relate, as I learned you already use Coda to plan for Christmas delivery, like this table I found when hacking asking your elves:
December 25th, deliveries
Name
GPS coordinates
Was nice?
Ordered
Will get
Name
GPS coordinates
Was nice?
Ordered
Will get
1
Hectosh
40.7127281,-74.0060152
A toy gun
Charcoil
2
Igosh
40.608917614618846,-74.24675311923001
A fire engine
A fire engine
3
Jor
40.58417825878556,-74.28747119993876
An inclusive doll
An inclusive doll
There are no rows in this table
Santa, I know I’m not young anymore, but I have four things to ask you in this letter, that would make me so happy. And possibly other people would be happy too. Perhaps could you consider letting some of your elves help Coda figure out how to implement them?
1. An easier way to refer to the previous row
Coda brands as a substitute for Excel and Spreadsheet, but there is this one thing that bothers me. When I want to do financial predictions, cumulative analyses, or other computations where intermediate results depend on previous intermediate results, there is no built-in mechanism to access the previous row.
Here is my current workaround. I set up a table, and a lookup column “PrevRow” to the same table, with the default value for new rows being Table.Last(). That way, every time I want to refer to a previous result, like to compute the Fibonacci sequence, I switch on whether PrevRow exists or not, and I compute the data accordingly:
Example Table
Fibonacci1
Fibonacci2
PrevRow
Fibonacci1
Fibonacci2
PrevRow
1
1
1
2
1
2
1
3
2
3
1
4
3
5
2
5
5
8
3
There are no rows in this table
The problem is, I cannot add 100 lines in one action, else, their PrevRow will all be the same.
It would be better to have a function PreviousRow() that automatically computes the previous row.
That’s my first wish. That’s the only reason why I still use Spreadsheet and Excel sometimes.
2. Full-cell buttons with changeable skins
You offer games for Christmas, I like to create games. It’s stronger than me. I can’t stop using coda to make 2D grids and placing pictures and buttons to change the state: Tic-tac-toe, 4 in a row, collaborative minesweeper,
However, I wish I could just put pictures on buttons, and make them full width and height, so that my tic-tac-toe looks more like this, where images are clickable.
Oh, and if we could have a different image on hover, that would we awesome. But just full-size clickable images without borders would be great already. That’s my second wish.
3. Define Reusable functions in Coda
Are you still reusing the same reindeers? That’s awesome. Why would you have to have different reindeers for every Christmas anyway.... Ok so you’ll get my point.
Recently, I was working on an awesome budgeting Coda app for my family, but you know, we have euros and dollars, and on every table where I had some amount, I converted it to dollar using the following formula:
Account expenses
account
Amount
Amount in $
account
Amount
Amount in $
1
US Bank
10
2
EU Bank
15
3
EU Bank
1
There are no rows in this table
Accounts
Name
Currency
Total expenses
Name
Currency
Total expenses
1
US Bank
$
0
2
EU Bank
€
0
There are no rows in this table
As you can guess, I was reusing the formula to convert an amount and an account type to dollars in many different tables, and I wished that there was a way for me to abstract it. I mean, create a reusable function. Of course, I ended up putting the 1.19 dollars/euros into a variable, but this is not enough.
Here is how I think we should have it in Coda. First to define two named formulas, an a computation with them:
Account:
@US Bank
Amount:
10
ToDollar:
10
Now, I would like to be able to reuse the formula ToDollar in my table, with the ability to replace the default Account and Amount (with multiple arguments like for AddRow, ModifyRow, SwitchIf, etc.) like this:
Call would not just be a function, it should be able to import the formula ToDollar, replacing Amount and Account with thisRow.Amount and thisRow.account, respectively.
Promise, I wouldn’t use Call to generate infinite recursion.
4. Editable formula-generated values
I find myself generating many formulas with feedback, and when I click on the values it generates, it won’t let me update them.
For example, here is one game to guess a number:
00
5
It's not Christmas yet
Here is the formula box that renders the “It’s not Christmas yet” text:
Oh sorry, I just revealed the number to guess. Anyway. my point is, why not be able to modify “It’s not Christmas yet” above directly, ok maybe with a double click and a warning to ensure we know we are editing a result.
But that way, I would not have to dig deep into my formulas, my regexes.
Another great example for that is my document of recipes. There, I generate a recipe with regexes and computations to ensure I can choose the quantity of an ingredient. The problem is, I cannot modify this generated recipe, I need to modify the original. It would be great if I could modify either of them.