Have a look at the benchmarks here: http://kparc.com/q4/readme.txt
Also: https://hn.algolia.com/?query=http:%2F%2Fkparc.com%2Fq4%2Fre...
HN user
[username] at gmail
Have a look at the benchmarks here: http://kparc.com/q4/readme.txt
Also: https://hn.algolia.com/?query=http:%2F%2Fkparc.com%2Fq4%2Fre...
Interesting. I had not seen FlatDoc (http://ricostacruz.com/flatdoc/) before. Similar purpose to what I was aiming for with Benchpress CMS (demo: https://srpeck.github.io/benchpress/ and repo: https://github.com/srpeck/benchpress). Not a huge fan of putting all the page-building client-side though and breaking the lightweight HTML web, regardless of how fast it can be.
Some other k-inspired languages to have a look at:
- https://github.com/johnearnest/ok
Check out stats on the kOS/kparc project: https://news.ycombinator.com/item?id=9316091
There is also a more recent example of Arthur Whitney writing a C compiler in <250 lines of C. Remarkable how productive a programmer can be when he chooses not to overcomplicate.
Concise version of the idea funnel:
1. Identify problem.
2. Market size?
3. Solution differentiation?
4. Price?
5. Profitability?
6. Execute: productize, place, promote.
My notes on reading the overview linked in the parent.
Principles of Effectuation:
- Start with your means - possibilities originate from my means
- Focus on the downside risk - what can I afford to lose at each step?
- Leverage contingencies - surprises/"bad" news are clues to new markets (pivot)
- Form partnerships - early pre-commitments from stakeholders for venture co-creation
- Control vs. predict - focus on activities in my control, not predictions
Effectuation process for building new products, markets, and firms:
1. Means: who am I, what I know, whom I know
2. Goals: what can I do?
- Pursue goals within affordable loss
- Leverage surprises - may add to Means and change Goals
3. Interactions: interact with people, enlist co-creation to change original idea
4. Commitments: gather stakeholder/customer commitments to co-created/morphed idea
- New means - new resources add to Means
- New goals - new commitments help crystallize the Goals
I created EncryptedGist [1][2] to cover part of this use case. It gets me Vim backed by GitHub Gists on any machine I happen to be working on. Adding localStorage would be easy [3], but undesirable for my main purpose - I do not want any of my personal information remaining on the machine.
Edit: And just in case it wasn't obvious, I prefer to maintain my todo list/logs/notes/projects/bookmarks in a single plaintext file. Grows about 30k lines/year. Vim search/grep and some basic structuring/naming conventions go a long way.
Top of the file is my todo list with priority order of top 3 tasks. Next is a 'Waiting For' list. Last is a 'Projects' list for longer term, high-level categories. This fits on a single screen. Completed tasks, meeting notes, logs, bookmarks, etc., go below in chronological order and are all associated with a date. This system has worked well for the last decade or so with minor changes.
[1] https://github.com/srpeck/encryptedgist
[2] HN submission: https://news.ycombinator.com/item?id=12475070
Microsoft solves this with RMS for Individuals: https://portal.aadrm.com/ (also called the RMS Sharing App, now getting rebranded to Azure Information Protection).
The recipient's identity is the key to opening the content - no need to communicate anything out-of-band. Depending on the file format chosen, you get DRM features limiting granular actions on the file beyond view/edit.
To open the protected files, your recipients will have to download/install the (free) app from Microsoft. This is generally pretty painless.
Definitely worth checking out, especially good for consultants' workflows.
Added MIT license.
I had the same need as SDEES (https://news.ycombinator.com/item?id=12441302), so I created a zero-install, client-side encrypted, browser-based editor using SJCL+CodeMirror in Vim mode.
Live link to try it out here: https://srpeck.github.io/encryptedgist/index.html
I had the same need, so I created a zero-install, client-side encrypted, browser-based editor using SJCL+CodeMirror in Vim mode: https://github.com/srpeck/encryptedgist
This is why I built Reading Mode as a Chrome extension (https://github.com/srpeck/readingmode) - you can switch from modern browser to HTML only.
I wanted to test 1 and 4 out, so I wrote an MMO in q/kdb+: https://github.com/srpeck/kchess (live server is down, but you can see some of recorded action here: https://github.com/srpeck/kchess/blob/gh-pages/docs/kchessdo...). Some of my design decisions: https://news.ycombinator.com/item?id=10924316
I had previously built similar games using other technologies, but found developing in q to be far faster, even given the more primitive debugging capabilities.
I understand that this is a relatively small example, but building it was enough to convince me the APL/k/q approach is useful beyond its supposed niche.
There is a lot of material on kdb+ on kx's website (http://code.kx.com/wiki/Tutorials), Q for Mortals (http://code.kx.com/wiki/JB:QforMortals2/contents) being the best introductory book.
Also some good resources in this Quora: https://www.quora.com/What-are-the-best-resources-to-learn-q...
And if your interest is in the k language more than kdb+/q, then I have found the docs in John Earnest's ('RodgerTheGreat) oK interpreter a succinct, example-focused introduction: https://github.com/JohnEarnest/ok/blob/gh-pages/docs/Manual.... Plus using his browser-based REPL (http://johnearnest.github.io/ok/index.html) may lower the barriers to entry, and iKe (http://johnearnest.github.io/ok/ike/ike.html) is great for experimentation...http://johnearnest.github.io/ok/ike/ike.html?gist=9c5f43baa4...
You should definitely check out JohnEarnest/RodgerTheGreat's iKe, built on his open source k interpreter in JS. Fun examples: http://johnearnest.github.io/ok/ike/ike.html?gist=bbab46d613... and http://johnearnest.github.io/ok/ike/ike.html?gist=b741444d04...
https://github.com/JohnEarnest/ok/tree/gh-pages/ike
https://github.com/JohnEarnest/ok
And related APL/J/K subreddit: https://www.reddit.com/r/apljk/
You might find these benchmarks interesting: http://kparc.com/q4/readme.txt
I wrote a web-based MMO with the goal that players would augment their experience by enhancing their client (potentially allowing a single player to control 10s of units RTS-style) as well as writing AI/bots to help them. The game can be played entirely by bots (this is how I tested it during development). Interestingly, the game balance and mechanics are such that a skilled solo hero can take on large numbers of bots and win (see this gameplay GIF: https://github.com/srpeck/kchess/blob/gh-pages/docs/kchess.g...).
The major enabling feature is that I do not differentiate between players and AI - both are networked clients (see here for the API docs: https://github.com/srpeck/kchess/blob/gh-pages/docs/kchessdo...). I wrote up some of my other design decisions here: https://news.ycombinator.com/item?id=10924316
And sorry, the live demo is currently down...but should be pretty quick/easy to run your own locally.
Check out https://github.com/NodeOS/NodeOS
"Compared to other "password keeper" programs, CryptoTE does not force any structure upon your data: it works with plain ASCII text and does not require you to fill in grids, key-value attributes, descriptions etc. Encryption is transparently performed..."
This is the reason I wrote Encrypted (https://github.com/srpeck/encrypted) - a single 21KB HTML file plaintext editor that uses SJCL to encrypt all data persisted to localStorage or disk. As a consultant I am often provided a work machine that I cannot install anything on - but there is guaranteed to be a browser.
My standard response is "What is the pay range? Who is the client?" to the recruiter emails. The recruiters that get back to you generally mean business. Because of this, I have a huge amount of data on contract rates now. Also, a good side effect is that at least someone is telling them their rates are too low. Hope it helps another consultant down the line...
Completely agree on the gentle introduction and discoverability - you never tell users they are using a 'real' language and database. However, the Excel function language and API are relatively terrible - I think users succeed in spite of them, not because they are approachable.
Agreed that Excel is real programming and that data belongs in a database - so why not give it a real programming language with a sufficiently expressive query language?
This was my reasoning behind a spreadsheet prototype backed by kdb+ and the q language (which is a superset of SQL): https://github.com/srpeck/kxl
There is value in this simple combination, but tons of work required to gain feature parity and market share from Excel. I think the latter is why research in this space is lacking.
Smallest commercially viable SQL database is probably the latest k5/kdb (http://kparc.com/), which is implemented in something like 9KB of code (source: http://kparc.com/o.htm).
Agreed on the idea, not necessarily the implementation. I have 2 modes when browsing - reading (docs, news, etc.) or using an application (Gmail, banking, etc.). I do not want to download a >2MB application just to read 1000 words (hence why I wrote this Chrome extension https://github.com/srpeck/readingmode). And when I am using a web application, I would like more say over what it can do and when/if I have to update it - more the Chrome app/extension model.
Plus, as a developer I would really like this model, as it allows the browser to open up even more of the operating system functions, especially the file system, leading to less workarounds.
MMOs do not have to require massive development if you strip the requirements back to the bare essentials. There are a lot of software engineering concepts involved (and tons of messy business logic), but this just makes MMOs better as learning projects/teaching tools.
For example, as an exercise to test the ability of code golf-style/APL/array programming languages to handle messy business logic, I recently built a 2D tick-based MMO in kdb+/q: https://github.com/srpeck/kchess
Note the design decisions/constraints that reduced development time:
- High programmer efficiency kdb+/q platform
- Simple client-server architecture
- All-on-one-box - kdb+ is both the front-end server and the datastore
- Websocket-based networking
- Tick-based - 1 second ticks to limit latency issues, though the server fully supports near-realtime ticks
- No differentiation between players and AI - both are networked clients (e.g., see here for the simple websocket client docs: https://github.com/srpeck/kchess/blob/gh-pages/docs/kchessdo...)
- No player identities (generally a commercial showstopper, but not for a side project)
- No 'content' - simple 2D graphics (though making the engine 3D would be trivial due to the vector paradigm), no progression/quests/RPG elements
Of course, there are the MMO pieces that generally increase development time:
- Game state cannot be globally fanned out given the sheer number of possible client connections (the first M - Massively)
- Untrusted players/clients
But once you have a simple, solid base engine, converting the result into an instance-based MOBA or a full MMORPG is not difficult, just time-consuming.
idlewords' talk (https://news.ycombinator.com/item?id=10820445) motivated me to take this idea out of my backlog and actually implement it.
I really like the portability and accessibility of HTML files, especially as very thin local apps.
Here is one of my projects playing with that concept: https://github.com/srpeck/markdowned
I also used this approach for many of my prototypes - persistence layer as a future feature. Then I found kdb+/q and realized that with the database built into the language, there was no need for separate infrastructure.
Here is an MMO in kdb+/q that fits on a single Vim screen: https://github.com/srpeck/kchess
As Microsoft-hesitant as I am, Office 365 handles this use case well, bundling a lot of additional functionality into their subscriptions (Email, Office, etc.) that decreases the administrative load on a small business. SharePoint with a well-maintained access control list would cover what you mentioned.
If you have truly sensitive information and/or regulations involved, you can layer RMS (Microsoft's DRM solution, could be additional purchase depending on subscription level) on top of SharePoint and get document-level encryption that follows files around and enforces your ACLs elsewhere. It uses your identity instead of a per-document password, which is a nicer UX.
I'll call out the really interesting bit in the benchmarking: more than 10x NodeJS.