IMPROVEKIT
BUY full Zeppelin Premium version
Buy a full Zeppelin version --> IMPROVEKIT - Payhip
Why study deeper? For us, it is "normal" to know "reality"...
We believe that (which is why it took a long time for science to emerge)
It is important to look at the past, history (beyond pop culture that lives only in a tiny present, which at most observes a small point in the past), which is connected to the present. If reality is constructed, and what we see is a particular construction, we can also construct another reality. You can take samples from the past to get an idea of the present, and trigger a process
Dream -> Vision -> Idea
Zeppelin makes it possible to smoothly rise above too complex tools and processes to achieve a change of perspective, a change of context, and thus allow you to really increase your capabilities. See what its all about...
Features by category
ANALYSIS
Story
Activity Patterns
Baselines
More statistics
Fuzzy logic
Pareto, Scatter charts
VStatistics
Extrapolation, Simulation
BASE
Metric Editor
Datasource Composer
Scripts, Scripts bundles
Workflow Editor
Multiple Desktops / Repositories
Charts shape annotations
Comparables
Log
DSL
More statistical commands
REPOSITORY
Data Quality
Metadata
More Kpis, lean, wip...
AverageCompletionRate
UserGroupClosedIssuesBarDetail
EffortByActivityPie
ProjectsActivityBarDetail
ProjectsActivityBar
ClosedIssuesMeasurement
OpenIssuesMeasurement
UserGroupOpenIssuesBarDetail
Cycletime
Throughput
AverageWIP
DataQualityIndexSmart categorization (kpi, projects)
Background caching
More example data repositories (triple data records)
Software development
Mobile telecom
TOOLS
Server (proxy) and Client
Web app
JIRA Cloud connection (legacy: JIRA Server plugin)
REST API
Metric Editor
Indicators ARE ideas too.
Indicators should be part of a model to understand phenomena, not just be the solution to a problem. Zeppelin provides such a model, which you can understand, evolve, and extend.
Not all the time, but from time to time or it is necessary to challenge the Assumptions. The example of the project for the invention of the famous human-powered plane "Gossamer Albatros" is illustrative:
Option A
DESIGN Flags "to build an idea => plane (with what it denotes, "usually")", orOption B
EFFORT indicators to discover that the Problem is "make an idea => human-powered flight"
Story
Traditionally, reports and dashboards were seen as the best way to communicate, but they only give you numbers. Then you have to interpret those numbers to understand what they mean in the context of your business and that can be very complex. Data storytelling is a way of taking all those data points, synthesizing them, and explaining what they mean for your business and why you are acting a certain way. This involves building a narrative.
It is about arguing (evidence is presented, accompanying the data, always, with possible causes, the graphs must be evidence of some phenomenon) for the change based on the existing goals (instrumental, such as baselines, thresholds, indicator goals and of activities) but incorporating the new, ideas generated from a specific socio-technical framework: activity systems and activity patterns (Improvekit innovation) that involve other components in a more global vision. The archetypal traits with which you can compose your Story will help you generate the solutions. They consist of domain-specific language availability, case-based reasoning, context comparison (similarities/differences), various types of patterns. It is advantageous to be able to see all the pages: for that you have a cover and the summary.
The Story shows variations explicitly ideally including several cases... the text should not be used for (bad) analogies, anecdotes... It has structure, in addition to the index:
Reference data sources (automatically)
Documents the characteristics of the data (the current Signal Summary)
Compare: pages where side-by-side morphs are included
Demonstrates the mechanism of cause, effect
Correlates
Explain (with alternatives)
Story is also a "hyper document" (links) where the user is both author and reader: an active participant in the interaction with the information and is essential in the process of achieving Trust
Web
For there to be transmission of information, as Shannon established, there must be two counterparts: a source (author) and a destination (user).
Zeppelin Desktop is the transmitting instrument used by an author (who composes a World or a Story, or more generically, an image to be published), the channel is the network, the receiver is Zeppelin Web on the most frequent platform today: Javascript (in this case a virtual machine that runs in a Web Browser)
Using the same user interface that Zeppelin Desktop, a end user interprets and makes decisions with the information received. And like Zeppelin Desktop, you can also build your own image, and make it persistent, to pick up the job in the exact state you left it. All from within your Web Browser.
Baselines
It is a principle of good informational design to be able to show Before/After (from a certain point, for example a baseline that corresponds to the introduction of a change in the process) in a simple and clear way (automatically) as EVIDENCE
A relatively common tool is to establish baselines, points of comparison. What you can also do is set the goals as thresholds realistically, that is, based on the actual performance of the processes
Contexts
Most creativity is a transition from one context to another where things are more surprising. Our job is to remind ourselves that there are more contexts than the one we are in, the one we believe to be reality.
To innovate, it is not only interesting to observe differences (signals) but also similarities. To do this you can:
Create several histories as persistent documents that gather the same set of signals
Consult categorized indicators, create your own dynamic categorization to gather those with the same shape (fractal), concentration (gini), information (entropy)
Visualize the performance in a non-quantitative way using fuzzy logic (little, more, less, a lot, more or less...)
View full information face-to-face: charts, data, context, annotations, signals
It is always important to show all views as aggregates (monthly/quarterly) can show "false" signals. The phases are perhaps less affected than these aggregates... thats why it is necessary to at least compare what happens at all levels. Somehow it is necessary to validate that the aggregated views do not introduce artificial signals, comparing phases with baselines with organizational (monthly/quarterly) and trends
Extrapolation, Regression, Simulation
It is necessary to pay attention to incrementalism and something that represents a greater leap (differences between "NEW" and "NEWS", what is NEW and what is NEW):
"A good hockey player goes where the puck is,
a great hockey player goes where the puck is going to be"
To see what is NEW, it has extrapolation and simulation tools that increase confidence in the future scenario in a context of change where you want to improve capabilities. It also has a dynamic timeline in the Data Panel, which helps you to make a historical description and see the variations, but not necessarily for the causal explanation: this is where you can use another type of visualization that shows possibly correlated multi-variables (Scatters).
You are looking to be able to broaden the horizon - looking at the full time series, trends (exponentials), vStatistics (fractality) shows a much wider horizon so you can move there sooner and achieve more
It is a learning process (which takes time), of use, of doing, a practice that is well accompanied by this application.
It has an innovation: Simulation using random movement based on the fractal shape contained in the data to take into account past performance globally
Activity Patterns
Zeppelins essential process is not exclusively "Problem Solving", but "Problem Finding", from:
Solution Patterns
Contradictions/Tensions
Its much easier to solve a problem by defining/finding it right first (especially the hard ones). But it is not only about the Solve action, but also about asking Questions: the root of the questions arise from the graphics with signals, which must be explicitly stated, some automatically, others entered manually by the user.
Activity Patterns embed the practices needed to both solve and find problems.
Here you have an innovation based on a robust framework and presented in a user-oriented manner. A simple work process, adapted to how you work, integrates the indicators, signals, your objectives, people, and other socio-technical components in an activity system to detect there possible tensions between them (and between different systems).
An instantiated template that is as complete as possible is displayed as part of your argument in the Story so that you can carry out your analysis visually, directly with all the elements within reach
Desktops (Worlds)
The multiple workspaces, sharing or each one with its own data repository, represents an advantage since it gives you flexibility to manage environments, projects, scopes, presentations, etc. ordering his own "world".
This concept of "world" is an important notion in the "work process" understood as the evolution of an environment that starts out simple and becomes more complex with use and the passage of time, sharing a model (Library and Map) and a rich vocabulary with which to create new scenarios
Datasources
You can extend some of the scripting vocabulary along with the categorized Indicator Library, the object protocols available in the IHDSL language, the data aspects/attributes and the IHDSL templates by defining new Data Sources quickly and easily using the powerful domain-specific language, from other existing sources.
We believe in the benefits of starting with a simple data model that contains the necessary elements to carry out the analysis. In the Premium version you also have the possibility of processing metadata (instruments, operations, and actors) that are essential to take into account socio-technical aspects when analyzing activities
Fuzzy Logic (subjective views)
"Prediction is hard for the same reason its so important:
Its where objective and subjective reality intersect"
In addition to the statistical signals as evidence, it is necessary to associate with data that do not present said signals, what is the variable that explains the difference? The visualization should present both cases for comparison. The ABSENCE OF SIGNALS is also part of the evidence that increases Confidence in the presence of causal signals.
In these cases, fuzzy logic allows you to view your data in another way, using commonly used magnitudes such as "high", "medium", "low" and a whole sequence of intermediate "subjective" values. Having both types of signals is an advantage as it does not neglect a dimension that is necessary for a deeper understanding.
V-Statistics (fractal)
Change processes can appear random, when in fact there are underlying phenomena that are not, that have known characteristics and can be visualized with a type of statistics called V-Statistics, or fractal analysis.
This tool gives you the advantage of having additional information to the typical statistical analysis, either indicating possible inflection points in the phenomenon, or a global notion of the shape of the process, which in some cases may be correlated not only with stability, but fundamentally, with its resilience (this occurs with many processes of an organic nature, and our vision is that it also occurs in socio-technical activities)
Improvekit High-Order Domain Specific Language (IHDSL)
In the Premium version it has the possibility of using in scripts and indicator code (one can be derived from the other) a powerful domain-oriented language that extends Smalltalk messages to use semantics similar to SQL, but with the possibility of mixing languages and access useful predefined message protocols.
This language, in fact, is used in the code of the application itself, and it is highly tested and optimized.
Its expressive power is great, lets see a real example of the definition of a relatively complex indicator that was migrated from SQL:
Queries in IHDSL:
IHDSL, being specific and high level, is easy to read and its function is clearly appreciated
| activities rows ranks |
activities := (ranks := ((data groupBy field: #proyecto field: #tipo)
select
field: #proyecto
field: #tipo
field: #nombreRelease
field: [:group | group count] as: #items)
where: #tipo isTop: 5 rankedBy: #items)
indexedOn: {#proyecto. [:row | row quarterly]. #tipo}.
rows := (data groupBy
field: #proyecto as: #proyecto
field: [:row | row quarterly] as: #periodo
field: #tipo as: #tipo
select: [:group | group count] as: #total)
select
field: #proyecto
field: #periodo
field: #tipo
field: [:group | (activities join: group on: #(#proyecto #periodo #tipo ))
ifNotNil: [:row | row items]] as: #items
field: #total as: #total.
rows
transposedAt: #tipo
in: ranks distinct tipo
sum: #total
In contrast, in SQL the code is more complex and its function is not easily seen due to the need to use technical artifacts (cursors, temporary tables, variables/types) that complicate the code, multiple joins (in this implementation), the absence of specific constructors (ranking, transpose) and analytic functions (not to mention a good debugger) make a big difference between these domain-specific languages
See equivalent Stored Procedure in SQL (optimized in MySQL):
declare v_issuetype varchar(255);
declare v_create varchar(4000);
declare v_select varchar(4000);
declare v_i int;
declare v_alias char(2);
declare v_rownum int;
declare v_j int;
declare v_tipoProyecto smallint;
drop table if exists activity;
drop table if exists rankgroup;
drop table if exists ranks;
drop table if exists b0;
drop table if exists b1;
drop table if exists b2;
drop table if exists b3;
drop table if exists b4;
select pj.tipo_proyecto into @v_tipoProyecto from Proyectos_Issue_Tracker pj where pj.IssueTrackerProject = p_proyecto;
create temporary table rankgroup
select ji.proyecto, ji.tipo, count(1) items
from RELEASE_INFO ji, Proyectos_Issue_Tracker pj
where ((p_group = 1) OR (p_group = 0 and ji.proyecto = ifnull(p_proyecto,ji.proyecto)))
and (ji.proyecto = pj.IssueTrackerProject AND (pj.tipo_proyecto = if(p_proyecto is null, pj.tipo_proyecto, @v_tipoProyecto)))
group by ji.proyecto, ji.tipo;
set @rownum := 0;
create temporary table ranks
SELECT g.proyecto, g.tipo, g.items, (@rownum := @rownum + 1) as rank
FROM rankgroup g
ORDER BY g.items DESC;
create temporary table activity
select rm.proyecto,
concat(convert(year(rm.fecha_release), char), " Quarter , convert(quarter(rm.fecha_release), char)) as quarter,
rk.tipo,
count(1) total
from RELEASE_INFO ji, release_measures rm, ranks rk
where ji.proyecto = rk.proyecto and ji.tipo = rk.tipo
and ji.proyecto = rm.proyecto and ji.nombre_release = rm.nombre_release
and rk.rank <= 5
group by rm.proyecto,
concat(convert(year(rm.fecha_release), char), " Quarter ", convert(quarter(rm.fecha_release), char)),
rk.tipo;
create temporary table totalActivity
select rm.proyecto,
concat(convert(year(rm.fecha_release), char), " Quarter ", convert(quarter(rm.fecha_release), char)) as quarter,
rk.tipo,
count(1) total
from RELEASE_INFO ji, release_measures rm, ranks rk
where ji.proyecto = rk.proyecto and ji.tipo = rk.tipo
and ji.proyecto = rm.proyecto and ji.nombre_release = rm.nombre_release
group by rm.proyecto,
concat(convert(year(rm.fecha_release), char), " Quarter ", convert(quarter(rm.fecha_release), char)),
rk.tipo;
BEGIN
DECLARE done TINYINT DEFAULT 0;
DECLARE issuetypes_cursor CURSOR FOR select distinct tipo from activity order by tipo;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN issuetypes_cursor;
set @v_create = "";
set @v_select = "select b.proyecto, b.quarter,";
set @v_i = 0;
FETCH NEXT FROM issuetypes_cursor INTO v_issuetype;
read_loop: LOOP
IF done THEN
LEAVE read_loop;
END IF;
set @v_alias = concat("b", convert(@v_i,char));
set @v_create = concat("create temporary table ", @v_alias,
" select proyecto, quarter, sum(total) as total from activity where tipo =",
char(34), v_issuetype, char(34),
" group by proyecto, quarter; ");
PREPARE stmt FROM @v_create;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
set @v_select = concat(@v_select, "ifnull((select ",
@v_alias, ".total from ", @v_alias,
" where ", @v_alias, ".proyecto=b.proyecto and ",
@v_alias, ".quarter=b.quarter),0) as " char(34), v_issuetype, char(34), ", ");
FETCH NEXT FROM issuetypes_cursor INTO v_issuetype;
set @v_i = @v_i + 1;
END LOOP;
CLOSE issuetypes_cursor;
-- completa campos siempre devuelve 5 grupos
set @v_j = @v_i;
j_loop: LOOP
if @v_j = 5 then
leave j_loop;
end if;
set @v_select = concat(@v_select, "0 as dummy", @v_j - @v_i, ",");
set @v_j = @v_j + 1;
END LOOP;
set @v_select = concat(@v_select," sum(total) as total from totalActivity b group by b.proyecto, b.quarter ORDER BY b.proyecto, b.quarter;");
PREPARE stmt FROM @v_select;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;
drop table activity;
drop table totalActivity;
Buy a full Zeppelin version --> IMPROVEKIT - Payhip
Contact improvekit@gmail.com