haskell for italy

$ git push italia HEAD

an unique challenge

this gave me the opportunity to explore our limits, and push my profession beyond my comfort zone

haskell didn’t let me down

it’s rather succinct work. it aims at design transparency by being immediate and sometimes intentionally raw, like in the documentation of the commands which are also notes for the next developer. this style enables easy sharing which could produce more noise than signal and a good way to find out is to ask new users. the documentation corpus has also been flux, and it’s now quickly crystallising for a development break

innovation from working software

the journey started by simply hammering pandoc here and there to fix this and this

as a small half-remote team we where all busy on multiple fronts so i learned to browse a broad scope through my specific expertise

i found out how starting from a successful piece of software can be more impactful than greenfield projects

connecting seas

innovation rooted on the existing is like connecting seas, turbulences feel chaotic and dangerous

keeping an engineering and creative focus while shifting perspectives in the public eye


a rational animal

factoring conversion logic

software as an object in an highly dimensional space

code grows towards many goals, expanding on multiple dimensions is avoided in agile, where the priority direction shifts over time

in a context of political uncertainty, the problem has not been to self-organise, but to manage and communicate a value whose definition changes over time

do you want spanning cells?

how do we engineer software?

a journey with code

evolutionary prototyping a ship

i leaned on haskell’s quality for refactorings and it enabled me to react swiftly and focus on the domain more than on the structure

prototyping makes little assumptions about what can we do, relying on user testing in order to collect proofs of concept. for many users a process of evolutionary prototyping is a new experience, and in a public context we want to manage expectations carefully

one area where the technology fell short has been deployment, where top-down design reacted faster

integral features

a piece of software can move through different balance points in the space of its integral features

every dimension implies opportunities and tradeoffs

through the dimensions we can express tensions as actionable questions

reliability and usability

our main converti command was

it’s a case where a development direction has been deepened

know your turtle modules

a doctest packed with its function

-- | testable logic core for breakSections
-- >>> breakIntro testDemo "brh h rhb brhb"
-- ("b",["rh ","h ","rhb b","rhb"])
-- >>> breakIntro (const []) "bbrhb bla bla"
-- ("bbrhb bla bla",[])
-- >>> breakIntro testDemo "bh h hb bhb"
-- ("b",["h ","h ","hb b","hb"])
breakIntro :: Eq a => ([a] -> [a]) -> [a] -> ([a], [[a]])
breakIntro c l
  | null (c h) = (h, t)
  | otherwise  = ([], multiBroken)
  where multiBroken = multiPrefixBreak c [] l
        h = head multiBroken
        t = tail multiBroken

a chart for the path

specification

other process dimensions

opportunistic complexity

code complexity that is not easily explained by current user expectations

rise fragmentation

fall simplification

seeding and pruning

  • new ideas and weight adjustments affect software paths like in a neural network
  • notes can become comments or documentation
  • creativity peak in june, filter in italian
  • opportunistic seeding and pruning

diversità per la ricerca conformità per la comunicazione

expose and codify

our clarity of action is in a dialogue with the simplicity of our code

domain dimensions

working with semantics

which tools can we own to collaborate on content?

which tools can we own to collaborate on style?

empowering and simplifying

what is devops?

rst2all.sh
 pandoc esempio.rst -o esempio.html
 pandoc esempio.rst -o esempio.md
 pandoc esempio.rst -o esempio.odt
 pandoc esempio.rst -o esempio.docx

a seamless development experience

one starts spotting regularities, factoring resources. in an interpreter, repeting is not an ergonomical problem

the prototypes grown from operating in repos supported both cases through the changes

online or batch

with haskell i could work offline, for many users work in batches is uncommon, yet technology is not always up to our potential

options for whole communities

communities define themselves and communicate also through the source code

an example is defining the level of segregation, do we want to stay global?

codesign

for many of us it’s natural to use the command line and markup languages

my ambition was adoption through sustained enthusiasm

besides our overall throughput, this depends on the way we communicate our work

faster horses

costruire sensibilità futura


communities

community and software development

software translators

we are not used to truly actionable sharing

in collaborative design the focus of the communication are not the existing artifacts

engage users (attivare gli utenti)

we don’t know how the crowd is going to approach a piece of software and its bottlenecks, another reason why opening the decision process is worth its cost

the community is also being codesigned

do you want a sphinx format?

users and communication events

some members become voices for whole communities

changing user rings defined by user welcomes have a development value and stake

ownership is fuzzy in the different sensitivities and it gets defined by such roles and by events

humble accessible codesign

when a system is highly flexible, the context provides it a source of stability. i relied on users to support at the most practical level

low-volume public message channels are less expressive than other technologies but more accessible

they are our public communication infrastructure through which we can build effective collaboration

this is enabled by confidence of expression

the laboratory

discontrol

trello, github issues, slack messages, github notifications, twitter

stress and quality

an amount of hours and a maximum date

thanks