Show HN: Gridmaster – A Code School for Learning Spreadsheets
gridmaster.io
gridmaster.io
This looks like a good start, but you pretty much need to get either Google Sheets or Excel into the browser window for the exercises. The half-working thing currently there just isn't going to cut it. It was very hard to work with.
I don't know what plans you have for future tutorials, but I would suggest using specific business use cases as scenarios and exploring them from a basic approach along to more advanced solutions where appropriate.
Also, I really like the name.
Agreed, the Spreadsheet needs a lot of work. It's currently just an MVP to gauge interest.
(edit: typo)
If you want to teach serious spreadsheet use, don't waste any time on trying to compete with Excel. Just use it. If you really need to, figure out how to make interactive lessons as VBA macros. But teach real Excel.
Accountants pay very good money for Excel training, at least in Israel (I tried to compete with those courses by teaching Excel automation with Python, so I did some market research and customer development.)
[1] https://www.reddit.com/r/videos/comments/4df5il/martin_shkre...
Corp Finance or FP&A typically require advanced skills. Excel is basically half the value, the other half is business acumen. You need both to be valuable.
Speadsheets are scary.
http://www.eusprig.org/2006/spreadsheets-in-clinical-medicin...
Let's not forget the fMRI software with bugs. Was it done in Excel?
Sure, Excel has some problems. No, they are not even close to what is implied in HN threads like this one.
It's also very inefficient. Sort of a push approach where if you change an input you need to recompute every single combination of outputs instead of just the one output you want, as opposed to code which has a pull approach, where you call your output and it recalculates the steps it needs for just that output.
And as soon as you get into something you would express as a loop, or loop of loops, excel starts to be really painful to use if hardly usable.
But as a programmer, I still use excel (actually open office now I'm on Linux full time) as a brainstorming numbers based scratch pad. Somthing about the infinite grid, auto fill, not having to figure out all the parts of a 2D array allow me to chase an idea in its initial stages.
Eventually, when I have a handle on the problem and all the variables involved I will switch to jupyter notebooks or something else.
I still think we as an industry are still missing the point of why are so many people using excel, especially in areas it shouldn't be used in. There is some hidden UI/UX point we're subtlely missing.
I think there's a kind-of necessary trade-off between flexibility and maintainability. And a similar trade-off between flexibility and robustness. Spreadsheets are flexible, but often not very maintainable, evolvable, or robust.
Ideally you would want a tool that allows you to move along the spreadsheet <-> statically typed language continuum without much pain. So when you finish the spreadsheet prototyping, you can kind of transform that into more robust and maintainable code. But that might have the same inherent short comings as trying to convert a prototype into a production product...
If my conjecture is true -- and I'm not at all sure it is -- then we're not missing a UI/UX point. We're just building tools for people with different priorities.
It's not subtle, at all. Table layout is intuitive and Lua proves that tables can be a first class data type. Therefore, database normalization is important, and since it isn't enforced, easily messed up.
Spread sheets fundamentally hide the control flow, needed to grasp the normalization order of the table, in a second layer. That is a virtue, when the program is small enough, but a burden otherwise.
It's been a good way to generate a bit of revenue for my bootstrapped business. But maybe more valuable as a way to generate leads for our software business (spreadsheets can't do everything!).
I'm not a CS'ist, nor even a professional developer, but I know that CS pays a lot of attention to methods for how to write good code that can be reviewed and maintained. And I make an effort to study and apply those methods myself.
I wonder if it would be an interesting line of research in CS, and within this training, to think about how some of those methodologies can be applied to the lowly spreadsheet which, for so many people, is their main if not only programming tool.
Then learning to think in units of tables (RDB theory is actually great for this) helps a lot for modularity. Once you have that, basic discipline in color-coding inputs vs. links vs. outputs and using proper headlines and comments (write them in an adjacent cell, not in the pop-up) will get you really far.
Then if you really need to be crystal clear, you can obsess about having all the inputs to a formula be in one screens worth, using good named ranges (periods are valid characters!), tables, etc.
While I'm at it, I should mention my personal pet peeve: blocks of cells where all the formulas are the same except a random handled it ed one 4 rows down. The next time you edit that formula you can be sure you're going to clobber that hard-coded adjustment.
http://eusesconsortium.org/pubs/searchable/sheets.pdf
Also, check out the work by Simon Peyton Jones on spreadsheets as functional programming for the masses.
One of my pet projects right now is an Hour of Code presentation that leverages the knowledge of spreadsheet users to learn the basics of programming in Scheme.
This is an interesting thing to think about. I just opened up a Google spreadsheet that I created in 2009 to see if I would be able to understand and update it if necessary. I managed to make a change and see some new results in under a minute.
The time to get back up to speed inside a long-lost spreadsheet is way faster than going back to a program you wrote 7 years ago. Even in complex spreadsheets, it is very easy to follow the flow of data by just clicking inside a cell to see how it was computed.
Incremental improvements are also typically easier on a spreadsheet than in a standard programming language. Part of it is because each cell or column is quite modular and I don't have to worry about extra state that isn't specified in that cell's formula.
From a business standpoint I could see spending a few dollars to learn more about spreadsheets. Yes, these resources are available in other places (there may even be an organized set of Spreadsheet tutorials out there) but I didn't see that on HN this morning.
There are four parts to a VLOOKUP formula...
1. The cell that contains the information you know (e.g. someone's name).
2. The grid of cells that contains the information you want to match against and the information you want to return (e.g. a table with names of people and their phone numbers). The first row of this grid should always be the list you want to match against, and the things you want to return should always be to the right of this (e.g. if the column order is 'Names, PhoneNumber' the Vlookup can work, if it's 'PhoneNumber,Names' then it won't, there are workarounds but make things easy for yourself when you're learning and set the matching column as the leftmost column).
3. The number of columns between the match column and the return column. If they're next to each other, this number will be 2. If there's another column in-between (e.g. 'Name', 'Email', 'Phone'). This number will be 3.
4. The match type. This one is easy, always use the value FALSE. If you put TRUE you can have partial matches, which isn't a good idea.
So you almost know everything you need to know about Vlookups. There's just three more things I'd recommend knowing about.
1. Absolute cell references. This is useful for VLOOKUPs when defining your match/return grid (point 2 above). What it means is the grid doesn't change as you move the formula. You can tell the grid is locked when you see 4 dollar signs (e.g. $F$2:$G$20). You can cycle between relative and absolute cell references when editing the formula by using the F4 key, but for now just type in the dollar signs if they're missing.
2. When getting your data ready to match against, there are a few useful formulas for tidying up data. TRIM is often useful (it gets rid of leading and trailing spaces). UPPER (and LOWER and PROPER) are also useful if the data is a little messy and you need to make text data have a consistent case (e.g. matching against all uppercase letters). LEFT, MID, RIGHT and FIND are all useful if you want to create a lookup column from more complex data. The only other tip worth knowing when you start out creating a lookup column is to make a mental note of the format of the data, for example a number in number format won't match against a number in text format. If you want a quick way to change numbers stored as text back to regular numbers, enter a formula which takes the number formatted as text and multiplies it by 1.
3. Sometimes you'll want to check that your lookup formula is working correctly. Other than looking for #N/A values (which means the data hasn't been found) or 0 values (which means a match was found, but the return cell was blank), a good way to test is to just create another VLOOKUP that checks the logic in reverse, e.g. If a Vlookup formula is on Sheet1 and is referencing values in Sheet2, can you create a Vlookup formula in Sheet2 that confirms the right values made it to Sheet1. To be honest this last step might be too much when you're starting out, looking for #N/A values and 0 values should be fine.
Hope this helps. Vlookups were the first thing I learned in Excel that gave me the confidence to explore more, and have proven invaluable time and time again. Any questions, please ask.
Do spreadsheets need loose[r] typing? It's it ever necessary to operate with a formula on numbers-as-text?
Also, it's easy enough to see when numbers are stored as text (via visual cues and the format type field).
That said, perhaps the formulas could be made more flexible. Excel formulas are somewhat Lisp-like, it'd be great if Excel had Lisp-style macros for customising formulas. Probably won't happen though. Microsoft is developing the 'Power BI' side of Excel, I could see it becoming more common to create custom functions with M or DAX when the related editing functionality improves.
That said, if you want to go from an Excel beginner to an intermediate user, then the Power BI functionality is definitely worth exploring.
It's also worth knowing how to work with Excel tables, which can help with making formulas more robust. However, all of this putting the cart before the horse, VLOOKUPs are too useful to skip over, and are a fundamental part of data manipulation with Excel formulas. A grounding in Excel formulas is useful before moving on to the fancier stuff.
Alt,D,F,F - Set filters
Alt,D,F,S - Clear filters
Alt,W,F,[Enter] - Freeze panes
Ctrl+Shift+DownArrow - Select all cells down from current cell
Alt,O,C,A - Autofit to content of currently selected cells.
To give an example of most of the above (plus a couple more)...
Ctrl+Home
Ctrl+Shift+Right
Ctrl+B
Alt,D,F,F
Alt,O,C,A
DownArrow
Alt,W,F,[Enter]
Assuming your data has column headings at the beginning of a sheet, what the above combination does is formats the column headers in bold text, sets column filters, autofits the width of the columns so that the full name of the columns are all displayed, and freezes the top row so that the column headers will still be shown when scrolling down the worksheet.
One more shortcut tip I'll pass on is for Paste Special. If you want to get the most out of Excel you should learn about Paste Special, it lets you do things like remove formulas, copy formats, transpose columns into rows (and vice versa). To use it from the keyboard, first highlight and copy the cells you're interested in, then use the 'menu key' on your keyboard (Google it if you're not sure where this key is), then look for the underlined letters in each of the menu options to choose the ones you want.
Also, these functions aren't necessarily keyboard friendly but I'd recommend taking a look at 'Text to Columns', 'Remove Duplicates', 'Evaluate Formula' and Pivot Tables, all of which I've found very useful.
A few other useful ones:
F2 to edit a formula
CTRL ENTER to apply the current formula to the selected range
ALT = to insert a SUM( ) where the range is automatically selected
CTRL : to insert the current date
SHIFTLOCK F9 to evaluate a fragment of a formula while editing it
CTRL ARROW to navigate through a block of numbers (and SHIFT to select them)
But you will only be a pro if you start using array formulas. F2 a cell (or selected range) to start editing the formula, then CTRL SHIFT ENTER to apply it as an array formula.
Array formulas are useful for two things:1) make several cells behave as a single vector / matrix. So you can do matrix algebra. From simple things like {TRANSPOSE()} to actual maths.
2) do super flexible aggregations. Like enter in a single cell:
={SUM(A1:A10*A1:A10*(B1:B10>C1:C10)*(D1:D10="A")*(MONTH(E1:E10)=ABS(F1:F10)))}
Which reads "do the sum of the square of elements in col A WHERE Col B greater than Col C AND Col D is "A" AND the month of Col E is the absolute value of Col F.You can also earn money at the office, like when I bet with a colleague I could tell him how many times a column changed value in a single formula:
={SUM(1*(A1:A10<>A2:A11))-1}
Array formulas are slow but very powerful.Regarding array formulas, I wouldn't recommend them. Especially as you can use SUMPRODUCT for the same purposes as array formulas...
http://ww2.cfo.com/accounting-tax/2010/12/spreadsheets-hate-...
While I think word processing and spreadsheets are prime candidates, things like Access or the level of unnecessary detail that we'd go into on some topics (like formatting to make it look nice) were unneeded and could be better spent on different topics, like researching online and even graphics.
Its refreshing to see something like this that doesn't force any brand to teach the CORE concepts.
Also, using a spreadsheet has a visual component that you lose with R/python that can be off-putting if you are not comfortable with visualizing what certain lines of coding do.
It's a book about doing data science using Excel, until it doesn't make sense using Excel anymore. KMeans, Naive Bayes, Regression, etc. all in Excel, without totally abusing it.
[1] https://www.amazon.com/Data-Smart-Science-Transform-Informat...
A ton of inputs from different departments, monthly updates, etc.
If there's a good web-based tool/package for bringing this stuff into R/Python, I'm listening! (And I don't mean shiny- you need a way to look/edit the inputs too)
How are you going to onboard people with previous (extensive) experience using spreadsheets but not with feature X?
Now if only Excel had good Regex built in.
http://stackoverflow.com/questions/22542834/how-to-use-regul...