• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp64
r3wp940
total:1004

results window for this page: [start: 401 end: 500]

world-name: r3wp

Group: All ... except covered in other channels [web-public]
Guest:
15-Feb-2005
very frustating, the script is invoking the rebpro.exe but doesn't 
release it nor deliver anything. I have tried nearly all combinations 
without any result. I thougt rebol is a perfect cgi engine, so I 
miss a - up to date - step by step instruction for all major webserver. 
the message board content indicate a need for this.
Graham:
18-Feb-2005
yes ... by the date of the first post :)
Micha:
20-Feb-2005
probe system/standard/email

make object! [
    To: none
    CC: none
    BCC: none
    From: none
    Reply-To: none
    Date: none
    Subject: none
    Return-Path: none
    Organization: none
    Message-Id: none
    Comment: none
    X-REBOL: ""
    MIME-Version: none
    Content-Type: none
    Content: none
]
Tomc:
20-Feb-2005
set system/standard/email  make object![
    To: none
    CC: none
    BCC: none
    From: none
    Reply-To: none
    Date: none
    Subject: none
    Return-Path: none
    Organization: none
    Message-Id: none
    Comment: none
    MIME-Version: none
    Content-Type: none
    Content: none
]
Tomc:
22-Feb-2005
redhat enterprise 3 workstation something or another, all patches 
up to date
Tomc:
28-Feb-2005
easter?: func [ {given a year returns the date of easter.

    lifted from "Astronomical Formulae for Caculators" by Jean Meeus 
    1979
    algorithm attributed to a 1876 publication

    note: I am adding a + 1 to the day to accoung for appearent rounding 
    errors
    }
    x[integer!] "(Gregorian) year"
 /local a b c d e f g h i k l m n p
][  a: x // 19
	b: to integer! (x /  100) c: x // 100
	d: to integer! (b /  4)   e: b // 4
	f: to integer! (b + 8 / 25)
	g: to integer! (b - f + 1 / 3)
	h: 19 * a + b - d - g + 15 // 30
	i: to integer! (c / 4)     k: c // 4
	l: 32 + e + e + i + i - h - k // 7
	m: to integer! (11 * h + a + (22 * l) / 451)
	n: to integer! (h + l - (7 * m) + 114 /  31)
	p: h + l - (7 * m) + 114 // 31
	to date! reduce[x n p + 1]
]
Group: !AltME ... Discussion about AltME [web-public]
Brock:
2-May-2007
James, I use windows so I would put the shortcut in my startup folder, 
with the appropriate parameters to auto-start.  I know I put my solution 
in earlier, I'll try and find the date for you to save you from looking.
Brock:
12-Jun-2007
It updates based on the list from the client.  You can install on 
multiple computers using the same account and it will download all 
the messages to ensure your clients are up to date.
Brock:
14-Nov-2008
AltME feature request.  Include the date/time as a second column 
a group was last updated.  Since we don't have the ability to synch 
what was read between each instance of AltME that we read, having 
the last date/time listed we could quickly select through the groups 
we have already visited in a previous session on another machine. 
 Although synching what was last accessed would be the ultimate fix. 
:-)
kcollins:
18-May-2009
You can sort on "Activity" date/time, which should make active users 
a bit easier to find.
Brock:
26-May-2009
I've always thought a nice feature would be to set the 'start-date' 
from where you wanted to receive data from, so you could ease into 
retrieving either the entire world's contents, or simply start fresh 
with only the recent submissions.  However, your search capability 
would be limited as the search is performed locally on the data you 
have available.  Maybe the next AltME will have more features like 
this.
Geomol:
29-May-2009
Look in the file "users.set". Last date field seems to be, when people 
was active.
Brock:
29-Jul-2009
It becomes more complicated if you want to remove the first world 
at a later date, cause launching your second world will use port 
5400 instead of the port number it was created under (5401), and 
the world server will be expecting 5401.  At least that was my experience 
when I was making some demo worlds a few years ago.
Brock:
19-Jan-2010
Why not default a new install to only retrieve the last months worth 
of data.  Include a button much like the "Mark all Read" button, 
"Retrieve History", that prompts the user how far back they want 
to retrieve... or when they search a group, they can specify a date 
and all records will be retrieved in the date range.
Carl:
23-Jan-2010
Still more to do on it... the original plan from long ago was to 
put it in the list immediately, like other IMs... but indicate that 
it is pending (in date field.)
Sunanda:
2-Jun-2010
You can try via Google -- but that depends on its index being up-to-date, 
and you may get many false positives for common poster names,
eg: try this search in google....
   adrians inurl:aga site:www.rebol.org
AdrianS:
2-Jun-2010
seems to work reasonably well though you can't sort by date and filtering 
by group means having to know the group number
Anton:
3-Jun-2010
I'm developing an app for searching AltME. You can apply multiple 
filters to select an intersection of: world, group, user, message-text, 
date and message-id.

At this point, it's actually usable, but I still need to improve 
the user interface so you can see and enter the filters properly. 
Currently, I'm still entering the filters in a source file.
Group: Core ... Discuss core issues [web-public]
Volker:
24-Oct-2005
if you know its 2, you can then make a quick check. if date > 2035 
[date: date - 100]
Volker:
24-Oct-2005
so we need a to-date/window ? How to deal with different formats?
Volker:
24-Oct-2005
thought to-date understands ultiple formats. if its always */year 
its a short check.
Graham:
24-Oct-2005
to-date: func [ value /local tmp ][ tmp: to date! :value if tmp/year 
> ( now/year + 10 ) [ tmp/year: tmp/year - 100 ] tmp]
Volker:
24-Oct-2005
I think it is importan if you get dates as strings, you dont know 
after the converion if it was 2 or 4 digits. makes the smartness 
of to-date useless, going back to self-made conversion. OTOH in most 
cases defaults are enough, but so are english month :)
Graham:
24-Oct-2005
so, for vetinary applications, would have to adjust the date window 
even further.
BrianH:
24-Oct-2005
Why don't you implement the window yourself with a parse rule? It 
wouldn't be difficult to parse the date yourself.
Graham:
24-Oct-2005
to-date/birth
Graham:
24-Oct-2005
to-date/newborn
Sunanda:
24-Oct-2005
Dates have natural ranges depending on their domain.

An expected due date of an unborn baby is (in theory) no more than 
9 months away.

The expected due date assigned to my mother before I was born is, 
now, a long time ago.


I don't'see how you can get around applying all due diligence to 
*any* input field. That may include asking for 4-digit dates on some 
occassions or disambiguating 24/oct/05 to ensure you know which part 
is the year.


Validation is one of the hardest parts of any real-world application, 
and one of the parts that most languages -- REBOL included -- offer 
only token support for.
Ideally, we'd have a range of to-xxx? words, like:
to-date? "29-feb-03"
== [false  "no such date"]
to-date?/strict "29-feb-04"    
== [false "ambiguous year/day]
to-date?/window "29-feb-04" [1975 2074]
== [true 29-feb-2004]
Pekr:
24-Oct-2005
as for dates, I once coded an algorithm to tell me the week. I sometimes 
miss date/week, date/day-of-year (number of days since the beginning 
of the year)
Anton:
25-Oct-2005
On Windows:
>> get-modes %rebol.exe 'file-modes

== [creation-date access-date modification-date owner-write archived 
hidden system]
>> get-modes %rebol.exe 'creation-date
== 19-Aug-2003/11:21:03+10:00
Pekr:
23-Nov-2005
how can I get some deeper context words? :-) I just wanted to check, 
if request-date finally uses system structure month/day names, so 
I sourced it:

request-date: func ["Requests a date." /offset xy][
    result: none
    if none? base [init]
    either offset [inform/offset date-lay xy] [inform date-lay]
    result
]
Pekr:
23-Nov-2005
then I tried to add following:

insert at second :request-date 11 [probe date-lay]
Pekr:
23-Nov-2005
but it does not know date-lay, like the word I added this way would 
not be bound to the context of the function? But looking at source 
it seems correct :-)
DideC:
23-Nov-2005
About request-date, I had reworked it for the "first" View 1.3 project 
(2 years ago). It use locales and some other enhancements. Just test-it 
directly :
DideC:
23-Nov-2005
do http://www.rebol.org/cgi-bin/cgiwrap/rebol/download-a-script.r?script-name=request-date
.r
Anton:
24-Nov-2005
Pekr, you can do it by binding your 'date-lay to the 'date-lay that 
is already in the function body.

 insert second :request-date bind [probe date-lay] pick pick second 
 :request-date 10 2

(Mmm... request-date is quite an ill-behaved function. It sets 5 
words in the global context.)
Anton:
24-Nov-2005
Above I have bound your whole block of code to the existing 'date-lay 
word.

It could be better (a more reliable way in other situations) to bind 
just the 'date-lay word in your new code
(ie. only the words which need binding):

 insert second :request-date compose [probe (bind 'date-lay pick pick 
 second :request-date 10 2)]
Gabriele:
7-Dec-2005
volker: it's just that TIME is bound to the object, and he's changing 
its value to that date...
MichaelB:
12-Dec-2005
Yes, I'm right now just a little bit confused with the numbers anyway. 
I have to sets of icons, alphas and official and used the alphas 
for testing funcs and the like and thought they're at least as new/fixed 
as the official releases, but maybe my alpha isn't completely up-to-date 
either.
Sunanda:
9-Feb-2006
Thanks Gabriele --- save/all neatly does the job.

No use to me though in several cases -- I support  applications that 
pre-date that refinement and run under older versions of core.
But it'll save me a chore in future apps.
Anton:
23-Feb-2006
Unit tests will have to be rebol version dependant. Eg. A set of 
unit tests developed on Core 2.6 for the PRINT function may all pass 
on Core 2.6, but not on Core 2.5.  Recording the rebol version also 
captures the date and platform where the tests were developed.
Anton:
23-Feb-2006
Example



PRINT  (global)

In the most recent Rebol/Core 2.6 (date)
First appeared in Rebol/Core 0.005 alpha (date)
[History]



Passed all 12 unit tests on [30 versions of rebol]. (See [unit tests])


---------------------------

PARSE  (global)

In the most recent Rebol/Core 2.6 (date)
First appeared ...
[History]



Passed all 34 unit tests on [14 versions of rebol]. (See [unit tests])
Geomol:
27-Feb-2006
This is from the REBOL command prompt under Mac OS X. Does REBOL 
behave the same under other OSs?
>> 31-12-16383
== 31-Dec-16383
>> 1-1-16384  
** Syntax Error: Invalid date -- 1-1-16384
** Near: (line 1) 1-1-16384
>> d: 1-1-0000
== 1-Jan-0000
>> d - 1
== 31-Dec-65535
Henrik:
27-Feb-2006
Windows:

>> 31-12-16383
== 31-Dec-16383
>> 1-1-16384
** Syntax Error: Invalid date -- 1-1-16384
** Near: (line 1) 1-1-16384
>> d: 1-1-0000
== 1-Jan-0000
>> d - 1
== 31-Dec-65535
Sunanda:
27-Feb-2006
REBOL broadly follows the ISO-8601 date format (though not with the 
strict yyyymmdd format): years are 4 digit, positive numbers only. 
ISO 8601 is not designed for acheology or astronomy.

True astronomocal julian dates of course change day at midday not 
midnight -- so be really sure you want to use them.
yeksoon:
1-Mar-2006
is there a reason why 'NOW' does not have refinements for hour, minutes 
and seconds.?


I would have thought that it make sense to provide those refinements 
as well..since NOW will return a value that comprise date, time and 
GMT offset
PeterWood:
7-Mar-2006
Purely a matter of opinion.... or raather a couple of opinions...


Should now be immutable?  Of course not unless you want to reset 
the time on the machine for testing.


Can a timeone take the value 8:01 - not in real life at the moment 
- I  came across this odd behaviour when investigating the difference 
between mydate/zone: and to-date. I found out that there are a few 
:30 minute timezones and a couple of 0:15 (or 0:45) time zones, the 
rest were all hours.
PeterWood:
9-Mar-2006
Ladislav: I see your point about immutability.


I guess that point about zone boils down to one of  datatype. I had 
been thinking along the lines that zone was a special datatype but, 
after checking, I see if it is of type time!.


What has confused me is the additional validation on time/zone in 
to-date:

>> to-date 9-mar-2006/14:17:38+8:01
** Syntax Error: Invalid date -- 9-mar-2006/14:17:38+8:01
** Near: (line 1) to-date 9-mar-2006/14:17:38+8:01
Jarod:
27-Mar-2006
for example, how could I take a date, and add 3 months or 3 weeks 
to the date?
Ashley:
27-Mar-2006
Oddly enough, *I've* never needed substring type functionality in 
REBOL. Might be due to the fact that REBOL's multitude of datatypes 
reduces the need somewhat (i.e. in another language you may have 
to manipulate numbers / strings to / from dollar / date / time formats, 
whereas in REBOL I tend to convert via the to-* functions).
Bo:
27-Mar-2006
>> b: now/date
== 27-Mar-2006
>> b/month: b/month + 6
== 9
>> b
== 27-Sep-2006
Bo:
27-Mar-2006
>> week: 7 ;Defining a "constant" here
== 7
>> b/date: b/date + (6 * week)
== 8-Nov-2006
Bo:
27-Mar-2006
I guess I didn't need to use 'b/date, just 'b would have worked.
Jarod:
27-Mar-2006
yeah, but I mean, let's say I took two dates, and I wanted to know 
the number of months between them, the date/month thing doesn't work
Graham:
27-Mar-2006
>> ( difference now/date 1-Jan-2006 ) / 24:00 / 30
== 2.86666666666667
Jarod:
27-Mar-2006
rebol still has better date management, than say perl for example
Geomol:
28-Mar-2006
I start with 2 dates:
>> d1: now/date
== 28-Mar-2006
>> d2: 1-1-08
== 1-Jan-2008
To calculate the number of months between them:
>> months: (d2/year * 12 + d2/month) - (d1/year * 12 + d1/month)
== 22
>> if d1/day > d2/day [months: months - 1]
== 21
To calculate the number of remaining days:
>> d1/month: d1/month + months
== 24
>> d1
== 28-Dec-2007
>> d2 - d1
== 4


So there are 21 months and 4 days between the 2 dates (if I calculated 
right).
Henrik:
16-May-2006
is system/locale ever used for anything beyond the date requester? 
it would be nice if it were possible to localize date! type
Ashley:
23-May-2006
Something like:

reduce2: make function! [
	block [block!]	"Block to reduce"
	/deep		"Reduce nested blocks"
	/local blk

 "Evaluates a block of expressions, skipping words without a value, 
 and returns a block."
] [
	blk: copy []
	foreach word block [
		either block? word [
			either deep [
				insert/only tail blk reduce2/deep word
			] [insert/only tail blk word]
		] [insert tail blk either value? word [do word] [word]]
	]
	blk
]


>> reduce2 [red x now now/date (1 + 1) [red x now now/date (1 + 1)]]

== [255.0.0 x 24-May-2006/13:12:14+10:00 24-May-2006 2 [red x now 
now/date (1 + 1)]]

>> reduce2/deep [red x now now/date (1 + 1) [red x now now/date (1 
+ 1)]]

== [255.0.0 x 24-May-2006/13:12:26+10:00 24-May-2006 2 [255.0.0 x 
24-May-2006/13:12:26+10:00 24-May-2006 2]]


but as a native! and able to handle funcs with args (e.g. reduce2 
[print "hi"]).
Ashley:
24-May-2006
but reduce/only doesn't perform according to your  initial spec
 True, on two counts:

1) It doesn't evaluate expressions (even if parenthesized)

2) You have to predetermine what words to ignore (less of an issue 
for dialects)

I still can't see a simple way of doing the following:

>> reduce [b: button red form now/date]
** Script Error: button has no value
** Near: b: button red form now/date
>> reduce/only [b: button red form now/date] [button]
** Script Error: Invalid argument: form
** Near: form now/date
>> reduce/only [b: button red (form now/date)] [button]
== [b: button 255.0.0 (form now/date)]


although at least the last case gets most of the way there. What 
I'd really like is:

>> reduce/ignore [b: button red form now/date]
== [b: button 255.0.0 "25-May-2006"]
Ladislav:
25-May-2006
I am using my BUILD dialect http://www.fm.tul.cz/~ladislav/rebol/build.r
to do it as follows:

>> build [b: button ins red ins form now/date]
== [b: button 255.0.0 "25-May-2006"]

or, another alternative:


>> build/with [b: button red form now/date] [red: system/words/red 
form: get in system/words 'form]
== [b: button 255.0.0 "25-May-2006"]
Robert:
16-Jun-2006
This is IMO inconsistent and should be changed:

>> ? for
USAGE:
    FOR 'word start end bump body

DESCRIPTION:
     Repeats a block over a range of values.
     FOR is a function value.

ARGUMENTS:
     word -- Variable to hold current value (Type: word)

     start -- Starting value (Type: number series money time date char)

     end -- Ending value (Type: number series money time date char)

     bump -- Amount to skip each time (Type: number money time char)
     body -- Block to evaluate (Type: block)

(SPECIAL ATTRIBUTES)
     catch
     throw
>> a: 2.0
== 2.0
>> for test 1 a 1 [print test]
** Script Error: for expected end argument of type: integer
** Near: for test 1 a 1
>> number? a
== true


It should be possible to use decimal! as well. The interpreter should 
implicitly convert it to an integer!
Pekr:
25-Jun-2006
how to catch following error? error? try [to-date 29-Feb_2006]
Pekr:
25-Jun-2006
ok, putting date in a string helps ...trying to catch leap year ...
Pekr:
26-Jun-2006
I am not sure I can meet with such situation in real-life :-) I just 
got asked by Bobik. The thing was, that in sqlite date field there 
can be invalid date. Now I am not sure how is the conversion done, 
if via string, but if you simply type such invalid date in console, 
it can't be recovered, and that is my objection in general ...
Graham:
26-Jun-2006
>> if error? try [ load form 29-feb-2006 ][print "date format error" 
]
** Syntax Error: Invalid date -- 29-feb-2006

** Near: (line 1) if error? try [ load form 29-feb-2006 ][print "date 
format error" ]
>>
Graham:
26-Jun-2006
>> if error? try [ load "29-feb-2006" ][print "date format error" 
]
date format error
>>
Graham:
26-Jun-2006
Doesn't like the 29-Feb-2006 as a date string
Graham:
26-Jun-2006
date type!
Pekr:
26-Jun-2006
I know the date is invalid, but .... the same goes for tupple, e.g. 
380.250.250
Volker:
26-Jun-2006
Thats why ladislav puts the date in a string. compiled later.
Pekr:
26-Jun-2006
ok, can we meet with state, where your app returns directly such 
invalid date? e.g. mentioned link to sqlite date field?
Pekr:
26-Jun-2006
how would it work? dunno? a bit more relaxed evaluation? interpreter 
finding string 29-Feb-2006 - it is valid format, not just valid value. 
Under some condition it could be even valid date (leap year). I would 
expect even such error to be catchable ...
Pekr:
26-Jun-2006
Volker - but how does it know of 29-Feb-2006? Under some condition, 
it is valid date ... imo already higher level logic is applied here, 
no?
Volker:
26-Jun-2006
Btw rebol cheats and uses a calendar ;)>> 29-feb-2004
== 29-Feb-2004
>> 29-feb-2005
** Syntax Error: Invalid date -- 29-feb-2005
** Near: (line 1) 29-feb-2005
Volker:
26-Jun-2006
*riing* "Hi" - "This isnt a date, you know?" :)
DideC:
26-Jun-2006
As a comment, try "29/02/2006" in Excel and it will give you a nice 
"text" value, not a date value.
Don't expect 'load to make this kind of choice !
Gabriele:
26-Jun-2006
load must make sure that the date is correct, because it must convert 
it to the internal format. 29-Feb-2006 simply cannot be converted 
and thus cannot be loaded.
Anton:
26-Jun-2006
That would cause rather strange bugs. Quite often, you wouldn't notice 
that you had made a syntax error. How would you know whether a string 
was an incorrectly written date or just some other string ? eg:  
How could you tell whether   "jan 12"  was intended to be a date! 
or not ? Maybe it's somebody's name and age in a string.
Anton:
26-Jun-2006
I am completely happy with the way load works in this regard. A given 
date string must comply with the rebol syntax and have valid sub-values 
otherwise I don't want it. If messy data is coming in, just catch 
errors loading it from a string. Simple.
BrianH:
26-Jun-2006
Petr, 29-Feb-2006 is always an invalid date. You can't say "Under 
some condition it could be even valid date (leap year)" because the 
year 2006 is specified in that date, and 2006 is not a leap year.


Data types have syntactic forms and semantic constraints. In order 
for the loader to recognize the data type, the syntactic form must 
be followed. In order for the resulting data to be valid, the semantic 
constraints must be obeyed. One such constraint is that date! values 
must correspond to a date on the calendar. Semantic violations are 
the bugs that all of that nasty exploit code does its job.
Pekr:
16-Aug-2006
how to substract two date values easily? I simply have file date 
(get in info? filename 'date), and I want now - such filedate to 
return time difference including days .....
Pekr:
16-Aug-2006
hmm, it might work actually :-) I was simply wondering, why substracting 
now - get in info? filename 'date is rounded to zero ....
Pekr:
16-Aug-2006
but why? I did not specify now/date - get in info? filename 'date 
.... imo that is incorrect
Pekr:
16-Aug-2006
simple 'now simply returns complete date and time, so why rounding 
to days?
Graham:
28-Sep-2006
is it faster to load a string to see if it is a date, or try make 
date! and catch the error to peform the alternate action ?
Oldes:
28-Sep-2006
I do error? try [date: to-date date]
Oldes:
28-Sep-2006
to-date!
Oldes:
28-Sep-2006
no to-date:-)
Oldes:
28-Sep-2006
>> t: now/time/precise loop 10000 [error? try [to-date "sss"]] now/time/precise 
- t
== 0:00:00.047

>> t: now/time/precise loop 10000 [date? load "sss"] now/time/precise 
- t
== 0:00:00.016

>> t: now/time/precise loop 10000 [error? try [to date! "sss"]] now/time/precise 
- t
== 0:00:00.047
Henrik:
28-Sep-2006
I remember a discussion where it was concluded that load would sometimes 
not be useful for determining date validity.
Graham:
28-Sep-2006
Henrik .. you're suggesting use to-date instead ?
Gabriele:
28-Sep-2006
to date! supports more date formats than load (for obvious reasons)
Graham:
28-Sep-2006
In fact I didn't  know u didn't need the "-" in to-date !
Graham:
28-Sep-2006
I'm goingt to stick to my to-date and error trap it ... :)
Oldes:
29-Sep-2006
Graham: as I need the date conversion again, I found that to make 
it useful, you have to add the error check anyway so it's:

>> t: now/time/precise loop 10000 [all [not error? try [d: load "sss"] 
date? d]] now/time/precise - t
== 0:00:00.031

>> t: now/time/precise loop 10000 [all [not error? try [d: load "1-1-2007"] 
date? d]] now/time/precise - t
== 0:00:00.047

>> t: now/time/precise loop 10000 [error? try [to-date "1-1-2007"]] 
now/time/precise - t
== 0:00:00.047

I would not use loading. to-date is more clear, shorter and with 
same speed.
Group: View ... discuss view related issues [web-public]
Volker:
24-Jun-2005
about list, thats a complicated issue IMHO, because list is heavily 
optimized to show very big lists with good performance and low memory 
use. Thats done by a trick (iterated faces). And that trick is hard 
to wrap in a generic way. 

The other option is to do it trickless, means put all in a big layout, 
one face for each row. thats like conference/messenger/altme do it. 
not that performant (all this programs restrict the number of messages, 
only the last n). but to do it, you only have to append vid-code 
like
 text (name) 100 text  (msg) 300 text (date) 100

for each line and layout that. most flexible way, you can even edit 
each field. but don't come back and tell me its hungry/slow! then 
you have to use that index count list - stuff, maybe somewhat better 
wrapped.
DideC:
28-Jun-2005
Look at "Draw commands" in Rebol.com/docs/developer, there is no 
center value for 'rotate (now that the doc is up to date, there was 
one in the old docs). Use 'transform if you need center value.
Robert:
26-Jul-2005
Ok, another view question WRT panes. Here is my snippet:

	ad: box blue 280x36 with [pane: []]

	do [
		tmp: none

  start-date: to-date reduce [1 current-months/1 current-months/2]
		loop 31 [
			tmp: reduce ['txt 9x30 to-string start-date/day]
			if start-date/weekday >= 6 [append tmp [red]]

?? tmp
			append ad/pane layout tmp
			start-date: start-date + 1
		]

		show ad
	]
DideC:
26-Jul-2005
view layout [
	ad: box blue 280x36 with [pane: []]

	do [
		tmp: copy [origin 0 space 0 across]

  start-date: to-date reduce [1 current-months/1 current-months/2]
		loop 31 [
			append tmp reduce ['txt 9x30 to-string start-date/day 25]
			if start-date/weekday >= 6 [append tmp [red]]
			start-date: start-date + 1
		]
		append ad/pane layout/offset tmp 0x0
	]
]
401 / 10041234[5] 67891011