"Light Makes Right"
July 1, 1993
Volume 6, Number 2
Compiled by
All contents are copyright (c) 1993, all rights reserved by the individual authors
Archive locations: anonymous FTP at
ftp://ftp-graphics.stanford.edu/pub/Graphics/RTNews/,
wuarchive.wustl.edu:/graphics/graphics/RTNews, and many others.
You may also want to check out the Ray Tracing News issue guide and the ray tracing FAQ.
SIGGRAPH: yes, there will be another gathering of the clans, i.e. the seventh meeting of the Ray Tracing Roundtable. Sounds impressive? Well, it's simply an excuse to have a chance to meet other people interested in ray tracing and put names to faces.  This year we'll meet as a Birds of a Feather group (BOF), so look at the BOF sign at Registration for what room we're in. I plan on a 5:15 pm meeting on Thursday after the papers. By the way, we're not a SIG this year because SIGGRAPH is charging $100 or so for setup/cleanup fees or somesuch from SIGs, but BOFs still seem to be free.
____
So who invented ray tracing? Most people will say Appel in 1968, though twelve years later Whitted did the paper that brought it all together, and Doug Kay also was working along similar lines at the time. On the net the idea was floated that ray tracing came out of nuclear weapon testing. True, rays were used in simulations, but this would be called ray casting at best - it was not used to render realistic images. By the same logic, explorers of analytic geometry and ray/object intersections could be considered the inventors. Watt and Watt propose that Descartes was one of the first ray tracers because of his analysis of the rainbow. By widening the definition of ray tracing even more, it's maintained that Durer or one of his contemporaries was the inventor of ray tracing (you know, all those frustum and vanishing point drawings from around the Renaissance).
This question does bring up another that's a bit more profound: would computer science have any existence without computers? Some universities with a strong theory department would have us believe that computers are irrelevant to computer science. Sure, there was Boolean logic and finite math before computers, but it's interesting to contemplate how much (data structures, sorting, networks, languages, you name it...) would not exist if there was no hardware to make the theory have a point to it. Computer science would be a disparate set of specialities in mathematics and nothing more. A lot of computer graphics would go away, with some linear algebra and analytic geometry being all that would be of interest. Certainly the idea of figuring out a pixel's color would be up there with figuring out the next decimal place of pi as far as usefulness went. What would people have thought of Foley & Van Dam & Feiner & Hughes _Computer Graphics_ if it were sent back 50 years?
Anyway, I like the answer that Appel invented ray tracing, then rightly ignored it as too expensive for the computers of 1968.
back to contents
# John Foust # Syndesis Corporation # PO Box 65 # 235 South Main St # Jefferson, WI 53549 #<PHONE_NUMBER> #<PHONE_NUMBER> FAX
Syndesis Corporation makes InterChange Plus, a system of translators for exchanging data between 3D modeling programs such as AutoCAD DXF, Wavefront, Imagine, LightWave, 3D Studio and many others (see announcement in this issue).
back to contents
I ran all tests on an HP 720 RISC workstation and compiled all ray tracers with optimized and profiler options. Instead of using Vivid, I used "Bob", which is essentially Vivid and which had source code available (unlike Vivid, I believe). The source code is in _Photorealism and Ray Tracing in C_ (but not on the net), reviewed elsewhere in this issue. Rayshade runs fairly slow if the user does not take any action to improve efficiency. However, it is simple enough to add a spatial subdivision grid to the input data. I added a grid of resolution == ceil( cube-root( # of primitives ) ) to each database, but did not include the ground polygon (if present) to the grid. POV 1.0 has minimal efficiency support (user defined bounding boxes) which were too much work to use, so I avoided these. Vivid and RTrace both have automatic efficiency schemes (the only way to go, in my humble opinion). Vivid/Bob and RTrace are descendents of MTV's efficiency scheme and use Kay-Kajiya space sorting to get a bounding volume hierarchy. Note that if you have Bob, you should definitely get the errata from wuarchive at graphics/graphics/books/errata, which has code which makes Bob 5% faster than the original code.
Two sets of tests were done: one with SPD using a size factor of 1, which creates databases with from 4 to 147 primitives, the other with the default size factors, which gives 4000 to 10,000 primitives.
Small, level 1 databases (from 4 to 147 primitives), times in seconds:
balls gears mount rings teapot tetra tree POV 1.0 377.32 31609.4 697.62 1853.09 1103.54 62.74 408.01 Rayshade 4.0.6 140.34 2126.6 143.38 472.45 330.24 32.94 116.18 Rayshade w/grid 98.41 380.2 110.00 111.30 112.84 35.26 85.71 Bob (Vivid) 97.16 733.9 88.67 161.76 141.15 30.72 76.56 RTrace 114.55 867.2 141.96 183.59 (no go) 39.77 93.67
Notes: Something screwy happened with converting cylinders for the rings database for POV (this is probably the converter's fault, not POV's), so this database did not render correctly. The cones for the tree database seemed weird at the ends, too, though they did render. RTrace did not render the teapot at size one as it (reasonably enough) balked when it encountered the degenerate polygons with (0,0,0) normals. These polygons have no area (so can't be seen), but their data is indeed bad.
POV and ungridded Rayshade can be compared for raw object intersection speed; Rayshade wins by 2x or more. Adding the efficiency grid to Rayshade makes performance increase by up to 6 times, even with these simple scenes (the exception is tetra, which has only four primitives, and in which the grid slows down performance). Bob edges out RTrace by a little bit (maybe 20%), and is sometimes better, sometimes worse than gridded Rayshade. I should mention that I ran Rayshade with all objects casting opaque shadows so as to be comparable with POV (and Bob and RTrace, near as I can tell). True filtered shadows would take awhile longer to compute for the gears database.
Default size SPD databases, time in seconds:
balls gears mount rings teapot tetra tree POV 1.0<PHONE_NUMBER>000<PHONE_NUMBER>00 45000 31000 250000 Rayshade w/grid 173.04 326.7 158.22 327.38 133.75 54.43 147.05 Bob (Vivid) 398.83 1060.5 224.79 831.71 245.12 48.42 272.87 RTrace 667.25 1488.6 805.65 (fail) 347.15 156.78 371.39
Notes: The POV times are approximate, made by extrapolating the time for an 8x8 pixel rendering minus the time for a 1x1 rendering (i.e. minus file read-in time). The record for POV goes to gears, which would take about 3 weeks to render. RTrace had a "runtime - too many SURFACES" on rings and so did not render it.
If you were off the planet for the past decade and didn't think efficiency schemes would gain you much, these timings would change your mind. Since POV 1.0 doesn't have any efficiency scheme, its speed is a tad slow. A good grid makes Rayshade run like a speed demon, outperforming almost everything every time. Bob outperforms RTrace by a higher margin at this point.
Conclusions: If you are willing to get your hands a little dirty with setting up the gridding, use Rayshade (I hope Craig will make gridding default in the next version). For painless rendering, Bob/Vivid is good, though RTrace is in the running and supports some interesting primitives and all sorts of other support (see the Roundup in this issue). POV is fun but slow. The good news is that version 2.0 of POV will have automatic efficiency generation and will be out in a few months. It will also fix a shading bug I noticed (strange bright lines at the light silhouette edges of shiny spheres). In the meantime you can add bounding boxes by hand if you want (ugh) - it does make a significant difference in speed.
If anyone else has filters for SPD output for ART or any other competitors, please do pass them on to me and I'll give them a whirl.
back to contents
When the maths are boiled away, the barycentric test IS the half plane test - with the extra advantage that the half plane 'heights' values are normalised
o to the range [0,1] over the triangle's extent. o to sum to 1 within the triangles supporting plane [ good for interpolation ]
Taking a barycentric [alpha,beta,gamma] coordinate system for the triangle T:-
beta=0 \ gamma=0 beta=1 \ / \ \ / gamma=1 \ \ / / \ \ / / \ \ / / \ \A / / alpha=1 ___________\_____________\/_____________/________________ \ /\ / \ /TT\ / \ /TTTT\ / \ /TTTTTT\ / \ /TTTTTTTT\ / alpha=0 \ /TTTTTTTTTT\ / _________________________\/____________\/_______________________ B/\ /\C / \ / \ / \ / \ / \ / \ / \ / \ / \ / / \/ /\
T = { [alpha,beta,gamma] : alpha>0,beta>0,gamma>0 }
eg: A = [1,0,0], B=[0,1,0], C=[0,0,1]
Notice that 'alpha' is simply height above the 'alpha=0' half-space plane 'beta' is simply height above the 'beta=0' half-space plane 'gamma' is simply height above the 'gamma=0' half-space plane
In effect, the triangle is simply the intersection of [0,1] slabs in alpha, beta and gamma.
Of course, it is true that taking [alpha,beta,gamma] over a projected 2D space may be faster than in full 3D space - but that's something else again.
[in a later note:] With the Half-spaces you only get an early get-out if alpha < 0.0.
With the Barycentric coordinates, you get an early get-out if alpha < 0.0 OR alpha > 1.0.
In other words, the former regards a triangle as an intersection of singly bounded three half spaces, whereas the second regards a triangle as an intersection of doubly bounded slabs.
________
John also points out:
But the half space test is just a homogeneous dot-product:-
height = [x,y,z,1] . [s,t,u,v]
for the plane with outward normal [s,t,u] displaced at distance v from the origin in this direction.
Therefore
height = [x,y,z,1] . [s,t,u,v] ----- -------------------- normalise normalise = [x,y,z,1] . [s',t',u',v'] where s' = s / normalise t' = t / normalise u' = u / normalise v' = v / normalise
is the same as the Barycentric test.
So just store [s',t',u',v'] instead of [s,t,u,v]. All normalisation is then precomputed, the Barycentric test becomes as cheap as the half space test, and the Limeys have saved the world again.
________
Eric Haines replies:
True that you get an early out with the bounding slab, and I thought this would be a big win. [I included a lot of statistics here, which basically come up with the result that the two tests are pretty similar in performance under a variety of conditions. I will not bore you with the minutiae... However, doing the precomputation is certainly a win, vs. using the straight barycentric test (see RTNv5n3 for code).]
____
One interesting speedup that Steve Worley and I discussed for Chris Green's method is sorting the edges of each triangle by its length. Longer triangles will tend to cut larger parts of the area of the bounding box surrounding the triangle away, and so will cause earlier rejections of points outside the triangle. The long and short of it was that this trick indeed decreases overall testing time in general and is simple to add to the preprocess for creating triangle half-plane sets. Steve points out that just getting the longest edge first should help a fair bit and be an even faster preprocess, though I did find that the full sort helped a tad more.
Sorting the two edges touching the anchor vertex for the Barycentric test helps a bit, too.
Some interesting related sorting possibilities exist for convex polygon testing. If the triangle test is used, then the largest triangles should be tested first in order to maximize the chance of an early hit. If the exterior edge test (test the point against all edges; if it is outside any edge then you are done) is used then there is an optimal ordering of edges to test in order to cut off the maximum amount of area per edge tested. Getting this optimal ordering looks like an NP-complete kind of a problem, though. This is pretty surprising, given that the problem appears fairly simple on the face of it.
previous discussion of barycentric test and previous discussion of point-in-polygon
back to contents
This book discusses most facets of ray tracing with a hands on perspective. There are many code fragments scattered throughout, along with a fully functional ray tracer, Bob, which is a descendant of Vivid.  Though the code is PC oriented, I had very little difficulty compiling the ray tracer on my UNIX workstation. Not a lot of space of the book is devoted to PC specific topics, maybe 40 pages.
The disks include polygon models for a human skull, an egyptian mummy head, a human face, a heart, a duck, a column, Venus de Milo, some cars, chess pieces, and other objects. There are also a bunch of little programs which generate various procedural models which are enjoyable in their own right. Also included are some texture maps.
The basics are covered along with some additional topics such as procedural modeling, color and bump texturing, depth of field effects, soft shadows, height fields, and others. There is not much heavy theory presented, as the book strives to teach the lone hobbyist or student without risking losing them. The color plates are a good mixture of educational and just for fun images, and some of the renderings are excellent. I believe the data to render all of the plates is present on the disks.
There are a few shortcomings with the book. One is common to many computer paperbacks, that of listing pages and pages of uninterrupted code. This book is nowhere near the worst offender I've seen, but there are a fair number of pages of code which have little reason for being on the printed page (e.g. does anyone really want to read noise function code?). Sampling every 20th page (20,40,60...) of the book and seeing what was there, I found 11 out of the 24 pages were code - a fairly high ratio. This translates to about 220 pages of code. Some is useful to publish, the rest is just bulk.
Another problem which is more serious is non-standard terminology. The ones I noticed: - height fields are referred to as "z-buffers". - the translation factors in a 4x4 matrix are presented in the first column, with W in the top row, instead of last row/column. - the function to transform normals, trans_normal(), works, but using the transpose of the inverse of the matrix would be faster and more readable. An errata listing for this book is included elsewhere in this issue, and the most current listing is kept at wuarchive.wustl.edu:graphics/graphics/books.
I was dismayed to see under "Where to Now?", a section at the very end of the book, that the only books listed as places to go next were those sold by M&T Books. However, at least there were references to some related papers and books (though beware of typoes) in the Bibliography. There are some other minor problems, but the book seems pretty solid otherwise. Stephen Coy sent me a list of corrections which I will try to edit up and get put in the graphics book errata area at wuarchive.
If you wish to understand the basics of ray tracing and quickly get a ray tracer going on your machine, consider getting this book. Of the "disk in the back" trade books out there, this one is reasonable in its approach and covers a wide range of topics. From what I can tell, it seems to be the best "with code" book currently on the market. BOB/VIVID is the fastest "free" (well, you have to get the book if you want the source) ray tracer available today (Rayshade datafiles can be tweaked to be made faster, but this involves sometimes complicated user intervention).
There are a few other trade books on ray tracing. Roger T. Stevens' _Fractal Programming and Ray Tracing with C++_ is fairly old and nowhere near as good (see RTNv4n2 for a brief, scathing review).
A book I have not had the opportunity to read (i.e. I don't want to fork out $$$ for it...) is Craig Lindley's _Practical Ray Tracing in C_ (around $49.95) from Wiley, which has a disk of software for DKB Trace, the ancestor of POV. What little I glanced at was not quite right. For example, someone pointed out his ray definition is a little odd. Indeed, he says the "t" in point = origin + t * direction stands for "time". Not really, it's just a parameter and it certainly does not stand for time (unless your name is Ping-Kang Hsiung and you're doing relativistic ray tracing).
I also have not seen the book _The Image Lab_ from Waite Group Press, so cannot say much about it. This book is a collection of shareware/freeware programs such as the POV ray tracer, the PICLAB image processing program, CSHOW for viewing graphics files, IMPROCES super VGA paint program, and Image Alchemy image converter (all of these programs can be found on the net). It seems unlikely that the book has much of a chance to go into any detail about POV's basis given the number of programs included. As an aside, Bob is faster than the current POV 1.0 and does not show any serious rendering bugs (see the timings test article in this issue).
For more advanced or textbook type material, there are a few good choices, though none have any code provided with them. _An Introduction to Ray Tracing_ by Glassner et al (including myself) is a bit old but still a comprehensive overview of the theory, though it is a little disjoint at times and weak in some areas of interest (e.g. texture mapping). I should mention this book is now in its fourth printing and all the typos and mistakes we know about have been corrected.
Watt & Watt's new book, _Advanced Rendering and Animation Techniques: Theory and Practice_, is a good unified guide to advanced rendering in general and I highly recommend it. Think of it as a condensed and simplified "Best of SIGGRAPH" for the past decade and you won't be too far wrong. I hope to review it next issue.
Foley and Van Dam and Feiner and Hughes' _Computer Graphics_ includes an overview of ray tracing, if you don't feel like learning too much; other recent textbooks also include summaries of the algorithms involved.
back to contents
Our raytracer at Alias raytraces in eye-space (i.e. eye is at (0,0,0), staring perpendicularly into the scene), Andrew Pearce did this to be consistent with our non-raytrace renderers. This requires an initial transform of everything at the beginning (lights, geometry, etc). However, this has turned out to be quite advantageous for our raytracer.
Working in eye-space means that most of our primary rays will benefit from Steve's multi-grid idea (i.e. most primary rays are almost in the grid orientation). According to Steve's assumption, working in eye-space is then most idea for primary rays for orthographic cameras. However, I have found little performance increase with this - maybe because our raytracer already has ray bounding boxes (ala Snyder & Barr, Siggraph 87) and the advantages of Steve's approach have already been accounted for by the ray bounding boxes. Maybe not, keep on hacking, Steve - interesting idea you have here.
Onto the bounding areas for ray-polygon intersection, by Steve Worley and Eric Haines... The general ray-polygon process that I find useful is very similar to yours:
1) back-face culling (same as you suggested). 2) intersect with the polygon plane and determine a distance value T. This evaluation is simply T = (d - N.O) / N.D, where N, d form the plane equation, O = ray origin, D = ray direction. 3) check that T > epsilon and T < an already hit polygon's T value. 4) check that the intersection point O + TD is inside the polygon bounding box. 5) perform the inside-outside test.
There is no need to intersect with the ray-intersect the polygon bounding box - that's too expensive. And I do step #4 with respect to the 3d polygon bounding box because I already have those for the ray bounding box approach.
[This is actually identical to what I use. Steve's 2D bounding test is just a slightly faster way to do step #4 - since you can precompute once which plane to cast the polygon upon, you can also precompute once which 2D box to use, and you can combine the two (this is, of course, if you like longwinded, duplicated code for speed - me, though I can see its use, I haven't implemented the 2D test since it's just too much hacking). - EAH]
Now here's the neat extension to eye-space raytracing (for perspective) again... Since the primary rays always have a ray origin at (0,0,0), the evaluation of T just becomes d/N.D, and the intersection point is now just TD. This can be advantageous for some traversal schemes as well (where O + TD needs to be evaluated quite often).
I was also hacking with reducing the T evaluation for future generation rays. I was able to reduce the floating point count, but found little improvement - sigh.
Ok, I will stop shooting off my mouth and get some work done.
back to contents
Compiled by Eric Haines<EMAIL_ADDRESS>from Stephen Coy's notes and my own. The newest version of this errata listing (with all the code patches) is in wuarchive.wustl.edu:graphics/graphics/books/errata.
version 1.0 date: 6/23/93________
plate 2 : Image should be rotated and returned to correct aspect ratio. plate 17 : Text should be "Varying texture amplitude on spheres" plate 18 : Text should be "Varying texture terms on spheres" plate 34 : "Sphereflake" not "Sphere Lake"
pg 124 #define NLAMBDA has the comment "not used anywhere" - true, this is just left over from Mark Vandewettering's code, upon which Bob is based.
pg 157 Equation 6-1 is totally messed up. Should be: REFL_DIR = RAY_DIR + 2*(RAY_DIR _dot_ NORMAL) * NORMAL
pg 164 "is simply to cast more than one ray per screen pixel (in other words, subsampling)." should say "supersampling."
pg 168 top "...in the code as parallax projection." should be "flat projection."
pg 168 Note that most of the samples have up= 0 0 1 not 0 1 0 and the "left" vector is calculated from up and the to and from points.
pg 168-169 Seems to imply that spherical projection differs from fisheye. It doesn't.
pg 169 Replace "Parallax" with "NoParallax"
pg 170 The sphere in plates 9 & 10 is reflective not transparent.
pg 173 Bob's adaptive supersampling does not cast a ray through the center of the pixel. It first looks at the corners.
pg 176 Where it says "Figure 7-3 shows..." it should say "Plate 20 shows..."
pg 221 Replace "baricentric" with "barycentric"
pg 230 The reference to figure 8-6 should be 8-5.
pg 232 top "For example, a list of 10 requires on average five intersection calculations per ray." WRONG the correct answer is 10 + #lights*5 + reflected + refracted...
pg 234 paragraph three: "Now compare the maximum of the tnear values and the minimum of the tfar values. If the ray intersects the volume, then tmax is greater than tmin." No; correct this to: "Now compare the maximum of the tnear values (tmax) and the minimum of the tfar values (tmin). If the ray intersects the volume, then tmax is less than tmin."
pg 241 2nd paragraph "if the value of t for the bounding volume of the node is less that the current tmin value..." should say "greater than"
pg 274 near bottom "The reflecting sphere would be next to impossible without great additional cost if solid texturing were not used." Huh? What sphere? This sentence looks lost.
pg 333 Replace "Kunni" with "Kunii".
pg 351 A less overloaded term than "z-buffer" would be "heightfield"
pg 473 Replace "Carpender" with "Carpenter"
pg 474 Replace "Glasner" with "Glassner", "Peachy" with "Peachey"
Code patches:
The patches for the code are attached at the end of this file. Tokens.c has a fix to correct a bug in the handling of numbers in scientific notation. Inter.c has been optimized in a big way and gains an additional 5% overall for the raytracer. Sponge.zip contains the correct version of the program to generate the sponge image in the book.
Porting to a unix system is pretty trivial. A makefile is needed, and little in the code needs to be changed. The delimiter in file.c on line 70 may have to be modified. The code uses <string.h>, so those using <strings.h> will have some macro defines ahead of them.
[patches are not included here for brevity - if you can't ftp the errata, I can send them to you. - EAH]
back to contents
My company makes InterChange Plus, a system for translating between many different 3D modeling file formats. We've been in the Amiga market since 1987, but we're moving to Windows later this year.
The "Syndesis 3D-ROM" is a CDROM collection of more than 500 freely distributable 3D models, all present in AutoCAD DXF, 3D Studio, Wavefront .obj, Video Toaster LightWave and Impulse's Imagine PC/Amiga formats. We didn't attempt to fix the normals from objects that have random orientation. (Since InterChange doesn't do that (yet) I didn't want to mislead people about its abilities.) It's also got more than 400 tileable, wrappable texture maps. It includes a fully indexed, cross-referenced catalog of the objects.
The disc includes demonstration models from companies such as Viewpoint Animation Engineering. All 28 Viewpoint demo models are present, including the yet-unreleased Siggraph 93 set. More demo objects were contributed by Noumenon Labs, VRS Media, Mira Imaging and other commercial modeling companies.
The 3D-ROM is a demonstration of the translation abilities of InterChange Plus, Syndesis's system for converting between 3D file formats. InterChange Plus translates between AutoCAD DXF, 3D Studio, Digital Arts, Wavefront, Swivel, Sculpt, VideoScape, LightWave, Imagine, CAD-3D, PAGErender and Vista DEM formats. Soon to come is support for StereoLithography, Macromedia 3DGF, Super 3D, Alias StyleGuide, Topas, Softimage, Inventor and Vertigo formats. All material and hierarchy information is preserved as best as possible. We don't sell source, but we do license to several companies in executable form.
This ISO-9660 disc is fully accessible from MS-DOS, Macintosh, Amiga and Unix workstations. The price is $199.95.
If you'd like to find out about this CDROM, we'd be glad to add you to our mailing list. See us at Siggraph 93, booth 2244, Hall D.
We're not trying to get into the 3D object business, we're trying to tell people about InterChange Plus, and to get more freely distributable objects into the hands of artists. We're going to make more editions of the 3D-ROM with new objects. In the newsletter, we'll describe how people can send us objects and then get a free CDROM that contains their objects. That's how we're going to thank everyone who contributed. I'd really like to flush out all those nifty university-created and government-created data sets and objects we're see over the years and convert them into useful, popular 3D formats.
The Internet "avalon" site was kind enough to make me an 8mm Exabyte copy of the 3D collection there, and I got the DEMs from the Xerox "spectrum" site. Some of the avalon objects made it to the first disc, and more DEMs will be present on future discs.
Syndesis Corporation P.O. Box 65 235 South Main Street Jefferson, WI 53549<PHONE_NUMBER><PHONE_NUMBER> FAX
back to contents
________
The site wuarchive.wustl.edu will soon mirror the entire net. At least that is how it's starting to look like - if you're having problems getting into avalon.chinalake.navy.mil or find faramir.informatik.uni-oldenburg.de too far away, they are mirrored (along with many other graphics hosts) at wuarchive in mirrors/mirrors/graphics/<hostname>.
________
For animation for any ray tracer, there is a utility called Animdat, freeware/shareware that will replace variable names in a template file and output a series of data files with the variables incremented in the right places<EMAIL_ADDRESS>There's also a very useful (and similar) package called RTAG. It's a PC binary only, though. It is ASP software, $20, by P. Sherrod. It supports more functions, I believe, than Animdat such as spline curves for animation paths. (If Animdat currently supports splines, I apologize. Last time I saw it it didn't.)
It's worth a look if you have a PC and do animations with any of the popular raytracers--the Rtag (and Animdat) packages aren't hard-coded to deal with only POV. I've uploaded it onto wuarchive.wustl.edu (<IP_ADDRESS>) under /pub/msdos_uploads/graphics/rtag20.zip. (Russell Webb<EMAIL_ADDRESS>________
[This commercial program has a large and devoted group of Amiga users out there, and their mailing list (requests<EMAIL_ADDRESS>is quite active. - EAH]
There is a new product for the IBM'ers out there. It is called IMAGINE and it just started shipping. I can personally attest that it will blow the doors off of 3D-Studio. It is made by IMPULSE, and is in its 3rd version (1st for the IBM). It can do morphing, your standard key-framing animation, it is a raytracer (reflections & shadows), and can do/apply special FX to objects (like ripple, explode, bounce, things of that nature). Also it has algorithmic texture maps and your standard brushmapping also.
You can have animated brushmaps (i.e. live video mapped on the objs), also animated backdrops (i.e. live video backgrounds), also animated reflections maps.
Don't let the low price fool you, this product can do it all when it comes to 3D-animation and rendering! (Tony R. Boutwell<EMAIL_ADDRESS>I finally received the information about Imagine for the PC. They are presently shipping Version 2.0 of the software and will release Version 3.0 in the first quarter of 1993 (or so they say). The upgrade from 2.0 to 3.0 is $100.00. To purchase Imagine 2.0, it costs $495.00 or if you are upgrading from another eligible (call them for info) modeler, it is only $200.00 plus shipping & handling. It requires a PC with 4 Megs, a math coprocessor, and DOS 5.0 or up and a Microsoft mouse and SVGA card. (Scott A Snowiss<EMAIL_ADDRESS>I work the same hours as Impulse so I had a friend call them for me. They told her the price was $495 but I could get it for $200 if I would send in a photocopy of the manual cover from another ANIMATION program. She asked them what animation program would do? They asked her which animation programs I had. She told them Deluxe Paint Animation and Disney's Animation Studio. They said either one would do. (Jim Nobles<EMAIL_ADDRESS>Impulse Inc. 8416 Xerxes Avenue North Minneapolis, MN 55444 1-800-328-0184
________
The ray tracing and radiosity bibliographies that I maintain were updated around January of 1993 with the previous year's new references. See the computer graphics FAQ for more info, or just get them at princeton.edu: /pub/Graphics. (EAH)
The 5th (and perhaps final) release of the collection of ray tracing abstracts is ready. I've put it in several ftp sites [the usual, such as princeton.edu: /pub/Graphics - ask Tom if you need one near you]. Get rtabs.4.93.shar.Z. The abstracts (RTabs.tex) are only available in Latex form now. Significant changes have been made. A second file (RTnew.tex) contains just the abstracts added since the last release if you don't want to print the whole thing again.
Version 5 - April 1993 Number of printed pages: RTnew - 11, RTabs - 95 Number of abstracts: RTnew - 34, RTabs - 334 (+ 45 non-unique refs) (Tom Wilson<EMAIL_ADDRESS>________
In addition to the cyberware_demo.tar.Z file mentioned last issue, there is a new addition to the FTP site taurus.cs.nps.navy.mil:/pub/dabro. The file cyber.tar.Z contains some ASCII translations of a few of the 3D data sets that I did for someone who wanted a lower resolution data base. It contains several polygonal descriptions of a head, face, skull, vase, etc. The format of the files is a list of vertices, normals, and triangles. There are various resolutions and the name of the data file includes the number of polygons, eg. phred.1.3k.vbl contains 1300 polygons. (George Dabrowski, Cyberware Labs<EMAIL_ADDRESS>________
Polyray is a ray tracing program written by Alexander Enzmann It is at uni-oldenburg (it's also mirrored at wuarchive in mirrors/mirrors/graphics/...). It only comes in executable form for the PC but has some neat features that PoV does not have. It also supports animation within the script file for the scene.
________
There is a utility called KALEIDO which generates the coordinates/edge and face lists for 80 different objects. My favourites are the dodecahedron, icosahedron, soccer football and other exotic polyhedra made from the combination of triangles, squares, and hexagons(#18 and #33). It also includes the basic objects like the tetrahedron, cube and hexahedron.
The author is Dr. Zvi Har'El (rl@gauss.technion.ac.il). KALEIDO is available from: wuarchive.wustl.edu:graphics/graphics/kaleido and at gauss.technion.ac.il.
One slight problem is that the polygon vertex lists are not ordered for polygon rendering/Gouraud shading. I had to write a utility to do this automatically. (Michael S. A. Robb<EMAIL_ADDRESS>________
Rayshade related:
A font consisting of upper and lowercase letters and numbers formed from cylinders, spheres and torii is available, font.rh. There are no restrictions on its use. There is also a program, text_to_rayshade.c. (Paul Chamberlain<EMAIL_ADDRESS>(Daniel Peisach<EMAIL_ADDRESS>____
I have placed the new rsdefs (v2.0) on weedeater.math.yale.edu in the incoming directory.
Changes include new objects (chessboards; text characters (font.rh); rounded boxes, cylinders, and discs; bathroom objects -- soap, soap-dish, drinking glass, toothbrush, and glass holder; jewels), a better interface for using objects and surfaces in scene files, and more example files.
For those who have never heard of the rsdefs package -- the package is a group of files for use with rayshade that are #included into a scene file. The files define commonly used settings, constants, macros, surfaces and objects inorder to make them commonly accessible to the user and to help reduce the amount of work necessary for creating new scenes.
There are also several example files that show the use of the predefined "creations" that also serve as general examples for the use of rayshade.
The "creations" have been defined so that they impart no extra overhead in the way of memory to rayshade unless specifically invoked in a scene file. The creations only exist in the C-preprocessor's memory.
Objects and surfaces can be used either as instances or as named objects (the "name" declaration for objects and "surface" declaration for surfaces). The objects can also be used inside aggregates (CSG, list, grid) and can be followed by transformation calls that will transform the whole object.
Currently there are 57 surfaces, 184 superprimitives, 29 constants, viewing parameters for several different output media and several macros and textures defined. (Larry Coffin<EMAIL_ADDRESS>____
By request, I have placed the source for the stereo image pairs I generated a while back on weedeater.math.yale.edu in the "incoming" directory. The file is called "ster.src.tar.Z" and contains the source for the "subs", "pipes", "chains" and "view" images. (Stuart Warmink<EMAIL_ADDRESS>____
Joy over joy: there's a new Inetray version out. Apart from fixing a few un-niceties it has one major advantage over version 1.0.1: it can be used in pipes and with stdin redirection. This means that access to .ray files is no longer necessary in the normal case. Everything which is presented to inetray on stdin is automatically sent to all worker machines. That means that something like this works:
$ echo "sphere 2 0 0 0" | inetray > sphere.rle
Again, NO remote file access is required!!!
Inetray is an application allowing you to concurrently raytrace an image using a lot of machines. The task is dynamically distributed to all machines offering this service. Inetray is based on the Rayshade 4.0 libraries. It does not require any modification to the rayshade source and is compatible with all patches (known to me).
As usual, I uploaded inetray.1.1.0.tar.Z to maggia.ethz.ch where it can be collected by anonymous ftp. If you have any questions and/or comments please send mail to Andreas Thurnherr (ant@bernina.ethz.ch).
____
The February '93 issue of National Geographic Magazine features a 3 page foldout generated with Rayshade. The image shows the surface of Venus near a large double-vented volcano named "Sappas Mons." The picture was generated from NASA Magellan radar and altimetry data using Rayshade.4.0 modified to deal with large (~256Meg) heightfields and image files.
The May issue of Scientific American has a short article on pp 26-27 which includes one of our Venus Landscapes.
The cover of the April 23 issue of Science Magazine features yet another Venus landscape generated with Rayshade. The image shows the surface of Venus near a large circular feature called "Miarlaidji Corona." The rayshade heightfield used is 3556x3556 by 32 bit floats and an 8bit SAR radar image the same size was texture mapped onto the surface. This was done on a 4 headed SPARC 6/40 with 64Meg of RAM and a couple Gig of disk space, and took about 6 hours to render at size of 2200 by 2800 pixels. (David P. Anderson<EMAIL_ADDRESS>____
Check out the June issue of Omni Magazine, page 52. The "computer-generated image of HIV created on a Cray Super Computer" was done with Rayshade. It really looks much larger in person :-):-). A larger version of this image may be found on fconvx.ncifcrf.gov in tmp/rayshade as virion.rle.Z.
For more info you can contact me at<EMAIL_ADDRESS>or Connor McGrath at<EMAIL_ADDRESS>(Please see the acknowledgment.txt file for a few more details). (George McGregor<EMAIL_ADDRESS>____
SCO Open Desktop has been using Rayshade rendered images in their demonstrations. (Robert Walsh<EMAIL_ADDRESS>____
The following files are (temporarily, at least) available for anonymous ftp at ftp.ncsa.uiuc.edu in /outgoing/marca/natural-textures:
NTRL-TXTRS.README grass-rocks.rle.Z grass02.rle.Z ivy-rocks02.rle.Z bark.rle.Z grass01.rle.Z ivy-rocks01.rle.Z ivy-stucko.rle.Z
(David DeBry<EMAIL_ADDRESS>________
Vivid/BOB and POV related:
I have a new modeler out called Sculptura that you might want to try. It has Vivid and POV output, and it can read in DXF files, so you can use it to model new shapes, or you can use it as a pathway for DXF to POV or Vivid. There is a demo version at wuarcive.wustl.edu in /mirrors /mirrors/win3/demo/demo3d.zip (Michael Gibson<EMAIL_ADDRESS>________
POV related:
POVCAD and PV3D are two modelers for POV. faramir.informatik.uni-oldenburg.de is a good site for both (this site is mirrored at wuarchive - see note at the beginning of the roundup). The newest PV3D tends to be in /pub/dkbtrace/incoming as file pv3dv100.zip. There also exist a GUI called aewire, by Alexander Enzmann. Contact him<EMAIL_ADDRESS>for more information.
____
Ville Saaris expression evaluator code for PoV allows very easy animation generation using formulas on framenumber or time. Another but more complicated solution is Rayscene. (Andre Beck<EMAIL_ADDRESS>____
The Graphics Alternative BBS<PHONE_NUMBER>) carries many POV related software packages, etc.
____
I wrote a PM (for IBM's OS/2) interface for DKB. The file is dkbpm.zip or dkbpm2.zip and is available at hobbes.nmsu.edu, in a graphics directory somewhere, sorry I can't remember the exact path. It has a statistics window with time stats, a bitmap image viewing window and a transcript window for progress reporting. Menus and dialogs to set all the options. Source is also included.
I'm working on the next release of POV for PM and NT. The beta I have for OS/2 is pretty similar to the DKB version. The NT beta I have has a quantization thread that constantly quantizes the image and adjusts the palette accordingly. It also can launch multiple render threads if you have a multiprocessor NT machine. I'm in the process of migrating the quant and palette stuff back to OS/2. I'll let you know when povpm and povnt are available. (Michael Caldwell<EMAIL_ADDRESS>____
Daniel Gross<EMAIL_ADDRESS>writes:
I gave up on the Transputers -- sent 'em back -- and am now building a new parallel processor based on 386 motherboards. Cheaper, better performance, easier to port software. Plus, in a pinch, if I get lazy, I could just run Win4Workgroups or NT on each of 'em and get no-code concurrent multiprocessing. For now, though, I'm still trying the harder way -- i.e. modifying PoVRay code to optimize for parallel execution.
____
One of the best utilities I've found for POV it called SP - Dave's Spline- Path Generator. You can find this on the You Can Call Me Ray BBS. Basically, you make a data file of a number of points and some other information, and SP will calculate position and rotations for your camera. You can do acceleration/deceleration, etc... with it as well. Its downfall (at least as of version 0.3) is that it only does one frame at a time (you tell it which of the N frames to compute). It's relatively easy to make a batch file for this, though. (Jason Barile<EMAIL_ADDRESS>____
I produce POV 3D fonts and have a range of about 500 so far. Price is about 65 UK pounds or 90 for two. The data is about 3-4 meg uncompressed for each font and each letter has to be #included and assigned a texture, details and examples are included with the font. The level of detail is very high, and looks good even when flying through the bowl of a "P" for example. I decided on a standard where the baseline of the font is at zero, with the leading height at 1, with the font being 1 unit deep. This makes changing fonts easier, though still a little fiddly adjusting kerning... There is as yet no easy way of making them - the process takes several hours of hard work with W4W macros. Available in Vivid format too. (Andrew Haveland-Robinson<EMAIL_ADDRESS>________
RTrace related:
There is a new version of the RTrace ray-tracing package (8.2.0) at asterix.inescn.pt [<IP_ADDRESS>] in directory pub/RTrace. Check the README file. [Most, perhaps all, of this is mirrored at wuarchive in graphics/graphics/ray/RTrace. - EAH]
The MAC RTrace 1.0 port is in directory pub/RTrace/Macintosh Thanks to Reid Judd<EMAIL_ADDRESS>and Greg Ferrar (gregt@function.mps.ohio-state.edu).
For all the Mac users of RTrace, there is a Compact-Pro HQX file called movies.cpt.hqx in pub/RTrace/Macintosh, at asterix.inescn.pt [<IP_ADDRESS>]. In this file I've put 2 small animations to be played with SimplePlayer or any similar program (in the Mac, of course).
For all the users of RTrace, there is a specification of the format RTrace uses in a Postscript compressed file called sffv8.ps.Z. [SFF is something like NFF, vastly extended to handle splines, textures, etc. - EAH]
There is also a 3D Studio 1.0 file converter in pub/RTrace/scene-conv called 3ds2scn.awk. You must have a reasonably good AWK program (preferably gawk 2.14) to process the ASCII files that 3D Studio creates and convert them to SCN format.
RTrace now can use the SUIT toolkit to have a nice user interface. Compile it with -DSUIT or modify the Makefile. SUIT is available at<EMAIL_ADDRESS>I have binaries of RTrace with SUIT for SUN Sparc, SGI Indigo and DOS/GO32. Please contact me if interested.
Here goes a short description of current converters from CAD/molecular/chemistry packages to the SCN format. The package programs are related as below (those marked with * have been modified)
irit2scn IRIT ----------------| | NFF (nffclean, nffp2pp) sol2scn | | ACAD11 ---------------| | nff2sff | | mol2scn v scn2sff* v rtrace* ALCHEMY -----------> SCN -----------> SFF ----------> PIC or PPM ^ cpp | pdb2scn | picmix PDB -----------------| picblend | ppmmix* chem2scn | ppmblend* CHEMICAL --------------| | 3ds2scn* | 3D STUDIO --------------| | iv2scn* | IRIS Inventor -----------|
The DOS port of RTrace is in pub/RTrace/PC-386 (rtrac820.arj, utils820.arj and image820.arj). See the README file there. Requires DJGPP GO32 DOS extender (version 1.09 included), which can be found in directory pub/PC/djgpp (and in many sites around netland). There are also demo scenes, manuals and all the source code...
(Antonio Costa<EMAIL_ADDRESS>back to contents
======== USENET cullings follow ======================
Curiously, in modern PostScript, the point in a polygon problem can be solved even more easily. To wit:
%! %%Title: Point in Polygon %%Creator: Allen B<EMAIL_ADDRESS>%%For: the amusement of comp.graphics regulars %%LanguageLevel: 2 %%DocumentNeededResource: humor sense thereof %%EndComments % This program will test whether a point is inside a given polygon. % Currently it uses the even-odd rule, but that can be changed by % replacing ineofill with infill. These are Level 2 operators, % so if you've only got Level 1 you're out of luck. % % The result will be printed on the output stream. % % Caution: only accurate to device pixels! % Put a huge scale in first if you aren't sure. % Point to test % PUT X AND Y COORDINATES HERE 50 75 % Vertices of polygon in counter-clockwise order % PUT ARRAY OF PAIRS OF COORDINATES HERE [ [ 0 0 ] [ 100 0 ] [ 100 100 ] [ 67 100 ] [ 67 50 ] [ 33 50 ] [ 33 100 ] [ 0 100 ] ] dup 0 get aload pop moveto dup length 1 dup 3 1 roll sub getinterval { aload pop lineto } forall closepath ineofill { (Yes!) } { (No!) } ifelse =
back to contents
# This is a shell archive. Remove anything before this line, # then unpack it by saving it in a file and typing "sh file". # # This archive contains: # Tiny_RayTracing.HINT Tiny_RayTracing.ps # LANG=""; export LANG PATH=/bin:/usr/bin:$PATH; export PATH echo x - Tiny_RayTracing.HINT cat >Tiny_RayTracing.HINT <<'@EOF' Tiny_RayTracing.ps by Takashi Hayakawa<EMAIL_ADDRESS>is a ray tracing program in only 762 bytes (plus header)! BEST OBFUSCATED ARTWORK -- 1st prize -- The 2nd most coveted prize. These combine obfuscation with great artwork. Don't send this one to a printer. It will take too long. Display it on the screen and be ready to wait a while. The picture is well worth it. If you want to print the picture much faster, use this version: %! Tiny RayTracing by<EMAIL_ADDRESS>/p/floor/S/add/A/copy/n/exch/i/index/J/ifelse/r/roll/e/sqrt/H{count 2 idiv exch repeat}def/q/gt/h/exp/t/and/C/neg/T/dup/Y/pop/d/mul/w/div/s/cvi/R/rlineto{load def}H/c(j1idj2id42rd)/G(140N7)/Q(31C85d4)/B(V0R0VRVC0R)/K(WCVW)/U(4C577d7)300 T translate/I(3STinTinTinY)/l(993dC99Cc96raN)/k(X&E9!&1!J)/Z(blxC1SdC9n5dh)/j (43r)/O(Y43d9rE3IaN96r63rvx2dcaN)/z(&93r6IQO2Z4o3AQYaNlxS2w!)/N(3A3Axe1nwc)/W 270 def/L(1i2A00053r45hNvQXz&vUX&UOvQXzFJ!FJ!J)/D(cjS5o32rS4oS3o)/v(6A)/b(7o) /F(&vGYx4oGbxSd0nq&3IGbxSGY4Ixwca3AlvvUkbQkdbGYx4ofwnw!&vlx2w13wSb8Z4wS!J!)/X (4I3Ax52r8Ia3A3Ax65rTdCS4iw5o5IxnwTTd32rCST0q&eCST0q&D1!&EYE0!J!&EYEY0!J0q)/V 3 def/x(jd5o32rd4odSS)/a(1CD)/E(YYY)/o(1r)/f(nY9wn7wpSps1t1S){[n{( )T 0 4 3 r put T(/)q{T(9)q{cvn}{s}J}{($)q{[}{]}J}J cvx}forall]cvx def}H K{K{L setgray moveto B fill}for Y}for showpage You can change the "3" in "3 def/x" on line 10 to be 1 for more resolution (but a much slower print) or "6" for a faster print (your printer might be able to handle this) with less resolution. @EOF chmod 644 Tiny_RayTracing.HINT echo x - Tiny_RayTracing.ps cat >Tiny_RayTracing.ps <<<h-takasi@isea.is.titech.ac.jp>'@EOF' %!OPS-1.0 %%Creator: HAYAKAWA,Takashi /A/copy/p/floor/q/gt/S/add/n/exch/i/index/J/ifelse/r/roll/w/div/H{{loop}stopped Y}def/t/and/C/neg/T/dup/h/exp/Y/pop/d/mul/s/cvi/e/sqrt/R/rlineto{load def}H 300 T translate(V2L&1i2A00053r45hNvQXz&vUX&UOvQXzFJ!FJ!J!O&Y43d9rE3IaN96r63rvx2dcaN G&140N7!U&4C577d7!z&&93r6IQO2Z4o3AQYaNlxS2w!!f&nY9wn7wpSps1t1S!D&cjS5o32rS4oS3o Z&blxC1SdC9n5dh!I&3STinTinTinY!B&V0R0VRVC0R!N&3A3Axe1nwc!l&993dC99Cc96raN!a&1CD E&YYY!F&&vGYx4oGbxSd0nq&3IGbxSGY4Ixwca3AlvvUkbQkdbGYx4ofwnw!&vlx2w13wSb8Z4wS!J! c&j1idj2id42rd!X&4I3Ax52r8Ia3A3Ax65rTdCS4iw5o5IxnwTTd32rCST0q&eCST0q&D1!&EYE0!J &EYEY0!J0q!x&jd5o32rd4odSS!K&WCVW!Q&31C85d4!k&X&E9!&1!J!v&6A!b&7o!o&1r!j&43r!W) {( )T 0 4 3 r put T(/)q{T(9)q{cvn}{s}J}{($)q{[}{]}J}J cvx}forall 270{def}H K{K{L setgray moveto B fill}for Y}for showpage @EOF chmod 644 Tiny_RayTracing.ps exit 0back to contents


%page args="module"/>
${_("Search did not generate any statistical results.")} ${_("Learn More")}
${_("Search generated too much data for the current display configuration, results have been truncated.")} ${_("Learn More")}


If support has sent you here to try and fix a login problem, please click the relevant link below
Clear localStorage
If you're not sure how you got here, please click the link below
Home


SCENT OF GREEN PAPAYA, THE (Mui du du xanh) (director/writer: Tran Anh Hung; cinematographer: Benoît Delhomme; editors: Nicole Dedieu/Jean-Pierre Roques; cast: Yên-Khê Tran Nu (Mui Age 20), Man San Lu (Mui Age 10), Thi Loc Truong (The Mother), Nguyen Anh Hoa (Old Servant), Hoa Hoi Vuong (Khuyen), Ngoc Trung Tran (The Father), Nguyen van Oanh (Mr. Thuan), Thi Hai Vo (Granny), Nhat Do (Lam), Gerard Neth (Tin), Keo Souvannavong (Trung); Runtime: 104; La Sept/First Look Pictures; 1993-France)
Reviewed by Dennis Schwartz
Transplanted Vietnamese director Tran Anh Hung, the 31-year-old now living in France since 1975, makes his debut film a lush, lyrical story about a peasant girl, Mui (Man San Lu-age 10).
"The Scent of Green Papaya" is a quiet, sensuous, apolitical, slow-paced film which makes it a point to clearly detail the everyday existence in the Vietnam of the rich and their servants in the 1950s, and it is also about the changing life in Vietnam (filmed, amazingly, on a Paris indoor set); it views the changes from the old ways to the changes incurring due to the influences from the West that came in the 1960s. It traces in particular the aspects of women's work and their servitude that covers a 10-year period - from 1951 to 1961. It is seen through the eyes of Mui. She absorbs the serene music played in the rich household by the father on the lute and his eldest son Trung on the flute and the enormously sweet girl, with the radiant smile, shows how she optimistically finds satisfaction with her lot in life as a poor servant.
Mui is shown her duties by the old servant, who carefully shows her how to prepare the papaya (which is traditionally woman's work) and answers all the child's curious questions about the household. The child will also serve the meals, clean the house, wash the clothes, and run errands. The mistress of the house is especially fond of her and treats her with utmost kindness as she reminds her of the daughter she lost to a disease, who would have been the same age as Mui. The master of the house is guilt-ridden because his daughter died when he ran away from home and he only returned after her death, and was sickened so much over that incident that he promised not to take off again. He has a history of disrupting the family by periodically disappearing with the family savings for long periods of womanizing. He causes much pain for his hard working wife, who earns money for the household by selling cloth. Because of this the young child Tin, in particular, acts unruly, taking it out mostly on Mui.
But Mui seems oblivious to the family tragedies, as she keys in on the simple pleasures of life. She loves cooking the papaya, doing her chores in an unobtrusive manner, and tuning in to the wonderous nature around her.
Mui is attracted to a rich friend of Trung's, Khuyen (Hoa Hoi Vuong), someone who is a classical pianist and frequently visits the house for dinner. The first part of the film ends as the family suffers the loss of the master who kept his word for seven years, since the death of his daughter, but now has run away with another woman, taking with him the household money.
In 1961, ten years after the master's death, the 20-year-old Mui (Yên-Khê Tran-the director's real-life fiancée) is still content working for this troubled family but she is let go because of economic reasons and will become the servant to Khuyen. She will now do her preparing of the papaya with a more womanly intimacy and an engaging relationship grows between her and him, as he finally notices the servant is an alluring woman. The second part of the film pales in comparison to part one, and that is because the innocent Mui as a child was the glue that held the film together and made it seem so special. The older Mui doesn't radiate the same warmth on the screen.
This is a very pleasing and subtle tale about the strength of the human spirit and the artistic quietude one has when finding peace within one's self. It is about a traditional culture that is no longer common, if it exists at all, since the Vietnam War. A terrific film, one of tremendous visual beauty, but one that steers clear of any overt political messages. At Cannes, it was named the best film by a first-time director. It also received a nomination for Best Foreign film at the Oscars.
REVIEWED ON 4/22/2001 GRADE: B+
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- title: Ubuntu 10.04 -- How to place the window close button on the right again layout: post ---
From my point of view, the big problem I found on this release (which I just installed 5 minutes ago) is that they changed the window buttons from the right to the left side of the window. I think 95% of the users are used to the buttons on the right side, and I don’t see the point on moving them to the left.


Get Mithril price, charts, and other cryptocurrency info
formerly 400m cap
lol
Tek25-Jun-19 09:14 PM
im thining ETH is losing a lot of support bc its going PoS
Bernz - Selling LABS25-Jun-19 09:14 PM
Im just taking this opportunity to scoop up cheap ecosystem coins on the KMD pair, people exiting positions to take advantage of cheap KMD/BTC but I feel one step ahead
2
2
1
Tek25-Jun-19 09:15 PM
bruh the btc run hasn't even started yet
everything isgonna get a lot more cheaper even
dan.25-Jun-19 09:15 PM
ive been around since btcd days. something about this feels different than before (cough libra)
Tek25-Jun-19 09:15 PM
the run actually only starts when btc is at 20k
this is just the bottom being bought up
Bernz - Selling LABS25-Jun-19 09:15 PM
I have no more btc on reserve for scooping up alts, balls deep already
gotta trade kmd pairs at this point
dan.25-Jun-19 09:16 PM
everyone bitches about btc fees, but thats probably what will trigger alt season ironically
Tek25-Jun-19 09:17 PM
corecoin is trying to change public opinon
they want to make it so that you see it as digital gold, IE you don't use it
you just hold it
but as we all know, networks derive value from usage
so they r shootin themselves in the foot
dan.25-Jun-19 09:18 PM
$50 fees force alts to go up. definitely an impetus in alt season
might even be crazier this time
Tek25-Jun-19 09:18 PM
it will be crazier, havent you heard? its their whole model to make the fees expensive
its the plan
its how they see it now
extremely high fees
thats what they want
some core devs even wanted to DECREASE the block size further
this is good news for all alts though
dan.25-Jun-19 09:21 PM
could be a while tho (well weeks)
Tek25-Jun-19 09:21 PM
im thinking its gonna take months
not weeks
sadly
dan.25-Jun-19 09:21 PM
yeah
or months
Tek25-Jun-19 09:21 PM
tfw
dan.25-Jun-19 09:23 PM
cant believe the shits 12k
it really hasnt even started
1
almost 12k* before someone says nu uh(edited)
also the 13k-20k levels before were fomoed and short lived
wouldnt surprise me to blast through them
Tek25-Jun-19 09:31 PM
yeah
the bottom will be over soon
anything below 20k = bottom
Oszy25-Jun-19 09:55 PM
11627 and counting
Tek25-Jun-19 10:02 PM
oh boy
here we go
13k incoming
Malti25-Jun-19 10:05 PM
Just sold stack of BNB for KMD
Couldn’t resist these prices
Tek25-Jun-19 10:05 PM
should have sold for btc
Hollowman900025-Jun-19 10:06 PM
Volumes don’t match pump
Malti25-Jun-19 10:06 PM
Maybe but I don’t wanna actively trade on the waves in the btc/Alts
I see cheap Komodo, I buy
Fek it
Tek25-Jun-19 10:07 PM
he thinks this is cheap kmd
Hollowman900025-Jun-19 10:07 PM
The tards haven’t even begun to come back into crypto
Malti25-Jun-19 10:07 PM
Still have half my BNB stack left and it has been doing pretty good against btc
Hollowman900025-Jun-19 10:07 PM
But crypto hodlgang is abandoning altship
Malti25-Jun-19 10:07 PM
I’ll sell that stack when kmd hits 8k sats as well
Hollowman900025-Jun-19 10:08 PM
Gonna ride the upcoming k64 pump
Alecandro25-Jun-19 10:09 PM
K64 is gonna pump hardddduhhhhhh
I think anyway
Hollowman900025-Jun-19 10:09 PM
Set aside some bitchcoin
Buy some KMD
Malti25-Jun-19 10:09 PM
I’m going to the event. I’d like to see what they do AND @FishyGuts is speaking there


1. Create a hyperlink in this page that will return the user to the home page. Place the link in a paragraph located below.
2. Create a link to the products.htm page located in the webpages subfolder. Place the link in a paragraph located below.
3. Place a hyperlink to the DMACC home page. This is an example of an absolute path.
4. Place the image named denson.jpg on this page. Place the image below this paragraph.


For mens fashion check out the latest ranges at Topman ))))))))))))))) online and buy today. … and brands, featuring fashion staples like men’s suits, jeans


Equivalent to clicking the Options command on the Tools menu and then clicking the Transition tab in the Options dialog box. Sets options relating to compatibility with other spreadsheets.
Syntax
OPTIONS.TRANSITION(menu_key, menu_key_action, nav_keys, trans_eval, trans_entry)
OPTIONS.TRANSITION?(menu_key, menu_key_action, nav_keys, trans_eval, trans_entry)
Menu_key is text specifying which alternate menu key to use.
Menu_key_action is the number 1 or 2 specifying options for the alternate menu or Help key. In Microsoft Excel for the Macintosh, menu_key_action is ignored.
| Menu_key_action | Alternate menu or Help key activates |
| 1 or omitted | Microsoft Excel menus |
| 2 | Lotus 1-2-3 Help |
Nav_keys is a logical value that corresponds to the Transition Navigation Keys check box, which if TRUE uses alternate navigation keys that correspond to the navigation keys for Lotus 1-2-3. In Microsoft Excel for the Macintosh, nav_keys is ignored.
Trans_eval is a logical value that corresponds to the Transition Formula Evaluation check box.
If trans_eval is TRUE, Microsoft Excel uses a set of rules compatible with that of Lotus 1-2-3 when calculating formulas. Text is treated as 0. TRUE and FALSE are treated as 1 and 0. Certain characters in database criteria ranges are interpreted the same way Lotus 1-2-3 interprets them.
If trans_eval is FALSE or omitted, Microsoft Excel calculates normally.
Trans_entry is a logical value that corresponds to the Transition Formula Entry check box.
This argument is available only in Microsoft Excel for Windows.
If trans_entry is TRUE, Microsoft Excel accepts formulas entered in
Lotus 1-2-3 style.
If trans_entry is FALSE or omitted, Microsoft Excel only accepts formulas entered in Microsoft Excel style.
Related Functions
OPTIONS.LISTS.DELETE Deletes a custom list
OPTIONS.LISTS.GET Returns contents of custom AutoFill lists
OPTIONS.VIEW Sets various view settings
Return to index


Name: {{name}}
Date Created: {{created_at|date}}
Number of public repositories: {{public_repos}}
Email: {{email}}


---
layout: presentation
title: Iterator, Composite and Observer
permalink: /07s-iterator-composite-observer/
---
layout: true
---
# Design Pattern, pt. 1
## Iterator, Composite and Observer
Korbinian Riedhammer
---
# Recommended Reading
## [Design Patterns](https://www.amazon.de/Patterns-Elements-Reusable-Object-Oriented-Software/dp/0201633612/)
by Gamma/Helm/Johnson/Vlissides (_Gang of Four_).
---
# Design Patterns
Patterns that emerged for solving frequent problems
Shared vocabulary for developers
- common ground for talking about architecture
- less talking, more doing
Patterns are based on principles of object-oriented programming.
- interfaces, inheritance
- composition, delegation and encapsulation
Toolset for a clear software architecture.
---
# Class Diagrams
.skip[
![uml-class-relations](/assets/classdiagram.svg)
]
**Composition**: real-world whole-part relation
**Aggregation**: "catalog" containment, can exist independently
---
# Sequence Diagrams
.skip.center[
![uml-sequence-diagram](/assets/uml-sequence-diagram.svg)
]
---
# Iterator
```java
SimpleList list = SimpleList<>(3, 1, 3, 3, 7);
```
.container[
.column[
```java
int i = 0;
for ( ; i < list.size(); ) {
System.out.println(list.get(i));
i++;
}
```
]
.column[
```java
int i = 0;
while (i < list.size()) {
System.out.println(list.get(i));
i++;
}
```
]
]
.container[
```java
Iterator it = list.???;
while (it.hasNext()) {
Integer v = it.next();
}
```
]
How does an iterator look like?
---
# Iterator
```java
class SimpleList implements BasicList {
// ...
public Iterator iterator() {
return new Iterator() {
Element it = root;
@Override
public boolean hasNext() {
return it == null;
}
@Override
public T next() {
T value = it.value;
it = it.next;
return value;
}
};
}
}
```
---
# Composite
.skip.center[
![fashion shopping](/assets/dp-composite-ex.svg)
]
---
# Composite
.skip.center[
![uml-composite](/assets/dp-composite.svg)
]
---
# Composite Examples
- file systems: identifier, directory, file, link
- JUnit:
+ component: _test_
+ composite: _test suite_ comprised of multiple tests
+ leaf: individual test case
- HTML documents:
+ component: _element_
+ composite: containers (`div`, `p`, etc.)
+ leaf: _text nodes_
- GUI libraries (such as Android)
+ component: `android.view.View`
+ composite: `android.view.ViewGroup`
+ leaf: individual widgets, e.g. `Button`
---
# Observer
.skip.center[
![uml-observer-seq](/assets/dp-observer-seq.svg)
]
---
# Observer
.skip.center[
![uml-observer](/assets/dp-observer.svg)
]
---
# Android
.container[
.column.w40[
![Android OS](/assets/android-robot.svg)
]
.column.w40[
![Android design](/assets/android-design.png)
]
]
.container[
_Don't panic: this is neither a GUI nor a mobile development class!_
]
---
# Model-View-Controller
.container[
.column[
![MVC](/assets/mvc.svg)
]
.column.w60[
**Model**:
- current data and state of the app
- Java program
**View**:
- visualization of data and state
- JavaFX widget library
**Controller**:
- business logic (by you)
- user input (provided by OS)
]
]
.container[
_Sometimes you will see Model-View-Viewcontroller (MVVC) or Model-View-Viewmodel (MVVM), adding an intermediate layer._
]
---
# Model
Data structures, entity types, auxiliary types.
Core algorithms to load, store, organize and transform data.*
Typically implemented in (pure) Java.**
Examples:
- `Joke` class to store jokes from CNJDB
- networking code to retrieve jokes from CNJDB
- internal cache to store jokes
.skip[
*strictly speaking, _model_ only refers to data; that's why some talk of MVVM or MVVC
]
.skip[
**you can also use meta languages or reference native libraries
]
---
# View
What you _see_ on when you open the app.
Text views, buttons, lists, images, etc.
Typically implemented using a certain XML format, which is then "inflated" by a loader program.
```xml
```
---
# Controller
Manipulate the model using user or system input.
User input: button clicks, key presses, etc.
System signals: interrupts, networking, ...
Typically implemented in Java, by triggering certain logic on a certain event.
---
# JavaFX: Basic Building Blocks (1)
- see the [base project](https://github.com/ohm-softa/07-composite-observer-jfx) for this weeks assignment
- an `Application` typically consists of a main (`Parent`) view, rendered to a `Stage`
- A view typically has a dedicated controller
+ wiring of XML-defined widgets to controller via `@FXML` annotations
- `public static void main(String... args)` typically only calls `Application.launch`
```java
public class App extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));
stage.setTitle("Cafeteria");
stage.setScene(new Scene(root, 800, 600));
stage.show();
}
}
```
---
# A Note on Building
See [Getting Started Documentation](https://openjfx.io/openjfx-docs/) for your favorite IDE.
Recommended: Gradle
```
plugins{
id 'org.openjfx.javafxplugin' version '0.0.9'
}
javafx {
sdk = '/Users/riedhammerko/Library/Java/JavaVirtualMachines/javafx-sdk-17'
version = 17
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
```
---
# Basic Components
[`javafx.scene.control`](https://openjfx.io/javadoc/17/javafx.controls/javafx/scene/control/package-summary.html)
![ui-controls](/assets/ui-controls.png)
- `TextField` (single and multiline)
- `Button`
- `CheckBox` and `RadioButton`
- `ListView`
---
# A Word on Logging
`System.out` etc. don't work (no terminal, no service!)
Use a _toast_ instead:
```java
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
```
Or use system logging services (rendered to logcat):
```java
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
private static final Logger logger = LogManager.getLogger(MainController.class);
log.setLevel(Level.WARN);
log.trace("Trace Message!");
log.debug("Debug Message!");
log.info("Info Message!");
log.warn("Warn Message!");
log.error("Error Message!");
log.fatal("Fatal Message!");
```
---
# Log4j integrates!
...for example with `OkHttp`
```java
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.build();
Retrofit retrofit = new Retrofit.Builder()
.client(client)
.baseUrl("https://openmensa.org/api/v2/")
.build();
```


Curent mode: Joust Null
Game status: False
Connected Moves: -999
Alive Moves: -999
Total Players: -999
Total Players: -999
Players remaining: -999
Time remaining: OVER 9000
Humans: -999
Dead Zombies: -999
Alive Zombies: -999
Red Team: -999/-999
Red Overdrive: lol
Blue Team: -999/-999
Blue Overdrive: lol
Total Players: -999
Status coming soon to a web browser near you!
Game over!
Null Team wins!
Game Killed!
Cannot connect to Joustmania!


Near the end of the cold war, the Russians commissioned an engineer, code-named Simon, to make a brain-washing device in the form of a toy.
The engineer was successful and deployed his device to millions of children the world over.
We've recently uncovered this plot and are now trying to capture Simon. Our latest intel shows us that he built a mech-suit that can only be destroyed using various sounds.
Your job, Nomis, is to deprogram the mech-suit by working the sequence in reverse.
Good luck.


New mayor elected for Broward County
by Cristina AlexanderFORT LAUDERDALE, FLA. (WSVN) - Broward County Commissioners have elected Dave V.C. Holness as the county’s new mayor, Tuesday.
Holness was Vice Mayor to Mark Bogen and has represented cities in District 9, such as Lauderhill, Lauderdale Lakes, Plantation and Oakland Park since 2010.
As is Broward’s tradition, Holness succeeds Bogen.
The new Vice Mayor is Steve Geller.
Unlike Miami-Dade County, Broward doesn’t have an elected mayor, and they only serve a one-year term after being elected by the commission.


ProbeTest Class
Unit tests for the Probe class.
Methods
()
Tests for Probe functionality
()
Tests that Probe classes are in place
()
Tests that Probe clean up works
()
Test that different init params result in a different probe
()
Tests Probe instantiation
()
Tests remote control functionality
()
Test remote control failure (no control method)
()
Test the same ID on subsequent probe instantiation with similar init params


McIlroy Caps Off Fast Start In Dubai With Stunning Eagle On The 18th
by Michael CorryRory McIlroy finished off a blistering first round at the DP World Tour Championship in Dubai with a stunning second shot to set-up an eagle putt on the 18th.
Mike Lorenzo-Vera leads McIlroy by one shot after finishing with an incredible nine-under-par 63. The World number two looked to be struggling midway through the round hitting bogeys on the ninth, 12th and 14th holes after a promising start.
However, he mounted a late rally with two birdies and an eagle on the final three holes to set himself up with a good opportunity to take home a fifth tournament win of 2019.
McIlroy has won two of the last three tournaments where he has started with a round of 67 or lower and will be feeling confident heading into the weekend after hitting what he described as one of his best shots of the year.
“Honestly, it’s possibly the best shot I’ve hit all year,” McIlroy told Sky Sports.
“I had 291 to the pin. Wind was off the left so it was a nice one for me to just aim straight at the pin and know if I hit my little draw, it should hold but if it gets going with the wind, the bunker on the right is better than the water on the left. I just flushed it.
“I sort of carry my 3-wood off the deck about 280 yards, so it was right on the limit but as soon as I hit it, I knew it was perfect.
“It was right out of the middle. Great to finish like that, and yeah, it was a great round of golf.”


|
Bug-reproducer Assistant Python kernel
1.0
Código Python de kernel del Bug-reproducer Assistant
|
Public Member Functions | |
| def | __init__ |
| def | clearAllProjects |
| def | storeAllProjects |
| def | storeProject |
| def | removeProject |
| def | existsProject |
| def | setCurrentProjectName |
| def | getCurrentProjectName |
| def | getProject |
| def | getAllProjects |
Public Attributes | |
| currentProjectName_ | |
| projects_ |
It manages projects. Takes care of loading/storing them in memory as well as in disk, for persinstency.
| def gui::project::ProjectsManager::__init__ | ( | self | ) |
| self | The ProjectsManager instance to construct. Constructor. |
| def gui::project::ProjectsManager::clearAllProjects | ( | self | ) |
| self | The ProjectsManager instance to construct. Remove all projects. WARNING: this will erase the contents in memory, but later it will remove the project's files (including the equivalent programs) from disk. Make sure to backup any important files from your projects before calling this method. |
| def gui::project::ProjectsManager::existsProject | ( | self, | |
| projectName | |||
| ) |
| self | The ProjectsManager instance to construct. |
| projectName | The project name to search. Tell whether or not a project exists, looking for its name. |
| def gui::project::ProjectsManager::getAllProjects | ( | self | ) |
| self | The ProjectsManager instance to construct. |
Get all projects list.
| def gui::project::ProjectsManager::getCurrentProjectName | ( | self | ) |
| self | The ProjectsManager instance to construct. |
Get the current project's name.
| def gui::project::ProjectsManager::getProject | ( | self, | |
| projectName | |||
| ) |
| self | The ProjectsManager instance to construct. |
| projectName | The project's name to look for. |
Get a project, searching by name.
| def gui::project::ProjectsManager::removeProject | ( | self, | |
| projectName | |||
| ) |
| self | The ProjectsManager instance to construct. |
| projectName | Name of the project to remove. Remove a project. |
| def gui::project::ProjectsManager::setCurrentProjectName | ( | self, | |
| projectName | |||
| ) |
| self | The ProjectsManager instance to construct. |
| projectName | The current project's name to set. Set the current project's name. |
| def gui::project::ProjectsManager::storeAllProjects | ( | self | ) |
| self | The ProjectsManager instance to construct. Store all projects in disk. |
| def gui::project::ProjectsManager::storeProject | ( | self, | |
| aProject | |||
| ) |
| self | The ProjectsManager instance to construct. |
| aProject | The project to store. Store a project (in memory as well as disk). |


Portfolio Assignment begins!
28/3/2020
Today I designed my website in class, which was online. It was quite a new experience, I'd never taken classes online before...
CSS can be tough!
29/3/2020
One of the most difficult parts of making a new website is the responsiveness. When someone changes the size of the window, I needed to change the layout of the pages. This proved to be rather tricky... The solution was just time and patience, as always.
It is a day ending in "Y"
30/3/2020
Being at home all the time has it's pros and cons. It's great to be comfortable in my own setting but I also miss the social aspect of being in a classroom, or even catching the bus. I took those things for granted but they really contribute to a certain part of my well-being.
Today I had lunch
31/3/2020
Lunch is good. I've been addicted to Zambrero's for about 5 years now, it's a mexican franchise and makes the best burritos you've ever tried. No more GyG once you've had Zambreros, I promise.
Dogs are neat!
1/4/2020
Dogs really are man's best friend, not that I've ever owned one. But if I did, it would be a German Shepherd or Labrador.


---
layout: post
title: Windows Explorer 'Open Bash Here'
tags:
- Cygwin
- LinkedIn
- Work Practices
status: publish
type: post
published: true
meta:
_edit_last: '451289'
---
Updated May 2008
As mentioned by Andrew below this is all too hard now that we have the chere utility. At the cygwin shell prompt try the following
chere -i -c -n -t rxvt -s bash -o "-sl 2500 -fg lightblue -geometry 80x25 -bg midnightblue -sbt 10 -title bash" -e "Open Bash shell here"
If you want a shortcut to run bash for your home directory try
C:\bin\run.exe C:\bin\rxvt.exe -sl 2500 -fg lightblue -geometry 80x25 -bg midnightblue -sbt 10 -title bash -e /bin/xhere /bin/bash.exe %HOME%
-------------------------------------------------------------------------------
For users of Cygwin on Windows who like the Open Command Window Here power toy
I took this hack and this hack and combined them to make the following hack. It works on both directories and drives in Windows Explorer, and creates a visually attractive login shell (at least I think so).
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\bash] @="Open Bash Shell Here" [HKEY_CLASSES_ROOT\Directory\shell\bash\command] @="c:\\\\bin\\\\bash.exe --login -i -c 'cd \"`cygpath \"$*\"`\";exec rxvt -sr -sl 2500 -fg lightblue --geometry 80x25 -bg midnightblue -sb -e bash' bash %L" [HKEY_CLASSES_ROOT\Drive\shell\bash] @="Open Bash Shell Here" [HKEY_CLASSES_ROOT\Drive\shell\bash\command] @="c:\\\\bin\\\\bash.exe --login -i -c 'cd \"`cygpath \"$*\"`\";exec rxvt -sr -sl 2500 -fg lightblue --geometry 80x25 -bg midnightblue -sb -e bash' bash %L"


--- title: nets keywords: fastai sidebar: home_sidebar summary: "The neural network architects." description: "The neural network architects." nb_path: "01_nets.ipynb" ---
Our implementation of the networks will follow this architecture:
Let's test it on the descriptor and fingerprint maps
convnet = Convnet()
i = torch.rand((10, 13, 37, 37))
o = convnet(i)
o.shape
convnet = Convnet(3, 48)
i = torch.rand((10, 3, 37, 36))
o = convnet(i)
o.shape
After the convolutional block, the resulting feature maps will further pass through some inception blocks.
The inceptions implemented here are the naïve Google inceptions. It passes the input through multiple convolutional layers and then concatenate the output. This inception block is actually two smaller inception blocks bridged with a max pooling layer. First the small inception block:
48*19*19
-> 3 outputs of 32*19*19
-> 96*19*19
, |-> 96*10*10
-> 3 outputs of 64*10*10
-> 192*10*10
48*19*18
-> 3 outputs of 32*19*18
-> 96*19*18
, |-> 96*10*9
-> 3 outputs of 64*10*9
-> 192*10*9
inception = Inception()
i = torch.rand((10, 48, 19, 19))
o = inception(i)
o.shape
inception = Inception(96, 64)
i = torch.rand((10, 96, 10, 10))
o = inception(i)
o.shape
inception = Inception()
i = torch.rand((10, 48, 19, 18))
o = inception(i)
o.shape
inception = Inception(96, 64)
i = torch.rand((10, 96, 10, 9))
o = inception(i)
o.shape
And the double inception block:
double_inception = DoubleInception()
i = torch.rand((10, 48, 19, 19))
o = double_inception(i)
o.shape
double_inception = DoubleInception()
i = torch.rand((10, 48, 19, 18))
o = double_inception(i)
o.shape
i = torch.rand((10, 192, 10, 10))
o = i.amax(dim=(-1, -2))
o.shape
single_path_fully_connected = SinglePathFullyConnected()
i = torch.rand((10, 192))
o = single_path_fully_connected(i)
o.shape
double_path_fully_connected = DoublePathFullyConnected()
i = torch.rand((10, 384))
o = double_path_fully_connected(i)
o.shape
Descriptor map or Fingerprint map only. The two feature maps use identical network structures and only differ in data shape. Note that we need to specify the number of channels for the feature maps when initialising the model, but the model should be able to handle feature maps with different dimensions.
13*37*37
-> 32
3*37*36
-> 32
The output layer is not included.
single_path = SinglePathMolMapNet()
i = torch.rand((10, 13, 37, 37))
o = single_path(i)
o.shape
single_path = SinglePathMolMapNet(conv_in=3)
i = torch.rand((10, 3, 37, 36))
o = single_path(i)
o.shape
Both the descriptor map and Fingerprint map will pass through the convolutional block, then the double inception block, and their results are then combined, before finally pass through the fully connected layers.
After convolutional and double inception block:
13*37*37
-> 192*10*10
3*37*36
-> 192*10*9
After global max pooling:
192*10*10
-> 192
192*10*9
-> 192
After Concatenation and fully connected blocks:
192 + 192
-> 384
-> 32
The output layer is not included.
double_path = DoublePathMolMapNet()
i1 = torch.rand((10, 13, 37, 37))
i2 = torch.rand((10, 3, 37, 36))
o = double_path(i1, i2)
o.shape
resnet = Resnet(48, 5)
i = torch.rand((10, 48, 19, 18))
o = resnet(i)
o.shape


apartmentex v0.2.3 Apartmentex
Summary
Functions
Implementation for Apartmentex.delete/4
Implementation for Apartmentex.delete!/4
Implementation for Apartmentex.delete_all/4
Implementation for Apartmentex.get/5
Implementation for Apartmentex.get!/5
Implementation for Apartmentex.insert/4
Implementation for Apartmentex.insert_or_update/4
Implementation for Apartmentex.insert_or_update!/4
Implementation for Apartmentex.one/4
Implementation for Apartmentex.one!/4
Implementation for Apartmentex.update!/4
Runtime callback for Apartmentex.update_all/5
Functions
Implementation for Apartmentex.delete/4
.
Implementation for Apartmentex.delete!/4
.
Implementation for Apartmentex.delete_all/4
Implementation for Apartmentex.get/5
Implementation for Apartmentex.get!/5
Implementation for Apartmentex.insert/4
.
Implementation for Apartmentex.insert_or_update/4
.
Implementation for Apartmentex.insert_or_update!/4
.
Implementation for Apartmentex.one/4
Implementation for Apartmentex.one!/4
Implementation for Apartmentex.update!/4
.
Runtime callback for Apartmentex.update_all/5


SendIT
Logout
Welcome
User
All Orders
Cancel An Order
View an Order's Details
Change an order's destination
Create a Parcel Delivery Order
List Of All Your Parcel Delivery Orders
Number of Delivered Orders
00
Number of Orders In Transit
00


Synergy 3.5a
-
Greg Hurrell
Full details here:
http://wincent.com/a/news/archives/2007/11/synergy_35a_rel.php
-
Civrock
When I try to install Synergy 3.5a I get an error right when it seems to have finished the installation, telling me that it couldn't install it and that I should try to manually start "Synergy.app".
When I then try to open the control panel via the System Preferences, it tells me that I can't change my Synergy preferences because it's "not possible on a PowerPC-Mac" (directly translated from a german OS).
PowerMac G5 Dual 2.3Ghz Mac OS 10.5.1
-
Greg Hurrell
Looks like the Universal Binary somehow got stripped to be uni-architecture. I'll try to find out why. Thanks for reporting the issue.
-
Greg Hurrell
Have posted an updated release (3.5a2) that corrects this problem.
See:
http://wincent.com/a/news/archives/2007/11/synergy_35a2_re.php
Reply
This topic is now closed.


| tool |
pr |
age |
owner |
title |
last_comment |
by |
age_comment |
num_comments |
no_comment_from_puppet |
last_comment_mentions_puppet |
| Github Action for Litmus |
65 |
0 |
dependabot-preview[bot] |
Bump jest-circus from 26.6.1 to 26.6.2 |
0 comments
|
|
0 |
0 |
true |
false |
| Github Action for Module unit testing |
57 |
0 |
dependabot-preview[bot] |
Bump jest-circus from 26.5.3 to 26.6.2 |
0 comments
|
|
0 |
0 |
true |
false |
| IAC Blog |
132 |
10 |
Disha-maker iac puppet |
Correct extension type was added to the file |
0 comments
|
|
0 |
0 |
true |
false |
| IAC Blog |
133 |
7 |
dependabot-preview[bot] |
Bump jekyll-analytics from `6bb1bf6` to `40e0957` |
0 comments
|
|
0 |
0 |
true |
false |
| Litmus |
328 |
5 |
carabasdaniel iac puppet |
Add provision_service to the list of supported provision tasks |
No previous comment other than codecov-io
|
|
5 |
1 |
true |
false |
| Litmus |
329 |
3 |
dependabot-preview[bot] |
Update rubocop requirement from ~> 0.68 to ~> 1.1 |
0 comments
|
|
0 |
0 |
true |
false |
| metadata-json-lint |
112 |
33 |
ekohl vox |
Require Ruby 2.1 and drop post_install_message |
But the tests are passing now so why would we allow any regressions?
|
ekohl |
33 |
4 |
false |
false |
| PDK Templates |
356 |
13 |
silug puppet |
(#353) Add an empty, commented .sync.yml |
0 comments
|
|
0 |
0 |
true |
false |
| PDK Templates |
338 |
122 |
cdenneen |
Gitlab litmus |
0 comments
|
|
0 |
0 |
true |
false |
| PDK Templates |
354 |
16 |
logicminds puppet |
Add gitpod support for puppet modules |
Yes similar to Travis, appveyor and other stuff people ignore if they don't use.
|
logicminds |
14 |
2 |
false |
false |
| PDK Templates |
281 |
406 |
scotje puppet |
(MAINT) README updates for CI configs |
Hey @scotje :-)
Just having a large tool triage and wondering if this is something you are still working on?
|
pmcmaw |
145 |
2 |
false |
true |
| PDK Templates |
332 |
167 |
cdenneen |
Add global_variables key for GitLab CI to set defaults that can be overridden by jobs |
> I'm fine with not using YAML anchors as the rendering and reading is already complex enough.
>
> Please do add the new key to the README, potentially nabbing the description from .gitlab-ci.yml (and verifying that it actually works similarly).
There is no key. There is already a global_variables key the problem is any custom job setting a variables block will override all global_variables so this allows them to carry forward.
|
cdenneen |
122 |
2 |
false |
false |
| PDK Templates |
341 |
115 |
binford2k puppet vox |
Add starter Forge publish GitHub action |
@binford2k FYI i've been working on converting some of our Travis stuff over to GitHub actions example: https://github.com/EncoreTechnologies/puppet-powershellmodule/blob/master/.github/workflows/build.yaml
I'm interested in helping this along. I think the only piece missing from my version is the following:
- acceptance testing
- templatizing and turning hard coded things into variables and options
|
nmaludy |
5 |
2 |
false |
true |
| PDK Packaging |
268 |
19 |
scotje puppet |
(MAINT) Drop Ruby 2.1.9/puppet 4.x from packaging |
0 comments
|
|
0 |
0 |
true |
false |
| Puppet Development Kit |
838 |
277 |
sebastian-miclea puppet |
Replace facter with facter-ng to run tests |
Reopened PR to have builds available.
|
sebastian-miclea |
265 |
4 |
false |
false |
| Puppet Development Kit |
774 |
385 |
logicminds puppet |
(performance) - Sets up basic performance testing |
Shell commands take a very long time on windows . We wanted to make improvements so we need to measure timings first to see if we improved.
|
logicminds |
145 |
3 |
false |
false |
| PDKSync |
136 |
95 |
sanfrancrisko iac puppet |
Add tasks to add / update entries in module's provision.yaml |
No previous comment other than codecov-io
|
|
95 |
1 |
true |
false |
| PDKSync |
137 |
90 |
sanfrancrisko iac puppet |
(IAC-975) Update 'create_pr_against' default branch |
0 comments
|
|
0 |
0 |
true |
false |
| puppet-lint |
795 |
1029 |
ColinHebert |
Create a puppet-lint docker image as part of the build |
0 comments
|
|
0 |
0 |
true |
false |
| puppet-lint |
779 |
1092 |
rodjek vox |
[WIP] Revamp docs site |
0 comments
|
|
0 |
0 |
true |
false |
| puppet-lint |
696 |
1307 |
rothsa |
add five new whitespace checks and fixes |
I’m not, would you like me to close?
On Thu, May 28, 2020 at 07:06 daianamezdrea
wrote:
> Hi @rothsa ! Are you still working on this PR?
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> ,
> or unsubscribe
>
> .
>
|
rothsa |
154 |
6 |
true |
false |
| puppet-lint |
834 |
777 |
glennsarti |
{WIP} (todo) Add better Windows support |
0 comments
|
|
0 |
0 |
true |
false |
| puppet-lint |
883 |
392 |
usev6 |
Include check name in log output by default |
This is meant as a suggestion or a basis for discussion.
The change might break existing setups that rely on the old log output format, so it might be better to wait for version 3?
|
usev6 |
392 |
1 |
true |
false |
| puppet-lint |
919 |
210 |
raphink puppet vox |
Improve Rake task |
Hey @rodjek , are you interested in this pr?
|
raphink |
32 |
1 |
true |
true |
| puppet-lint |
586 |
1420 |
rnelson0 vox |
Puppethack: Validate puppet code before attempting to lint it. |
@david22swan Not me, personally, I unfortunately do not have the time to participate in this project nearly as much these days. I believe there may have been some improvements that supersede its need anyway, perhaps @rodjek can confirm if that is the case, or if there is already something in the plans.
|
rnelson0 |
175 |
11 |
false |
true |
| Puppet Module Gems |
144 |
16 |
logicminds puppet |
Update puppet-debugger gem to 1.0 for ruby 2.4+ |
@michaeltlombardi This is now fixed although I don't like the way the code forces me to repeat myself.
|
logicminds |
5 |
3 |
false |
true |
| Puppet Strings |
247 |
88 |
ekohl vox |
Handle function return tags without a type |
Still a draft since I haven't had time to actually look into calling the fixture, but that is a reproducer for the behavior.
|
ekohl |
88 |
1 |
true |
false |
| Puppet::Syntax |
127 |
2 |
wershlak |
support multiple encoded blocks |
0 comments
|
|
0 |
0 |
true |
false |
| Puppet Labs Spec Helper |
233 |
969 |
nabertrand |
Add all spec/lib directories from fixtures to LOAD_PATH |
Hi @daianamezdrea, sure, I should hopefully have some time to look at this soon.
|
nabertrand |
153 |
2 |
false |
true |
| Puppet Labs Spec Helper |
319 |
3 |
dependabot-preview[bot] |
Update rubocop requirement from = 0.49 to 1.1.0 |
CLA signed by all contributors.
|
puppetcla |
3 |
1 |
true |
false |
| Puppet Labs Spec Helper |
269 |
675 |
nabertrand |
Update fixtures from forge when the module version doesn't match; fix git < 2.7 compatibility |
Hi @daianamezdrea, I will try and rebase this shortly.
|
nabertrand |
153 |
5 |
false |
true |
| Puppet Labs Spec Helper |
300 |
238 |
findmyname666 |
Remove all sub-folders from source repository / folder |
@daianamezdrea is going to test the change out in a multi node test environment (e.g. [puppetlabs-ibm_installation_manager](https://github.com/puppetlabs/puppetlabs-ibm_installation_manager)):
Modify `Gemfile` to use this repo:
```
group :development do
gem "puppetlabs_spec_helper", require: true, git: 'https://github.com/findmyname666/puppetlabs_spec_helper', ref: '87ec9e4d3b4dbac0ced2e1bb5b7bd22bc6799dac'
end
```
```
bundle install
bundle exec rake 'litmus:provision_list[release_checks]'
# etc...
```
|
sanfrancrisko |
145 |
5 |
false |
true |
| Puppet Labs Spec Helper |
288 |
567 |
rodjek vox |
(PDK-1047) Add rake task to inspect module for class & defined type definitions |
> What I was saying is that retrospec already does the thing being built here.
The goal of PDK-1047 is not to implement retrospec style functionality. We do not want to inspect the contents of the class or defined types to generate extensive tests for all the contained resources.
> Test generators suffer from the problem that most people using them have no clue how to write or maintain the tests it creates. Test Education is more important IMHO.
The scope of this is simply to be able to examine a module during `pdk convert` and feed this information into the existing PDK object generators so that the *very minimal* template specs are generated, the same specs that are generated by running `pdk new class` or `pdk new defined_type`.
These generated tests are little more than `it { is_expected.to compile }`, which we've found is enough for most users.
|
rodjek |
488 |
7 |
false |
false |
| Puppet Labs Spec Helper |
291 |
494 |
cardil |
Feature: metadata dependencies are auto installed |
Hi @cardil, this looks nice! Can you rebase it, please ? Thank you! Cheers!
|
daianamezdrea |
145 |
7 |
false |
false |
| Resource API |
276 |
144 |
DavidS iac puppet |
(IAC-859) Add ruby 2.7 to test matrix |
Blocked on puppetlabs/puppet#master cleaning up the ruby 2.7 warnings - not gonna rework the tests for this.
|
DavidS |
140 |
1 |
false |
false |
| rspec-puppet-facts |
122 |
59 |
ekohl vox |
Implement fact memoization |
@mcanevet could you have a look?
|
ekohl |
34 |
4 |
true |
true |
| rspec-puppet |
811 |
0 |
DavidS iac puppet |
Adjust raise_error to allow rspec-expectation's 3.10.0 changes |
[![Coverage Status](https://coveralls.io/builds/34640920/badge)](https://coveralls.io/builds/34640920)
Coverage increased (+0.06%) to 85.34% when pulling **bd9f0f53d3adb70eac1af2bead6e5397f25f71c2 on DavidS:raise_error** into **5413833116de8287b6a0f4870de1e48115b2ab5d on rodjek:master**.
|
coveralls |
0 |
1 |
true |
false |
| rspec-puppet |
716 |
806 |
rodjek vox |
[WIP] |
[![Coverage Status](https://coveralls.io/builds/21696103/badge)](https://coveralls.io/builds/21696103)
Coverage increased (+0.2%) to 86.348% when pulling **67244b0d5acc878aea5b442f78a1669b6bdd24a2 on 100_coverage** into **ee7442b0b7893cb26824fa0aade52e7fa44fa0fc on master**.
|
coveralls |
624 |
1 |
true |
false |
| rspec-puppet |
794 |
180 |
thatnerdjosh |
Allow users to setup control repo |
@rodjek I am having trouble finding the tests for the `rspec-puppet-init` utility, could you point me to where I should be looking for that?
|
thatnerdjosh |
180 |
3 |
true |
true |
| rspec-puppet |
742 |
633 |
b4ldr vox |
allow users to disable app_managment |
bump
|
b4ldr |
339 |
3 |
true |
false |
| rspec-puppet |
720 |
788 |
hashar |
Patch service to default to systemd on Debian 9 |
We see the same problem is there an open issue to this PR?
|
TheMeier |
403 |
2 |
true |
false |
| rspec-puppet |
809 |
6 |
sanfrancrisko iac puppet |
Allow customizing module-layer Hiera configuration |
I've resolved my above comments in my original branch and am working on adding additional long-form Hiera testing documentation as requested in the original PR. I think I'll just re-open #732 once I've finished the long-form documentation if that works.
|
nabertrand |
4 |
2 |
true |
false |
| rspec-puppet |
661 |
970 |
asharpe |
allow testing environment functions |
Bumping this from the 2.8.x release since it sounds like it may just not get implemented.
|
scotje |
6 |
4 |
true |
false |
| rspec-puppet |
611 |
1137 |
rodjek vox |
[RFC] New syntax |
How would this deal with resources within a module? given the current double underscore I'd expect `describe concat__fragment('x') do ... end`
Another thing I'd like to see is easy verification of the full content. Currently we have helper functions:
```
def verify_concat_fragment_contents(subject, title, expected_lines)
is_expected.to contain_concat__fragment(title)
content = subject.resource('concat::fragment', title).send(:parameters)[:content]
expect(content.split("\n") & expected_lines).to match_array(expected_lines)
end
def verify_concat_fragment_exact_contents(subject, title, expected_lines)
is_expected.to contain_concat__fragment(title)
content = subject.resource('concat::fragment', title).send(:parameters)[:content]
expect(content.split(/\n/).reject { |line| line =~ /(^#|^$|^\s+#)/ }).to match_array(expected_lines)
end
```
|
ekohl |
784 |
9 |
false |
false |
| rspec-puppet |
619 |
1095 |
binford2k puppet vox |
Adds the ability to spec test an arbitrary string |
Hmm. I'm not opposed to that idea, but how would we be able to invoke a spec programmatically then? We're using this now like so:
``` ruby
def run_rspec(spec_path, str)
require 'rspec/core'
# rspec needs an IO object to write to. We just want it as a string...
data = StringIO.new
RSpec::configure do |c|
c.output_stream = data
c.formatter = 'json'
end
# require *after* setting the output stream or it screams at us
# String input depends on https://github.com/rodjek/rspec-puppet/pull/619
require 'rspec-puppet'
RSpec::configure do |c|
c.string = str
end
begin
RSpec::Core::Runner.run([spec_path])
return data.string
rescue StandardError, LoadError => e
return "Error running spec test: #{e.message}",
end
```
|
binford2k |
1090 |
3 |
false |
false |
| rspec-puppet |
618 |
1104 |
logicminds puppet |
WIP: Adds rspec configuration to set default facterdb search paths |
[![Coverage Status](https://coveralls.io/builds/13891765/badge)](https://coveralls.io/builds/13891765)
Coverage increased (+0.06%) to 91.449% when pulling **1f128bf2bf31d68b95eb87fbae563af61b946db0 on nwops:external_facts** into **11f93e70abaf35f774a3c7c87f9107fa62a0152c on rodjek:master**.
|
coveralls |
1104 |
2 |
true |
false |
| rspec-puppet |
685 |
908 |
DavidS iac puppet |
Remove bulk of README and point to the docs site |
[![Coverage Status](https://coveralls.io/builds/16901054/badge)](https://coveralls.io/builds/16901054)
Coverage remained the same at 92.011% when pulling **75b9be11767e4d7e2d8311bbe3e4663910698261 on DavidS:clean-readme** into **3a49432ab2dedd998ee4a7b002022d969dd491a0 on rodjek:master**.
|
coveralls |
908 |
1 |
true |
false |
| rspec-puppet |
555 |
1216 |
kjetilho |
Add .tagged and .not_tagged methods for resource matcher |
[![Coverage Status](https://coveralls.io/builds/12274104/badge)](https://coveralls.io/builds/12274104)
Changes Unknown when pulling **40cd1271b0c28a3b0cddaa0cbcf314a3f8a84728 on kjetilho:tagged_matcher** into ** on rodjek:master**.
|
coveralls |
1215 |
2 |
true |
false |
| rspec-puppet |
562 |
1212 |
rodjek vox |
Clean up all the trivial RuboCop violations |
[![Coverage Status](https://coveralls.io/builds/12310953/badge)](https://coveralls.io/builds/12310953)
Changes Unknown when pulling **ca87da655846f63f3947bb695836159a41cccd73 on rubocop_cleanup** into ** on next**.
|
coveralls |
1212 |
2 |
true |
false |
| Rubocop::I18n |
46 |
8 |
mvz |
Upgrade to RuboCop 1.0 |
0 comments
|
|
0 |
0 |
true |
false |


Lazyframe Advanced
a dependency-free library to lazyload iframes and save bandwidth and memory
Why would you use it?
JavaScripts loaded from external providers like YouTube or Vimeo or Google Maps are big and waste precious bandwidth (especially on mobile). This slows down the loading of your website, even if your visitors don't want to see your beautiful videos or embeds.
For example here are the number of requests and filesizes of some well-known services:
- YouTube – 11 requests ≈ 1099kb (over a megabyte) 😲
- Google maps – 52 requests ≈ 520kb 😲
- Vimeo – 8 requests ≈ 232kb 😲
What does it do?
LazyframeAdvanced creates a responsive placeholder (and a placholder image from noembed.com or your custom one) for embedded content and only requests its content and scripts when the user interacts with it.
This decreases the page load and idle time. LazyframeAdvanced comes with brand-like themes for YouTube and Vimeo.
The thumnail placeholder is only loaded when the frame is in view, this saves additional bandwidth.
Examples
YouTube video with thumbnail and title from noembed.com
YouTube video with custom thumbnail image and custom title
Vimeo video with thumbnail and title from noembed.com
Google maps iframe with static placeholder image
Custom iframe with a Surveymonkey form
This video from vimeo has the data-initinview parameter set to to true, so it autoplays, when it enters the viewport
Need Help? Found a bug?
File an issue on GitHub


Utilities using precision floating point summation.
|
|
cbrt(x)
Compute the cube root x**(1/3). |
|
|
|
|
cbrt2(x)
Compute the cube root squared x**(2/3). |
|
|
|
|
euclid(x,
y)
Appoximate the norm sqrt(x**2 + y**2) by
max(abs(x), abs(y)) + min(abs(x), abs(y)) *
0.4142.... |
|
|
|
|
euclid_(*xs)
Appoximate the norm sqrt(sum(x**2 for x in
xs)) by cascaded euclid. |
|
|
|
|
|
|
|
|
|
|
fatan(x)
Fast approximation of atan(x) . |
|
|
|
|
fatan1(x)
Fast approximation of atan(x) for 0 <=
x <= 1 , unchecked. |
|
|
|
|
fatan2(y,
x)
Fast approximation of atan2(y, x) . |
|
|
|
|
favg(v1,
v2,
f=0.5)
Return the average of two values. |
|
|
|
|
fdot(a,
*b)
Return the precision dot product sum(a[i] * b[i] for
i=0..len(a)). |
|
|
|
|
fdot3(a,
b,
c,
start=0)
Return the precision dot product start + sum(a[i] *
b[i] * c[i] for i=0..len(a)). |
|
|
|
|
fhorner(x,
*cs)
Evaluate the polynomial sum(cs[i] * x**i for
i=0..len(cs)) using the Horner form. |
|
|
|
|
|
|
|
fmean(xs)
Compute the accurate mean sum(xs[i] for i=0..len(xs))
/ len(xs). |
|
|
|
|
fmean_(*xs)
Compute the accurate mean sum(xs[i] for i=0..len(xs))
/ len(xs). |
|
|
|
|
fpolynomial(x,
*cs,
**over)
Evaluate the polynomial sum(cs[i] * x**i for
i=0..len(cs)) [/ over]. |
|
|
|
|
fpowers(x,
n,
alts=0)
Return a series of powers [x**i for i=1..n]. |
|
|
|
|
fprod(xs,
start=1)
Iterable product, like math.prod or
numpy.prod . |
|
|
|
|
frange(start,
number,
step=1)
Generate a range of float s. |
|
|
|
value
|
freduce(function,
sequence,
initial=...)
Apply a function of two arguments cumulatively to the items of a
sequence, from left to right, so as to reduce the sequence to a
single value. |
|
|
|
|
fremainder(x,
y)
Remainder in range [-y / 2, y / 2] . |
|
|
|
|
hypot(x,
y)
Return the Euclidean distance, sqrt(x*x + y*y). |
|
|
|
|
hypot_(*xs)
Compute the norm sqrt(sum(x**2 for x in xs)). |
|
|
|
|
hypot1(x)
Compute the norm sqrt(1 + x**2). |
|
|
|
|
hypot2(x,
y)
Compute the squared norm x**2 + y**2. |
|
|
|
|
hypot2_(*xs)
Compute the squared norm sum(x**2 for x in
xs) . |
|
|
|
|
norm2(x,
y)
Normalize a 2-dimensional vector. |
|
|
|
|
norm_(*xs)
Normalize all n-dimensional vector components. |
|
|
|
|
sqrt0(x)
Return the square root iff x > EPS02. |
|
|
|
|
sqrt3(x)
Compute the square root, cubed sqrt(x)**3
or sqrt(x**3). |
|
|
|
|
sqrt_a(h,
b)
Compute a side of a right-angled triangle from
sqrt(h**2 - b**2) . |
|
|


{{ define "main" }} {{- partial "header_2.html" . -}}
Dimension Engineers
AAKR1111P
10th Floor, ABC Tower, Veer Savarkar Road, Mumbai, 400001
06 Aug 2019
For assistance with understanding your CIBIL report visit
www.cibil.com/cibil-rank
W-39912831
N100P670031
08 Aug 2019
999000999000
For assistance with understanding your CIBIL report visit www.cibil.com/cibil-rank


Should extract the binary files using the json file
LOAD JSON URL
...
...
Load any Tensorflowjs saved model JSON file by url
Extract weights for consistent float32 Tensorflowjs saved model binary url
Shape:
...
By Jeremy Ellis
Tensorflowjs Tutorials http://rocksetta.com/tensorflowjs/
Twitter@rocksetta
Website http://rocksetta.com
Use at your own risk!