[Question]
  [
Steve Ballmer is the ex-CEO of Microsoft, and in a [recent article](https://mspoweruser.com/steve-ballmer-still-not-know-wrong-mobile/), claimed that he "still does not know what he did wrong with mobile".
As [CodeProject](https://www.codeproject.com/)'s newsletter pointed out, "That article's title could be ended at so many spots and still be accurate".
Given no input, output the following:
```
Steve Ballmer still does not know.
Steve Ballmer still does not know what he did.
Steve Ballmer still does not know what he did wrong.
Steve Ballmer still does not know what he did wrong with mobile.
```
This must be outputted exactly as shown, and must be the only output of your program. You may include a single trailing newline.
This is [code-golf](/questions/tagged/code-golf "show questions tagged 'code-golf'") so fewest bytes **in each language** wins
  
[Answer]
# [Python 3](https://docs.python.org/3/), ~~100~~ ~~99~~ ~~99~~ 97 bytes
-1 byte thanks to ovs  
-1 byte thanks to Jonathan Allan  
-1 byte thanks to Dennis 
```
for i in b'!-3?':print('Steve Ballmer still does not know what he did wrong with mobile'[:i]+'.')
```
[Try it online!](https://tio.run/##BcFBDoJADAXQq3xWlRjdsGND4hVcGheQqU5DacnQMPH043v7L7Lb0NrHCwRiWKi7DRONexGLCz2DT8ZjVt244AhRRXI@YB5YzStqngOZkSShFrcvqkTG5oso02uU95Xu1Lf2Bw "Python 3 – Try It Online")
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E), ~~50~~ ~~49~~ ~~45~~ 44 bytes
4 bytes saved with inspiration from [Kevin's Java answer](https://codegolf.stackexchange.com/a/123976/47066) 
```
„€Ž†©'–Ñ…€À€½ƒ§“mer„â‚à€–ƒ€“”™¸ïß”[Žì'.«=¨ð«
```
[Try it online!](https://tio.run/##MzBNTDJM/f//UcO8R01rju591LDg0Er1Rw2TD0981LAMKHS4AUgc2nts0qHljxrm5KYWAVUeXvSoYdbhBUAJoMJjk8D0nEcNcx@1LDq04/D6w/OB7Oijew@vUdc7tNr20IrDGw6t/v8fAA "05AB1E – Try It Online")
**Explanation**
```
„€Ž†©                                         # push "with mobile"
     '–Ñ                                      # push "wrong"
        …€À€½ƒ§                               # push "what he did"
               “mer„â‚à€–ƒ€“                  # push "mer still does not know"
                            ”™¸ïß”            # push "Steve Ball"
                                  [Ž          # loop until stack is empty
                                    ì         # prepend the top string to the 2nd top string
                                     '.«      # append a dot
                                        =     # print without popping
                                         ¨    # remove the dot
                                          ð«  # append a space
```
[Answer]
## Haskell, 96 bytes
```
(++".\n")=<<scanl(++)"Steve Ballmer still does not know"[" what he did"," wrong"," with mobile"]
```
[Try it online!](https://tio.run/##HchBDsIgEEbhq/yZlU2NJygbr9ClukCZAOkwGBjt8bFx976XfN9YZIzoTvNMl7vS5Jalv7zKMSZajb@Mqxcp3NAtiyBU7tBq2LTudCPsyRsSI@RA54OtavxHtoRSn1mYHqP4rHB4f2y1hjh@ "Haskell – Try It Online")
`scanl` is like `foldl` (or reduce as it is called in other languages) except it returns a list of all intermediate results instead of just the final one. Each intermediate result is appended with `".\n"` and all of them are concatenated into a single string. 
[Answer]
## [Retina](https://github.com/m-ender/retina), ~~82~~ 75 bytes
*Thanks to Neil for saving 7 bytes.*
Byte count assumes ISO 8859-1 encoding.
```
Steve Ballmer still does not know what he did wrong with mobile.
 w
.¶$`$&
```
[Try it online!](https://tio.run/##BcHBDYAgDAXQO1P8g/HIEK7gAmJopLHQBBq7mQO4GL7XybilOcNu9BC2JFKpYxiLICsNNDXcTR1ekqEQMmd413bB2QqqniwUAzzE712OZZ3zBw "Retina – Try It Online")
### Explanation
```
Steve Ballmer still does not know what he did wrong with mobile.
```
Initialise the working string to the full headline.
```
 w
.¶$`$&
```
As pointed out by Neil, all three truncations are made before a word starting with `w`, and there are no other words starting with `w`. So we match a space followed by a `w` to find the truncation points. At these points, we insert the following:
* `.¶`, a period and a linefeed to truncate the sentence and begin a new one.
* `$``, the entire string in front of the match, so that the next sentence starts over from the beginning.
* `$&`, the space and `w` again, so that they're also part of the next sentence.
We don't need to match the `mobile` explicitly, because that will simply be what's left over on the third match.
[Answer]
# [///](https://esolangs.org/wiki////), 88 bytes
*8 bytes saved by @MartinEnder!*
```
/1/Steve Ballmer still does not know//2/1 what he did//3/2 wrong/1.
2.
3.
3 with mobile.
```
[Try it online!](https://tio.run/##DcLRDcMgDAXA/0zxJuAJskFX6ARUWAXVwVJslfFpT@davYvvzcxnyFfwqKqX3PAYqmgmjmmBz7RFFmasXgNd0EYjTxas2@abOR0lHec/1oiOy15DJe39Aw "/// – Try It Online")
[Answer]
# PHP, 104 95 94 bytes
```
<?=$a="Steve Ballmer still does not know",$a=".
$a what he did",$a.=" wrong",$a?> with mobile.
```
[Answer]
# [05AB1E](https://github.com/Adriandmen/05AB1E), 46 bytes
```
”™¸ïßme”“r„â‚à€–ƒ€“«…€À€½ƒ§'–Ñ„€Ž†©).pvyðý'.«»
```
[Try it online!](https://tio.run/##MzBNTDJM/f//UcPcRy2LDu04vP7w/NxUEK9hTtGjhnmHFz1qmHV4waOmNY8aJh@bBKbnHFr9qGEZkHm4AUgc2nts0qHl6kDpwxOBGoAiR/c@alhwaKWmXkFZ5eENh/eq6x1afWj3//8A "05AB1E – Try It Online")
[Answer]
# [C (gcc)](https://gcc.gnu.org/), 112 bytes
```
f(){printf("%.33s.\n%1$.45s.\n%1$s.\n%1$s with mobile.","Steve Ballmer still does not know what he did wrong");}
```
[Try it online!](https://tio.run/##Nc2xDsIgGEXhV7khNoFESUx16uYruLog0EKEnwaIDE2fHR10Ot929GnRuveZi23NnurM2SDHscgHDeeDvFx/@gfNV4eYnj5YyY7sXu3b4qZCiDajVB8CTLIFlCpelBqaUxXOwniDlhMtTEx7j8oTF9jwPU/Y@wc "C (gcc) – Try It Online")
[Answer]
# Java 8, ~~127~~ 126 bytes
```
()->{String t="Steve Ballmer still does not know",d=".\n";return t+d+(t+=" what he did")+d+(t+=" wrong")+d+t+" with mobile.";}
```
-1 byte thanks to *@KonstantinCh*.
[Try it here.](https://tio.run/##RY8xbsMwDEX3nOJDkww3uoDhDt2bJWObQbHYWIlMGRLtIAh8dldtDRQgh0/@4b2rne0@jsRXd1u7YHPGu/X83AGehdKX7QiHnwgcJXm@oNNVU/JStkwWK77DAYwWq672r8@tJ606Cs2ENxvCQKlUfQhwkTI4Cm4c7@rFtcp8smoSyZQYUrtaS90q3Hsr6AnOO1X9X1Pky2@WuiQvPYZ49oGMapa12RWicTqHQrSBzdE7DEVJ/2F9nGCrzeeRhQYTJzFjeUlgzabYbXrL@g0)
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), ~~52~~ 46 bytes
```
“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“£Ṿ⁴'Þḣ~ẉ“¥Ị)“Ṡ8gÐ/»;\p”.Y
```
Credits for `ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ` go to @EriktheOutgolfer, who used it in [his answer](https://codegolf.stackexchange.com/a/124000/12012).
[Try it online!](https://tio.run/##y0rNyan8//9Rw5yHO9cc6X64o0fzUePOo5Mf7mh@uHPxo8btD3e2PNzRrRpufHTSsbXWD3dsf7hrMlD1ocUPd@571LhF/fC8hzsW1z3c1QkSXPpwd5cm2KwFFumHJ@gf2m0dU/CoYa5e5P//AA "Jelly – Try It Online")
### How it works
The lion share of the work is done by Jelly's dictionary compression here.
```
ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ
```
encodes
```
Steve| Ball|mer| still| do|es| no|t| know
```
there `|` indicates boundaries between words that where fetched from the dictionary and strings that were encoded character by character (`mer`, `es`, and `t`).
Similarly, `£Ṿ⁴'Þḣ~ẉ` encodes `what| he| did` (surprisingly, `he` does *not* come from the dictionary), `¥Ị)` encodes `wrong`, and `Ṡ8gÐ/` encodes `with| mobile`.
```
“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“£Ṿ⁴'Þḣ~ẉ“¥Ị)“Ṡ8gÐ/»
```
thus yields the string array
```
“Steve Ballmer still does not know“ what he did“ wrong“ with mobile”
```
`;\` cumulatively reduces by concatenation, building the phrases on each line.
Finally, `p”.` computes the Cartesian product of these phrases and the dot character, and `Y` separates the resulting sentences by linefeeds.
[Answer]
# JavaScript (ES6), 102 bytes
```
_=>(s="Steve Ballmer still does not know")+`.
${s+=" what he did"}.
${s+=" wrong"}.
${s} with mobile.`
```
---
## Try it
```
o.innerText=(
_=>(s="Steve Ballmer still does not know")+`.
${s+=" what he did"}.
${s+=" wrong"}.
${s} with mobile.`
)()
```
```
<pre id=o>
```
[Answer]
# [Retina](https://github.com/m-ender/retina), ~~95~~ 86 bytes
```
:`
Steve Ballmer still does not know.
:`.$
 what he did.
:`.$
 wrong.
.$
 with mobile.
```
[Try it online!](https://tio.run/##PcgxDoAgDAXQnVP8wZkDMHoFLwCGRhoLTaCR42Pi4PbyOhm3tFaI7jB6CHsSqdQxjEWQlQaaGu6m07sQ/eYwSzIUQub8V9d2efeRraDqyUJ@rRc "Retina – Try It Online") Edit: Saved 9 bytes by switching from outputting parts of the whole string to building up the string in pieces. The `:`` is needed on the first three stages to make them output.
[Answer]
# [C (gcc)](https://gcc.gnu.org/), ~~124~~ 122 bytes
```
#define A"Steve Ballmer still does not know"
#define B".\n"A" what he did"
f(){puts(A B B" wrong"B" wrong with mobile.");}
```
[Try it online!](https://tio.run/##NYyxTsQwEER7f8XI1yQIIvogpOQXKIHC2HvxCmeN7M2lON23B4N0Uz3NPI1/Wrw/Tiw@bYHwUjVwHuLrcQp0ZiFMsG9KF8LsUlqpoCqnhJCpQrLiW/Juzd2eYYcPsZPFHp0iEgIHa85df/3ZtHZTM@Y2liyLvQN21og1f3Giwfbj7WBRrI6l@wNXFv8IH12Bz1IVD625vH/25mrQ0s7HfyikWxE8j@Zmjl8 "C (gcc) – Try It Online")
[Answer]
# C#, ~~158~~ ~~128~~ ~~120~~ 114 bytes
```
()=>{var s="Steve Ballmer still does not know";return s+$@".
{s+=" what he did"}.
{s+=" wrong"}.
 with mobile.";};
```
*Saved 30 bytes thanks to @KevinCruijssen.*  
*Saved 6 bytes thanks to @Shaggy.*
---
Version using sub-stringing for 120 bytes:
```
s=n=>"Steve Ballmer still does not know what he did wrong with mobile".Substring(0,n)+".\n";()=>s(33)+s(45)+s(51)+s(63);
```
Version borrowed from @KevinCruijssen for 128 bytes:
```
()=>{string t="Steve Ballmer still does not know",d=".\n";return t+d+(t+=" what he did")+d+(t+=" wrong")+d+t+" with mobile"+d;};
```
Version using looping for 158 bytes:
```
()=>{var r="";for(int i=0;++i<5;)r+=$"Steve Ballmer still does not know{(i>1?$" what he did{(i>2?$" wrong{(i>3?" with mobile":"")}":"")}":"")}.\n";return r;};
```
Simple approach using ternary statements to in a loop to append the new parts onto the string each time.
[Answer]
# Bash, ~~111~~ ~~109~~ 107 bytes
```
a=(Steve Ballmer still does not know "what he did" wrong with\ mobile)
for i in {6..9};{ echo ${a[@]::i}.;}
```
[Try it online!](https://tio.run/##BcGxCsIwEAbg3af4KR10ySjYIoiv4FgdruY0h2kOkmCGkGdPv2@l5Hqn6/GR@c@4k/cbR6Qs3sMqJwTN@AUtGIqjDMewYgeUqOGLItk9sekqnk@Hj0YIJKCejbm0uYLfTjFWWm6vaZJm5tb7Dg)
[Answer]
# Vim, 79 keystrokes
```
iSteve Ballmer still does not know.<CR><C-x><C-l><Backspace> what he did.<CR><C-x><C-l><Backspace> wrong.<CR><C-x><C-l><Left> with mobile
```
`<C-x><C-l>` auto-completes with the previous line. Alternatively you can replace every occurrence of `<CR><C-x><C-l>` with `<Esc>o<C-a>`
[Answer]
# [CJam](https://sourceforge.net/p/cjam), 79 bytes
```
4{)"Steve Ballmer still does not know
hat he did
rong
ith mobile"N/<" w"*'.+N}%
```
[Try it online!](https://tio.run/##S85KzP3/36RaUym4JLUsVcEpMScnN7VIobgkMydHISU/tVghL79EITsvv5wrI7FEISNVISUzhasoPy@dK7MkQyE3PykzJ1XJT99GSaFcSUtdT9uvVvX/fwA "CJam – Try It Online")
[Answer]
# Ruby, 94 bytes
```
"!-3Z".bytes{|i|puts"Steve Ballmer still does not know what he did wrong with mobile"[0,i]+?.}
```
Iterates through the 4 characters in the first string, converting each to its ascii value `n` and outputting the first `n` characters of the second string each time. It really does not matter what the last character of the first string is, so long as its ascii value is equal or greater than the length of the second string.
[Answer]
# Fission, ~~299~~ ~~291~~ 269 bytes
```
MN"."                             ]              ]        ]
                                  W$]            W$$]     W$$$]
R"Steve Ballmer still does not know"%[" what he did"%[" wrong"%[" with mobile.";
                                    [W              [W        [W
```
[Try it online!](https://tio.run/##jc6hDsJAEIRh36eYbIqtwOLwIECcaCpKbuE2bG@T3qV9/KOiQZAAHfXnU3OXlMTivpTTmRrCv3U/pauwYW3tPuEtS9auutA188Q49qoDj0hZVOGNE6JlPKPNtENLmEOfERhe/AqjxceakgMGu4lyQ4dtz@C@wpKlvAA "Fission 2 – Try It Online")
Finally a 2D language I understand!
### Explanation
Program spawns an atom with 1 mass and 0 energy (a `1:0` atom)at the `R` on line 3, and begins moving to the right.
`"Steve Ballmer still does not know"` prints each character.
`%` moves the atom up if it has 0 energy, or decrements it's energy and moves it down.
`]` moves the atom to the left, `$` increments the atom's energy, `W` moves the atom up.
Once the atom is on the top row, it moves to the left, until it reaches `"."`, which prints a period, `N`, which prints a newline, and finally `M`, which moves the atom down to the `R` again, which subsequently moves the atom to the right.
Each loop the atom's energy is one higher, meaning it will pass through one more `%`. After the 4th loop it reaches the `;` at the end of the third line, which destroys the atom. The program terminates once all atoms are destroyed.
[Answer]
# [Nim](https://nim-lang.org/), 100 bytes
```
for i in " ,2>":echo "Steve Ballmer still does not know what he did wrong with mobile"[0..i.int],"."
```
here the same in more readable code:
```
const str = "Steve Ballmer still does not know what he did wrong with mobile"
for i in [32, 44, 50, 62]:
  echo(str[0..i], ".")
```
The language has string slicing and inclusive upper bounds. The rest should explain itself if you know programming.
[Answer]
# [Japt](https://github.com/ETHproductions/japt), ~~70~~ ~~68~~ ~~65~~ ~~61~~ ~~60~~ 59 bytes
Contains a few characters that won't display here; follow the link below to see the full code.
```
`Sve Ba¥´r Ð]l º not know
 Ø  ¹d
 Ùg
 ØP ¶ßè`£'.iP±X}R
```
[Try it online](https://ethproductions.github.io/japt/?v=1.4.5&code=YFOSdmUgQmGltHIg0F1sILqDIG5vdCBrbm93CiDYiSCUILlkCiDZkWcKINhQILbf6GCjJy5pULFYfVI=&input=)
* ~~3~~ 4 bytes saved thanks to [ETH](https://codegolf.stackexchange.com/users/42545/ethproductions), plus another 4 with some prompting.
---
## Explanation
Everything between the 2 backticks is a compressed string of the following:
```
Steve Ballmer still does not know
 what he did
 wrong
 with mobile
```
```
`...`             :Decompress the string.
     £       }R   :Map over the each line X in the string
         P±X      :   Append X to P (initially the empty string)
      '.i         :   Prepend that to the string "."
```
[Answer]
# [Jelly](https://github.com/DennisMitchell/jelly), 49 bytes
```
“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“¡=~Ṃ©N|ȯ“¡ṭṂ“CṬṀWỌ»ḣJK;¥€”.Y
```
[Try it online!](https://tio.run/##y0rNyan8//9Rw5yHO9cc6X64o0fzUePOo5Mf7mh@uHPxo8btD3e2PNzRrRpufHTSsbXWD3dsf7hrMlD1oYW2dQ93Nh1a6VdzYj2Y/3DnWqAAkOkMNOnhzobwh7t7Du1@uGOxl7f1oaWPmtY8apirF/n/PwA "Jelly – Try It Online")
[Answer]
# PHP, 116 Bytes
```
for(;$i<4;)echo"Steve Ballmer still does not know",["",$t=" what he did",$t.=" wrong","$t with mobile"][+$i++],".
```
";
[Try it online!](https://tio.run/##FcixDsIgEADQ3a@4XBg0kE5u1Jj4C45NhyqnXKQcoRf5fLTLG16JpY/X8vcl9egNj2d/omcUvCt9CW5LSitV2JRTgiC0QRaFT5aGbkJ0Ri8ILS4KkSBw2GfYq0p@o0Oj0FgjrPLgRDhP1rC1s8PhgL73Hw "PHP – Try It Online")
[Answer]
# [SOGL](https://github.com/dzaima/SOGL/tree/8971b53470a627e82dc99741b7acbabf89ea7b28/P5Parser), 42 [bytes](https://github.com/dzaima/SOGL/blob/master/chartable.md)
```
⁹⁴<>‘υG‘Γω/w¹‘O‛Æw▓½0H(æ█◄K∆2Ξgh‘4{Tļ.@+;+
```
Explanation:
```
..‘                    push "with mobile"
   ..‘                 push "wrong"
      ..‘              push "what he did"
         ..‘           push "Steve Ballmer still does not know"
            4{         4 times do
              T          output, not popping the top of stack
               ļ.        output "."
                 @+      append a space to the top thing in stack
                   ;+    reverse add (adding the next part to the top thing in stack)
```
[Answer]
# Sed, 96
```
s/^/Steve Ballmer still does not know./p
s/\./ what he did./p
s/\./ wrong./p
s/\./ with mobile./
```
[Try it online](https://tio.run/##TcjBDYAgDAXQu1P8CegOruDVmGBohFiooY2Mj1eP7xmnOY0O2pxfxhpFKneYFxEkZUNTx910BHoWoz0QRo6OzEgl/bJru34snlH1LMKB5vwA).
Implicit newline input given, as per [this meta-question](https://codegolf.meta.stackexchange.com/questions/5476/are-languages-like-sed-exempt-from-no-input-rules).
[Answer]
# [Bash](https://www.gnu.org/software/bash/), ~~92~~ 91 bytes
```
printf 'Steve Ballmer still does not %s.
' know{,' what he did'{,\ wrong{,\ with\ mobile}}}
```
[Try it online!](https://tio.run/##HcYxDsMgDAXQvaf4S8US5RC9QtcsIJxgxeAIrDBEnJ1KfdMLvqU5r8rFdriv0U34eJFMFc1YBFGpoajh3daXw1m0P4tDT96QCJGje5YNvWo5/mFLG7IGFhpjzPkD "Bash – Try It Online")
[Answer]
# [Go](https://golang.org/), ~~140~~ 127 bytes
```
import."fmt"
func f(){for _,i:=range"!-3?"{Println("Steve Ballmer still does not know what he did wrong with mobile"[:i]+".")}}
```
[Try it online!](https://tio.run/##Hc5NDoIwEEDhPacYZwVR2bgjMSaewMSlMaZCWya0M6SMdkE4O/68C3zPyzqadjDeQjTEK8VRktboomLhXtyCK6vZSYLHjppjMuwtbvaHE86XRKyBS7yqfVs4mxCiTTAphQCd2AlYFAaWDLk3Cr2FjjrISdhDJu0hypOCxVtD9y3WWC3L@id/J2UFcwHfvn6xrB8 "Go – Try It Online")
[Answer]
JavaScript (ES6, no browser dependencies) 154 Bytes
```
(s='Steve Ballmer still does not know what he did wrong with mobile.')=>{
  let l=s.slice.bind(s)
  return `${l(0,33).\n${l(0,45)}.\n${l(0,51)}.\n${s}`
}
```
The other ES6 solution requires (and doesn't account for) the use of html and html element APIs.
[Answer]
# [APL (Dyalog Unicode)](https://www.dyalog.com/), 81 [bytes](https://codegolf.meta.stackexchange.com/a/9429/43319 "When can APL characters be counted as 1 byte each?")[SBCS](https://github.com/abrudz/SBCS ".dyalog files using a single byte character set")
```
↑1⌽¨,\'.Steve Ballmer still does not know' ' what he did' ' wrong' ' with mobile'
```
[Try it online!](https://tio.run/##SyzI0U2pTMzJT///qKM97f@jtomGj3r2HlqhE6OuF1ySWpaq4JSYk5ObWqRQXJKZk6OQkp9arJCXX6KQnZdfrq6grlCekViikJGqkJKZAuYW5eelgxmZJRkKuflJmTmp6iCz/6cBAA "APL (Dyalog Unicode) – Try It Online")
One the very right, we have a list of strings.
`,\` cumulative concatenation
`1⌽¨` cyclically rotate each one step left (puts the periods at the ends)
`↑` mix the list of strings into a character matrix
[Answer]
# [C (gcc)](https://gcc.gnu.org/), ~~113~~ 112 bytes
-1 bytes thanks to ceilingcat.
```
f(c){for(c=0;write(1,"Steve Ballmer still does not know what he did wrong with mobile","!-3?"[c++]);puts("."));}
```
[Try it online!](https://tio.run/##BcFLDsIgEADQtZxiZAVpazQuiTHxCi6NC4ShJfIxMMqi6dnxPTPNxvTuhJGry0WYy1G14gnFaeR3wh/CTYcQsUAlHwLYjBVSJnin3KAtmmBBsN5CKznN0DwtEPPLB@Qj30/nK3@YYXhK9flSFfzApVRbj9onIdnKdk5Ixbb@Bw "C (gcc) – Try It Online")
]