g | x | w | all
Bytes Lang Time Link
115Swift 6250502T145949ZmacOSist
132TSQL250502T184202ZBradC
049Vyxal 3250502T160554ZThemooni
058Japt R170601T131702ZShaggy
041Vyxal 3250417T180626Zpacman25
096Raku Perl 6 rakudo250417T180206Zxrs
103AWK250407T184932Zxrs
050Vyxal oj221015T020228ZDialFros
037Stax220111T215449Zrecursiv
097Python 3220111T201616ZLarry Ba
1507Deadfish~210319T043632Zemanresu
112C gcc180115T123505Zgastropn
04305AB1E200309T171240ZGrimmy
145Unix TMG200309T162059ZAndriy M
082GolfScript200306T181616ZMathgeek
099Julia 0.6180220T230714Zgggg
107Fission 2180220T120454ZJo King
081APL Dyalog Unicode180220T105929ZAdá
145Rust180115T140213ZWakawaka
098Pyth171212T024819ZTornado5
115Tcl170601T132154Zsergiol
082Retina170620T110901Zovs
102JavaScript ES6170601T130831ZShaggy
098Perl170608T155343Zrduz
100Nim170602T155538ZArne
154JavaScript ES6170604T192500ZPaul
127Go170601T140859Ztotallyh
122Clojurescript170604T134328Zmadstap
122C gcc170601T160609ZGiacomo
097Python 3170601T124336ZRod
126Java 8170601T122931ZKevin Cr
123MSXBASIC170602T094002ZKonamima
269Fission170601T151418ZMayube
046Jelly170601T123622ZDennis
091Bash170601T203621ZDennis
112C gcc170601T201333ZDennis
094Ruby170601T200429ZLevel Ri
090Perl 6170601T195500ZSean
120MATLAB / Octave170601T194855Zrayryeng
079CJam170601T191024ZErik the
086Retina170601T122923ZNeil
126Octave170601T172428ZStewie G
079Vim170601T155216ZBlackCap
123REXX170601T163907Zidrougge
126><>170601T155556ZAGourd
04405AB1E170601T122925ZEmigna
096Sed170601T153651ZDigital
101Powershell170601T153544ZDanko Du
104Mathematica170601T131744ZZaMoC
135><>170601T143457ZTeal pel
042SOGL170601T133630Zdzaima
108Braingolf170601T122903ZMayube
116PHP170601T131304ZJör
049Jelly170601T134118ZErik the
04605AB1E170601T133147ZErik the
094PHP170601T130337Zuser6395
107Bash170601T124637ZDrnglVrg
114C#170601T122913ZTheLetha
088///170601T130148Zsteenber
069Charcoal170601T125219ZNeil
075Retina170601T124429ZMartin E
095QBIC170601T124849Zsteenber
096Haskell170601T124707Znimi

Swift 6, 117 115 bytes

[""," what he did"," wrong"," with mobile"].reduce("Steve Ballmer still does not know"){(print($0+$1+"."),$0+$1).1}

Try it on SwiftFiddle!

T-SQL, 132 bytes

SELECT a+e+a+b+e+a+b+c+e+a+b+c+d+e
FROM(SELECT'Steve Ballmer still does not know'a,' what he did'b,' wrong'c,' with mobile'd,'.
'e)t

The second line break is inside the quotes, and provides the return between lines in the output.

Change your SSMS output to text to see the proper results:

enter image description here

Vyxal 3, 49 bytes

"Ϣ2I⎘sᑂ›¥X⑥Ͼ³i⎊n␣⍾ƛ⌈ɦ\3⁜∧⩔∺σ⑴⦷mJ_⦰hK5ᛞ¶λ⩔”⑥¤(nsƵj

Vyxal It Online!

"8211 with mobile.
8Steve Ballmer still does not know2.
8 what he did12 wrong"⑥¤(nsƵj­⁡​‎‎⁡⁠⁡‏⁠‎⁡⁠⁢‏⁠‎⁡⁠⁣‏⁠‎⁡⁠⁤‏⁠‎⁡⁠⁢⁡‏⁠‎⁡⁠⁢⁢‏⁠‎⁡⁠⁢⁣‏⁠‎⁡⁠⁢⁤‏⁠‎⁡⁠⁣⁡‏⁠‎⁡⁠⁣⁢‏⁠‎⁡⁠⁣⁣‏⁠‎⁡⁠⁣⁤‏⁠‎⁡⁠⁤⁡‏⁠‎⁡⁠⁤⁢‏⁠‎⁡⁠⁤⁣‏⁠‎⁡⁠⁤⁤‏⁠‎⁡⁠⁢⁡⁡‏⁠‎⁡⁠⁢⁡⁢‏⁠‎⁢⁠⁡‏⁠‎⁢⁠⁢‏⁠‎⁢⁠⁣‏⁠‎⁢⁠⁤‏⁠‎⁢⁠⁢⁡‏⁠‎⁢⁠⁢⁢‏⁠‎⁢⁠⁢⁣‏⁠‎⁢⁠⁢⁤‏⁠‎⁢⁠⁣⁡‏⁠‎⁢⁠⁣⁢‏⁠‎⁢⁠⁣⁣‏⁠‎⁢⁠⁣⁤‏⁠‎⁢⁠⁤⁡‏⁠‎⁢⁠⁤⁢‏⁠‎⁢⁠⁤⁣‏⁠‎⁢⁠⁤⁤‏⁠‎⁢⁠⁢⁡⁡‏⁠‎⁢⁠⁢⁡⁢‏⁠‎⁢⁠⁢⁡⁣‏⁠‎⁢⁠⁢⁡⁤‏⁠‎⁢⁠⁢⁢⁡‏⁠‎⁢⁠⁢⁢⁢‏⁠‎⁢⁠⁢⁢⁣‏⁠‎⁢⁠⁢⁢⁤‏⁠‎⁢⁠⁢⁣⁡‏⁠‎⁢⁠⁢⁣⁢‏⁠‎⁢⁠⁢⁣⁣‏⁠‎⁢⁠⁢⁣⁤‏⁠‎⁢⁠⁢⁤⁡‏⁠‎⁢⁠⁢⁤⁢‏⁠‎⁢⁠⁢⁤⁣‏⁠‎⁢⁠⁢⁤⁤‏⁠‎⁢⁠⁣⁡⁡‏⁠‎⁢⁠⁣⁡⁢‏⁠‎⁢⁠⁣⁡⁣‏⁠‎⁢⁠⁣⁡⁤‏⁠‎⁣⁠⁡‏⁠‎⁣⁠⁢‏⁠‎⁣⁠⁣‏⁠‎⁣⁠⁤‏⁠‎⁣⁠⁢⁡‏⁠‎⁣⁠⁢⁢‏⁠‎⁣⁠⁢⁣‏⁠‎⁣⁠⁢⁤‏⁠‎⁣⁠⁣⁡‏⁠‎⁣⁠⁣⁢‏⁠‎⁣⁠⁣⁣‏⁠‎⁣⁠⁣⁤‏⁠‎⁣⁠⁤⁡‏⁠‎⁣⁠⁤⁢‏⁠‎⁣⁠⁤⁣‏⁠‎⁣⁠⁤⁤‏⁠‎⁣⁠⁢⁡⁡‏⁠‎⁣⁠⁢⁡⁢‏⁠‎⁣⁠⁢⁡⁣‏⁠‎⁣⁠⁢⁡⁤‏⁠‎⁣⁠⁢⁢⁡‏⁠‎⁣⁠⁢⁢⁢‏‏​⁡⁠⁡‌⁢​‎‎⁣⁠⁢⁢⁣‏⁠‎⁣⁠⁢⁢⁤‏‏​⁡⁠⁡‌⁣​‎‎⁣⁠⁢⁣⁡‏⁠‎⁣⁠⁢⁣⁢‏⁠‎⁣⁠⁢⁣⁣‏⁠‎⁣⁠⁢⁣⁤‏⁠‎⁣⁠⁢⁤⁡‏‏​⁡⁠⁡‌⁤​‎‎⁣⁠⁢⁣⁡‏⁠‎⁣⁠⁢⁣⁢‏⁠‎⁣⁠⁢⁣⁣‏‏​⁡⁠⁡‌⁢⁡​‎‎⁣⁠⁢⁣⁤‏⁠‎⁣⁠⁢⁤⁡‏‏​⁡⁠⁡‌­

"8211 with mobile.                    # ‎⁡regpacked target ouput (base 252 compressed)
8Steve Ballmer still does not know2.
8 what he did12 wrong"       
                      ⑥¤              # ‎⁢"128", key for regpack decompression
                        (nsƵj         # ‎⁣regpack decompression routine:
                        (ns           # ‎⁤split by each letter in the key
                           Ƶj         # ‎⁢⁡and join by last element
💎

Created with the help of Luminespire.

<script type="vyxal3">
"Ϣ2I⎘sᑂ›¥X⑥Ͼ³i⎊n␣⍾ƛ⌈ɦ\3⁜∧⩔∺σ⑴⦷mJ_⦰hK5ᛞ¶λ⩔”⑥¤(nsƵj
</script>
<script>
    args=[]
</script>
<script src="https://themoonisacheese.github.io/snippeterpreter/snippet.js" type="module"/>

Japt -R, 70 68 65 61 60 59 58 bytes

`Sve Ba¥´r Ð]l º not know
 Ø  ¹d
 Ùg
 ØP ¶ßè`·å+ m+'.

Test it

Vyxal 3, 41 bytes

"¨z∪÷Πø⊠K[↸≊∧ɠ”"↻ξ⍟bʀ⩔”"K!”"Ƶ◲γ6”WP¨„'.+”

Vyxal It Online! prefixes

Raku (Perl 6) (rakudo), 96 bytes

say ($!~=$_)~"."for ("Steve Ballmer still does not know"," what he did"," wrong"," with mobile")

Attempt This Online!

AWK, 103 bytes

$0=(a="Steve Ballmer still does not know")(x=".\n")(a=a" what he did")x (a=a" wrong")x a" with mobile."

Attempt This Online!

Vyxal oj, 124 58 50 bytes

`æ⁽ æ∴Ǐ₇ ⟑∵ ƛ∪ λ† ¬λ λ⟨ he ¬ṙ ↔Ẏ λ» ∨⁺`»→⇩d»₆τẎ\.+

Try it Online!

Stax, 38 37 bytes

¥úσÆ}≡ër↑←â .M)↨\7╒°1╕J°Y¥₧iC+F.ifd┼$

Run and debug it

Python 3, 97 bytes

["Steve Ballmer still does not know what he did wrong with mobile"[:i]+"."for i in [33,45,51,63]]

Try it online!

Deadfish~, 1507 bytes

{{i}dd}iiic{iii}iiic{d}dddddc{ii}dddc{dd}iiic{{d}iii}ic{iii}iiiic{iii}ic{i}iccic{d}iic{i}iiic{{d}ii}ddc{{i}dd}iiicic{d}dciiicc{{d}iii}ddddddc{{i}ddd}ddc{i}ic{d}c{i}iiiic{{d}ii}dddc{{i}dd}ddciciiiiic{{d}ii}ddddc{{i}ddd}iiiiiciiicic{i}ddc{{d}iii}dddc{ddd}ddddddc{{i}ddd}iiic{iii}iiic{d}dddddc{ii}dddc{dd}iiic{{d}iii}ic{iii}iiiic{iii}ic{i}iccic{d}iic{i}iiic{{d}ii}ddc{{i}dd}iiicic{d}dciiicc{{d}iii}ddddddc{{i}ddd}ddc{i}ic{d}c{i}iiiic{{d}ii}dddc{{i}dd}ddciciiiiic{{d}ii}ddddc{{i}ddd}iiiiiciiicic{i}ddc{{d}i}iiic{{i}d}dddc{d}dddddc{d}iiic{ii}dc{{d}ii}ddddc{{i}ddd}iicdddc{{d}iii}ic{{i}ddd}ddciiiiicdddddc{ddddd}ddddc{ddd}ddddddc{{i}ddd}iiic{iii}iiic{d}dddddc{ii}dddc{dd}iiic{{d}iii}ic{iii}iiiic{iii}ic{i}iccic{d}iic{i}iiic{{d}ii}ddc{{i}dd}iiicic{d}dciiicc{{d}iii}ddddddc{{i}ddd}ddc{i}ic{d}c{i}iiiic{{d}ii}dddc{{i}dd}ddciciiiiic{{d}ii}ddddc{{i}ddd}iiiiiciiicic{i}ddc{{d}i}iiic{{i}d}dddc{d}dddddc{d}iiic{ii}dc{{d}ii}ddddc{{i}ddd}iicdddc{{d}iii}ic{{i}ddd}ddciiiiicdddddc{{d}iii}iic{{i}d}dddcdddddcdddcdc{d}iiic{dddddd}iiic{ddd}ddddddc{{i}ddd}iiic{iii}iiic{d}dddddc{ii}dddc{dd}iiic{{d}iii}ic{iii}iiiic{iii}ic{i}iccic{d}iic{i}iiic{{d}ii}ddc{{i}dd}iiicic{d}dciiicc{{d}iii}ddddddc{{i}ddd}ddc{i}ic{d}c{i}iiiic{{d}ii}dddc{{i}dd}ddciciiiiic{{d}ii}ddddc{{i}ddd}iiiiiciiicic{i}ddc{{d}i}iiic{{i}d}dddc{d}dddddc{d}iiic{ii}dc{{d}ii}ddddc{{i}ddd}iicdddc{{d}iii}ic{{i}ddd}ddciiiiicdddddc{{d}iii}iic{{i}d}dddcdddddcdddcdc{d}iiic{{d}iii}dc{{i}d}dddc{d}ddddc{i}ic{d}ddc{{d}iii}ddc{{i}dd}dddciic{d}dddc{i}dddciiic{d}iiic{ddddd}dddddc

Try it online!

C (gcc), 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!

05AB1E, 43 bytes

”™¸ïßmer”“„â‚à€–ƒ€“…€À€½ƒ§'–Ñ„€Ž†©)η¦ðý'.«»

Try it online!

Unix TMG, 145 bytes

p:parse(b)b:=(1){<Steve Ballmer still does not know>$1<.>*}=(1){1({< what he did>$1})}=(1){1({< wrong>$1})}={3({})2({})1({})1({< with mobile>})};

With some white spaces:

p:parse(b)
b:=(1){<Steve Ballmer still does not know>$1<.>*}
  =(1){1({< what he did>$1})} 
  =(1){1({< wrong>$1})}
  ={3({}) 2({}) 1({}) 1({< with mobile>})};

GolfScript, 82 bytes

4,{"Steve Ballmer still does not know
 what he did
 wrong
 with mobile"n/\)<"."n}/

This can be considered "19 bytes" since that's the actual code.

4,{"nnn"s/\)<"."n}/ are all the excess characters that actually make the code itself.

Try it online!

Very happy with this. Splits along newlines, then adds the next element one at a time with a period until everything is printed. Lovely.

Explanation!

First of all, we have to acknowledge the string.
It's split along newlines right where we want the breaks to be.
This will be important.

For the explanation, our string is S.

4,{Sn/\)<"."n}/
4,              #Make an array [0 1 2 3]
  {          }/ #For each of those elements...
   Sn/          #Take our string and split it along newlines
      \         #Move our number-element to the front of the stack
       )        #Increase it by 1
        <       #Look at a number of parts of the split string eq. to that num
         "."    #Put a period after
            n   #Newline
                #Implicit "print the stack" at the end of creation. No quotes.

Julia 0.6, 99 bytes

Generate the 4 desired strings with cumprod (* is string concatenation). Tack on a period with a broadcasted string concatenation .* and print all elements in the list with a broadcasted call println..

println.(cumprod(["Steve Balmer still does not know"," what he did"," wrong"," with mobile"]).*".")

Try it online!

Fission 2, 109 107 bytes

R"Steve Ballmer still does not know"J2~~$$" what he did"J1~$" wrong"J0" with mobile."*
/0C+$$J1C+$$J2C@"."N

Try it online!

I was a little annoyed at the amount of whitespace in the previous Fission answer, so I decided to see if I could make it smaller.

APL (Dyalog Unicode), 81 bytesSBCS

↑1⌽¨,\'.Steve Ballmer still does not know' ' what he did' ' wrong' ' with mobile'

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

Rust, 145 bytes

||{for i in b"!-3?"{println!("{}.",&"Steve Ballmer still does not know what he did wrong with mobile".to_owned().get(..*i as usize).unwrap());}};

Inspired by this solution.

Try it online!

Pyth - 98

K." w!ZÑ`±§ÑÔæý^àV;KæM×ü1A_4ÿ"J" what he did"A," wrong"" with mobile"=N\.+KN++KJNs[KJGN)s[KJGHN

The first string is a packed string

Tcl, 115 bytes

puts [set S "Steve Ballmer still does not know"].\n[set h "$S what he did"].\n[set w $h\ wrong].\n$w\ with\ mobile.

Try it online!

Retina, 82 bytes


ABCC with mobile.
C
B wrong
B
.¶A what he did
A
Steve Ballmer still does not know

Try it online!

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>

Perl, 98 bytes

for('Steve Ballmer still does not know',' what he did',' wrong',' with mobile'){$s.=$_;say "$s."}

(Run via perl -M5.10.1 ... so that "say" will be recognized)

Nim, 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.

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.

Go, 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!

Clojure(script), 122 bytes

(print(apply str(interpose"\n"(reductions str"Steve Ballmer still does not know"[" what he did"" wrong"" with mobile"]))))

C (gcc), 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!

Python 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!

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.

MSX-BASIC, 123 bytes

1s$="Steve Ballmer still does not know what he did wrong with mobile":forx=1to4:readl:?left$(s$,l);".":next:data33,45,51,64

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!

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.

Jelly, 52 46 bytes

“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“£Ṿ⁴'Þḣ~ẉ“¥Ị)“Ṡ8gÐ/»;\p”.Y

Credits for ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ go to @EriktheOutgolfer, who used it in his answer.

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.

Bash, 92 91 bytes

printf 'Steve Ballmer still does not %s.
' know{,' what he did'{,\ wrong{,\ with\ mobile}}}

Try it online!

C (gcc), 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!

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.

Perl 6, 90 bytes

"$_.".say for [\,] 'Steve Ballmer still does not know','what he did','wrong','with mobile'

MATLAB / Octave - 120 bytes

a=[];s={'Steve Ballmer still does not know',' what he did',' wrong',' with mobile'};for i=s,a=[a i{1}];disp([a '.']);end

Logic is to start off with an empty string, then we have a cell array that contains the base string as the first element followed by the additions for the other elements. Note that each additional component has a space prepended. We then iterate through the cell array, and at each iteration we concatenate with a component and display the string to the user adding a period at the end.

We get:

>> a=[];s={'Steve Ballmer still does not know',' what he did',' wrong',' with mobile'};for i=s,a=[a i{1}];disp([a '.']);end
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.

Try it online!

http://www.tutorialspoint.com/execute_octave_online.php?PID=0Bw_CjBb95KQMRGZoWFJ1Z3NaNTQ

CJam, 79 bytes

4{)"Steve Ballmer still does not know
hat he did
rong
ith mobile"N/<" w"*'.+N}%

Try it online!

Retina, 95 86 bytes

:`
Steve Ballmer still does not know.
:`.$
 what he did.
:`.$
 wrong.
.$
 with mobile.

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.

Octave, 126 bytes

Two approaches, same length:

printf('%s.\n',(s={'Steve Ballmer still does not know',' what he did',' wrong',' with mobile'}){1},[s{1:2}],[s{1:3}],[s{1:4}])

Try it online!

s={'Steve Ballmer still does not know',' what he did',' wrong',' with mobile'};printf('%s.\n',s{1},[s{1:2}],[s{1:3}],[s{1:4}])

Try it online!

I could make it 21 bytes shorter, if I steal Rod's approach, but that's no fun.

for i=[33,45,51,63],disp(['Steve Ballmer still does not know what he did wrong with mobile'(1:i),46]),end

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>

REXX, 123 bytes

s='Steve Ballmer still does not know what he did wrong with mobile'
w=6 9 10 12
do i=1 to 4
say subword(s,1,word(w,i)).
end

><>, 126 bytes

 \"elibom htiw \"10p";"15p
  "gnorw  "10p
  "did eh tahw \"11p
 \"wonk ton seod llits remllaB evetS\"12p04.
  l?!vo
oo00.>a"."

05AB1E, 50 49 45 44 bytes

4 bytes saved with inspiration from Kevin's Java answer

„€Ž†©'–Ñ…€À€½ƒ§“mer„â‚à€–ƒ€“”™¸ïß”[Žì'.«=¨ð«

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

Sed, 96

s/^/Steve Ballmer still does not know./p
s/\./ what he did./p
s/\./ wrong./p
s/\./ with mobile./

Try it online.

Implicit newline input given, as per this meta-question.

Powershell, 101 bytes

0..3|%{-join("Steve Ballmer still does not know"," what he did"," wrong"," with mobile")[0..$_]+"."}

Mathematica, 108 104 bytes

"Steve Ballmer still does not know what he did wrong with mobile"~StringTake~#~Print~"."&/@{33,45,51,63}


Try it online!

-4 bytes from Martin

><>, 135 bytes

".wonk ton seod llits remllaB evetS"\
l?!\o99+2*1./"h tahw  "32p10pao     \
52p\".did e"/"   "53p33p
  /\".gnorw"/
1p/\".elibom htiw;"3

This basically goes through the string, prints then replaces the fullstop and conditionals with spaces to keep moving along the code.

It may be best to visualise it using the below ><> pond link;

><> pond!

Try it online!

SOGL, 42 bytes

⁹⁴<>‘υ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)

Braingolf, 139 108 bytes

"Steve Ballmer still does not know
."VRMM!&@v!&@R" what he did"!&@v!&@R" wrong"!&@v!&@R " with mobile"&@v&@R

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!

Jelly, 49 bytes

“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“¡=~Ṃ©N|ȯ“¡ṭṂ“CṬṀWỌ»ḣJK;¥€”.Y

Try it online!

05AB1E, 46 bytes

”™¸ïßme”“r„â‚à€–ƒ€“«…€À€½ƒ§'–Ñ„€Ž†©).pvyðý'.«»

Try it online!

PHP, 104 95 94 bytes

<?=$a="Steve Ballmer still does not know",$a=".
$a what he did",$a.=" wrong",$a?> with mobile.

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!

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.

///, 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!

Charcoal, 71 69 bytes

A⟦⟧βF⪪”↓/‘ZQ≔'Wε}÷&’/↗∧μ~⎇²~ηρπ‖¢β\`σuσI⌀δ#″:§▶¬QγγQZ–” w⁺⪫⊞Oβι w¦.¶

Try it online! Link is to verbose version of code, with some separators omitted because deverbosifier can't do it automatically. This is basically a port of @KevinCruijssen's answer.

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!

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:

We don't need to match the mobile explicitly, because that will simply be what's left over on the third match.

QBIC, 95 bytes

?@Steve Ballmer still does not know`+@.`?A+@ what he did`+B?A+C+@ wrong`+B?A+C+D+@ with mobile.

This makes every part of the output into a separate string literal, where 'A$' holds Steve Ballmer still does not know, and then repeatedly prints 'A$', followed by 'B$' (a period) or the next literal.

Chopping the original string into substrings takes just a byte more (96 bytes):

?B,34|+@.`?_sB,46|+A?_sB,52|+A?@Steve Ballmer still does not know what he did wrong with mobile.

Here, 'B$' holds the entire thing, and parts of it are subsequently shown using substring ('_s...|`). Note that 'A$' now holds the period. This allows the full sentence to be moved to the end of the program, so we can drop the closing backtick.

Haskell, 96 bytes

(++".\n")=<<scanl(++)"Steve Ballmer still does not know"[" what he did"," wrong"," with mobile"]

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.