|Number of watchers on Github||1868|
|Number of open issues||27|
|Average time to close an issue||9 days|
|Average time to merge a PR||about 7 hours|
|Open pull requests||12+|
|Closed pull requests||34+|
|Last commit||almost 3 years ago|
|Repo Created||almost 5 years ago|
|Repo Last Updated||over 2 years ago|
|Organization / Author||getguesstimate|
|Do you use guesstimate-app? Leave a review!|
|View open issues (27)|
|View guesstimate-app activity|
|View on github|
|Fresh, new opensource launches 🚀🚀🚀|
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Guesstimate is a tool for performing estimates using monte carlo experiments. It can be used similarly to excel, but provides the option of providing ranges and distributions as values instead of individual points. Other metrics can do mathematical operations on these cells/metrics. After each new input is added or changed, a set of 5000 samples is randomly generated from each input and goes through the specified operations to produce confidence intervals in the output.
See GetGuesstimate.com to use.
You can enter individual numbers or ranges.
[25,35]: A 90% confidence interval between 25 and 35.
Currently all ranges are converted into normal distributions by default, but can be changed to uniform distributions.
= sign as the first character of a guesstimate input to make it a function (similar to Excel and Google Sheets). Each metric has a variable name which is made of two randomly chosen letters. When the function input is selected, you can either type a metric's symbol to use it in a calculation, or simply click on it.
There are a few different ways of visualizing metrics. These are the following:
Arrows between metrics can be turned on or off. They can be useful, but also add complication to the UI. In the future the arrow layout may improve significantly. By default they show when there are less than 20 metrics in a model, and are hidden when there are more.
Click on Metrics to see more information about their distributions. The Distribution shows a large view of the Distribution, information about different percentiles, and a description.
There are many things that will be improved. Some of the more important limitations include:
Guesstimate is a Single Page Application. Everything in this repo is the client side, which is one reason why this is called 'guesstimate-app'.
There are two important third party systems. Authentication is done with Auth0, and search/indexing is done with Algolia. This means that running it yourself involves some setup, but on the other hand it's pretty easy set up compared to what you may need in comparable systems. Both of these are free for moderate use. I recommend both, though should note that the way I set up Algolia was a bit hacky (not sure how to do it right).
There is also a small server in Rails, which is not yet on Github. I'd like to work on security a bit more before putting it on here (if select people want to work on it I'd be happy to share in a small group). However, this is quite tiny; just 2 models (users, spaces).
All models are stored and saved as 'spaces'. The spreadsheet content is all stored as json in Postgres. You can see the full requests if you look at the network tab in chrome.
However, while there are a few third party systems, everything will still work with just guesstimate-app, as long as you don't try to log in or save. In practice this means that you can do quite a bit of development, as you can edit any model on the site (just can't save them). It also makes much development quite simple when it's just on the website (not the server). The line that controls this is here:
"start": "BUILD_DEV=0 NODE_ENV=development API_ENV=production webpack-dev-server"
API_ENV=production (as opposed to development) means that it will use the production APIs.
First, make sure that git and node are installed.
git clone https://github.com/getguesstimate/guesstimate-app.git
There are often errors with specific things, but it depends on what is already installed on the computer. Later we could put it in a docker container or something.
When running in development mode (
npm start), Guesstimate records performance statistics about a subset of its react
the window, called
recorder, with the following API:
recorder.nestedTimelineprints a heirarchical view of all events the recorder has tracked so far, appropriately nested. For example, if the recorder tracks renders on component
Ba child of
A, the nested timeline view will show information about the rendering of
Bnested within the entry for the rendering of
recorder.timelineprints a timeseries of all events the recorder has tracked so far.
recorder.renderTimingsis an object that stores how long each component has taken to render (inclusive).
recorder.selectorTimingsis an object that stores how long each selector has taken to run (inclusive).
recorder.actionCountsis an object that stores how many times each action type has been dispatched.
recorder.renderCountsis an object that stores how many times each tracked component has been rendered.
recorder.selectorCountsis an object that stores how many times each tracked selector was run.
To track additional components or selectors, simply add the appropriate recorder methods into the lifecycle. In particular, for a component, insert the following:
Within a selector, insert the following:
window.recorder.recordSelectorStart([NAME])at the start of the selector's execution (or the start of the first selector within the selector chain).
window.recorder.recordSelectorStop([NAME], [DATA])just before the selector returns, with data being any data you'd like to track in the timeline with that selector event (the return value is typical).
This release exposes exportable fact functionality, allowing users to export facts from models. Those facts are kept in sync with upstream fact changes, allowing users to form a dynamic fact graph for their organizations.
Re-initializing our release state at 1.0.0, as we plan to use releases more actively in the future with code deployments.
A lot has changed since the last release, including: