Definition of 'TTFP'

Citing Tamas (from the other thread) “Maybe I am overly optimistic, but in the meantime I consider it within the capacity of an average adult to wait a short while when loading unfamiliar package in a new programming language without assuming that the computer is broken.”

If we talk about usability issue you need somehow to forget your know-how and experiences and try to look like you would see it the first time …


               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.2.0 (2019-08-20)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> using Pkg

julia> @time Pkg.add("Plots")
   Cloning default registries into `~/.julia`
   Cloning registry from "https://github.com/JuliaRegistries/General.git"
     Added registry `General` to `~/.julia/registries/General`
 Resolving package versions...
 Installed Missings ─────────── v0.4.1
 Installed Showoff ──────────── v0.3.1
 Installed DataAPI ──────────── v1.0.1
 Installed BinaryProvider ───── v0.5.6
 Installed StatsBase ────────── v0.32.0
 Installed Plots ────────────── v0.26.2
 Installed Contour ──────────── v0.5.1
 Installed Colors ───────────── v0.9.6
 Installed Measures ─────────── v0.3.0
 Installed Requires ─────────── v0.5.2
 Installed Reexport ─────────── v0.2.0
 Installed OrderedCollections ─ v1.1.0
 Installed RecipesBase ──────── v0.7.0
 Installed Compat ───────────── v2.1.0
 Installed IterTools ────────── v1.2.0
 Installed DataStructures ───── v0.17.0
 Installed NaNMath ──────────── v0.3.2
 Installed FFMPEG ───────────── v0.2.2
 Installed Parsers ──────────── v0.3.6
 Installed JSON ─────────────── v0.21.0
 Installed FixedPointNumbers ── v0.6.1
 Installed StaticArrays ─────── v0.11.0
 Installed GeometryTypes ────── v0.7.5
 Installed PlotUtils ────────── v0.5.8
 Installed PlotThemes ───────── v0.3.0
 Installed SortingAlgorithms ── v0.3.1
 Installed ColorTypes ───────── v0.8.0
 Installed GR ───────────────── v0.41.0
  Updating `~/.julia/environments/v1.2/Project.toml`
  [91a5bcdd] + Plots v0.26.2
  Updating `~/.julia/environments/v1.2/Manifest.toml`
  [b99e7846] + BinaryProvider v0.5.6
  [3da002f7] + ColorTypes v0.8.0
  [5ae59095] + Colors v0.9.6
  [34da2185] + Compat v2.1.0
  [d38c429a] + Contour v0.5.1
  [9a962f9c] + DataAPI v1.0.1
  [864edb3b] + DataStructures v0.17.0
  [c87230d0] + FFMPEG v0.2.2
  [53c48c17] + FixedPointNumbers v0.6.1
  [28b8d3ca] + GR v0.41.0
  [4d00f742] + GeometryTypes v0.7.5
  [c8e1da08] + IterTools v1.2.0
  [682c06a0] + JSON v0.21.0
  [442fdcdd] + Measures v0.3.0
  [e1d29d7a] + Missings v0.4.1
  [77ba4419] + NaNMath v0.3.2
  [bac558e1] + OrderedCollections v1.1.0
  [69de0a69] + Parsers v0.3.6
  [ccf2f8ad] + PlotThemes v0.3.0
  [995b91a9] + PlotUtils v0.5.8
  [91a5bcdd] + Plots v0.26.2
  [3cdcf5f2] + RecipesBase v0.7.0
  [189a3867] + Reexport v0.2.0
  [ae029012] + Requires v0.5.2
  [992d4aef] + Showoff v0.3.1
  [a2af1166] + SortingAlgorithms v0.3.1
  [90137ffa] + StaticArrays v0.11.0
  [2913bbd2] + StatsBase v0.32.0
  [2a0f44e3] + Base64 
  [ade2ca70] + Dates 
  [8bb1440f] + DelimitedFiles 
  [8ba89e20] + Distributed 
  [b77e0a4c] + InteractiveUtils 
  [76f85450] + LibGit2 
  [8f399da3] + Libdl 
  [37e2e46d] + LinearAlgebra 
  [56ddb016] + Logging 
  [d6f4376e] + Markdown 
  [a63ad114] + Mmap 
  [44cfe95a] + Pkg 
  [de0858da] + Printf 
  [3fa0cd96] + REPL 
  [9a3f8284] + Random 
  [ea8e919c] + SHA 
  [9e88b42a] + Serialization 
  [1a1011a3] + SharedArrays 
  [6462fe0b] + Sockets 
  [2f01184e] + SparseArrays 
  [10745b16] + Statistics 
  [8dfed614] + Test 
  [cf7118a7] + UUIDs 
  [4ec0a83e] + Unicode 
  Building GR ────→ `~/.julia/packages/GR/ZI5OE/deps/build.log`
  Building FFMPEG → `~/.julia/packages/FFMPEG/9JQpZ/deps/build.log`
  Building Plots ─→ `~/.julia/packages/Plots/Ih71u/deps/build.log`
110.991458 seconds (10.46 M allocations: 490.409 MiB, 0.19% gc time)

julia> @time using Plots
[ Info: Precompiling Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]
 59.120554 seconds (5.35 M allocations: 302.212 MiB, 0.46% gc time)

julia> @time plot(rand(8,2))
 21.057579 seconds (46.02 M allocations: 2.265 GiB, 7.77% gc time)

julia> @time plot(rand(8,2))
  0.001884 seconds (2.78 k allocations: 207.109 KiB)

So a first time user sees:

  • Download and install (and in some languages this means package/library is available)
  • Build (and in some languages this means package/library is ready to run)
  • using / precompile (and in some languages this means, after compilation you are ready to run - fast)
  • plot ( ‘the 21s is spend on what?’)
  • 2nd plot → julia is fast.

I think this has been pretty well covered by now. Everyone knows TTFP is long, and it is high on the list of priorities.

Maybe just let this rest for a while?

1 Like

Only if we also include the time to download, set up a MathWorks account and set up the license for Matlab ;).

But yeah, perhaps let the horse rest a little bit before bringing out the cane again.

3 Likes

Don’t forget that you need to convince your boss to pay for the extra toolboxes you need as well, that can take a while in my experience…

2 Likes