REBOL3 - !Cheyenne (Discussions about the Cheyenne Web Server [web-public])

Return to Index Page
Most recent messages (300 max) are listed first.

#UserMessageDate
7480TerryWhat we need now is a JQuery dialect for scripting the DOM.. never needed to pass back JSON, but push well formed JS13-Jan 9:42
7479TerryVery simple, very cool.13-Jan 9:36
7478TerryIf you want to pull the value of a field for the first param.. <button onclick="ws.send('[{'+ $("#elementid).val(); +'} {} {isa} {person}]');return false;">GO</button>13-Jan 9:35
7477TerryHere's an example piece of JS that passes the params to this ws-app

<button onclick="ws.send('[{sofpandv} {} {isa} {person}]');return false;">GO</button>

13-Jan 9:33
7476TerryThe "load copy data" was last nights work.. didn't care too much about anything else..13-Jan 9:32
7475Terryto lazy to clean it up13-Jan 9:30
7474Grahamhow many copies do you need?13-Jan 9:30
7473Grahamwhy have you got

data: copy data and then load copy data ?

13-Jan 9:29
7472TerryHere's a better version.. with basic error notification;

on-message: func [client data][ ;-- escape all html tags for security concerns data: copy data replace/all data "<" "&lt;" replace/all data ">" "&gt;"

params: load copy data do-task/on-done data func [client data][ if error? try[do load %test2.r][out: "alert('error with test2.r');"] broadcast out ] ]

13-Jan 9:28
7471TerryNow i can edit the test2.r script at will . Im guessing this is still non-blocking?13-Jan 9:16
7470Terrytest2.r looks like this;

print params/1 out: "alert('ok');"

13-Jan 9:15
7469TerryThis works in answer to my last questions..

on-message: func [client data][ ;-- escape all html tags for security concerns data: copy data replace/all data "<" "&lt;" replace/all data ">" "&gt;"

params: load copy data do-task/on-done data func [client data][ n: do load %test2.r broadcast out ] ]

13-Jan 9:15
7468TerryHey Doc, refreshing the page after every change to a ws-app is painful. Can't we just DO a script using do-task/on-done, put some error checking on the front end? So that the ws-app is just a handler of sorts as well. could then set up a timer/schduler.. and makes changes live.. that would make script development 10x faster. Refreshing to reload ws app is like a compiler.13-Jan 8:48
7467DockimbelTerry, there's a Javascript group for such topics.12-Jan 21:21
7466TerryJison: An API for creating parsers in JavaScript http://tinyurl.com/yeravlz12-Jan 20:27
7465TerryThat includes all the Atom db functions and data12-Jan 15:25
7464Terryprobably about 2/3rds :)12-Jan 15:23
7463BrianHAs opposed to RSP and Cheyenne files, I mean.12-Jan 8:31
7462BrianHThat is horrifically large by REBOL standards, but not bad by web standards. How much is images and other web stuff?12-Jan 8:27
7461TerryI am a little concerned.. My entire cheyenne directory is rapidly approaching 2.5mb.12-Jan 8:22
7460Terrynevermind12-Jan 6:16
7459TerryLast issue is this.. n: [ one 'on' two 'tw'] n/one is returning on' (note the apos) What's up with that??12-Jan 5:37
7458TerryOk got it.. the problem was this.. I have two fields, and to test, i only filled out one... so the string looked like so.. "[one 'on' two '']" (where the value following two is a pair of single quotes) So when i converted to a block, I got an INVALID WORD --'' error. But, using sockets, the error isn't reported... In other words, debugging is a pain.12-Jan 5:32
7457TerryLooks like Cheyenne is my new serrogate home HA!12-Jan 5:26
7456Terryahh.. probe to the rescue (my rebol is so rusty.. if i add one more semi, or use ( instead of [ im going to barf.12-Jan 5:25
7455TerryNow the problem is escaping the response? (I always send back JS for DOM scripting purposes)12-Jan 5:18
7454TerryThe block comes back as a string! [one 'on' two 'tw']

But somehow it's getting encased in curlys or sumthin... so the best i can do is get a block like so

x: [[one 'on' two 'tw']]

12-Jan 5:17
7453PeterWoodr/one will only work if the data returned from ws includes the value one12-Jan 5:02
7452PeterWood>> x/one == 'on' >> x/1 == one

x/one is really a shortcut for select x 'one:

>> select x 'one == 'on'

12-Jan 5:01
7451PeterWoodTerry, are you mixing 1 and one ?12-Jan 4:59
7450TerryI can't turn data into a block no matter what i try?12-Jan 4:53
7449TerryWhy does this work

>> n: "one 'on' two 'tw'" == "one 'on' two 'tw'" >> x: to-block n == [one 'on' two 'tw'] >> x/one == 'on'

but not this (data is from ws)

r: to-block data r/one

12-Jan 3:22
7448Terryif you want the html... if(val== ''){val = $(this).html();}11-Jan 21:39
7447TerryThat function only deals with elements that have value attributes.. for pulling the content of, say a <p>, use this..

jQuery.each(arr, function(){ var val = $(this).val(); if(val== ''){val = $(this).text();} ......

11-Jan 21:38
7446Terryoops.. missing / in closing script tag11-Jan 21:29
7445TerryHere's some JS that takes an array of elements, and builds a block for passing to Rebol via WS

<script> function toblock(arr){ var block = '[';

jQuery.each(arr, function(){ var val = $(this).val(); var id = $(this).attr('id'); block = block+id+" '"+val+"' "; }); block = block+"]"; //remove, alert(block); }; <script>

<input id="one" type="text" /> <input id="two" type="text" />

<button onclick="toblock([one, two]);">TEST</button>

11-Jan 21:26
7444BrianHFortunately you can't create reference loops without DO, so if you stick to LOAD/all you should be fine.11-Jan 20:13
7443BrianHIt's great if the client won't primarily be a browser, as long as you stick to full dialects and never DO the code.11-Jan 20:07
7442BrianHNot for web clients. You have to assume the client is hostile for web stuff, and screening REBOL data for malicious stuff is harder than parsing JSON data. The only way to be safe is to not transmit an executable dialect - full data dialect, reject anything bad.11-Jan 20:04
7441TerryBut, it is rebol friendly11-Jan 19:59
7440BrianHIt requires more security screening than JSON on the server side, and more work on the client side.11-Jan 19:58
7439TerryHmm, that could be very handy.11-Jan 19:56
7438BrianHNot is you screen the data after loading and throw away all functions.11-Jan 19:50
7437Terryany security issues?11-Jan 19:46
7436TerryHow about this.. passing a block via websocket as a data method? (not even sure if it would work), and loading it? ie: ws.send("[a 'one' b 'two]");11-Jan 19:46
7435DockimbelTerry, sure, HTML5 opens up a new world for web applications, the gap with native apps is closing.11-Jan 18:40
7434Terryelse{golocalsql();}11-Jan 17:54
7433Terry<script> var online = navigator.onLine if(online){var conn = new WebSocket("ws://localhost/ws.rsp")} </script>11-Jan 17:53
7432TerrySo, jump on a plane, update your Cheyenne data, store local, and sync via ws when back online :)11-Jan 17:49
7431TerryAnother handy html 5 api.. Web pages can determine if the client is online. (returns boolean)

var online = navigator.onLine; alert(online);

11-Jan 17:48
7430Terryhttp://webkit.org/demos/sticky-notes/index.html11-Jan 17:23
7429TerryP2P11-Jan 17:19
7428DockimbelWS doesn't give you access to local filesystem.11-Jan 17:18
7427TerryMight even get away with partial file uploads, incrementals etc.11-Jan 17:18
7426TerryHmm, maybe not with WS?11-Jan 17:18
7425DockimbelBinary support / upload: these are 2 different things. Uploading files (access to local filesystem) still requires FORM with multipart/form-data encoding.11-Jan 17:17
7424TerryBTW, the typo wasn't in the config file, but in my ws app, If one app doesn't work, should the whole server come down?11-Jan 17:17
7423TerryEven non-form elements can be used..

<p id="myparagraph" onchange="ws.send(this.text);"> Lorem ipsum </p>

11-Jan 17:15
7422TerryThere's a blur with websockets.. traditional usage takes a form, serialize and send to the server as a associative array in the url.. With sockets, that's not necessary. Forms are becoming less relevant.. As individual fields can do their own thing..

<input type="text" onblur="ws.send(this.val());">

11-Jan 17:10
7421TerryI guess the binary support would go hand in hand with your new upload script?11-Jan 16:52
7420TerryJSON was my first thought.. but I think I'll build a custom "data format" using triples to keep inline with the back end.. still thinking about it.11-Jan 16:43
7419DockimbelSVN r61 FEAT: added request/store function to help manage uploaded files (see %changelog.txt). FIX: IE issue with upload.html (cache issue). Works ok in IE now. DOC: upload API documented in %www/upload.html.11-Jan 16:15
7418DockimbelIE issue fixed with upload.html. It wasn't a settimeout( ) issue, it was a IE caching all the AJAX responses.11-Jan 14:48
7417DockimbelBtw, keep in mind that defining a "standard" protocol above web sockets goes against its primary purpose : provide a general purpose packet-oriented communication channel. It would be like defining a "standard" protocol above TCP.

For practical usage with JS clients, JSON data format is the way to go. Don't forget that the web socket implementation in Cheyenne is partial, only TEXT frames are supported currently. I could add the binary support also, but I don't have a need for that for now. If someone has a *real* need for that, let me know.

11-Jan 12:00
7416DockimbelTypos errors in config file should be caught, what kind of typo was that?11-Jan 10:06
7415Dockimbeltake the reb-services dialecting approach and format it in JSON ;-)11-Jan 10:04
7414Dockimbelstandard protocol for sockets : JSON.11-Jan 10:02
7413Dockimbelmod-upload: it was missing, it's in the repository now.11-Jan 10:02
7412TerryDoc, any thoughts on a standard protcol for sockets? xml?11-Jan 6:23
7411TerryI'm curious as to lag around the world (should add geocaching i suppose)11-Jan 5:03
7410TerryWorking on some websocket experiments.. http://shinyrockets.com/exper.html

- simple canvas game... Losing the game publishes the fail , ip and port to everybody.

11-Jan 5:02
7409Terryshould have some default error trapping for socket-apps in the http.cfg file, no? One typo brings the whole server down.11-Jan 4:57
7408TerryAfter updating the SVN, I get a

id: 'cannot-open arg1: "/c/websock2/Cheyenne/mods/mod-upload.r"

and the file is not there.

11-Jan 4:46
7407Dockimbel10 Mbps => 10MB10-Jan 20:58
7406DockimbelThis mod-upload version is unsuitable for production yet, the upload tokens on server are not garbage-collected.10-Jan 20:51
7405DockimbelIf you're testing the upload demo locally, be sure to pick a file big enough (at least 10 Mbps). Don't worry about uploaded files, the target script (show.rsp) doesn't save them, so the server's copy will be deleted as soon as the upload is finished.10-Jan 20:47
7404DockimbelHelp would be appreciated to solve or workaround the setTimeout() issue with IE.10-Jan 20:43
7403DockimbelSVN r59 : experimental mod-upload released. This new mod adds server-side API for querying realtime progress info on uploaded files. See the demo : http://localhost/upload.html (not commented yet).

Current restrictions: - works only when posting one file at a time in a given <form>. - can't make it work for IE (IE seems to have an issue with setTimeout( ) method).

10-Jan 20:42
7402TerryI used flash as an application framework for an engineering co once.. one of the biggest mistakes of my career.10-Jan 17:24
7401Terryraisin10-Jan 17:19
7400Dockimbelrising10-Jan 10:48
7399DockimbelMaybe Flash usage for sockets, animations, games and videos might start dropping soon, but as an application framework engine, its usage keeps raising.10-Jan 10:46
7398DockimbelActionScript, which is Flex's programming language is now in #19 in Tiobe's index.10-Jan 10:37
7397Dockimbel"who's interested to do real apps in Flash?" http://www.adobe.com/products/flex/buzz/customers/list.html10-Jan 10:32
7396Dockimbel"Flash might move to RIA" : it's already done, it's called "Flex".10-Jan 10:30
7395PekrFlash might move to RIA (but who's interested to do real apps in Flash?) or - many mp3 etc vendors are doing their UI using flash. As for html 5, we are still talking vapor, unless it is supported by most browsers, which are used by most ppl IE still has 62% of share, and IIRC CSS3 and HTML5 are going to be supported in IE9. How long do you think will it take to replace those 60% of IEs out there by IE9? Well ... I know what you are trying to say ... it is inevitable ... but ... not yet, not yet :-) .... this probably belongs to advocacy though ....10-Jan 10:24
7394TerryI think it's official.. Flash is dead.

I was modifying some flash xmlsocket based apps to work with Cheyenne websockets, and then realized, why bother? I can do it all with HTML 5

HTML 5 has.. CANVAS AND VIDEO http://www.youtube.com/watch?v=Kdf0x8am1cg&feature=player_embedded# chroma key effect. http://www.youtube.com/watch?v=ZN_r9jxL0-A&feature=player_embedded

LOCAL STORAGE Chrome has SQLite built in, accessible via JS

10-Jan 9:46
7393TerryHmm, the last person to run the atom demo had a 6971.28.. second 'round trip' .. wonder what happened there?9-Jan 19:28
7392TerryDoc, Flash's core strength (animation) is quickly evaporating.9-Jan 19:25
7391TerryFlash would be the best way to interface with older browsers via sockets. JQuery <=> Flash <=> Cheyenne

Although it's not necessary, I only push Javascript back to the DOM manipulation. (Hence the need for a JS dialect.. specifically JQuery)

9-Jan 19:24
7390JankoI think not, older brosers only have xmlhttp (ajax) option, iframes and other comet like tricks but they can't do a socket .. I haven't seen what js.io does.. if you wanted to make a "pure" html chat without comet or polling you made JS that talked to invisible 1px flash and flash has XMLSocket or something like that. But I heard recently that it can be used for other things than xml ..9-Jan 15:44
7389KajThe only way I've heard of to do WebSocket in older browsers (almost all of them right now) is the Flash implementation9-Jan 15:43
7388KajI hoped so at first, but it seems to be a different system9-Jan 15:42
7387DockimbelCan't older browsers use some JS layer simulating web sockets like js.io library?9-Jan 15:36
7386KajUnless we need Flash to get at web sockets from older browsers9-Jan 15:25
7385DockimbelTerry: interesting links, so we might get rid of flash soon, no?9-Jan 12:21
7384DockimbelJanko: I have in my todo list a full virtual system to add to Cheyenne allowing embedding webapps in a encapped Cheyenne. It can be done by replacing every filesystem accessing functions (DO, LOAD, READ, WRITE,...) by custom ones getting files from memory. The hard part is to integrate such approach within Cheyenne preserving perfomances for normal filesystem accesses while avoiding redundant code, this needs time for designing and prototyping.

I can't see an easy way to protect you webapps right now, but maybe other might have found a way to do that?

9-Jan 12:19
7383JankoI am usually for not complicating with this but this webapp is of classical competetive scene as will also still run as online service so I want to prevent that competitors could too easily study it , find any possible weaknessess etc...9-Jan 11:10
7382JankoWhat woudl be the best way to do some casual source code protection of cheyenne webapp if you want to distributte it as a "download and install" option. I guess I could make some sort of code obfuscator that would change the names to something without meaning, is there anything better one could do?9-Jan 11:07
7381TerryA couple lines of code and you could create a live chart displaying the various times folks are getting, including geo location etc9-Jan 10:07
7380TerryFunny thing is, if your "ATOMDB Query time:" changes randomly? That means someone else is running the test, and their results are being broadcast to your browser. HOW COOL IS THAT!9-Jan 10:05
7379TerryFont used is DroidSans.. can download for free from -> http://www.fontsquirrel.com/fonts/Droid-Sans9-Jan 9:38
7378TerryDemo includes; - websocket roundtrip timer - ATOMDB query timer - Example of changing a graphic when socket is closed. - Font-face demo (another HTML 5 feature that allows ANY font in a webpage .. see the <style> on the page9-Jan 9:37
7377TerryWS to AtomDB demo http://shinyrockets.com/atom.html9-Jan 7:58
7376TerryTry it on Chrome.. much faster.9-Jan 0:42
7375KajHm, those last two work fairly well on my ancient Firefox 1.59-Jan 0:41
7374TerryNow THIS is very cool use of CANVAS http://www.universaloscillation.com/chrome/popups/9-Jan 0:37
7373GreggIndeed. Thanks here too.9-Jan 0:34
7372TerryAnother.. try shaking the browser

http://mrdoob.com/projects/chromeexperiments/ball_pool/

9-Jan 0:33
7371KajThanks for the links, Terry. Busy bookmarking here9-Jan 0:33
7370GreggIsn't that Doc's old v-balls demo? ;-)9-Jan 0:31
7369TerryThis one is nice http://www.chromeexperiments.com/detail/depth-of-field/9-Jan 0:26
7368TerryYeah, Doc.. was hoping for a condensed version seeing as you've done the whole learning curve.9-Jan 0:03
7367TerryWill try some experiments using Canvas and websockets.. here's some great examples

http://www.chromeexperiments.com/

9-Jan 0:01
7366DockimbelWeb socket protocol is fully described here : http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol

Quick protocol overview : http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-68#section-1.2

8-Jan 23:20
7365TerryI haven't heard a single sheep all day? No one is trying the demo :)8-Jan 22:55
7364TerryDoc, Im going to develop some rebol and flash apps that connect to Cheyenne via the websocket. What is the procedure for the handshaking?8-Jan 21:05
7363DockimbelHit F5 several times, it should always answer ok if Cheyenne is running with -w 0.8-Jan 12:40
7362DockimbelTry testing with this script :

<% either value? 'azerty [ print "debug mode not working" ][ print "debug mode is working ok" set 'azerty 1 ] %>

8-Jan 12:39
7361Dockimbel0.9.19 binary works ok here in -w 0 debug mode.8-Jan 12:38
7360Jankomaybe I should better explain what I am doing so I won't steal your time here (and it's no problem basically as I will turn all global words that are only locally needed to something else) .. it's bad coding practica anyway8-Jan 12:00
7359JankoI tried cheyenne -vv -w 0 ; and now cheyenne - w 0 .. with same result8-Jan 12:00
7358DockimbelIt's : - w 0, -w only won't work, it expects the number of worker processes as argument. It should work ok with both source and binary version. I'll make a test right know with 0.9.19 binary...8-Jan 11:56
7357Janko1) I tried -w before (I remembered you hinted me the last time to use it to always reload) but it didn't make the difference in this case (as far as I can tell).. does -w only work with source discributtions?8-Jan 11:44
7356DockimbelBtw, since 0.9.19, the RSP engine tries to catch all words defined in RSP scripts but outside of a local context in a hidden webapp context (one per worker process).8-Jan 11:42
7355Dockimbel1) I use -w 0 daily, works ok here. 2) see the solution in Core group.8-Jan 11:38
7354Jankoone solution is also that I define all words local to pageload in some object that is cleared on each pageload probably8-Jan 10:55
7353JankoI just found out about a bug I was making and could only be discovered when cheyenne was first started, because some word was undefined then so it triggered an error, if I did some other things I couldn't see it but it would return wrong information in reality ..

1. is there any way maybe that would make cheyenne "reset" each request (for debugging & testing purposes, not production) .. the -w option seems not to do this.

this could probebly be solved by wrapping also those parts in functions ... another question..

2. Is there any way I could see all globals I created so I could find wtich ones I "leaked" unintentionally ..

it would be very helpfull if rebol could let you define functs that would warn you if you used or defined any global words

8-Jan 10:43
7352TerryI guess you can check out the 'console' after hitting CTRL - SHIFT - i .. check for errors8-Jan 10:20
7351amacleodyes8-Jan 10:18
7350amacleodthats weird8-Jan 10:18
7349Terryvolume up.. all that stuff?8-Jan 10:18
7348Terryit's playing here when you click it8-Jan 10:18
7347amacleodStill no sound...even when clicking the button8-Jan 10:17
7346Terryi can hear it :)8-Jan 10:16
7345Terrythere ya go8-Jan 10:16
7344amacleodyes8-Jan 10:16
7343TerryDid you click the button?8-Jan 10:16
7342amacleodyes8-Jan 10:16
7341Terrycan you get this? http://upload.wikimedia.org/wikipedia/commons/3/39/Brummdose.ogg8-Jan 10:15
7340Terryworks fine here.8-Jan 10:15
7339Terryhmm8-Jan 10:13
7338amacleodNot getting any sound, Terry..

using chrome4

8-Jan 10:13
7337TerryUses the HTML 5 <audio> tag. Non-blocking. Open up 4 or 5 tabs and you get a flock :)8-Jan 10:12
7336TerryDemo.. pushing sound to all ports

http://shinyrockets.com/echo.html

8-Jan 10:11
7335TerryHere's some code that uses flash as a websocket proxy for browsers that don't support websockets http://github.com/gimite/web-socket-js

Needs some tweaking, particularly with ports.

8-Jan 7:36
7334TerryNope, wrong again.. workers are fine in Chrome.. that last demo only works with FF

Here's some other demos on Resig's page http://ejohn.org/blog/web-workers/

7-Jan 23:35
7333TerryHmm, maybe Chrome 4 isn't there yet after all?7-Jan 23:07
7332TerryNeed to try an experiment where a worker thread sends an AJAX request to an RSP page, which in turns pushes back via websocket :)7-Jan 22:47
7331Maximthat is nice!7-Jan 22:45
7330TerryHere's a great webworker article / demo http://blog.mozbox.org/post/2009/04/10/Web-Workers-in-action7-Jan 22:45
7329TerrySpeaking of threads.. Along with Websockets, HTML 5 comes with Webworkers (supported by Chrome as well)

"Workers provide a simple means for web content to run scripts in background threads. Once created, a worker can send messages to the spawning task by posting messages to an event handler specified by the creator. The worker thread can perform tasks without interfering with the user interface. In addition, they can perform I/O using XMLHttpRequest (although the responseXML and channel attributes are always null). The Worker interface spawns real OS-level threads, and concurrency can cause interesting effects in your code if you aren't careful."

https://developer.mozilla.org/En/Using_web_workers

7-Jan 22:44
7328GrahamAmazon allows you free db storage in multiple redundant locations7-Jan 20:57
7327TomBonI am using both, slicehost and linode since a year now. very good virtualisation with both of them. flash, mysql very stable, even a big mysql-server with only 384mb ram is running fine. linode has a better control panel, slicehost feels a little faster.

there is also another candidate for virt-hosting. gandi, located in france if somebody likes europe :-) scalable via virt-shares.

https://www.gandi.net/hosting

7-Jan 20:44
7326MaximWith linode you can actually do fancy multi-host redundancy stuff or auto reboot on some conditions, etc. their control panel is also extremely well made. you can setup your server (out a good variety of POSIX OSes) in a matter of minutes.7-Jan 20:05
7325TerryCarl, you have any thoughts on websockets?7-Jan 19:32
7324TerryHey, its 2010.. where's my flying car they promised back in the 60's?7-Jan 19:31
7323CarlT: yep. Blast from the past.7-Jan 19:30
7322Grahambut costs a little more.7-Jan 19:22
7321GrahamMuch more flexible I suspect than Linode or Slicehost7-Jan 19:22
7320TerryCGI proxy? They still make that stuff ;)7-Jan 19:22
7319GrahamSo, you can test for a couple of hours and then quit. Want to run a windows 2003 or 2008 server to test? Start them up and pay 12 c an h our.7-Jan 19:22
7318GrahamAmazon charge only for uptime .. at 8c an hour.7-Jan 19:21
7317Carl(It pipes all R3 Chat connections via a CGI proxy.)7-Jan 19:20
7316CarlI'd be quite interested in testing R3 Chat on Cheyenne. Right now, it must drive the rebol.net server crazy on CGI.7-Jan 19:20
7315HenrikDockimbel, yep, nice and stable. Love it.7-Jan 19:19
7314CarlH: This AltME world runs from a different provider (via rebol.net), so is not typical.7-Jan 19:19
7313HenrikCarl, all I can say is that I've had much fewer connection dropouts with my Linode than what I observe through AltME. It may not reflect your situation, but it just looks far more stable to me. Also you can specify where you want your server placed, and so have multiple accounts in different physical locations.7-Jan 19:17
7312GrahamI'm hosting 5 virtual sites on mine using Cheyenne ...7-Jan 19:17
7311DockimbelHenrik: nice!7-Jan 19:16
7310GrahamMy site on EC2 is private .. http://gchiu.no-ip.biz:8000/7-Jan 19:16
7309CarlG: all.7-Jan 19:14
7308CarlH: cool. Cheyenne.7-Jan 19:14
7307Grahamor IOS?7-Jan 19:14
7306GrahamIs this for altme?7-Jan 19:14
7305CarlFrankly, the biggest problem I have is long lags/dropouts on connection times.7-Jan 19:13
7304HenrikCarl, I already do. You can see my site at: http://97.107.135.89/www.hmkdesign.dk/project.rsp?id=vid-ext-kit&page=info7-Jan 19:13
7303Grahammoving to ~science7-Jan 19:13
7302CarlQuestion: what about connect latency?7-Jan 19:13
7301TerryForget all that.. think WEBSOCKETS!7-Jan 19:13
7300Graham$300 vs linode of $240 pa.7-Jan 19:13
7299CarlP: yes, move to other group. I will respond.7-Jan 19:13
7298Pekrmaybe we should move out of this group?7-Jan 19:12
7297GrahamAmazon is Small Instance (Default) 1.7 GB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB of local instance storage, 32-bit platform If you commit to a 3 year term it is only $300 per year7-Jan 19:12
7296PekrCarl - how goes rebol.com redesign? Do you have any gfx proposals already?7-Jan 19:12
7295CarlThis is quite interesting, esp if we can run REBOL as the primary services.7-Jan 19:12
7294Henrikwell, go ahead :-) redundancy is good.7-Jan 19:12
7293CarlIf can cancel anytime, then why not try both?7-Jan 19:11
7292HenrikI chose Linode, because they offer a bit more for the same money. But it's probably a matter of taste.7-Jan 19:11
7291CarlThis actually looks pretty good. I was leaning toward Amazon... but...7-Jan 19:10
7290Henrikand you can cancel at any time, if you don't like it.7-Jan 19:10
7289Carllol, Slicehost.com: "No contracts, no setup fees."7-Jan 19:10
7288CarlIf so, 384MB is fine. chop chop7-Jan 19:09
7287CarlDo they allow you to custom config?7-Jan 19:09
7286HenrikThe only gripe I have is not much RAM (384 MB), but still for 20 bucks/month. As a side effect, I use it now for IRC and other minor services, like makedoc and some source hosting.7-Jan 19:08
7285GrahamAnd yes, you can listen on what you like... you define the firewall settings7-Jan 19:07
7284GrahamYou can save images of your entire site and just restart from that.7-Jan 19:07
7283GrahamI use Amazon EC2 and it's reliable to a point .. if it goes down I just start another instance ... and in 6 months, I've only had to do that once.7-Jan 19:06
7282HenrikI had one breakdown for some hours, but their response was very detailed. I use Linode. As I understand it, Slicehost were recently purchased by Rackspace (buyouts = alarm bells).7-Jan 19:06
7281CarlSo, Do they let me listen on any ports?7-Jan 19:06
7280CarlIf truly virtual, and good performance, that's a good place to checkout.7-Jan 19:05
7279HenrikSo I can finally run Cheyenne on a high bandwidth server.7-Jan 19:05
7278CarlG, H: really. So, are they fast and reliable?7-Jan 19:05
7277HenrikSlicehost and Linode run virtual servers. So you don't have to setup your own box. Very nice.7-Jan 19:05
7276GrahamLinode is similar .. Amazon is more expensive ...7-Jan 19:04
7275CarlG: well, those were different days.7-Jan 19:04
7274GrahamChoose your own distro ... and install it.7-Jan 19:04
7273GrahamC: you can do pretty much what you want apart from hosting adult content7-Jan 19:04
7272CarlH: problem is, no provider is going to let you install it.7-Jan 19:03
7271GrahamAnd he's come back to tell you this?? :)7-Jan 19:03
7270CarlG: slicehost allows running your own server??7-Jan 19:03
7269HenrikI assume an R3 apache mod would not be far away, possiblity wise?7-Jan 19:03
7268CarlBut, I felt it was a kludge back in 2000.... however I think Jeff K was right.7-Jan 19:03
7267TerryHmm, that would have been interesting.7-Jan 19:03
7266CarlLast week, when reviewing the R2 build... I finally had a regret that we never released the apache mod for R2.7-Jan 19:02
7265Grahamslicehost is $10 or $20 a month7-Jan 19:02
7264CarlReason is, if you don't want to use Php, and you want economies of large hosting providers, that's your main choice. Else, Perl. <gag>7-Jan 19:01
7263CarlH: yes, it's a bit odd. I thought CGI was dead 8 years ago.... but then, NO.7-Jan 19:01
7262CarlG: It runs on a large hosted provider.7-Jan 18:59
7261HenrikI call it "why didn't we have this 10 years ago".7-Jan 18:59
7260Pekrwhat Terry tries to say imo is, that nowadays the web proceeded, and it is much more dynamic, so that even RSP sounds old-school ...7-Jan 18:59
7259GrahamWhy aren't you using Cheyenne for rebol.com ?7-Jan 18:59
7258CarlI would call this "design refactoring" ... a high level form of "code refactoring".7-Jan 18:58
7257CarlAs I wrap up WIP3 for the current website redo, it seems a bit odd that each time, the WIP system gets smaller and better.7-Jan 18:58
7256CarlHi guys. Yes, you really can divide the scripting needs into just a few primary categories.7-Jan 18:57
7255TerryI don't like page refreshing.. should trigger an event, and all the elments fade out, and new ones fade in. You can do this kind of stuff with AJAX, and even more so now with WS7-Jan 18:56
7254TerryRSP is fine, but I just don't like the whole 'preprocessor ' approach.. it's too 19957-Jan 18:55
7253TerrySo, to copy this method into Cheyenne websockets, i need to 'DO' .r scripts.. not rsp.7-Jan 18:53
7252TerryBTW.. i use PHP as a language, not for it's "Hypertext preprocess" ... 85% of my php has no html in it at all. Mainly use PHP to receive and process AJAX form requests7-Jan 18:52
7251DockimbelStill needs an improved virtual filesystem to easily run RSP web apps from memory, but for custom embedded REBOL apps, it should work ok.7-Jan 18:45
7250TerryYeah, my stuff is all using the embedded feature.. very nice.7-Jan 18:43
7249DockimbelTo start addressing these markets, I need a 1.0 Cheyenne (means finish some features + units tests + full docs).7-Jan 18:42
7248TerryWrite some simple docs outlining websockets, and I'll get you to 50K in a month.7-Jan 18:41
7247DockimbelBtw, the target market that was at the origin of Cheyenne project was home web servers, both for local and external use (serving files and apps from your home connection). The main feature was supposed to be simplicity of use through a very simple, but powerful control panel, and on-demand app loading (something like App Store, but for web apps). Another market that we've thought about was portable embedded web apps (server + apps bundled in a single exe with 0 install, 0 config).7-Jan 18:41
7246DockimbelThat's the plan once Cheyenne reaches 100K users. ;-)7-Jan 18:36
7245TerryOr maybe GPL and commercial7-Jan 18:35
7244TerryOne BSD, the other commercial7-Jan 18:34
7243TerryYou should probably dual license Cheyenne.7-Jan 18:33
7242TerryCheyenne OS7-Jan 18:31
7241TerryThere ya go..7-Jan 18:31
7240Dockimbel"Cheyenne Scripting Language", sounds good. ;-)7-Jan 18:31
7239TerryThe desktop is dead, unless you're building a better browser, or games.. and even that distinction is blurring. I'll bet people play more online browser based games than desktop.. Folks have moved from desktop to console.7-Jan 18:31
7238DockimbelFrom a purely marketing POV, that might make sense. ;-)7-Jan 18:30
7237TerryIn my books, Rebol should change it's name to Cheyenne.7-Jan 18:29
7236DockimbelIt's not a matter for me to favor REBOL against PHP for builting apps (everyone is free to choose), but just that there are better tools to run PHP code than Cheyenne. OTOH, I'm not sure there's better choice currently than Cheyenne to run REBOL web apps.7-Jan 18:28
7235TerryThe other option is to build a higher level dialect of some sort. Even developers would switch if the switch was dead simple.7-Jan 18:26
7234DockimbelTerry, the point is that if you want to make PHP apps, you should better stick with another web server more adequate to PHP like Apache or Lightttpd. Cheyenne's PHP support has been done mainly to be able to integrate existing PHP apps in REBOL powered web sites, not build new ones.7-Jan 18:24
7233TerryÜberchat7-Jan 18:23
7232TerryNow all you need to do is come up with the killer app :)7-Jan 18:22
7231TerryRuby on Rails looks interesting, but not interesting enough for me to spend more than an hour 'playing' with it. BUT.. if RoR built some killer app that let me config it, I would take the time.7-Jan 18:21
7230TerryI plan on making my apps in Rebol, but 99.99999% of the developer world won't be so 'inspired'. You may get away with it if you can build a killer app, which may very well happen now. Otherwise, it will be a hobby, like Rebol.7-Jan 18:18
7229DockimbelThat may be possible, but would be more complicated to support than web sockets as the server can't send data without getting a request. It will be hard to extend the web socket application framework without bloating it. Maybe a separated mod-comet would be a cleaner approach (but might duplicate a Iot of code in mod-socket). I will give it a look anyway, at least to estimate the time required to support it.7-Jan 18:18
7228KajDoesn't have to be perfect, just facilitate a migration period for older browsers7-Jan 17:57
7227KajTo that end, any chance you could extend your WebSocket framework with a somewhat similar Comet-like functionality for older browsers, that only uses Ajax?7-Jan 17:56
7226DockimbelPHP connection: it should be possible with minimal modifications, but why would you want that? Is there any significant PHP socket app yet ready to use? My goal in adding web sockets early in Cheyenne is to push developers to make nice apps in REBOL, not PHP.7-Jan 17:46
7225DockimbelSocket apps folder automatic loading : you still need to specify the mapping between URL and socket app, no ?7-Jan 17:42
7224TerryAll in all doc, cheyenne sockets are very impressive. Couple of suggestions.. - Have a folder specifically for socket-apps that automatically get loaded into the http.conf file.. - Create a connection through PHP (if possible.. otherwise can just proxy, but adds lag)7-Jan 17:31
7223TerryYeah, in Chrome, hit CTRL-SHIFT- i7-Jan 17:25
7222TerryThat chat.html I made was a quick hack of yours. Need to build proper cookie mgmt functions.. deal with sessions etc.7-Jan 17:24
7221PekrDoes Chrome have anything like FireBug or WebDeveloper extension in FF?7-Jan 17:23
7220TerryDoc, i was referring to my modified chat.html regarding the 'signout' issue.7-Jan 17:22
7219TerryAhh.. shift-reload to clear cache, and nice debugging/developer tools.. Chrome is well thought out.7-Jan 17:21
7218DockimbelI'm not sure for Chrome, isn't F5 a simple page reload (without clearing the cache)?7-Jan 14:30
7217PekrShift + Reload (I am used to it) = F5 btw ....7-Jan 14:24
7216DockimbelBtw, you may need to Shift+Reload in Chrome to get the latest chat code.7-Jan 14:23
7215DockimbelCookies: well, it would be a nice addition to a real chat app, but the point in this demo is to show web socket usage, not to build a full-featured chat app. If you want to build a full chat app, you're free to take my demo code and extend it as far as you wish.7-Jan 13:24
7214DockimbelI've opened 2 Chrome windows logged in the online chat demo from both of them and I receive correctly in the first window the quit message from the second one. How can I reproduce your issue?7-Jan 13:19
7213TerryNo cookies? I like cookies.6-Jan 23:49
7212TerryNeed to fix the 'signout' updates to other ports.. it's not sending the "bob leaves" message, and it's not updating the user list <div>6-Jan 23:43
7211DockimbelThanks Terry, I've upgraded the chat demo with most of your changes. I've also included an alert message for non-compliant web browsers.6-Jan 23:10
7210TerryUpdated version of Doc's chat example.. - Enter key support for login and posting chats - Cookie mgmt for user name - various "tweaks" to the JQuery

chat2.html: http://pastebin.com/m66a38d50

6-Jan 21:31
7209TerryAdd this to the $(document).ready(function(){ ... } in chat to submit chats using the enter key;

$("input").keypress(function (e) { if (e.which == 13 ) { ws.send('m' + user + ': ' + $("[name=post]").val()); $("[name=post]").val(''); $("[name=post]").focus(); } });

6-Jan 17:10
7208TerryChrome has a great JS debugging tool.. In the icon on the top left that looks like a page, open developer -> Javascript console6-Jan 16:34
7207DockimbelTurning off DNS prefetching is explained here : http://jackkonblog.blogspot.com/2009/03/turn-off-dns-pre-fetching-in-google.html6-Jan 16:00
7206TerryYou don't say that to your patients as well, i hope ;)6-Jan 15:58
7205TerryHmm, maybe programming isn't your forte.6-Jan 15:57
7204GrahamTerry .. I gave up6-Jan 4:05
7203TerryGraham, did you shut off the Chrome dns prefetching?6-Jan 3:55
7202TerryBrian, I'm comparing with Altme only.. Desktop vs client/server is a whole other argument.6-Jan 3:54
7201BrianHServer-side web stuff is fun though.6-Jan 0:46
7200BrianHMust be just me, I guess.,6-Jan 0:45
7199BrianHI like some of the stuff on that list, but I like doing it better without HTML/JS/CSS.6-Jan 0:45
7198BrianHIt's funny, Terry, but I keep agreeing with your sarcastic list once I filter out the stuff that I can do easier without a web browser, or that aren't necessary at all when you aren't using one.6-Jan 0:44
7197GrahamI'd ask Terry to write it for Cheyenne... but I suspect that we'll never be able to reach it because of dns issues!6-Jan 0:39
7196Terryand some sound js lib as well6-Jan 0:37
7195TerryI have a hotkey javascript library I'll hook up.6-Jan 0:36
7194KajWeb chat it will be6-Jan 0:34
7193GrahamAnd hacking of php ... yep6-Jan 0:24
7192Terry... integrating Processing... http://processingjs.org/exhibition6-Jan 0:24
7191Terry... CSS, database access, acting as a proxy to servers, JQuery, Google map integration, Amazon S3, OpenID, AtomAPI and other RSS integration, Delicious... man, i HATE that stuff.6-Jan 0:22
7190Grahamdon't forget unintended deletion of forum channels!6-Jan 0:20
7189BrianHYup, I agree, at least the parts that need the web to do (which isn't much on that list).6-Jan 0:15
7188TerryYeah, web chats.... avatars, skins, website integration, API integration with gmail, animations, sound, video and other media integration... those things really suck6-Jan 0:14
7187BrianHAll good criticisms, except the "proprietary" one. It could be worse though - it could be a web chat.6-Jan 0:07
7186TerryMethinks the Cheyenne world would be much better serviced using Cheyenne chat rather than this archaic, uneditable, uncustomizable, proprietary and difficult to enter thing called Altme6-Jan 0:05
7185TerryThis is helpful as well.. in the chrome address bar type; about:dns5-Jan 20:28
7184TerryArticle regarding chrome dns prefetching

http://tinyurl.com/4adsdd

5-Jan 20:27
7183TerryOk.. Chrome has a "prefetch dns" option.. so my demo was caching the ip rather than the domain I've updated the domain to a proper dns record, rather than just forwarding. If you still can't see the demo, turn off "prefetch dns".. temporarily

http://shinyrockets.com/ws2.html

5-Jan 20:25
7182Grahamcause there is a default directory for all incoming file data ...5-Jan 18:28
7181JankoI am using 0.9.19, no problem just wanted to mention.

@Graham: can I ask why are you doing this (checking for file OR data in request/content): either file? filedata/2 [ write/binary join get-user-dir filename read/binary join incomingdir filedata/2 ] [ if filedata/2 [ write/binary join savedir filename filedata/2 ] ]

I imagine if file is bigger it get's saved and you copy it. But how can you then determine the incoming/pwd is this some cheyenne default?

5-Jan 12:34

Return to Index Page