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

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

7480TerryWhat we need now is a JQuery dialect for scripting the DOM.. never needed to pass back JSON, but push well formed JS13-Jan-10 9:42
7479TerryVery simple, very cool.13-Jan-10 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-10 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-10 9:33
7476TerryThe "load copy data" was last nights work.. didn't care too much about anything else..13-Jan-10 9:32
7475Terryto lazy to clean it up13-Jan-10 9:30
7474Grahamhow many copies do you need?13-Jan-10 9:30
7473Grahamwhy have you got

data: copy data and then load copy data ?

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

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

13-Jan-10 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-10 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-10 8:48
7467DockimbelTerry, there's a Javascript group for such topics.12-Jan-10 21:21
7466TerryJison: An API for creating parsers in JavaScript 20:27
7465TerryThat includes all the Atom db functions and data12-Jan-10 15:25
7464Terryprobably about 2/3rds :)12-Jan-10 15:23
7463BrianHAs opposed to RSP and Cheyenne files, I mean.12-Jan-10 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-10 8:27
7461TerryI am a little concerned.. My entire cheyenne directory is rapidly approaching 2.5mb.12-Jan-10 8:22
7460Terrynevermind12-Jan-10 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-10 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-10 5:32
7457TerryLooks like Cheyenne is my new serrogate home HA!12-Jan-10 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-10 5:25
7455TerryNow the problem is escaping the response? (I always send back JS for DOM scripting purposes)12-Jan-10 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-10 5:17
7453PeterWoodr/one will only work if the data returned from ws includes the value one12-Jan-10 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-10 5:01
7451PeterWoodTerry, are you mixing 1 and one ?12-Jan-10 4:59
7450TerryI can't turn data into a block no matter what i try?12-Jan-10 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-10 3:22
7448Terryif you want the html... if(val== ''){val = $(this).html();}11-Jan-10 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-10 21:38
7446Terryoops.. missing / in closing script tag11-Jan-10 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-10 21:26
7444BrianHFortunately you can't create reference loops without DO, so if you stick to LOAD/all you should be fine.11-Jan-10 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-10 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-10 20:04
7441TerryBut, it is rebol friendly11-Jan-10 19:59
7440BrianHIt requires more security screening than JSON on the server side, and more work on the client side.11-Jan-10 19:58
7439TerryHmm, that could be very handy.11-Jan-10 19:56
7438BrianHNot is you screen the data after loading and throw away all functions.11-Jan-10 19:50
7437Terryany security issues?11-Jan-10 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-10 19:46
7435DockimbelTerry, sure, HTML5 opens up a new world for web applications, the gap with native apps is closing.11-Jan-10 18:40
7434Terryelse{golocalsql();}11-Jan-10 17:54
7433Terry<script> var online = navigator.onLine if(online){var conn = new WebSocket("ws://localhost/ws.rsp")} </script>11-Jan-10 17:53
7432TerrySo, jump on a plane, update your Cheyenne data, store local, and sync via ws when back online :)11-Jan-10 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-10 17:48
7430Terry 17:23
7429TerryP2P11-Jan-10 17:19
7428DockimbelWS doesn't give you access to local filesystem.11-Jan-10 17:18
7427TerryMight even get away with partial file uploads, incrementals etc.11-Jan-10 17:18
7426TerryHmm, maybe not with WS?11-Jan-10 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-10 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-10 17:17
7423TerryEven non-form elements can be used..

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

11-Jan-10 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-10 17:10
7421TerryI guess the binary support would go hand in hand with your new upload script?11-Jan-10 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-10 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-10 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-10 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-10 12:00
7416DockimbelTypos errors in config file should be caught, what kind of typo was that?11-Jan-10 10:06
7415Dockimbeltake the reb-services dialecting approach and format it in JSON ;-)11-Jan-10 10:04
7414Dockimbelstandard protocol for sockets : JSON.11-Jan-10 10:02
7413Dockimbelmod-upload: it was missing, it's in the repository now.11-Jan-10 10:02
7412TerryDoc, any thoughts on a standard protcol for sockets? xml?11-Jan-10 6:23
7411TerryI'm curious as to lag around the world (should add geocaching i suppose)11-Jan-10 5:03
7410TerryWorking on some websocket experiments..

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

11-Jan-10 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-10 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-10 4:46
7407Dockimbel10 Mbps => 10MB10-Jan-10 20:58
7406DockimbelThis mod-upload version is unsuitable for production yet, the upload tokens on server are not garbage-collected.10-Jan-10 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-10 20:47
7404DockimbelHelp would be appreciated to solve or workaround the setTimeout() issue with IE.10-Jan-10 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-10 20:42
7402TerryI used flash as an application framework for an engineering co once.. one of the biggest mistakes of my career.10-Jan-10 17:24
7401Terryraisin10-Jan-10 17:19
7400Dockimbelrising10-Jan-10 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 10:46
7398DockimbelActionScript, which is Flex's programming language is now in #19 in Tiobe's index.10-Jan-10 10:37
7397Dockimbel"who's interested to do real apps in Flash?" 10:32
7396Dockimbel"Flash might move to RIA" : it's already done, it's called "Flex".10-Jan-10 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 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 chroma key effect.

LOCAL STORAGE Chrome has SQLite built in, accessible via JS

10-Jan-10 9:46
7393TerryHmm, the last person to run the atom demo had a 6971.28.. second 'round trip' .. wonder what happened there?9-Jan-10 19:28
7392TerryDoc, Flash's core strength (animation) is quickly evaporating.9-Jan-10 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-10 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 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-10 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-10 15:43
7388KajI hoped so at first, but it seems to be a different system9-Jan-10 15:42
7387DockimbelCan't older browsers use some JS layer simulating web sockets like library?9-Jan-10 15:36
7386KajUnless we need Flash to get at web sockets from older browsers9-Jan-10 15:25
7385DockimbelTerry: interesting links, so we might get rid of flash soon, no?9-Jan-10 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-10 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-10 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-10 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 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 10:05
7379TerryFont used is DroidSans.. can download for free from -> 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-10 9:37
7377TerryWS to AtomDB demo 7:58
7376TerryTry it on Chrome.. much faster.9-Jan-10 0:42
7375KajHm, those last two work fairly well on my ancient Firefox 1.59-Jan-10 0:41
7374TerryNow THIS is very cool use of CANVAS 0:37
7373GreggIndeed. Thanks here too.9-Jan-10 0:34
7372TerryAnother.. try shaking the browser

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

9-Jan-10 0:01
7366DockimbelWeb socket protocol is fully described here :

Quick protocol overview :

8-Jan-10 23:20
7365TerryI haven't heard a single sheep all day? No one is trying the demo :)8-Jan-10 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-10 21:05
7363DockimbelHit F5 several times, it should always answer ok if Cheyenne is running with -w 0.8-Jan-10 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-10 12:39
7361Dockimbel0.9.19 binary works ok here in -w 0 debug mode.8-Jan-10 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-10 12:00
7359JankoI tried cheyenne -vv -w 0 ; and now cheyenne - w 0 .. with same result8-Jan-10 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-10 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-10 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-10 11:42
7355Dockimbel1) I use -w 0 daily, works ok here. 2) see the solution in Core group.8-Jan-10 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 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 10:43
7352TerryI guess you can check out the 'console' after hitting CTRL - SHIFT - i .. check for errors8-Jan-10 10:20
7351amacleodyes8-Jan-10 10:18
7350amacleodthats weird8-Jan-10 10:18
7349Terryvolume up.. all that stuff?8-Jan-10 10:18
7348Terryit's playing here when you click it8-Jan-10 10:18
7347amacleodStill no sound...even when clicking the button8-Jan-10 10:17
7346Terryi can hear it :)8-Jan-10 10:16
7345Terrythere ya go8-Jan-10 10:16
7344amacleodyes8-Jan-10 10:16
7343TerryDid you click the button?8-Jan-10 10:16
7342amacleodyes8-Jan-10 10:16
7341Terrycan you get this? 10:15
7340Terryworks fine here.8-Jan-10 10:15
7339Terryhmm8-Jan-10 10:13
7338amacleodNot getting any sound, Terry..

using chrome4

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

8-Jan-10 10:11
7335TerryHere's some code that uses flash as a websocket proxy for browsers that don't support websockets

Needs some tweaking, particularly with ports.

8-Jan-10 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

7-Jan-10 23:35
7333TerryHmm, maybe Chrome 4 isn't there yet after all?7-Jan-10 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-10 22:47
7331Maximthat is nice!7-Jan-10 22:45
7330TerryHere's a great webworker article / demo 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."

7-Jan-10 22:44
7328GrahamAmazon allows you free db storage in multiple redundant locations7-Jan-10 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.

7-Jan-10 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-10 20:05
7325TerryCarl, you have any thoughts on websockets?7-Jan-10 19:32
7324TerryHey, its 2010.. where's my flying car they promised back in the 60's?7-Jan-10 19:31
7323CarlT: yep. Blast from the past.7-Jan-10 19:30
7322Grahambut costs a little more.7-Jan-10 19:22
7321GrahamMuch more flexible I suspect than Linode or Slicehost7-Jan-10 19:22
7320TerryCGI proxy? They still make that stuff ;)7-Jan-10 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-10 19:22
7318GrahamAmazon charge only for uptime .. at 8c an hour.7-Jan-10 19:21
7317Carl(It pipes all R3 Chat connections via a CGI proxy.)7-Jan-10 19:20
7316CarlI'd be quite interested in testing R3 Chat on Cheyenne. Right now, it must drive the server crazy on CGI.7-Jan-10 19:20
7315HenrikDockimbel, yep, nice and stable. Love it.7-Jan-10 19:19
7314CarlH: This AltME world runs from a different provider (via, so is not typical.7-Jan-10 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-10 19:17
7312GrahamI'm hosting 5 virtual sites on mine using Cheyenne ...7-Jan-10 19:17
7311DockimbelHenrik: nice!7-Jan-10 19:16
7310GrahamMy site on EC2 is private .. 19:16
7309CarlG: all.7-Jan-10 19:14
7308CarlH: cool. Cheyenne.7-Jan-10 19:14
7307Grahamor IOS?7-Jan-10 19:14
7306GrahamIs this for altme?7-Jan-10 19:14
7305CarlFrankly, the biggest problem I have is long lags/dropouts on connection times.7-Jan-10 19:13
7304HenrikCarl, I already do. You can see my site at: 19:13
7303Grahammoving to ~science7-Jan-10 19:13
7302CarlQuestion: what about connect latency?7-Jan-10 19:13
7301TerryForget all that.. think WEBSOCKETS!7-Jan-10 19:13
7300Graham$300 vs linode of $240 pa.7-Jan-10 19:13
7299CarlP: yes, move to other group. I will respond.7-Jan-10 19:13
7298Pekrmaybe we should move out of this group?7-Jan-10 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-10 19:12
7296PekrCarl - how goes redesign? Do you have any gfx proposals already?7-Jan-10 19:12
7295CarlThis is quite interesting, esp if we can run REBOL as the primary services.7-Jan-10 19:12
7294Henrikwell, go ahead :-) redundancy is good.7-Jan-10 19:12
7293CarlIf can cancel anytime, then why not try both?7-Jan-10 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-10 19:11
7291CarlThis actually looks pretty good. I was leaning toward Amazon... but...7-Jan-10 19:10
7290Henrikand you can cancel at any time, if you don't like it.7-Jan-10 19:10
7289Carllol, "No contracts, no setup fees."7-Jan-10 19:10
7288CarlIf so, 384MB is fine. chop chop7-Jan-10 19:09
7287CarlDo they allow you to custom config?7-Jan-10 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-10 19:08
7285GrahamAnd yes, you can listen on what you like... you define the firewall settings7-Jan-10 19:07
7284GrahamYou can save images of your entire site and just restart from that.7-Jan-10 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-10 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-10 19:06
7281CarlSo, Do they let me listen on any ports?7-Jan-10 19:06
7280CarlIf truly virtual, and good performance, that's a good place to checkout.7-Jan-10 19:05
7279HenrikSo I can finally run Cheyenne on a high bandwidth server.7-Jan-10 19:05
7278CarlG, H: really. So, are they fast and reliable?7-Jan-10 19:05
7277HenrikSlicehost and Linode run virtual servers. So you don't have to setup your own box. Very nice.7-Jan-10 19:05
7276GrahamLinode is similar .. Amazon is more expensive ...7-Jan-10 19:04
7275CarlG: well, those were different days.7-Jan-10 19:04
7274GrahamChoose your own distro ... and install it.7-Jan-10 19:04
7273GrahamC: you can do pretty much what you want apart from hosting adult content7-Jan-10 19:04
7272CarlH: problem is, no provider is going to let you install it.7-Jan-10 19:03
7271GrahamAnd he's come back to tell you this?? :)7-Jan-10 19:03
7270CarlG: slicehost allows running your own server??7-Jan-10 19:03
7269HenrikI assume an R3 apache mod would not be far away, possiblity wise?7-Jan-10 19:03
7268CarlBut, I felt it was a kludge back in 2000.... however I think Jeff K was right.7-Jan-10 19:03
7267TerryHmm, that would have been interesting.7-Jan-10 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-10 19:02
7265Grahamslicehost is $10 or $20 a month7-Jan-10 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-10 19:01
7263CarlH: yes, it's a bit odd. I thought CGI was dead 8 years ago.... but then, NO.7-Jan-10 19:01
7262CarlG: It runs on a large hosted provider.7-Jan-10 18:59
7261HenrikI call it "why didn't we have this 10 years ago".7-Jan-10 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-10 18:59
7259GrahamWhy aren't you using Cheyenne for ?7-Jan-10 18:59
7258CarlI would call this "design refactoring" ... a high level form of "code refactoring".7-Jan-10 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-10 18:58
7256CarlHi guys. Yes, you really can divide the scripting needs into just a few primary categories.7-Jan-10 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-10 18:56
7254TerryRSP is fine, but I just don't like the whole 'preprocessor ' approach.. it's too 19957-Jan-10 18:55
7253TerrySo, to copy this method into Cheyenne websockets, i need to 'DO' .r scripts.. not rsp.7-Jan-10 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-10 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-10 18:45
7250TerryYeah, my stuff is all using the embedded feature.. very nice.7-Jan-10 18:43
7249DockimbelTo start addressing these markets, I need a 1.0 Cheyenne (means finish some features + units tests + full docs).7-Jan-10 18:42
7248TerryWrite some simple docs outlining websockets, and I'll get you to 50K in a month.7-Jan-10 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-10 18:41
7246DockimbelThat's the plan once Cheyenne reaches 100K users. ;-)7-Jan-10 18:36
7245TerryOr maybe GPL and commercial7-Jan-10 18:35
7244TerryOne BSD, the other commercial7-Jan-10 18:34
7243TerryYou should probably dual license Cheyenne.7-Jan-10 18:33
7242TerryCheyenne OS7-Jan-10 18:31
7241TerryThere ya go..7-Jan-10 18:31
7240Dockimbel"Cheyenne Scripting Language", sounds good. ;-)7-Jan-10 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-10 18:31
7238DockimbelFrom a purely marketing POV, that might make sense. ;-)7-Jan-10 18:30
7237TerryIn my books, Rebol should change it's name to Cheyenne.7-Jan-10 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-10 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-10 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-10 18:24
7233TerryÜberchat7-Jan-10 18:23
7232TerryNow all you need to do is come up with the killer app :)7-Jan-10 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-10 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-10 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-10 18:18
7228KajDoesn't have to be perfect, just facilitate a migration period for older browsers7-Jan-10 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-10 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-10 17:46
7225DockimbelSocket apps folder automatic loading : you still need to specify the mapping between URL and socket app, no ?7-Jan-10 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-10 17:31
7223TerryYeah, in Chrome, hit CTRL-SHIFT- i7-Jan-10 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-10 17:24
7221PekrDoes Chrome have anything like FireBug or WebDeveloper extension in FF?7-Jan-10 17:23
7220TerryDoc, i was referring to my modified chat.html regarding the 'signout' issue.7-Jan-10 17:22
7219TerryAhh.. shift-reload to clear cache, and nice debugging/developer tools.. Chrome is well thought out.7-Jan-10 17:21
7218DockimbelI'm not sure for Chrome, isn't F5 a simple page reload (without clearing the cache)?7-Jan-10 14:30
7217PekrShift + Reload (I am used to it) = F5 btw ....7-Jan-10 14:24
7216DockimbelBtw, you may need to Shift+Reload in Chrome to get the latest chat code.7-Jan-10 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-10 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-10 13:19
7213TerryNo cookies? I like cookies.6-Jan-10 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-10 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-10 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


6-Jan-10 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-10 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-10 16:34
7207DockimbelTurning off DNS prefetching is explained here : 16:00
7206TerryYou don't say that to your patients as well, i hope ;)6-Jan-10 15:58
7205TerryHmm, maybe programming isn't your forte.6-Jan-10 15:57
7204GrahamTerry .. I gave up6-Jan-10 4:05
7203TerryGraham, did you shut off the Chrome dns prefetching?6-Jan-10 3:55
7202TerryBrian, I'm comparing with Altme only.. Desktop vs client/server is a whole other argument.6-Jan-10 3:54
7201BrianHServer-side web stuff is fun though.6-Jan-10 0:46
7200BrianHMust be just me, I guess.,6-Jan-10 0:45
7199BrianHI like some of the stuff on that list, but I like doing it better without HTML/JS/CSS.6-Jan-10 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-10 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-10 0:39
7196Terryand some sound js lib as well6-Jan-10 0:37
7195TerryI have a hotkey javascript library I'll hook up.6-Jan-10 0:36
7194KajWeb chat it will be6-Jan-10 0:34
7193GrahamAnd hacking of php ... yep6-Jan-10 0:24
7192Terry... integrating Processing... 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-10 0:22
7190Grahamdon't forget unintended deletion of forum channels!6-Jan-10 0:20
7189BrianHYup, I agree, at least the parts that need the web to do (which isn't much on that list).6-Jan-10 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-10 0:14
7187BrianHAll good criticisms, except the "proprietary" one. It could be worse though - it could be a web chat.6-Jan-10 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-10 0:05
7185TerryThis is helpful as well.. in the chrome address bar type; about:dns5-Jan-10 20:28
7184TerryArticle regarding chrome dns prefetching

5-Jan-10 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

5-Jan-10 20:25
7182Grahamcause there is a default directory for all incoming file data ...5-Jan-10 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-10 12:34

Return to Index Page