Making a virtual machine in Google Sheets
briansteffens.github.io
briansteffens.github.io
http://store.steampowered.com/app/375820/Human_Resource_Mach...
TIS and Shenzhen I/O on the other hand have unique challenges and are well worth your time investment for help thinking outside of the box. Many different ways to solve the problems, unlike HRM where there is basically one obvious speed and one obvious size solution.
I'd love to see more assembly-like games. I've hear about Core War, well so far there are no new exciting progress.
The main game is only half the story though, fully optimising the later levels and especially the optional challenge levels is not trivial!
https://www.humblebundle.com/store/human-resource-machine?hm...
https://www.humblebundle.com/store/tis100?hmb_source=search_...
My favorite of all of them is SHENZEN I/O though, as it's a bit simpler than TIS-100 but more programming focused than both Infinifactory and SpaceChem. All of them are fun though.
I quit after a day because it just felt like I was working.
Ironclad Tactics (http://www.zachtronics.com/ironclad-tactics/) is not - and was a commercial failure.
Also "The Bureau of Steam Engineering" (http://www.zachtronics.com/the-bureau-of-steam-engineering/), of which Ironclad Tactics was planned to be a commercial spin-off also only partly satisfies this criterion.
You know that TIS-100 was originally planned to be a very different game:
> http://www.gamasutra.com/view/news/244969/Things_we_create_t...
'The story of how TIS-100 came to Early Access this week starts where many development stories end: with an idea for a sprawling, grandiose game that proved too impractical to live.
“Years ago, I came up with this game idea called The Second Golden Age,” says Barth. It was basically a cyberpunk thriller set in a future Middle East crawling with nanotechnology other weird future tech.
“You'd be an engineer, and you'd be dabbling in all these different technologies; you'd be designing all these tiny little devices that could like, go into your bloodstream, and it'd be a super-cyberpunk engineering game,” says Barth.
The idea was to build an open world filled with different kinds of puzzles for the player to solve, a bit akin to Myst. Multiple systems of puzzles would be in play -- all of the chemical engineering puzzles in SpaceChem would be akin to one distinct subset of puzzles in Golden Age, for example -- and players could learn things about the world and advance themselves by mastering various puzzle mechanics. as the player could explore a virtual world filled with different kinds of puzzles to solve. Recently, Barth took a shot at making his idea a reality.
“We were really deep in production on Infinifactory, and I really wanted to ‘go indie’ -- even as an indie developer -- and make something on my own, to prove I could still do that,” recalls Barth. “Because now I don't make anything by myself, right? We have between 4-7 people on our team full-time, plus a bunch of external people. I wanted to see if I could make something -- not by myself, because I still didn't -- but at least with a smaller team.”
So Barth set out to try and recapture something of his past by crafting his Second Golden Age with some collaborators, designing a game with a story and five different puzzle games within it before realizing "Oh god, I can't make another game. There's so much work here! It doesn't make sense, it will cost a fortune to make the art, I just...I don't have time for this."
But out of that aborted attempt came a piece of game design that would become the foundation for a game he could actually make, a game about solving puzzles with assembly code.
“One of the puzzles I designed [for Golden Age] was exactly TIS-100,” says Barth. “The original story of The Second Golden Age was going to involve, as you're going around this future city in the Middle East, you can stumble into this junk shop where you find this old computer.'
(see also https://en.wikipedia.org/w/index.php?title=TIS-100&oldid=780... for a shorter summary).
The admins didn't allow my team too much software, especially no compiler or something, but(!) they allowed MS Office.
So what happened was, that we started to program everything we need in VBA, with Word, Excel or Access as base, depending on the needs.
I know of global banks where billions of $ gets moved about by updating Excel spreadsheets.
Sheez.
People always choose the path of least resistance.
It was sent over an encrypted Symantec thingie (where it was processed on my side), but errors weren't uncommon, it was really hard to automate, and I did get to see people being over-(and under-)charged due to manual errors.
Edit: a sibling comment has a story about moving billions over a macro, not mere millions :) .
[1] http://spreadserve.com/blog/entry/saving-the-whale-excel-spr...
Not very sophisticated. Each row in the spreadsheet was a trade. The loop would just send commands to a 1970s-era mainframe terminal application. Everything had to be executed in order, just like a human using the keyboard to enter the trades manually. The trades required several calculations, and you'd have to enter the results in terminal screen to execute the trade. Other analysts had been doing those calculations one by one on a calculator next to their mouse. The efficiency being, they didn't need to switch between apps on their PC.
This macro only existed because I built it. They didn't like it much, they wanted me to do it manually. I said OK and kept using the macro anyway. I quit after ~6 months out of boredom.
facepalm
- Excel is generally "contained" without too many external dependencies (not really true, but truer than others...)
- Excel is easily auditable (true for excel formulas, less so for VBA, but sure, better than Perl etc)
- Excel is easily versioned and frozen (some truth to this)
Obviously none of these answers are universally correct, but there was some truth to this. And Auditors/Advisors are generally more concerned about risk mitigation than other goals.
If I had more time I'd post a VM in Google Sheets formulas only.
Anyone want to take it up?
Edit: hold my beer (see my reply below)
That, and Easter eggs are another attack vector. How much of a security audit do you think those get?
Of course I'm working on Brainfk, both because of how cool it is and how simple for a Turing Complete VM. Also, because I have a lot of practice implementing it (https://www.slideshare.net/AurSaraf/virtual-machines-and-bra...)
https://docs.google.com/spreadsheets/d/1g3-FZBnkDuLqFYOmk457...
Stay tuned.
A Brainfk interpreter in pure Google Sheets formulas. I chose BF because of how cool and simple and powerful and turing complete it is and because I have a lot of practice implementing it (Just gave a talk at PyCon IL where I live coded one, https://www.slideshare.net/AurSaraf/virtual-machines-and-bra...).
Of course it would be at least as easy to implement any other virtual machine, you might not need the parentheses matcher which was the biggest challenge and I had to go through a few designs until it worked.
2 hours later. In BF none-the-less. You're my hero, you put me to shame.
You created a VM in Excel and a VM that runs Excel in an FPGA, proving equivalence of Excel and an FPGA :-P
The game was, roughly, a text-based adventure game. Each row in the sheet represented a "room", columns across gave names to the directions you could go and the target rooms, a description of the room, etc. I think there were other columns to mark whether the room represented the end of the game too. The UI was a bunch of buttons and cells on another tab that were manipulated by VBA code.
The game was never very good, but we ended up creating quite a lot within that limited framework.
Even without diving into the Win32 APIs, there is an absolutely amazing amount of stuff that gets exposed via COM and, as a result, is easily accessible from VBA.
Of course, the biggest downside to all this power is that people actually used it. This is how you end up with businesses that live and die by gigantic and virtually impenetrable Excel workbooks.
https://gsuite-developers.googleblog.com/2012/03/sheetcaster...
Next thing on my list is to implement tf–idf to help with free text categorisation.
Now if only it displayed the register values in hex or binary. As an education aid in college I found it easier to visualize what was actually happening in one of those bases. Another useful feature for debuggers is to highlight the values that changed in the last step. Sometimes even highlighting the exact bit if displaying in binary. I'm not sure how doable that is in Google Sheets though.
Edit: it's also a nice attention to detail that the stack shares the same heap as instructions. It might have been an easy out to put the stack in it's own column.
I assume that's as easy as adding a few more cells with =DEC2HEX(A2) or whatever.
Not exactly disappointed though.