Download Jar. Libraryless. Click here for Pure Java version (15494L/111K).
1 | !7 |
2 | |
3 | //static TimedCache<L<MediumPost>> mediumPostsCache = new TimedCache(60); |
4 | static volatile L<MediumPost> mediumPosts; |
5 | static volatile long numComputers; |
6 | static new ThreadLocal<S> visitor; |
7 | sbool getMediumPosts; |
8 | |
9 | p {
|
10 | doEveryStartingNow(60000, f update); |
11 | } |
12 | |
13 | svoid update {
|
14 | numComputers = numComputers(); |
15 | pcall {
|
16 | if (getMediumPosts) mediumPosts = getMediumPosts("stefanreich");
|
17 | } |
18 | } |
19 | |
20 | html {
|
21 | S originalURI = uri; |
22 | uri = dropSuffix("/", uri);
|
23 | print("html starting, uri=" + uri + ", domain=" + domain());
|
24 | |
25 | S vis = registerVisitor(); |
26 | visitor.set(dropIncluding(vis, "<br>")); |
27 | |
28 | S domain = domain(); |
29 | if (swic(domain, "nootrobox.")) |
30 | ret hrefresh("http://ai1.space/1008316/raw");
|
31 | |
32 | if (eq(domain, "code.ai1.space")) |
33 | ret hrefresh("http://snippets.tinybrain.de");
|
34 | //ret hrefresh([[http://tinybrain.de:8080/tb/snippets.php?action=create&description=My+first+JavaX+Program%21&text=%21752%0A%0Ap+%7B%0A++showAnimation%28"%231004373"%2C+10%29%3B+++%2F%2F+10+seconds+of+applause%21%0A%7D]]); |
35 | |
36 | if (swic(domain, "smartbotschat.")) |
37 | ret hrefresh("http://botcompany.de/1011975/raw");
|
38 | |
39 | if (swic(domain, "pixelboys.")) |
40 | ret hrefresh("https://botcompany.de/");
|
41 | |
42 | if (eq(uri, "/chat")) |
43 | ret callHtmlMethod(getBot(#1008998), originalURI, params); |
44 | |
45 | if (eq(uri, "/goodies") || empty(uri) && eqic(domain, "javax.ai1.space")) {
|
46 | new L<S> l; |
47 | for (S s : toLinesFullTrim(loadSnippet("#1004044"))) {
|
48 | if (s.startsWith("*"))
|
49 | l.add(dropPrefixTrim("*", s));
|
50 | else {
|
51 | S s2 = dropPrefixSuffixTrim("<pre>", "</pre>", s);
|
52 | if (neq(s, s2)) |
53 | appendToLast(l, "\n<pre style='margin-left: 50px'>" + dynamize(s2) + "</pre>"); |
54 | else |
55 | appendToLast(l, s); |
56 | } |
57 | } |
58 | S liStyle = "margin-bottom:0.2em"; |
59 | ret hmobilefix () |
60 | /*+ ahref(snippetLink("#1004132"),
|
61 | himg(snippetImgLink("#1004415"), "width", 300, "style", "border: 2px solid black; border-radius: 5px; float: right; margin-left: 20px; margin-bottom: 20px", "title", "JavaX Screenshot"))*/
|
62 | + p(ahref("http://ai1.space", "<< back")
|
63 | ) |
64 | + htitle_h1("JavaX Goodies!")
|
65 | + ul(l, null, "style", liStyle) |
66 | + p(b(">> " + targetBlank("http://new-program.tinybrain.de/", "Get started here!"), "style", "font-size: 2em"))
|
67 | + ul(ll([[ |
68 | Note: JavaX favors on-the-server development, and also public development (because both makes the world better).]], |
69 | [[Thus, the preferred way to make your first program is to |
70 | just ]] + targetBlank("http://tinybrain.de:8080/tb-usercake/login.php", "get a log-in") + " and "
|
71 | + targetBlank("http://new-program.tinybrain.de/", "create your program here") + ".",
|
72 | [[After hitting "Create snippet", you can immediately run the program in your local ]] + ahref("http://tinybrain.de/x30.jar", "x30.jar") + [[ (it will automatically show on
|
73 | top of the list) or ]] + targetBlank("http://app-allperms.tinybrain.de", "in the app") + ".",
|
74 | [[In case of any question, or if you want "private" development: I am ]] + ahref("mailto:info@ai1.space", "always glad to help") + "!"),
|
75 | null, "style", liStyle) |
76 | + p(ahref("http://tinybrain.de:8080/getraw.php?id=1006863&contentType=text/html", "Privacy Policy"))
|
77 | + visitorsChart("float: right; margin-left: 20px; margin-bottom: 20px");
|
78 | } |
79 | |
80 | // Serve landing page |
81 | |
82 | if (eq(uri, "/buy")) |
83 | ret callHtmlMethod(getBot("#1005215"), uri, params);
|
84 | |
85 | // Load stuff |
86 | |
87 | L<MediumPost> mediumPosts = main.mediumPosts; |
88 | |
89 | mediumPosts = concatLists(mediumPosts, ll( |
90 | new MediumPost("The A.I. Super-Database", "https://medium.com/@stefanreich/the-a-i-super-database-3ba31410e21"),
|
91 | )); |
92 | |
93 | if (eq(uri, "/more")) |
94 | ret htitle("Making Robots That Talk (Stefan Reich)")
|
95 | + htotalcenter( |
96 | h1("Welcome To The Advent Of A.I.!")
|
97 | |
98 | + h3("Stuff is happening.")
|
99 | |
100 | + p("JavaX begins to think about itself (and everything else!). :)")
|
101 | |
102 | + p(youtubeEmbed( |
103 | //"fCvxu5f4PeA" |
104 | //"tbHenhl-QTY" |
105 | //"WMJLcRNPUnI" |
106 | //"etSXjcQntIg" |
107 | //"zFV71gvzGqk" // me! |
108 | "YCBt-JggF2c" |
109 | //, 600, 350)) |
110 | , 400, 250)) |
111 | |
112 | /* + p(himg("http://eyeocr.sourceforge.net/filestore/filestore.php?cmd=serve&file=blob_1003828&contentType=image/gif", "alt", "JavaX-Bert!"))
|
113 | + p(b("^^ That is " + rawLink("goodies", bertName()) + ". He is always where the sun is shining. ™"))
|
114 | */ |
115 | |
116 | + pJavaXInstallations() |
117 | //+ p(targetBlank(rawBotLink("#1003081"), htmlencode("[>> Chat! <<]")))
|
118 | + p(ahref("/buy", "Buy an AI :)"))
|
119 | + p(b(ahref("http://snippets.tinybrain.de", "LATEST CODE") + " | " + ahref("http://slides.com/stefanreich", "SLIDES")))
|
120 | + p(hsmall(visitor.get())) |
121 | |
122 | + p(b(ahref("http://medium.com/@stefanreich", "On Medium.com:")))
|
123 | + p(b(join("<br>",
|
124 | map(func(MediumPost p) {
|
125 | ahref(p.url, htmlencode(p.title)) |
126 | }, mediumPosts))), "style", "font-size: 1.5em; line-height: 140%") |
127 | + p(ahref("http://medium.com/@stefanreich", "[more...]"))
|
128 | + p(b(ahref("http://tinybrain.de/x30.jar", "Download JavaX! [PC]") + " " + ahref("http://java.com/download", "[Get Java First]")) + "<br>"
|
129 | + ahref("http://app-allperms.tinybrain.de", b("Download JavaX! [Android]")) + " " + ahref("http://tinybrain.de/javax-34.apk", "[bypass play store]") + "<br>"
|
130 | + b(ahref(rawLink("goodies"), "JavaX Goodies!")) + "<br>"
|
131 | + b(ahref("http://snippets.tinybrain.de", "Code Database")))
|
132 | + p(b("Some Screenshots."))
|
133 | + bigScreenshot("#1004809", "#1004778", "A Simple Expert System")
|
134 | + bigScreenshot("#1004649", "#1004648", "Learning To Read")
|
135 | + bigScreenshot("#1004530", "#1004528")
|
136 | + p("[Thanks to the great " + targetBlank("http://dedexer.sourceforge.net/", "Dedexer")
|
137 | + " by " + targetBlank("http://pallergabor.uw.hu/", "Gabor Paller") + "!]")
|
138 | // + bigScreenshot("#1004294", "#1004284", "")
|
139 | + h3("More screenshots")
|
140 | + p(screenshotLin2("#1004618", "#1004616") + " "
|
141 | + screenshotLin2("#1004555", "#1004552") + " "
|
142 | + screenshotLin2("#1004494", "#1004361") + " "
|
143 | + screenshotLin2("#1004359", "#1004353") + " "
|
144 | + screenshotLin2("#1004330", "#1003779") + " "
|
145 | + screenshotLin2("#1004280", "#1004032") + " "
|
146 | + screenshotLin2("#1004267", "#1003779") + " "
|
147 | + screenshotLin2("#1004135", "#1004132") + " "
|
148 | + screenshotLin2("#1004090", "#1004068") + " "
|
149 | + screenshotLink("#1003815", "#1003881") + " "
|
150 | + screenshotLink("#1004089", "#1004088") + " "
|
151 | + screenshotLink("#1003695", "#1003697") + " "
|
152 | + screenshotLink("#1003678", "#1003681") + " "
|
153 | + screenshotLink("#1003634", "#1003650") + " "
|
154 | + screenshotLink("#1003509", "#1003514") + " "
|
155 | + screenshotLink("#1003494", "#1003504") + " "
|
156 | + screenshotLink("#1003486", "#1003487") + " "
|
157 | + screenshotLink("#1003417", "#1003470") + " "
|
158 | + screenshotLink("#1003417", "#1003428") + " "
|
159 | + screenshotLink("#1003406", "#1003392"))
|
160 | + p(b("Latest Video"))
|
161 | + youtubeEmbed("gf7eaIWvnp8"/*"j1wbwdGrBes"*//*"HWs9F5-egOI"*/) // ("Z1dWiMPyvgQ")
|
162 | + p(ahref(rawBotLink("#1003220"), "Company")
|
163 | + " | " + ahref("http://medium.com/@stefanreich", "Articles")
|
164 | + " | " + ahref("mailto:info@botcompany.de", "Mail")
|
165 | //+ " | " + ahref(rawBotLink("#1003081"), "Chat")
|
166 | + " | " + ahref("/buy", "Buy an AI :)")
|
167 | ) |
168 | + p(targetBlank("https://medium.com/@stefanreich/mixing-javax-and-english-6b56f3aecd4", "Making Chatbots from English Dialog") + "<br><br>"
|
169 | + targetBlank("https://medium.com/@stefanreich/a-music-player-in-javax-178-lines-ca304d3ae031", "A Music Player In JavaX: 178 Lines"))
|
170 | //+ p(visitor.get()) |
171 | + p("Status: " + b("Offering Free Robots For Every Purpose"))
|
172 | + p(b("Music.") + "<br>"
|
173 | + join("<br>", map(func(S v) { youtubeEmbed(v, 300, 100) }, splitAtSpace(
|
174 | "hxfE_-hqCE0 K8qNkFXfvIE 0FCo8vGUKuE Dd8WjeK8riE Xg1lfnyYJpc wNS-mrZvcOg KfvoR6aqcws tZB1sHlB554 zZwJL1J53LU YsTzN1_a5rg BBpGVZ4yMiE gdPwF2oMsdw")))) |
175 | // 98bgS9AuFe4 FjlPtUaXcvg |
176 | ); |
177 | |
178 | if (eq(uri, "/ever-easier")) |
179 | ret page_everEasier(); |
180 | |
181 | if (eq(uri, "/watch")) |
182 | ret page_watch(); |
183 | |
184 | if (eq(uri, "/explodingWindow")) |
185 | ret page_explodingWindow(); |
186 | |
187 | if (eq(uri, "/automaticScreenshots")) |
188 | ret page_automaticScreenshot(); |
189 | |
190 | |
191 | if (eq(uri, "/editor")) |
192 | ret page_editor(); |
193 | |
194 | if (eq(uri, "/gc")) |
195 | ret page_gc(); |
196 | |
197 | if (eq(uri, "/dynamicButtons")) |
198 | ret page_dynamicButtons(); |
199 | |
200 | if (eq(uri, "/screenshots")) |
201 | ret page_screenshots(); |
202 | |
203 | if (eq(uri, "/pastLives")) ret page_pastLives(); |
204 | if (eq(uri, "/screenLens")) ret page_screenLens(); |
205 | if (eq(uri, "/new")) ret page_new(); |
206 | |
207 | // main page |
208 | //ret callHtmlMethod(getBot(#1008998), originalURI, params); |
209 | /*ret htitle("BotCompany.de") + hfullcenter(p("Let's start again.") + p(ahref("https://botcompany.de/chat", "Chat"))
|
210 | + p(" ")
|
211 | + embedYoutubeWithoutLink("0EoOVvGV_aQ", 250, 150));*/
|
212 | |
213 | /*if (!subBot_isHttps_defaultToTrue()) |
214 | ret hrefresh("https://BotCompany.de" + originalURI + htmlQuery(dropNanohttpdParams(params)));*/
|
215 | |
216 | if (subBot_isHttps() || neqic(domain, "BotCompany.de")) |
217 | ret hrefresh("http://BotCompany.de" + originalURI + htmlQuery(dropNanohttpdParams(params)));
|
218 | |
219 | //ret callHtmlMethod(getBot(#1013826), originalURI, params); |
220 | //ret hrefresh("https://www.botcompany.de:8443/1016323/raw");
|
221 | ret hrefresh("https://www.botcompany.de");
|
222 | } |
223 | |
224 | static S page_everEasier() {
|
225 | print("html ever-easier");
|
226 | S code = hHiliteJava([[ |
227 | p-awt {
|
228 | final new ImageSurface is; |
229 | showFrame(jscroll(is)); |
230 | |
231 | jHandleFileDrop(is, voidfunc(File f) {
|
232 | is.setImage(loadBufferedImage(f)) |
233 | }); |
234 | } |
235 | ]], "text-align: left; width: 400px"); |
236 | |
237 | ret htitle("Ever Easier Programming | Stefan Reich")
|
238 | + hmobilefix () |
239 | + hGoogleFont("Nunito Sans:900")
|
240 | + hcenter2( |
241 | h1("Welcome To Ever-Easier-Programming!", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 50px")
|
242 | |
243 | + p(b("Today: Making an image surface in " + ahref("http://javax.ai1.space", "JavaX") + " that you can drag image files into. " + ahref(snippetLink("#1006022"), "Full program.")))
|
244 | |
245 | + code |
246 | |
247 | + p(" ")
|
248 | |
249 | + hr() |
250 | |
251 | + mediumPosts() |
252 | |
253 | + p(youtubeEmbed("YCBt-JggF2c", 400, 250))
|
254 | |
255 | + p(ahref(rawLink("more"), "[More]") + " " + ahref("mailto:info@botcompany.de", "[Mail]"))
|
256 | + p(hsmall(visitor.get())) |
257 | ); |
258 | } |
259 | |
260 | static S rest() {
|
261 | ret |
262 | or2(pJavaXInstallations(), p(" "))
|
263 | + p(hsmall(visitor.get())) |
264 | + hr() |
265 | |
266 | + mediumPosts() |
267 | |
268 | + p(ahref(rawLink("more"), "[More]") + " " + ahref("mailto:info@botcompany.de", "[Mail]"))
|
269 | |
270 | + p(b("Other Popular Videos."))
|
271 | + p(b(ahref(youtubeLink("kTFS3V4PnQM"), "Perfect Java Garbage Collection")));
|
272 | } |
273 | |
274 | static S mediumPosts() {
|
275 | ret p(b(ahref("http://medium.com/@stefanreich", "On Medium.com:")))
|
276 | + mediumPosts2(); |
277 | } |
278 | |
279 | static S mediumPosts2() {
|
280 | ret p(b(join("<br>",
|
281 | map(func(MediumPost p) {
|
282 | ahref(p.url, htmlencode(p.title)) |
283 | }, mediumPosts))), "style", "font-size: 1.5em; line-height: 140%"); |
284 | } |
285 | |
286 | static S page_watch() {
|
287 | ret htitle("Let Your Computer Watch You! | Stefan Reich")
|
288 | + hmobilefix () |
289 | + hGoogleFont("Nunito Sans:900")
|
290 | + hcenter2( |
291 | h1("Let Your Computer Watch You!", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 50px")
|
292 | |
293 | + p(himg("http://eyeocr.sourceforge.net/filestore/filestore.php?cmd=serve&file=blob_1006291&contentType=image/png"))
|
294 | |
295 | + p(targetBlank("http://tinybrain.de/1006248", "Program.") + " " + ahref("http://tinybrain.de/x30.jar", "Install.") + " " + targetBlank("http://java.com/download", "Java 8."))
|
296 | |
297 | + p(b("FAQ: ") + "Does this program send any information to a server?<br>" + b("Answer: No. ") + "If you want to share your trained fonts, there is another program for that.")
|
298 | |
299 | + rest()); |
300 | } |
301 | |
302 | static S page_explodingWindow() {
|
303 | ret htitle("Behold The Exploding Window! | Stefan Reich")
|
304 | + hmobilefix () |
305 | + hGoogleFont("Nunito Sans:900")
|
306 | + hcenter2( |
307 | h1("Behold The Exploding Window!", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
308 | |
309 | + htableRaw2(ll(ll(himg("http://eyeocr.sourceforge.net/filestore/filestore.php?cmd=serve&file=blob_1006358&contentType=image/png") + b("<br>(Original)"),
|
310 | |
311 | himg("http://eyeocr.sourceforge.net/filestore/filestore.php?cmd=serve&file=blob_1006399&contentType=image/png") + b("<br>(Exploded)"))), ll("cellspacing", 20), null, ll("align", "center"))
|
312 | |
313 | + p("Tell me this ain't grand e.g. for finding scrollbars. It's " + ahref("http://tinybrain.de/1006396", "automatic") + "!")
|
314 | |
315 | + p(ahref("/watch", "Yesterday's news."))
|
316 | |
317 | + rest()); |
318 | } |
319 | |
320 | static S page_automaticScreenshot() {
|
321 | S title = "Automatic Screenshots Of Windows"; |
322 | S program = "http://tinybrain.de/1006425"; |
323 | ret htitle(title + " | Stefan Reich") |
324 | + hmobilefix () |
325 | + hGoogleFont("Nunito Sans:900")
|
326 | + hcenter2( |
327 | h1(title, "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px") |
328 | |
329 | + p(targetBlank(program, himg("http://eyeocr.sourceforge.net/filestore/filestore.php?cmd=serve&file=blob_1006436&contentType=image/png"))
|
330 | |
331 | + p(targetBlank(program, himg("http://eyeocr.sourceforge.net/filestore/filestore.php?cmd=serve&file=blob_1006427&contentType=image/png"))
|
332 | |
333 | + p("Tell me this ain't grand. " + targetBlank(program, "Program.") + " " + targetBlank("http://tinybrain.de/1006408", "Program 2.") + " " + ahref("/explodingWindow", "Yesterday's news."))
|
334 | |
335 | + rest() |
336 | |
337 | + p(b("Music."))
|
338 | + p(youtubeEmbed("V5AztWseIdU", 300, 100)));
|
339 | } |
340 | |
341 | static S page_editor() {
|
342 | S title = "Making A Text Editor In 100 Lines"; |
343 | S program = "http://tinybrain.de/1006438"; |
344 | ret htitle(title + " | Stefan Reich") |
345 | + hmobilefix () |
346 | + hGoogleFont("Nunito Sans:900")
|
347 | + hcenter2( |
348 | h1(title, "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px") |
349 | |
350 | + p(youtubeEmbed("8A-25E7T8pA"))
|
351 | |
352 | + p("Tell me this ain't grand. " + targetBlank(program, "Program.") + " " + targetBlank("http://tinybrain.de/1006441", "Program 2.") + " " + ahref("/automaticScreenshots", "Yesterday's news."))
|
353 | |
354 | + rest() |
355 | |
356 | + p(b("Music."))
|
357 | + p(youtubeEmbed("zigwkEgKPAk", 300, 100)));
|
358 | } |
359 | |
360 | static S page_dynamicButtons() {
|
361 | S title = "Dynamic Buttons In " + ahref("http://javax.ai1.space", "JavaX!");
|
362 | S program = "http://tinybrain.de/1006467"; |
363 | ret htitle(hTitleClean(title) + " | Stefan Reich") |
364 | + hmobilefix () |
365 | + hGoogleFont("Nunito Sans:900")
|
366 | + hcenter2( |
367 | visitorsChart("float: left; margin-right: 20px")
|
368 | + youtubeLinkFloatRight() |
369 | + h1(title, "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px") |
370 | |
371 | + p(hHiliteJava([[ |
372 | static JScrollPane scroller; |
373 | |
374 | p-substance {
|
375 | showFrame(scroller = new JScrollPane); |
376 | scroller.setViewportView(vstack(jbutton("1"), jbutton("2"), jbutton("3")));
|
377 | packFrame(scroller); |
378 | awtLater(scroller, 5000, r {
|
379 | scroller.setViewportView(vstack(jbutton("7"),
|
380 | jbutton("2"), jbutton("4"), jbutton("6"), jbutton("hello!")));
|
381 | }); |
382 | }]], "text-align: left; width: 640px")) |
383 | |
384 | + p(b("Show some buttons, after 5 seconds show another set of buttons. All with a scrollbar."))
|
385 | |
386 | + p(targetBlank(program, "Program.")) |
387 | |
388 | + h1("Programs " + ahref("https://medium.com/@stefanreich/javax-programs-can-rename-themselves-238c49f3377a", "renaming themselves"), "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
389 | |
390 | + p(hHiliteJava([[ |
391 | renameProgram(dropStartingFromLast(getProgramTitle(), " - ") |
392 | + " - last renamed " + ymd_hms()); |
393 | ]], "text-align: left; width: 500px")) |
394 | |
395 | + p(targetBlank("http://tinybrain.de/1006471", "Program."))
|
396 | |
397 | + p(b(ahref("/gc", "Yesterday's news.")))
|
398 | + rest() |
399 | ); |
400 | } |
401 | |
402 | static S page_screenshots() {
|
403 | S title = "Sharing Screenshots Between Windows & Linux In One Click"; |
404 | ret htitle(hTitleClean(title) + " | Stefan Reich") |
405 | + hmobilefix () |
406 | + hGoogleFont("Nunito Sans:900")
|
407 | + hcenter2( |
408 | visitorsChart("float: left; margin-right: 20px")
|
409 | + youtubeLinkFloatRight() |
410 | + h1(title, "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px") |
411 | |
412 | + bigScreenshot_noTitle(#1006485, #1005411) |
413 | |
414 | + p(b(ahref("/dynamicButtons", "Yesterday's news.")))
|
415 | + rest() |
416 | ); |
417 | } |
418 | |
419 | static S page_new() {
|
420 | S title = "A. I. For Everyone by Stefan Reich"; |
421 | ret htitle(hTitleClean(title)) |
422 | + hmobilefix() |
423 | + hGoogleFont("Nunito Sans:900")
|
424 | + hcenter2( |
425 | visitorsChart("float: left; margin-right: 20px")
|
426 | + youtubeLinkFloatRight() |
427 | |
428 | + header("Welcome To The New AI!")
|
429 | |
430 | + p(b(targetBlank("https://www.meetup.com/Artificial-Intelligence-Meetup/events/238795024/", "Meet-Up Apr 10, 2017")))
|
431 | |
432 | + p(ahref("http://ai1.space/wiki/", b("Intelligence Machine.")))
|
433 | |
434 | + headerSmaller("A New Type Of Chess Engine")
|
435 | + p(youtubeEmbed("TBTXScYgSvg", 500, 500*9/16))
|
436 | |
437 | + mediumPosts2() |
438 | |
439 | /*+ headerSmaller("Is Donald a good person?")
|
440 | + p(youtubeEmbed("m4sqmHuJeC8", 400, 400*9/16))*/
|
441 | |
442 | + p(b(ahref("http://javax.ai1.space", "[JavaX]")))
|
443 | |
444 | + header("An Automatic Image Machine :)")
|
445 | + p(youtubeEmbed("EJ0gdYIcdUA", 300, 200))
|
446 | |
447 | + header("Text Recognition As A Game")
|
448 | + p(youtubeEmbed("j2CSTPwunvs", 300, 200))
|
449 | |
450 | + header("A Telepathic Language For Computers")
|
451 | + p(youtubeEmbed("gTlgZkc95IU", 500, 350))
|
452 | |
453 | + header("More Dancing Numbers")
|
454 | + p(youtubeEmbed("douXXGMHbfA", 500, 350))
|
455 | |
456 | + p(ahref(youtubeLink("oY_K_QMbfvM"), "A Heart For Cute YouTubers :)"))
|
457 | |
458 | + header("Reproducing Images Without Neural Networks")
|
459 | + p(youtubeEmbed("tgZbUJJTMqo", 500, 350))
|
460 | |
461 | + header("A. I. Games To Change The World / The Computer That Clicks Itself")
|
462 | + p(youtubeEmbed("1HLVUxrvwcc", 500, 350))
|
463 | |
464 | + header("JavaX: Create a tiled background in one line")
|
465 | + p(ahref("http://tinybrain.de/1006896", himg("http://eyeocr.sourceforge.net/filestore/filestore.php?cmd=serve&file=blob_1006899&contentType=image/png")))
|
466 | + tag("tt", dynamize([[showFrame(jTiledBackground(#1006895, withMargin(vstack(jbutton("Yo"), jbutton("Mama!")))));]]))
|
467 | |
468 | + header("2 New Games")
|
469 | + p(youtubeEmbed("T8UTAmqcv1Q", 500, 350))
|
470 | |
471 | + p(b(ahref("/screenLens", "Yesterday's news.")))
|
472 | + rest() |
473 | ); |
474 | } |
475 | |
476 | sS header(S s) {
|
477 | ret h1(s, "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px"); |
478 | } |
479 | |
480 | sS headerSmaller(S s) {
|
481 | ret h2(s, "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px"); |
482 | } |
483 | |
484 | static S page_screenLens() {
|
485 | S title = "A. I. For Everyone by Stefan Reich"; |
486 | ret htitle(hTitleClean(title)) |
487 | + hmobilefix () |
488 | + hGoogleFont("Nunito Sans:900")
|
489 | + hcenter2( |
490 | visitorsChart("float: left; margin-right: 20px")
|
491 | + youtubeLinkFloatRight() |
492 | |
493 | + h1("2 New Games", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
494 | + p(youtubeEmbed("T8UTAmqcv1Q", 500, 350))
|
495 | |
496 | + h1("A. I. Game Solved", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
497 | + p(youtubeEmbed("AUjnnDakJhM", 500, 350))
|
498 | |
499 | + h1("A New A. I. Game!", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
500 | + p(youtubeEmbed("OVBDsiQbWdQ", 500, 350))
|
501 | |
502 | + h1("How To Make Your Own Personal Assistant In 1 Minute ", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
503 | + p(youtubeEmbed("LetUlRSi5QI", 400, 300))
|
504 | |
505 | + h1("Let Our A.I. Play A Simple Game! / Programming Challenge", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
506 | + p(youtubeEmbed("PJC4ej5-PDo", 500, 350))
|
507 | |
508 | + h1("My Screen Lens Is Watching You!", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
509 | |
510 | + p(youtubeEmbed("nEeMH_HyTYE", 400, 300))
|
511 | |
512 | + h1("The Mystery", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
513 | |
514 | + p(youtubeEmbed("xhlMzQAaMjo", 300, 200))
|
515 | |
516 | + h1("Database Tutorial", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
517 | + p(youtubeEmbed("ChHhPgKFYy0", 300, 200))
|
518 | |
519 | + p(b(ahref("/pastLives", "Yesterday's news.")))
|
520 | + rest() |
521 | ); |
522 | } |
523 | |
524 | static S page_pastLives() {
|
525 | S title = "The Truth About \"Past Lives\" + What Jesus Does Today"; |
526 | ret htitle(hTitleClean(title) + " | Stefan Reich") |
527 | + hmobilefix () |
528 | + hGoogleFont("Nunito Sans:900")
|
529 | + hcenter2( |
530 | visitorsChart("float: left; margin-right: 20px")
|
531 | + youtubeLinkFloatRight() |
532 | + h1(title, "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px") |
533 | |
534 | + p(youtubeEmbed("2gh7KsJbWj4", 450, 300))
|
535 | |
536 | + h1("Database Tutorial", "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px")
|
537 | + p(youtubeEmbed("ChHhPgKFYy0", 300, 200))
|
538 | |
539 | + p(b(ahref("/screenshots", "Yesterday's news.")))
|
540 | + rest() |
541 | ); |
542 | } |
543 | |
544 | static S page_gc() {
|
545 | S title = "Perfect Java Garbage Collection!"; |
546 | S program = "http://tinybrain.de/1006458"; |
547 | S program2 = "http://tinybrain.de/1006272"; |
548 | ret htitle(title + " | Stefan Reich") |
549 | + hmobilefix () |
550 | + hGoogleFont("Nunito Sans:900")
|
551 | + hcenter2( |
552 | h1(title, "style", "font-family: 'Nunito Sans', sans-serif; margin-bottom: 0px") |
553 | |
554 | + p(youtubeEmbed("kTFS3V4PnQM", 600, 400))
|
555 | |
556 | + p(b("Enjoy! ") + targetBlank(program, "Program.") + " " + targetBlank(program2, "Program 2.") + " " + ahref("/editor", "Yesterday's news."))
|
557 | + rest() |
558 | ); |
559 | } |
560 | |
561 | static S pJavaXInstallations() {
|
562 | ret numComputers == 0 ? "" : |
563 | p(ahref("http://javax.ai1.space", "JavaX") + " installations: " + b(targetBlank("http://tinybrain.de:8080/tb/all-computers.php", numComputers)) + " and counting!");
|
564 | } |
565 | |
566 | static S visitorsChart(S style) {
|
567 | ret himg("http://www.botcompany.de:8080/1004435/raw?q=visitors+chart", "width", "150", "height", "110", "style", "border: 2px solid black; border-radius: 5px; " + style);
|
568 | } |
569 | |
570 | static S youtubeLinkFloatRight() {
|
571 | ret div(targetBlank("https://www.youtube.com/channel/UCSvK6EfxnMTajbe-Qpc6NvA", himg("http://eyeocr.sourceforge.net/filestore/filestore.php?cmd=serve&file=blob_1006478&contentType=image/jpeg", title := "YouTube", width := 57, height := 35, align := "absmiddle")), "style", "float: right");
|
572 | } |
573 | |
574 | !include #1006016 // screenshotLink etc. |
download show line numbers debug dex old transpilations
Travelled to 19 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, jmyaexzvplwz, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, sawdedvomwva, tslmcundralx, tvejysmllsmz, vouqrxazstgt, xfbsdwenvhih
No comments. add comment
| Snippet ID: | #1003253 |
| Snippet name: | New Homepage (LIVE) |
| Eternal ID of this version: | #1003253/86 |
| Text MD5: | eb632b2bd56d1713a97e9712dc6caefa |
| Transpilation MD5: | 69f1011d292b73c4329063ec97b37e5a |
| Author: | stefan |
| Category: | javax |
| Type: | JavaX source code (desktop) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2018-12-19 15:53:28 |
| Source code size: | 24202 bytes / 574 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 2598 / 11243 |
| Version history: | 85 change(s) |
| Referenced in: | [show references] |