Handlebars.scala: A Handlebars for Scala
If you rely on SEO, which really means that you rely on robots, you still want client-side app experiences. Handlebars.scala can help you get there. Handlebars.scala—also known around Gilt Tech as Scandlebars, and sometimes Scandalbars—is a Scala implementation of Handlebars: an extension to and superset of the Mustache templating language. It began as an attempt to learn Scala and to experiment with Scala’s Parser Combinators in order to get Handlebars.js templates working in Scala. These days, it forms a critical part of our stack.
The Genesis of Handlebars.scala
At Gilt, we rely on SEO for a not-insignificant amount of revenue. This means that, at some point, a robot/crawler makes a request against Gilt’s server, and the server has to return HTML. This is how most web pages have been made. In recent years, the paradigm has shifted toward web applications that use client-side template rendering techniques—i.e., single-page apps. These applications are faster than the old technologies allowed, and offer a snappier user experience. The idea behind a single-page app is that you can offload much of the HTML rendering to the client—and you do that through a templating language. Handlebars is one of those templating languages.
At Gilt, we were trying to solve two problems: to render HTML pages server-side, but also get rich client-side rendering—a “best of both worlds” scenario to address the client-server disparity, and create a way to easily share UI pieces as a JVM library.
We had experience with server-side templating engines like Java Server Pages (JSP), which has its own nuances, as well as client-side, JavaScript templating engines like Handlebars. With both of these, you end up duplicating logic—and our goal was to economize on server-side rendering and reduce the duplication. Our question: How can we make server-side rendering low-barrier enough without duplicating too much of our efforts in client-side rendering?
We Tried Mustache
With this question in mind, we checked out Mustache. A logic-less templating language, Mustache offers a considerable benefit: It’s language-agnostic and offers several implementations for all programming languages, including Scala. After experimenting with Mustache, however, our UI Architecture team realized that it’s really terse.
After playing around with Mustache, Eric and the team were drawn to Handlebars: a superset of Mustache created by Tilde co-founder Yehuda Katz. Handlebars is very similar to Mustache, but offers a variety of extras—namely, path lookups and helper functions. It also can be pre-compiled into JavaScript. Handlebars is a crucial component of Ember.js, which Yehuda also created.
Our issue with Handlebars was that we needed it to run on the JVM. When I shared this info with Yehuda’s colleague, Tilde co-founder Tom Dale, after a NYC.JS meetup, he suggested that we try out Rhino—a JavaScript interpreter written in Java. At the time, Gilt Senior Engineer Kevan Davis was trying to figure out how to run Handlebars and Rhino, and made some progress with it, but the setup was clumsy because Rhino is clumsy. “Maybe I’ll just write Handlebars in Scala,” I finally said to Tom. We were at a bar at the time, and I was a bit tipsy, but there was a “yeah, sure, do that” vibe to our conversation.
The Scandal of Scandlebars: I Didn’t Actually Know Scala Yet
The problem with “just writing Handlebars in Scala” was that I hadn’t messed around with Scala much. Handlebars.scala was my first Scala project. Developing it was something of an excuse to play with the language and learn it by doing. Whatever works, right?
The Scala standard library includes Parser Combinators: a functional programming method to describe grammars for language. I learned how to use Parser Combinators, and how to build parsers, by studying the source code of Scalate (a set of templating languages in Scala, including Mustache). This, plus help from the denizens of Gilt’s Scala 2.9.1 chat room, helped me to create Handlebars.scala.
Handlebars’ preference for JavaScript (a dynamically typed, prototype-based language with first-class functions) made writing it in Scala (a statically-typed, hybrid-oriented language) pretty interesting from a bridging-concepts perspective. There’s just all kinds of syntactic quirks with Scala—for example, [Option] and how to make Option—or any monad—work.
In developing Handlebars.scala I faced a number of philosophical questions:
- How do you write idiomatic Scala and still have it make sense?
- How should Options work?
- How does the collection library work?
- How can you leverage case and pattern matching so that you can achieve what you want in Handlebars by using Scala that you’re already familiar with (the idea being that any Scala object should be able to fit into a Handlebars template)?
How Handlebars.scala Works
I think the key thing that makes Handlebars.scala work is the idea of view models. On the Scala side, in our server, are intelligent, intermediary layers that we can use to render a Scala/Handlebars template or serialized into JSON in order to render them using Handlebars.js.
Here’s an example of the apply method of a Handlebars instance, which should be familiar to Scala fans. Apply takes an optional second argument: a Map of helper functions. The signature for apply looks like this:
def apply[T](context: T, helpers: Map[String,Helper[T]] = Map.empty[String,Helper[T]])
A few things to note when using Handlebars.scala:
- Implicit conversions will not work in a template. Because Handlebars.scala makes heavy use of reflection. Bummer, I know. This leads me to…
- …Handlebars.scala makes heavy use of reflection. This means that there could be unexpected behavior.
- Method overloading will behave in bizarre ways.
- There is likely a performance penalty. I’m not sophisticated enough in the arts of the JVM to know the implications of this.
How does Handlebars.scala perform?
We’ve been using Scandlebars in production, and it’s become a crucial part of our rendering stack. We use it wherever we have a user interface that needs to be represented both the server and the client. Handlebars.scala gives us this choice to render it immediately or at a later date.
Some specific examples of Handlebars.scala at Gilt:
- Our new unified nav (built entirely with Handlebars.scala)
- We have lots of small applications that don’t all use the same technologies, but we need them to be able to share a user interface as a library. Scandlebars enables us to make these HTML pieces as a library Our product detail pages Search
With those last two items, the idea was that the same template we use to render a product on a server can be used to render it on the client. This reduces duplication by a not-inconsequential amount. What the client can do is say, “I know how to render this thing. Now, I know I’m not a robot—I’m a user using JavaScript—so instead of going back to the server for an HTML roundtrip, I can just go to the JSON.”
The client-side app experience feels a lot faster with Handlebars.scala. We started to benchmark its performance and tried to find bottlenecks in rendering. Handlebars.scala uses a lot of reflection, so that can sometimes be a bit tricky in Scala or another statically-typed language. But overall, I think it performs pretty well. There’s always going to be an upper bound to its performance because it uses reflection.
One key question I haven’t answered yet is this: When you use futures in Scala and Akka, and a Handlebars.scala template resolves that future, how do you organize your code before putting it into Handlebars.scala and make your data easily accessible through Handlebars.scala? Until I have a sure answer to that question, I don’t advise resolving futures inside of a template.
Then we started trying to figure out, we have the ability to make an AST (abstract syntax stream) out of a template file. Now how do you take data and render a template. Need some way for the tree to be filled in. It raised a bunch of questions
The Future of Handlebars.scala
Gilt Software Engineer Chris “Chicks” Hicks and I have started working on the next version of Handlebars.scala—the idea being that Handlebars.js 1.0 has been released fairly recently, and now we want Handlebars.scala to meet it in terms of almost-compatibility. A key concern is how we can make using Handlebars.scala balance between feeling like the JavaScript-Handlebars but just as comfortable for Scala developers. If Handlebars.scala is too much like JavaScript, it won’t fit with the programming paradigm, but if it’s too much like Scala, then it will feel like it deviates too much from its original implementation.
I have a few ideas:
- Make usability improvements, including the kinds of types helper functions can take
- Resolve the bugs with nested conditionals
- Make it clearer
- Make the code prettier
- Optimize for the use cases we’ve run into in production—then we might be more comfortable opening it up to larger use
- Make sure the concept of sharing templates works and is really solid
If you use Handlebars.scala or have any additional ideas for improvements, I’d love to hear them—just contact me via GitHub.


Compare the heroes
A simple webapp to compare two superheroes using the
superhero-api
to get the information and presenting it with
Chart.js
Hero#1
Hero#2


Click to toggle navigation menu.
Home
Home
Home
Home
Home
About Us
Billing Guide
Contact Us
About Us
Billing Guide
Contact Us
About Us
Billing Guide
Contact Us
About Us
Billing Guide
Contact Us
About Us
Billing Guide
Contact Us


Mr. Fluff is a little ball of joy just waiting to meet you.
Lil' Side Eyes will have you wondering if it was something you said, or something you did, day and night and all with love.
Grampaw Whiskers is nearing the end of his journey, but he's still looking for one last spot to call home.
 Either way, it sounds like a win to us.
You've seen the pups, now its time ah-dupt (no?No? I'll stop)
080.8625.2384
Call or email today to set your adoption.


freeCodeCamp
Thank you for taking the time to help us improve the platform
Name
Email
Age(optional)
Phone Number
Which option best describes your current role?
Student
Full Time Job
Full Time Learner
Prefer not to say
Other
Would you recommend freeCodeCamp to a friend?
Definitely
Maybe
Not Sure
What would you like to see improved? (Check all that apply)
Front-End-Projects
Back-End-Projects
Front-End-Projects
Data Visualization
Challenges
Open Source Community
Gitter Help Rooms
Videos
Any additional comments or suggestions?
Submit


It is unclear which exceptions that can be thrown from the methods. It might be difficult to document and understand the vague interfaces. Use either a class derived from RuntimeException or a checked exception.
This rule is deprecated, use {rule:squid:S00112} instead.


TZCNT — Count the Number of Trailing Zero Bits
| Opcode/Instruction |
Op/En |
64/32 -bit Mode |
CPUID Feature Flag |
Description |
| F3 0F BC /r TZCNT r16, r/m16 |
RM |
V/V |
BMI1 |
Count the number of trailing zero bits in r/m16, return result in r16. |
| F3 0F BC /r TZCNT r32, r/m32 |
RM |
V/V |
BMI1 |
Count the number of trailing zero bits in r/m32, return result in r32. |
| REX.W + F3 0F BC /r TZCNT r64, r/m64 |
RM |
V/N.E. |
BMI1 |
Count the number of trailing zero bits in r/m64, return result in r64. |
Instruction Operand Encoding
| Op/En |
Operand 1 |
Operand 2 |
Operand 3 |
Operand 4 |
| A |
ModRM:reg (w) |
ModRM:r/m (r) |
NA |
NA |
Description
TZCNT counts the number of trailing least significant zero bits in source operand (second operand) and returns the result in destination operand (first operand). TZCNT is an extension of the BSF instruction. The key difference between TZCNT and BSF instruction is that TZCNT provides operand size as output when source operand is zero while in the case of BSF instruction, if source operand is zero, the content of destination operand are undefined. On processors that do not support TZCNT, the instruction byte encoding is executed as BSF.
Operation
temp ← 0
DEST ← 0
DO WHILE ( (temp < OperandSize) and (SRC[ temp] = 0) )
temp ← temp +1
DEST ← DEST+ 1
OD
IF DEST = OperandSize
CF ← 1
ELSE
CF ← 0
FI
IF DEST = 0
ZF ← 1
ELSE
ZF ← 0
FI
Flags Affected
ZF is set to 1 in case of zero output (least significant bit of the source is set), and to 0 otherwise, CF is set to 1 if the input was zero and cleared otherwise. OF, SF, PF and AF flags are undefined.
Intel C/C++ Compiler Intrinsic Equivalent
| TZCNT: |
unsigned __int32 _tzcnt_u32(unsigned __int32 src); |
| TZCNT: |
unsigned __int64 _tzcnt_u64(unsigned __int64 src); |
Protected Mode Exceptions
| #GP(0) |
For an illegal memory operand effective address in the CS, DS, ES, FS or GS segments. If the DS, ES, FS, or GS register is used to access memory and it contains a null segment selector. |
| #SS(0) |
For an illegal address in the SS segment. |
| #PF (fault-code) |
For a page fault. |
| #AC(0) |
If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3. |
Real-Address Mode Exceptions
| #GP(0) |
If any part of the operand lies outside of the effective address space from 0 to 0FFFFH. |
| #SS(0) |
For an illegal address in the SS segment. |
Virtual 8086 Mode Exceptions
| #GP(0) |
If any part of the operand lies outside of the effective address space from 0 to 0FFFFH. |
| #SS(0) |
For an illegal address in the SS segment. |
| #PF (fault-code) |
For a page fault. |
| #AC(0) |
If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3. |
Compatibility Mode Exceptions
Same exceptions as in Protected Mode.
64-Bit Mode Exceptions
| #GP(0) |
If the memory address is in a non-canonical form. |
| #SS(0) |
If a memory address referencing the SS segment is in a non-canonical form. |
| #PF (fault-code) |
For a page fault. |
| #AC(0) |
If alignment checking is enabled and an unaligned memory reference is made while the current privilege level is 3. |


API model information
The result of an order fulfillment notification
| Property | Required | Data Type | Description | Example Values |
|---|---|---|---|---|
| ID | True | string | The unique identifier (generated by the site) that represents this order |
|
| Result | True | RequestResult | Whether the site can accept the OrderFulfillment. If failed, an error must be provided | |
| Errors | False | Error array | Errors or validation failures that prevent successful processing. Required if not successful | |
| HasErrors | False | boolean |
Use the JSON code below as an example of how this model will be serialized.
- {
- "ID": "M456W",
- "Result": "Success",
- "Errors": []
- }


Module ltml.sandbox
The LTML sandbox module returns a function environment to be used when executing templates.
Functions
| returns... ([env]) |
Class Tag
| Tag:__call (data) | Modifies the tag immutably. |
| Tag.name | The name of the tag. |
| Tag.attributes | The attributes of the tag. |
| Tag.children | The tag's children. |
Class Sandbox
| Sandbox:tag (name[, attributes[, children]]) | Returns a constructed tag with given attributes and children. |
| Sandbox:raw (data) | Takes a raw tag and passes it into tag. |
| Sandbox:def (name[, value]) | Declares an environment variable. |
| Sandbox:map (list, func) | Iterates over a list of items and applies a function to all of them, returning a list of the results. |
| Sandbox:cond (test[, yes[, no]]) | Returns a selection of the two final values based on the first value. |
| Sandbox:isdef (var[, yes[, no]]) | A helper function which checks if the variable is defined within the environment using cond. |
Functions
- returns... ([env])
-
Parameters:
- env table A table to use as the starting environment. (optional)
Returns:
-
Sandbox
A Sandbox instance.
Class Tag
An LTML tag.
- Tag:__call (data)
-
Modifies the tag immutably.
Parameters:
- data table The attributes and children to apply to the tag.
Returns:
-
Tag
The modified tag.
- Tag.name
-
The name of the tag.
- name string
- Tag.attributes
-
The attributes of the tag.
- attributes {[string]=string,...} or {[string]=boolean,...}
- Tag.children
-
The tag's children.
- children {Tag,...}
Class Sandbox
An LTML sandbox environment.
- Sandbox:tag (name[, attributes[, children]])
-
Returns a constructed tag with given attributes and children.
Parameters:
- name string The tag's name.
- attributes table The tag's attributes. (optional)
- children table The tag's children. (optional)
Returns:
-
table
The constructed tag.
- Sandbox:raw (data)
-
Takes a raw tag and passes it into tag.
Parameters:
- data table The raw tag.
Returns:
-
table
The constructed tag.
- Sandbox:def (name[, value])
-
Declares an environment variable.
This function is optionally curried.
Parameters:
- name string A variable path name. Can be separated by dots to define variables in table structures.
- value The value to set the variable to. (optional)
- Sandbox:map (list, func)
-
Iterates over a list of items and applies a function to all of them, returning a list of the results.
Parameters:
- list table The list of items to iterate over.
- func function The function to apply.
Returns:
-
table
The list of results.
- Sandbox:cond (test[, yes[, no]])
-
Returns a selection of the two final values based on the first value.
This function is optionally curried.
Parameters:
- test boolean The boolean value to act on.
- yes The value to return when test is truthy. (optional)
- no The value to return when test is falsy. (optional)
Returns:
-
The value of yes if test is truthy, or the value of no if test is falsy.
- Sandbox:isdef (var[, yes[, no]])
-
A helper function which checks if the variable is defined within the environment using cond.
This function is optionally curried.
Parameters:
- var string The name of the variable to check for. Can be dot separated for variables within tables.
- yes The value to return when the variable is defined. (optional)
- no The value to return when the variable is not defined. (optional)
Returns:
-
The value of yes if the variable is defined, or the value of no if the variable is not defined.


{% extends "assessments/panel/panel_base.html" %} {% from "macros.html" import render_form, render_score_pill %} {% block content %}
| Active | Resources | # | {% for active in actives | sort(attribute='name') %}
|---|---|---|
| {{ active.name }} | {% for resource in active.active_resources %}{{ resource.route or '' }} | {{ resource.findings|length }} | {% endfor %} {% endfor %} |


ipad control
Our iPad control system is a user-friendly
alternative to a myriad of individual
equipment remotes in your house.
lighting
Adjust the appearance of your home and entryways or co-ordinate interior and exterior lighting to create the perfect balance.
home theatre
Custom home theatre surround-sound system packages designed and installed, with optional wireless control.
automation
With one button press from your keyfob, your alarm system is disarmed and you have lit a pathway to the kitchen – up the long hallway and past the living room – turned on the multi-room audio system to hear your favourite tunes and activated the air conditioner to set the house to the perfect temperature.
multiroom
Have you ever wished that you could play your favourite CD on your stereo and have it follow you through the house, room to room? We can make it possible.
security
Home security with options for door and gate access control, cameras, video monitoring, and remote management.


Minimalistic - Zero configuration CI/CD for everyone
Go Express Package Manager. Terminal browser and installer for Go packages.
Orar is a brighter way to book hair and beauty salon appointments in Albania.
NodeJSAngularGoLangPythonDocker
Invest4It is a realtime analytic platform and provides latest news about FX trading. The platform is compatible for web, desktop and mobile.
PythonAngular
LeadsForPartners is a online lead generation for businesses that operate in the IT field.
NodeJSReactExpressSass


|
IKSDL
1.1
C++ wrapper for SDL 2 library
|
Window that can render graphics. More...
#include <Window.hpp>
Public Member Functions | |
| IKSDL_EXPORT | Window (const std::string &title, const Sizei &size, const WindowOptions &options=DEFAULT_OPTIONS, const RendererOptions &rendererOptions=Renderer::DEFAULT_OPTIONS, const Positioni &position=UNDEFINED_POSITION) |
| Constructor allowing to set all the parameters for the window. More... | |
| Window (const Window &)=delete | |
| IKSDL_EXPORT | Window (Window &&other) |
| Move constructor. More... | |
| IKSDL_EXPORT | ~Window () |
| Destructor. More... | |
| Window & | operator= (const Window &)=delete |
| IKSDL_EXPORT Window & | operator= (Window &&other) |
| Move assignment operator. More... | |
| template<EventSupport E = ALL_EVENTS_SUPPORT> | |
| Event | pollEvent () const |
| Fetch an event that has not been handled yet. More... | |
| template<EventSupport E = ALL_EVENTS_SUPPORT> | |
| Event | waitEvent () const |
| Wait for an event that has not been handled yet. More... | |
| IKSDL_EXPORT Positioni | getPosition () const |
| Get window position. More... | |
| IKSDL_EXPORT Sizei | getSize () const |
| Get window size. More... | |
| Public Member Functions inherited from iksdl::Renderer | |
| Renderer (const Renderer &)=delete | |
| IKSDL_EXPORT | Renderer (Renderer &&other) |
| Move constructor. More... | |
| IKSDL_EXPORT | ~Renderer () |
| Destructor. More... | |
| Renderer & | operator= (const Renderer &)=delete |
| IKSDL_EXPORT Renderer & | operator= (Renderer &&other) |
| Move assignment operator. More... | |
| IKSDL_EXPORT void | clear (const Color &clearColor=Color(0, 0, 0)) const |
| Clear the rendering area. More... | |
| IKSDL_EXPORT void | display () const |
| Render the drawn entities. More... | |
| void | draw (const Drawable &drawable) |
| Draw an entity. More... | |
| IKSDL_EXPORT void | setViewport (const Recti &viewport) |
| Change the viewport. More... | |
| IKSDL_EXPORT void | resetViewport () |
| Change to the default viewport. More... | |
Static Public Attributes | |
| static constexpr EventSupport | ALL_EVENTS_SUPPORT |
| Support all events. More... | |
| static constexpr WindowOptions | DEFAULT_OPTIONS = WindowOptions().shown() |
| Default window options. More... | |
| Static Public Attributes inherited from iksdl::Renderer | |
| static constexpr RendererOptions | DEFAULT_OPTIONS = RendererOptions().accelerated() |
| Default renderer options. More... | |
Additional Inherited Members | |
| Protected Member Functions inherited from iksdl::Renderer | |
| Renderer (SDL_Window &sdlWindow, const RendererOptions &options=DEFAULT_OPTIONS) | |
| Constructor that makes the renderer work in a window. More... | |
Window that can render graphics.
| IKSDL_EXPORT iksdl::Window::Window | ( | const std::string & | title, |
| const Sizei & | size, | ||
| const WindowOptions & | options = DEFAULT_OPTIONS , |
||
| const RendererOptions & | rendererOptions = Renderer::DEFAULT_OPTIONS , |
||
| const Positioni & | position = UNDEFINED_POSITION |
||
| ) |
Constructor allowing to set all the parameters for the window.
This constructor will throw SdlException if the initialization fails.
|
delete |
| IKSDL_EXPORT iksdl::Window::Window | ( | Window && | other | ) |
Move constructor.
| other | Window to be moved |
| IKSDL_EXPORT iksdl::Window::~Window | ( | ) |
Destructor.
| IKSDL_EXPORT Positioni iksdl::Window::getPosition | ( | ) | const |
Get window position.
| IKSDL_EXPORT Sizei iksdl::Window::getSize | ( | ) | const |
Get window size.
|
inline |
Fetch an event that has not been handled yet.
This method always return immediately, it never waits, event if there is not pending event.
| E | Type of events to fetch |
|
inline |
Wait for an event that has not been handled yet.
If an event is ready to be handled, this method returns immediately. Otherwise, it waits for an event to be ready.
This method may throw SdlException if it failed waiting.
| E | Type of events to fetch |
|
staticconstexpr |
Support all events.
|
staticconstexpr |
Default window options.


 The plump gray-haired serving woman tried to dress her, but Nynaeve sent her away, ignoring the startled looks and protests, and did it herself, with great care, examining the dark green dress with its wide collar of pale Merada lace in the tall narrow stand-mirror. Lan’s heavy gold ring lay in her pouch—best not to think of that—alongside one of the twisted ring ter’angreal, and the Great Serpent gleamed golden around the third finger of her right hand. Her right hand. Best not to think of that either.
The high ceiling was quite pleasantly painted in blue sky and white clouds, and if the furnishings stood on disconcertingly large gilded lion feet and the slim bedposts and chair legs and everything else vertical had too much fluting and gilding for her taste, it was still a more comfortable room than she had stayed in for some considerable time. A pleasant room. Moderately cool. What she was trying to do was calm herself.
It did not work, of course. She had felt saidar being woven, and as soon as she stepped from her bedchamber she saw the ward against eavesdropping Elayne had made and tied off around the sitting room. Birgitte and Aviendha were already there as well, all of them freshly scrubbed and dressed.
In what Birgitte claimed was a rather ordinary arrangement here, four bedchambers flanked the one sitting room, which also had a ceiling painted as sky and clouds. Four tall arched windows opened onto a long balcony of white-painted wrought iron, so intricate they could peer down from it unseen at the Mol Hara Square in front of the palace. A faint breeze stirred through the windows, carrying the salt scent of the sea, and for a wonder it actually was a little cool. Anger interfered with her concentration, and Nynaeve had been feeling the heat since shortly after arriving in the Tarasin Palace.
Thom and Juilin had been given a room somewhere deep in the servants’ quarters, which in truth seemed to irritate Elayne more than it did either of the men. Thom had actually laughed. But then, he could afford to.
“Have some of this excellent tea, Nynaeve,” Elayne said, laying a white napkin across gleaming blue silk skirts.  Aviendha sat by her side, but on the floor, legs folded beneath the skirt of a high-necked dress that almost matched the pale green tile. Her labyrinthine silver necklace went very well with the dress. Nynaeve did not think she had seen the Aiel woman sit in a chair once. People had certainly stared at her in those two inns.
“Mint and cloudberries,” Birgitte added to Elayne’s offer, filling another delicate golden porcelain cup without waiting. Birgitte wore wide gray trousers and a short blue coat. She did wear dresses occasionally, but her taste made Nynaeve glad it was seldom. All three of them dressed and primped, and no one wanted them.
The silver pitcher glistened damply, and the tea was cool and refreshing. Nynaeve admired Elayne’s face, cool and dry. She herself already felt moist again despite the breeze. “I must say,” she muttered, “I expected a different reception.”
“Did you really?” Elayne asked. “After the way Vandene and Adeleas treated us?”
Nynaeve sighed. “Very well, then, I hoped. I am finally Aes Sedai, really Aes Sedai, and nobody seems to believe it. I truly hoped leaving Salidar would make a difference.”
Their meeting with Merilille Ceandevin had not gone well. Their presentation to her, in truth. Vandene’s introduction had been almost perfunctory, and then they were dismissed, sent away so the real Aes Sedai could talk. Merilille had said she was sure they wanted to freshen up, but it was a dismissal, with a choice of going like obedient Accepted or refusing like sulky children. Just remembering ruined all Nynaeve’s attempts at calm; sweat began to run down her face.
Being sent away was not the worst of it, really.  Only those dark eyes had gone wide when told Nynaeve and Elayne were Aes Sedai, and wider still on learning Egwene was the Amyrlin Seat. Birgitte as a Warder clearly astounded her, though by that time she managed to hold her reaction to one stare and a brief tightening of her lips.  Then came the dismissal. And a suggestion, more in the nature of a command, that they spend several days recuperating from the rigors of their journey.
  “I do not like how we’re treated any more than you, but you are trying to make a bull out of a mouse. If Vandene and Adeleas want to look for runaways, let them. Would you rather have them trying to take over looking for the bowl?” During the whole journey they had hardly mentioned the ter’angreal they sought, for fear the pair would do just that.
Whether they would have or not, Nynaeve still thought they were hiding things. Elayne just did not want to admit it. Adeleas had not realized that Nynaeve had overheard that remark about looking for runaways once they reached Ebou Dar, and when Nynaeve asked whether they really expected to find any, Vandene replied just a bit too quickly that they always kept an eye out for young women who had run from the Tower. It did not make sense. No one had run away from Salidar, but novices did run sometimes—the life was hard, especially with years of obedience to look forward to before you could even think of thinking for yourself—and an occasional Accepted who had begun to despair of ever reaching the shawl tried to slip away, yet even Nynaeve knew that few made it off the island of Tar Valon and almost all were dragged back. You could be put out at any time, for not being strong enough to go on, for refusing or failing your test for Accepted or the test for Aes Sedai that she and Elayne had slipped by, but leaving was never your decision unless you wore the shawl.
So if successful runaways were so rare, why did Vandene and Adeleas think they might find one in Ebou Dar, and why had they shut up like mussels when she asked? She was afraid she knew the answer to the last, anyway. Not tugging her braid required considerable self-control. She thought she was becoming better at that.
“At least Mat finally knows we’re Aes Sedai,” she growled. At least she could deal with him now. Let him try anything, and he would see what it was like being thumped with everything she could wrap a flow around. “He had better.”
“Is that why you’ve been avoiding him like a Cheltan flinching from the tax collector?” Birgitte asked with a grin, and Nynaeve felt her face coloring. She thought she had hidden her feelings better than that.
“He is very irritating, even for a man,” Aviendha murmured. “You must have traveled very far, Birgitte. You often speak of places I have never heard of. One day I would like to travel the wetlands and see all these strange places. Where is this . . . Cheltan? Chelta?”
That wiped Birgitte’s grin right off; wherever it was, it might be dead a thousand years, or since an earlier Age altogether. Her and her slipping ancient places and things into the conversation. Nynaeve wished she had been there to see her admit to Egwene what Egwene already knew.  Birgitte had actually come back looking chastened.
Even so, Nynaeve liked Birgitte rather better than she did Aviendha, who made her very uneasy at times with her hard stares and bloodthirsty talk. And however irritating Birgitte could be, Nynaeve had promised to help her keep her secret.
“Mat . . . threatened me,” she said hurriedly. It was the first way that came to mind to divert Aviendha and the last thing she wanted anyone else to know. Her cheeks heated all over again. Elayne actually smiled, though she had the grace to hide it in her teacup. “Not like that,” Nynaeve added when Aviendha began frowning and fingering her belt knife. The Aiel woman seemed to think the proper response to everything was a violent one. “It was just . . . ” Aviendha and Birgitte looked at her, all ears and interest. “He just said . . . ” As she had rescued Birgitte, Elayne rescued her.
“I really think that is enough about Master Cauthon,” Elayne said firmly. “He is only here to pull him out of Egwene’s hair, and I can puzzle out what to do about the ter’angreal later.” Her lips compressed for a moment. She had not been happy when Vandene and Adeleas began channeling at Mat without so much as a by-your-leave, and even less when he slipped off to that inn. There had been nothing she could do, of course. She claimed that by only telling him to do what he had to do anyway in the beginning, she could bring him into the habit. Well, good luck to her. “He is the least important part of this trip,” she said, even more firmly.
“Yes.” Nynaeve just kept the relief out of her voice. “Yes, the bowl is what’s important.”
“I suggest I scout about first,” Birgitte said. “Ebou Dar seems rougher than I remember, and the district you describe could be rougher than . . . ” She did not quite glance at Aviendha. “ . . . than the rest of the city,” she finished with a sigh.
“If there is scouting to be done,” Aviendha put in eagerly, “I wish to be part of it. I have a cadin’sor.”
“A scout is supposed to blend in,” Elayne said gently. “I think we should find Ebou Dari dress for all of us; then we can all search together from the start, and none of us will stand out. Though Nynaeve will have the easiest time of it,” she added, smiling at Birgitte and Aviendha. The Ebou Dari they had seen so far all had dark hair, and most seemed to have nearly black eyes.
Aviendha exhaled glumly, and Nynaeve felt like echoing her, thinking of those deep necklines. Very deep, however narrow. Birgitte actually grinned; the woman had no shame at all.
Before the discussion could go any further, a woman with short black hair, in the livery of House Mitsobar, entered without knocking, which Nynaeve thought rude no matter what Elayne said was proper for servants. Her dress was white, the skirt sewn up to the knee on the left side to expose a green petticoat, with a snug bodice embroidered on the left breast with a green Anchor and Sword. Even the livery’s narrow neckline plunged as far as Nynaeve recalled. Plump and somewhere in her middle years, the woman hesitated, then curtsied and addressed herself to everyone. “Queen Tylin wishes to see the three Aes Sedai, if it pleases them.”
Nynaeve exchanged wondering looks with Elayne and the others.
“There are only two of us Aes Sedai here,” Elayne said after a moment. “Perhaps you meant to go to Merilille?”
“I was directed to this apartment . . . Aes Sedai.” The pause was barely long enough to notice, and the woman just missed turning the title into a question.
Elayne rose, smoothing her skirts; no stranger would suspect that that smooth face hid anger, but there was a hint of tightness at the corners of eyes and mouth. “Shall we go, then? Nynaeve? Aviendha? Birgitte?”
“I am not Aes Sedai, Elayne,” Aviendha said, and the serving woman put in hurriedly, “I was told only the Aes Sedai.”
“Aviendha and I could have a look around the city while you see the Queen,” Birgitte said before Elayne could open her mouth.
Elayne gave the pair of them a sharp look, then sighed. “Well, at least be careful. Nynaeve, are you coming, or do you want to see the city too?” That last was in a dry tone, with another glance at Birgitte.
“Oh, I would not miss it,” Nynaeve told her. “It will be good to finally meet someone who thinks . . . ” She could not finish it with the maid there. “We should not keep the Queen waiting.”
“Oh, no,” the liveried woman said. “It’d be as much as my ears are worth.”
However much her ears were worth, it took some time to walk through the palace corridors.  In one corridor the ceiling was painted green and the walls blue, in another the walls were yellow and the ceiling pale rose. The floor tiles were diamonds of red and black and white, or blue and yellow, or almost any combination in any shade. There were very few tapestries, usually scenes of the sea, but a good many tall vases of golden Sea Folk porcelain stood in arched niches, and also large pieces of carved crystal, statuettes and vases and bowls, that caught Elayne’s eye as well as Nynaeve’s.
Of course servants scurried about everywhere, the men’s version of the livery entailing white breeches and a long green vest over a white shirt with wide, pleated sleeves, but before they had gone very far Nynaeve saw someone striding toward them who made her stop and catch Elayne’s arm. It was Jaichim Carridin.  Sweat covered his face, but he ignored it as he ignored them.
“What is he doing here?” Nynaeve demanded. That man had unleashed slaughter in Tanchico, and the Light only knew where else.
The serving woman looked at her quizzically. “Why, the Children of the Light sent an embassy too, months gone. The Queen . . . Aes Sedai?” Again, that hesitation.
Elayne managed to nod graciously, but Nynaeve could not blank the asperity from her own voice. “Then we should not keep her waiting.” One thing Merilille had let slip about this Tylin was that she was a punctilious woman, stiffly formal. But if she too started doubting they were Aes Sedai, Nynaeve was in just the mood to prove it.
The serving woman left them in a large room with a pale blue ceiling and yellow walls, where a row of tall triple-arched windows gave onto a long wrought-iron balcony and let in a quite comfortable salty breeze, and before the Queen Nynaeve and Elayne made their curtsies, proper for Aes Sedai to ruler, a slight dip, a tiny bow of the head.
Tylin was a most impressive woman. No taller than Nynaeve, she stood with a regal bearing that Elayne would have had to strain to match on her best day. She should have replied to their courtesies with the same, but she did not.
Nynaeve returned the favor as well as she could. Waves of glossy black hair, gray at the temples, hung well below Tylin’s shoulders, framing a face that was handsome if not unlined. Shockingly, there were two scars on the woman’s cheeks, fine and so old they had all but vanished. Of course, she did have one of those curved knives stuck through a belt of woven gold, with hilt and scabbard encrusted in gems, Nynaeve was sure it must be for show. Tylin’s blue silk dress was certainly nothing anyone could wear fighting a duel, with falls of snowy lace that would nearly hide her fingers if she lowered her hands, and skirts drawn up above her knees in front to expose layers of green and white silk petticoats and trailing behind her a pace or more. The bodice, trimmed in the same lace, was snug enough that Nynaeve was not sure whether sitting in it or standing would be more uncomfortable. A collar of woven gold fastened around the gown’s high neck, which put more lace under her chin, supported a white-sheathed marriage knife hanging hilt-down into an oval cut-out that easily equalled any of those deep necklines.
“You two must be Elayne and Nynaeve.” Tylin took a chair carved to resemble bamboo, though covered in gilt, and arranged her skirts carefully without taking her eyes from them. Her voice was deep, melodious and commanding. “I understood there was a third. Aviendha?”
Nynaeve exchanged glances with Elayne. There had been no invitation for them to sit, not so much as a flicker of eyes toward a chair. “She is not Aes Sedai,” Elayne began calmly.
Tylin spoke before she could say more. “And you are? You’ve seen eighteen winters at most, Elayne.  Twenty-two? Twenty-three perhaps? Stab my liver! I visited Tar Valon once, and the White Tower. I doubt any woman your age has ever worn that ring on her right hand.”
“Twenty-six!” Nynaeve snapped. With a good part of the Women’s Circle back in Emond’s Field thinking she was too young to be Wisdom, it had become habit with her to flourish every naming day she could claim. “I am twenty-six and an Aes Sedai of the Yellow Ajah.” She still felt a thrill of pride saying that. “Elayne may be eighteen, but she is Aes Sedai as well, and Green Ajah. Do you think Merilille or Vandene would let us wear these rings as a joke? A good many things have changed, Tylin. The Amyrlin Seat, Egwene al’Vere, is no older than Elayne.”
“Is she?” Tylin said in a flat voice. “I was not told that. When the Aes Sedai who counseled me from the day I took the throne, and my father before me, abruptly leaves for the Tower without explanation, and I then learn that rumors of a Tower divided are true; when Dragonsworn seem to spring out of the ground; when an Amyrlin is chosen to oppose Elaida and an army gathered under one of the great captains, inside Altara, before I hear of it—when all of that has happened, you cannot expect me to be enamored of surprises.”
Nynaeve hoped her face did not look as sickly as she felt. Why could she not learn to hold her tongue occasionally? Abruptly she realized she could no longer sense the True Source; anger and embarrassment did not go together very well. It was probably to the good. If she could channel, she might make an even bigger fool of herself.
Elayne moved to smooth things over without a pause. “I know you have heard this before,” she told Tylin, “but let me add my apologies to those of Merilille and the others. Gathering an army inside your borders without your permission was unconscionable. All I can say in mitigation is that events moved quickly and we in Salidar were caught up, but that is no excuse. I swear to you, no harm is intended to Altara, and no insult was meant to the Throne of the Winds. Even as we speak, Gareth Bryne leads that army north, out of Altara.”
Tylin stared at her, unblinking. “I have heard no word of apology or excuse until yours. But any ruler of Altara must learn to swallow insult from greater powers without salt.” Taking a deep breath, she gestured, lace waving. “Sit, sit. Both of you sit. Lean back on your knife and let your tongue go free.” Her sudden smile was very close to a grin. “I don’t know how you say it in Andor. Be at ease, and speak your mind as you wish.”
Nynaeve was glad that Elayne’s blue eyes widened in surprise, because she herself gasped aloud. This was the woman who Merilille had claimed required ceremony carved in polished marble? Nynaeve was more than glad to take a chair. Thinking of all the hidden currents in Salidar, she wondered whether Tylin was trying to . . . to what? She had come to expect everyone who was not a close friend to try manipulating her. Elayne sat on the very front of her chair, and stiffly.
“I mean what I say,” Tylin insisted. “Whatever you say, I will hear no insult.” From the way her fingers tapped the jeweled hilt at her waist, though, silence might be heard as one.
“I am not certain where to begin,” Nynaeve said carefully. She did wish Elayne had not actually nodded at that; Elayne was supposed to know how to handle kings and queens. Why did she not say something?
“With why,” the Queen said impatiently. “Why do four more Aes Sedai come to Ebou Dar from Salidar? It cannot be to outshine Elaida’s embassy—Teslyn does not even call it that, and there are only her and Joline . . . you did not know?” Falling back in her chair laughing, she pressed the fingers of one hand to her lips. “Do you know about the Whitecloaks? Yes?” Her free hand made a slashing gesture, and her mirth began to subside in small ripples. “That for Whitecloaks! But I must listen to all who court me, Lord Inquisitor Carridin as well as the others.”
“But why?” Nynaeve demanded.  The man’s a butcher.” She knew she had made another mistake. The way Elayne suddenly seemed to be studying the broad white fireplace, where the deep lintel was carved into towering waves, told her that even before the last vestige of Tylin’s laughter snuffed out like a candle.
“You take me at my word,” the Queen said quietly. “I said let your tongue go free, and . . . ” Those dark eyes went to the floor tiles, and she seemed to be gathering herself.
Nynaeve looked to Elayne, hoping for some hint of what she had done wrong, or better, how to make it right, but Elayne only gave her one sideways glance and the smallest shake of her head before returning to her study of the marble waves. Maybe she should avoid looking at Tylin, too? Yet the woman staring at the floor drew her eyes. With one hand Tylin stroked the hilt of her curved dagger, with the other fingered the smaller hilt nestled between her breasts.
The marriage dagger told quite a lot about Tylin; Vandene and Adeleas had been more than willing to explain some things concerning Ebou Dar, usually those that made the city seem unsafe for anyone not surrounded by a dozen armored guards. The white sheath meant the Queen was widowed and did not intend to remarry. The four pearls and one firedrop set in the gold-wrapped hilt said she had borne four sons and one daughter; the white-enameled setting of the firedrop and the red-enameled of three of the pearls said only one son survived. All had been at least sixteen when they died, and died in duels, or the settings would have been black. What must it be like to constantly carry a reminder of that sort! According to Vandene, women saw a red or white setting as a source of pride, whether her stones were pearls and firedrops or colored glass. Vandene said many Ebou Dari women removed the stones of their children past sixteen who refused a duel, and never acknowledged them again.
At long last Tylin raised her head. Her face was pleasant, and her hand left the dagger in her belt, but she continued to finger the marriage knife absently. “I want my son to follow me on the Throne of the Winds,” she said mildly. “Beslan is your age, Elayne. This would be a matter of course in Andor, though he would have to be a woman”—she actually grinned, in apparently genuine amusement—“or in any other land save Murandy, where matters are much the same as here in Altara. In the thousand years since Artur Hawkwing, only one House has held the throne for five generations, and Anarina’s fall was so precipitous that to this day House Todande is a lapdog for anyone who wants them. No other House has ever had more than two rulers in succession.
“When my father took the throne, other Houses had more of the city itself than Mitsobar. Had he stepped outside this palace without guards, he would have been sewn into a sack with rocks and tossed into the river. When he died, he gave me what I have now. Small, compared to other rulers. A man riding fresh horses could reach the end of my writ in one day’s hard ride. I have not been idle, though. When news of the Dragon Reborn came, I was certain I could hand on to Beslan twice what I hold, and allies of a sort beyond that. The Stone of Tear and Callandor changed everything. Now I thank Pedron Niall when he arranges for Illian to take a hundred-mile swathe of Altara instead of invading. I listen to Jaichim Carridin, and I do not spit in his eye, however many Altarans died in the Whitecloak War. I listen to Carridin, and to Teslyn, and to Merilille, and I pray that I can pass something to my son instead of being found drowned in my bath on the day Beslan meets with an accident hunting.”
Tylin drew a long breath. The pleasant face remained, but an edge entered her voice. “Now. I have stood bare-breasted in the fishmarket for you. Answer me mine. Why do I have the honor of four more Aes Sedai?”
“We are here to find a ter’angreal,” Elayne said, and as Nynaeve stared in amazement, she told everything from Tel’aran’rhiod to the dust in the room where the bowl was.
“To make the weather right again would be a miraculous blessing,” Tylin said slowly, “but the quarter you describe sounds like the Rahad, across the river. Even the Civil Guard steps lightly there. Forgive me—I understand that you are Aes Sedai—but in the Rahad, you could have a knife in your back before you knew it. If the clothes are fine, they use a very narrow blade so there is little blood. Perhaps you should leave this search to Vandene and Adeleas. I think they have had a few more years than you to see such places.”
“They told you about the bowl?” Nynaeve said with a frown, but the Queen shook her head.
“Only that they were here to search for something. Aes Sedai never tell a word more than they absolutely must.” Once again that sudden grin flashed; it looked quite merry, though it did make her scars show as thin lines across her cheeks. “Until you two, at least. May the years not change you too much. I often wish Cavandra had not returned to the Tower; I could talk with her in this way.” Standing, she motioned them to remain seated and glided across the room to tap a silver gong with an ivory mallet; it produced quite a loud chime for such a small cylinder. “I will send for cool mint tea, and we will talk. You will tell me how I can help—if I send soldiers into the Rahad, it will be the Wine Riots all over again—and perhaps you will even be able to explain why the bay is full of Sea Folk ships that neither dock nor trade . . . ”
A goodly time passed over tea and talk, mostly about the dangers of the Rahad and what Tylin could not do, and Beslan was brought in, a soft-spoken youth who bowed respectfully and stared with beautiful black eyes that perhaps held relief when his mother said he could go. He certainly never doubted they were Aes Sedai. Finally, though, the pair of them were finding their way back to their apartment through the brightly painted corridors.
“So they mean to take over the search too,” Nynaeve murmured, glancing about to make sure none of the liveried servants was close enough to hear. Tylin had known too much about them too soon. And however she grinned, she had been upset over the Aes Sedai in Salidar. “Elayne, do you think it was wise to tell her everything? She might decide the best way to make sure that boy gets the throne is to let us find the bowl and then tell Teslyn.”
“I know how my mother felt about Aes Sedai traveling about Andor, never letting her know what they were doing. I know how I would feel. Besides, I finally remembered being taught about that phrase—lean back on your knife and the rest. The only way to insult somebody who says that to you is to lie.” Elayne’s chin rose slightly. “As for Vandene and Adeleas, they only think they’ve taken over. This Rahad may be dangerous, but I cannot think it is any worse than Tanchico, and we won’t have the Black Ajah to worry about. I wager in ten days we will have the bowl, I will know what makes Mat’s ter’angreal do what it should not be able to do and we will be on our way to join Egwene, with him knuckling his forehead as fast as Master Vanin, and Vandene and Adeleas will be left sitting here with Merilille and Teslyn trying to puzzle out what happened.”
Nynaeve could not help it; she laughed out loud. A lanky serving man shifting a large vase of golden porcelain stared at her, and she stuck out her tongue at him. He nearly dropped the vase. “I won’t take that wager, except about Mat. Ten days it is.”


As someone who finds fulfillment in the acts of craft and making, I’ve always found the idea of making one’s own wedding ring deeply meaningful. In 2016, I got to actually put this into practice, when I designed and fabricated an engagement ring to give to my long-time girlfriend. It wound up being a substantially more challenging - and occasionally panic-inducing - project than I had anticipated, but also brought me tremendous satisfaction, and delighted my (now) wife!
Instead of relying on my usual toolkit of precision machining, I decided to explore traditional jewelry fabrication techniques in this project. I knew I wanted to design a ring that combined silver and gold elements, along with at least one stone. Early on in the project, I focused primarily on materials selection, particularly in the context of a) what materials I could work most easily, and b) minimizing potential allergic reactions to the metals I used. I eventually settled on a design with an investment-cast, fine silver inner band; a gold inlay, produced using 24-karat gold Precious Metal Clay (PMC); and a rough diamond. This combination of materials would let me sinter the PMC clay inlay without melting the cast ring, producing the silver-gold combination I was looking for.
I designed the ring in SolidWorks, leveraging some of the surfacing experience I had picked up during my time at Barrett Technology. I 3D printed my wax masters using a Formlabs Form 2 printer and Castable Wax resin, and invested them with Ransom and Randolph Plasticast investment. I modified my burnout schedule slightly from what Formlabs recommends: you can see details of this in the notes linked to below.
I cast the patterns with the help (and equipment) of my good friend Matt Baum. After de-spruing and finishing the castings, I then started experimenting with building up the PMC inlay and setting. My intention was to use a burnish setting to hold the irregularly-shaped rough diamond I had purchased, so I knew I would need to sculpt both a setting as well as a ring of material to burnish into place. After some trial and error, I had an inlay that survived the process without cracking (the secret: build up an extra-thick inlay to help compensate for the considerable shrinkage in the materia). After sintering, I set the stone, and polished to the desired finish.
This project was a huge learning experience for me, with the primary lesson being that there’s a good reason that jewelers are highly paid professional craftspeople! I made a plethora of mistakes in the process of making my wife’s ring (and later, my own wedding ring): oversizing my wife’s ring, using PMC instead of traditional inlay techniques, picking a hard-to-set rough diamond, and more. Because of the materials our rings are made out of, they may wear down from normal use to the point where we have to replace them - at which point I will be at the very least consulting more with professional jewelers, if not handing off the actual fabrication completely. However, they’ve held up well so far, and I like the idea that our rings, like our relationship, will change and grow with time.
If you’re interested in learning more about the process I used to make these rings, the following may be useful.


{% extends "home/base.html" %}
{% block content %}
If you need work done, we can do it, and we are eager to perform.
With a cavalcade of talented and skilled workers, we are looking to establish a place where Syrian refugees, and other newcomers, have an opportunity to earn a living through honest, hard work.
All profits go back to helping refugee families.


The tuple/size.h
header defines macros that count the elements in a tuple.
#include <chaos/preprocessor/tuple/size.h>
The CHAOS_PP_TUPLE_QUICK_SIZE
macro counts the elements in its argument.
CHAOS_PP_TUPLE_QUICK_SIZE
(tuple)
The tuple whose elements are to be counted.
This macro expands to the number of elements in tuple.
If tuple contains more than CHAOS_PP_LIMIT_TUPLE
elements, the result is saturated to CHAOS_PP_LIMIT_TUPLE
.
Unlike CHAOS_PP_TUPLE_SIZE
, CHAOS_PP_TUPLE_QUICK_SIZE
is a constant-time operation at the price of a much lower limit on countable elements.
This macro operates on the nil tuple representation used by the core tuple operations defined in <chaos/preprocessor/tuple/core.h>
.
Specifically, ()
is a one-element tuple, not a zero-element tuple.
CHAOS_PP_ARRAY_SIZE
CHAOS_PP_SEQ_SIZE
CHAOS_PP_SEQ_SIZE_ALT
CHAOS_PP_SIZE
CHAOS_PP_TUPLE_SIZE
CHAOS_PP_VARIADIC_QUICK_SIZE
CHAOS_PP_VARIADIC_SIZE
#include<chaos/preprocessor/config.h>
#include<chaos/preprocessor/tuple/size.h>
#ifCHAOS_PP_VARIADICS
CHAOS_PP_TUPLE_QUICK_SIZE
((a, b, c)) // 3CHAOS_PP_TUPLE_QUICK_SIZE
((a, b, c, d, e)) // 5 #endif
The CHAOS_PP_TUPLE_QUICK_SIZE_ID
macro indirectly expands to CHAOS_PP_TUPLE_QUICK_SIZE
.
CHAOS_PP_TUPLE_QUICK_SIZE_ID
()
This macro exists only for uniformity with other macros that require indirect invocation.
The CHAOS_PP_TUPLE_QUICK_SIZE_
macro expands to a λ expression representing CHAOS_PP_TUPLE_QUICK_SIZE
.
CHAOS_PP_TUPLE_QUICK_SIZE_
This macro is a shorthand form of the following λ binding:
The CHAOS_PP_TUPLE_SIZE
macro counts the elements in its argument.
CHAOS_PP_TUPLE_SIZE
(tuple)
The tuple whose elements are to be counted.
This macro expands to the number of elements in tuple.
If tuple contains more than CHAOS_PP_LIMIT_MAG
elements, the result is saturated to CHAOS_PP_LIMIT_MAG
.
The efficiency of the algorithm's use of the recursion backend can be described in terms of the number of recursion steps required to complete the algorithm. The asymptotic upper and lower bounds are Θ, where n is the number of elements in tuple.
This macro operates on the nil tuple representation used by the core tuple operations defined in <chaos/preprocessor/tuple/core.h>
.
Specifically, ()
is a one-element tuple, not a zero-element tuple.
This macro uses bypass semantics.
If bypass semantics are already in effect, CHAOS_PP_TUPLE_SIZE_BYPASS
must be used instead.
CHAOS_PP_ARRAY_SIZE
CHAOS_PP_SEQ_SIZE
CHAOS_PP_SEQ_SIZE_ALT
CHAOS_PP_SIZE
CHAOS_PP_TUPLE_QUICK_SIZE
CHAOS_PP_VARIADIC_QUICK_SIZE
CHAOS_PP_VARIADIC_SIZE
The CHAOS_PP_TUPLE_SIZE_ID
macro indirectly expands to CHAOS_PP_TUPLE_SIZE
.
CHAOS_PP_TUPLE_SIZE_ID
()
This macro exists only for uniformity with other macros that require indirect invocation.
The CHAOS_PP_TUPLE_SIZE_
macro expands to a λ expression representing CHAOS_PP_TUPLE_SIZE
.
CHAOS_PP_TUPLE_SIZE_
This macro is a shorthand form of the following λ binding:
The CHAOS_PP_TUPLE_SIZE_BYPASS
macro behaves identically to CHAOS_PP_TUPLE_SIZE
except that it is parametized by the bypass recursion state.
CHAOS_PP_TUPLE_SIZE_BYPASS
(s, tuple)
The current bypass recursion state.
The tuple whose elements are to be counted.
If bypass semantics are already in effect, this macro must be used instead of CHAOS_PP_TUPLE_SIZE
.
The CHAOS_PP_TUPLE_SIZE_BYPASS_ID
macro indirectly expands to CHAOS_PP_TUPLE_SIZE_BYPASS
.
CHAOS_PP_TUPLE_SIZE_BYPASS_ID
()
This macro exists only for uniformity with other macros that require indirect invocation.
The CHAOS_PP_TUPLE_SIZE_BYPASS_
macro expands to a λ expression representing CHAOS_PP_TUPLE_SIZE_BYPASS
.
CHAOS_PP_TUPLE_SIZE_BYPASS_
This macro is a shorthand form of the following λ binding:
The CHAOS_PP_VARIADIC_QUICK_SIZE
macro counts the its arguments.
CHAOS_PP_VARIADIC_QUICK_SIZE
(...)
The arguments to be counted.
This macro expands to the number of arguments it is passed.
If __VA_ARGS__
contains more that CHAOS_PP_LIMIT_TUPLE
arguments, the result is saturated to CHAOS_PP_LIMIT_TUPLE
.
CHAOS_PP_ARRAY_SIZE
CHAOS_PP_SEQ_SIZE
CHAOS_PP_SEQ_SIZE_ALT
CHAOS_PP_SIZE
CHAOS_PP_TUPLE_QUICK_SIZE
CHAOS_PP_TUPLE_SIZE
CHAOS_PP_VARIADIC_SIZE
The CHAOS_PP_VARIADIC_QUICK_SIZE_ID
macro indirectly expands to CHAOS_PP_VARIADIC_QUICK_SIZE
.
CHAOS_PP_VARIADIC_QUICK_SIZE_ID
()
This macro exists only for uniformity with other macros that require indirect invocation.
The CHAOS_PP_VARIADIC_QUICK_SIZE_
macro expands to a λ expression representing CHAOS_PP_VARIADIC_QUICK_SIZE
.
CHAOS_PP_VARIADIC_QUICK_SIZE_
This macro is a shorthand form of the following λ binding:
The CHAOS_PP_VARIADIC_SIZE
macro counts the its arguments.
CHAOS_PP_VARIADIC_SIZE
(...)
The arguments to be counted.
This macro expands to the number of arguments it is passed.
If __VA_ARGS__
contains more that CHAOS_PP_LIMIT_MAG
arguments, the result is saturated to CHAOS_PP_LIMIT_MAG
.
CHAOS_PP_ARRAY_SIZE
CHAOS_PP_SEQ_SIZE
CHAOS_PP_SEQ_SIZE_ALT
CHAOS_PP_SIZE
CHAOS_PP_TUPLE_QUICK_SIZE
CHAOS_PP_TUPLE_SIZE
CHAOS_PP_VARIADIC_QUICK_SIZE
The CHAOS_PP_VARIADIC_SIZE_ID
macro indirectly expands to CHAOS_PP_VARIADIC_SIZE
.
CHAOS_PP_VARIADIC_SIZE_ID
()
This macro exists only for uniformity with other macros that require indirect invocation.
The CHAOS_PP_VARIADIC_SIZE_
macro expands to a λ expression representing CHAOS_PP_VARIADIC_SIZE
.
CHAOS_PP_VARIADIC_SIZE_
This macro is a shorthand form of the following λ binding:
The CHAOS_PP_VARIADIC_SIZE_BYPASS
macro behaves identically to CHAOS_PP_VARIADIC_SIZE
except that it is parametized by the bypass recursion state.
CHAOS_PP_VARIADIC_SIZE_BYPASS
(s, ...)
The current bypass recursion state.
The arguments to be counted.
If bypass semantics are already in effect, this macro must be used instead of CHAOS_PP_VARIADIC_SIZE
.
The CHAOS_PP_VARIADIC_SIZE_BYPASS_ID
macro indirectly expands to CHAOS_PP_VARIADIC_SIZE_BYPASS
.
CHAOS_PP_VARIADIC_SIZE_BYPASS_ID
()
This macro exists only for uniformity with other macros that require indirect invocation.
The CHAOS_PP_VARIADIC_SIZE_BYPASS_
macro expands to a λ expression representing CHAOS_PP_VARIADIC_SIZE_BYPASS
.
CHAOS_PP_VARIADIC_SIZE_BYPASS_
This macro is a shorthand form of the following λ binding:


--- title: Stop showing clients static design visuals excerpt: 'Time to stop showing clients static design visuals: http://tinyurl.com/4wtqou). A very good piece from Malarkey. 2009-06-20' date: '2009-06-20 18:13:34 +0200' date_gmt: '2009-06-20 16:13:34 +0200' categories: - Agile - Webdev ---
Time to stop showing clients static design visuals: http://tinyurl.com/4wtqou). A very good piece from Malarkey. 2009-06-20


4 luni, 3 saptamâni si 2 zile / 4 Months, 3 Weeks and 2 Days
4 luni, 3 saptamâni si 2 zile is a movie starring Anamaria Marinca, Laura Vasiliu, and Vlad Ivanov. A woman assists her friend in arranging an illegal abortion in 1980s Romania.


{% extends '_layouts/layout.html' %} {% block page_title %}{% endblock %} {% block body_css_classes %}nhsuk-frontend{% endblock %} {% block content %}
A nurse needs to speak to you so we can get you the right help.
When you book a call, the 111 nurse will:
If you don't book a call and just ring 111 you will have to start again from the beginning.
You should get a call within 20 minutes. It's important that you wait to speak to the nurse.
If you can’t book a call you can use the online service again later or call 111. You will have to provide all your answers again.


Preparation time
less than 30 mins
Cooking time
1 to 2 hours
Serves
Serves 4
Dietary
A great Persian dish of soft roasted aubergine in tomato and garlic sauce, with eggs cooked into it at the last minute. Ideal for making as part of a mezze meal.
Each serving provides 241kcal, 9g protein, 10g carbohydrate (of which 8g sugars), 17g fat (of which 2g saturates), 7g fibre and 1.6g salt.
The most authentic way to prepare the aubergines is to blister them whole over an open flame (either on a barbecue or over a domestic gas hob) until blackened and the flesh has softened right through to the centre. Alternatively, to bake them, preheat the oven to 220C/425F/Gas 7. Place the aubergines in a roasting tin and roast them whole in the oven 40-45 minutes.
Meanwhile put a good drizzle of oil in a large frying pan over a medium heat and slowly cook the garlic slices, ensuring you cook them through rather than simply browning them. If they start to go brown too quickly, take the pan off the heat and allow the residual heat to cook them through, if necessary. Once the garlic begins to brown around the edges, stir in the turmeric. Add the tomatoes to the pan and cook for about 15-20 minutes, or until they break down and are cooked through, then turn off the heat and set the pan aside.
Once the aubergines are cooked, score the aubergine skin from stalk to base and scoop out the flesh using a large spoon. Stir this into the garlic and tomatoes. Place the pan over a medium-high heat and cook through for a few minutes, mashing a little as you go. Lastly, add the tomato purée, sugar and sea salt, stir well and cook for a further 6-8 minutes, stirring occasionally to prevent the mixture from browning.
Make lots of little holes in the aubergine mixture and pour the beaten eggs straight into the pan, but do not stir in the egg. You want to ensure the eggs are cooking and solidifying before you incorporate them, they take about 5-6 minutes to become opaque. Once cooked, give the mixture one final stir and remove the pan from the heat. Leave the mixture to cool for 20 minutes, as this dish is best served warm rather than piping hot. Garnish with walnut pieces and serve with flatbread.


referenced
by Eliot Jordan at 2021-06-23 16:53:50.merged
by Eliot Jordan at 2021-06-23 16:53:50.closed
by Eliot Jordan at 2021-06-23 16:53:51.head_ref_deleted
by Eliot Jordan at 2021-06-23 16:53:51.referenced
by Eliot Jordan at 2021-06-23 17:13:33.merged
by Eliot Jordan at 2021-06-23 17:13:33.closed
by Eliot Jordan at 2021-06-23 17:13:33.head_ref_deleted
by Eliot Jordan at 2021-06-23 17:13:34.deployed
by Trey Pendragon at 2021-06-23 23:27:48.convert_to_draft
by Trey Pendragon at 2021-06-23 23:34:15.ready_for_review
by Trey Pendragon at 2021-06-24 00:05:49.closed
by None at 2021-06-23 13:28:16.closed
by None at 2021-06-23 13:28:16.closed
by None at 2021-06-23 13:28:16.closed
by None at 2021-06-23 13:28:16.closed
by None at 2021-06-23 13:28:17.closed
by None at 2021-06-23 13:28:17.closed
by None at 2021-06-23 13:28:17.closed
by None at 2021-06-23 13:28:17.closed
by None at 2021-06-23 13:28:17.closed
by None at 2021-06-23 13:28:32.closed
by None at 2021-06-23 13:28:52.We want to configure this in a component so we don't have to do it one-by-one. Components doesn't have access to the user-configurable variables HOWEVER the lettername field in the letter XML files at XPath notificationdata/generaldata/lettername is generated from those variables, so it can be used in a component (header.xsl).
renamed
by None at 2021-06-23 14:20:36.renamed
by None at 2021-06-23 14:22:11.closed
by None at 2021-06-23 19:26:39.closed
by None at 2021-06-23 19:27:13.closed
by None at 2021-06-23 19:27:13.Confirmed--the test data is bad and we don't have system-generated test data in all cases yet; but in those cases where we do, the date is formatted mm-dd-yyy
closed
by None at 2021-06-23 19:27:52.closed
by None at 2021-06-23 19:39:59.Hi
Text should read:
We would like to remind you that the following item(s) you requested are waiting to be picked up:
(Please add the item barcode to the columns listed for each item.)
Thanks J
closed
by None at 2021-06-23 20:15:07.pickup date should be bold
closed
by None at 2021-06-23 19:44:50.reopened
by None at 2021-06-23 20:21:44.closed
by None at 2021-06-23 20:21:47.closed
by None at 2021-06-23 20:22:04.closed
by None at 2021-06-23 20:22:13.Awaiting guidance on this, which was cut down at the last meeting and now reads a bit choppy:
Cancellations can occur for several reasons. The item available for you was not picked up, or the item you requested was needed for course reserve.
closed
by None at 2021-06-23 20:37:33.Hard-coding this now in the interest of time; we may want to put it in a template later.
closed
by None at 2021-06-23 20:45:58.reopened
by None at 2021-06-23 20:48:13.assigned
by None at 2021-06-23 20:48:17.labeled
by None at 2021-06-23 20:48:35.Need to find which field in the XML this maps to
assigned
by None at 2021-06-23 20:59:16.labeled
by None at 2021-06-23 21:01:57.second pass: add in notice-specific requests; general cleanup
ready_for_review
by None at 2021-06-23 21:03:49.review_requested
by None at 2021-06-23 21:04:04.review_requested
by None at 2021-06-23 21:04:04.referenced
by Peter Green at 2021-06-23 21:05:35.merged
by Peter Green at 2021-06-23 21:05:35.closed
by Peter Green at 2021-06-23 21:05:35.head_ref_deleted
by Peter Green at 2021-06-23 21:06:01.review_requested
by None at 2021-06-22 22:51:34.review_requested
by None at 2021-06-22 22:51:34.referenced
by Peter Green at 2021-06-23 13:39:06.merged
by Peter Green at 2021-06-23 13:39:06.closed
by Peter Green at 2021-06-23 13:39:06.unlabeled
by None at 2021-06-23 13:02:09.labeled
by None at 2021-06-23 13:02:10.unlabeled
by None at 2021-06-23 13:02:29.labeled
by None at 2021-06-23 13:02:30.labeled
by None at 2021-06-23 13:07:36.labeled
by None at 2021-06-23 13:09:07.unlabeled
by None at 2021-06-23 13:11:54.labeled
by None at 2021-06-23 13:11:54.labeled
by None at 2021-06-23 13:09:07.unlabeled
by None at 2021-06-23 13:11:54.labeled
by None at 2021-06-23 13:11:54.labeled
by None at 2021-06-23 13:09:07.unlabeled
by None at 2021-06-23 13:11:54.labeled
by None at 2021-06-23 13:11:54.unlabeled
by None at 2021-06-23 13:12:25.labeled
by None at 2021-06-23 13:12:25.labeled
by None at 2021-06-23 13:17:36.unlabeled
by None at 2021-06-23 13:18:41.labeled
by None at 2021-06-23 13:18:41.closed
by None at 2021-06-23 13:19:26.unlabeled
by None at 2021-06-23 13:20:31.labeled
by None at 2021-06-23 13:20:32.labeled
by None at 2021-06-23 13:21:17.labeled
by None at 2021-06-23 13:21:17.unlabeled
by None at 2021-06-23 13:22:46.labeled
by None at 2021-06-23 13:22:46.unlabeled
by None at 2021-06-23 13:23:05.labeled
by None at 2021-06-23 13:23:06.unlabeled
by None at 2021-06-23 13:23:32.labeled
by None at 2021-06-23 13:23:32.We should do this in the availability response as a first step.
This seems low impact -- getting an error when trying to update the index with no data.
unlabeled
by None at 2021-06-23 13:27:20.labeled
by None at 2021-06-23 13:27:21.unlabeled
by None at 2021-06-23 13:27:53.labeled
by None at 2021-06-23 13:27:53.labeled
by None at 2021-06-23 13:51:08.unlabeled
by None at 2021-06-23 13:51:22.labeled
by None at 2021-06-23 13:51:23.unlabeled
by None at 2021-06-23 14:53:24.labeled
by None at 2021-06-23 14:53:24.unlabeled
by None at 2021-06-23 14:53:24.labeled
by None at 2021-06-23 14:53:24.unlabeled
by None at 2021-06-23 14:53:24.labeled
by None at 2021-06-23 14:53:24.It doesn't look like we use this unzip_mrc
function anymore in the alma branch. Closing as we likely wont fix. I'll resolve the HB notification so we'll know if it happens again.
closed
by None at 2021-06-23 15:04:19.assigned
by Hector Correa at 2021-06-23 15:31:19.labeled
by Hector Correa at 2021-06-23 15:31:33.closed
by None at 2021-06-23 18:14:21.referenced
by Hector Correa at 2021-06-23 19:02:35.merged
by Hector Correa at 2021-06-23 19:02:35.closed
by Hector Correa at 2021-06-23 19:02:35.head_ref_deleted
by Hector Correa at 2021-06-23 19:02:36.@hackartisan Added the message back to the test via a RegEx, thank for the tip!
review_requested
by Hector Correa at 2021-06-23 18:48:08.review_requested
by Hector Correa at 2021-06-23 18:48:09.mentioned
by None at 2021-06-23 19:24:19.subscribed
by None at 2021-06-23 19:24:19.Current strategy:
This takes two commands. My strategy to get a total time is to do the following:
time bundle exec rake browse:all
real 323m45.142s
user 197m41.286s
sys 1m13.911s
time bundle exec rake browse:load_all
OL_DB_PORT=5432 time bundle exec rake browse:load_all
, the port being defined is important.
103.02user 34.66system 26:29.50elapsed 8%CPU (0avgtext+0avgdata 112652maxresident)k
0inputs+10337680outputs (0major+84844minor)pagefaults 0swaps
I'm not sure what happened here, I think this says it took 26 minutes.Current estimate: ~ 6 hours.
then add them together. If they both go fine, and there's still time, I'll try time /bin/bash -c "OL_DB_PORT=5432 bundle exec rake browse:all && OL_DB_PORT=5432 bundle exec rake browse:load_all"
assigned
by Trey Pendragon at 2021-06-23 16:17:45.closed
by Bess Sadler at 2021-06-23 13:46:44.labeled
by James R. Griffin III at 2021-06-23 14:30:41.labeled
by James R. Griffin III at 2021-06-23 14:30:41.labeled
by James R. Griffin III at 2021-06-23 14:30:41.assigned
by James R. Griffin III at 2021-06-23 14:30:41.closed
by Kevin Reiss at 2021-06-23 02:28:25.referenced
by Kevin Reiss at 2021-06-23 02:28:25.merged
by Kevin Reiss at 2021-06-23 02:28:25.closed
by Kevin Reiss at 2021-06-23 02:28:25.head_ref_deleted
by Kevin Reiss at 2021-06-23 02:28:26.labeled
by None at 2021-06-23 13:10:27.labeled
by None at 2021-06-23 13:10:27.labeled
by None at 2021-06-23 13:10:59.labeled
by None at 2021-06-23 13:10:27.unlabeled
by None at 2021-06-23 13:11:54.labeled
by None at 2021-06-23 13:11:54.unlabeled
by None at 2021-06-23 13:12:25.labeled
by None at 2021-06-23 13:12:25.labeled
by None at 2021-06-23 13:15:35.labeled
by None at 2021-06-23 13:21:44.unlabeled
by None at 2021-06-23 13:24:29.labeled
by None at 2021-06-23 13:24:30.unlabeled
by None at 2021-06-23 13:51:22.labeled
by None at 2021-06-23 13:51:23.@hackartisan I changed the label (see picture below) and added a test for it.
Coverage remained the same at 96.756% when pulling b84e92967e84479b3a1c846fa5632e6c50c1a59e on issue2524avtemplocations into bf0b2daab24b7a3739586ef1d993dd5f494ae917 on alma.
mentioned
by None at 2021-06-23 16:59:08.subscribed
by None at 2021-06-23 16:59:08.review_requested
by Hector Correa at 2021-06-23 16:59:16.referenced
by None at 2021-06-23 17:55:41.merged
by None at 2021-06-23 17:55:41.closed
by None at 2021-06-23 17:55:41.head_ref_deleted
by None at 2021-06-23 17:55:42.referenced
by None at 2021-06-23 18:00:02.merged
by None at 2021-06-23 18:00:02.closed
by None at 2021-06-23 18:00:02.head_ref_deleted
by None at 2021-06-23 18:00:03.The news story has been updated, so we can link to that (replacing the Hathi block):
System Upgrades This Summer A system upgrade this summer will replace a 20-year-old platform and provide more efficient and easier access to library resources. This is a behind-the-scenes process and will not result in any changes in the catalog itself. Requesting materials through the catalog will not be available from July 22 through July 27, and requesting items from ReCAP will not be available from July 16 to August 8. Please see our announcement for more information.
There will be some changes to catalog, especially the account / login stuff. Should we soften "will not result in any changes in the catalog itself"?
@hackartisan That's a good point — I'll ask Barbara about that since that wording is taken directly from the news story.
mentioned
by None at 2021-06-23 18:16:13.subscribed
by None at 2021-06-23 18:16:13.Coverage increased (+0.001%) to 96.761% when pulling a8492ea5904a001b61b94b9d48e9e2f808d379e5 on electronicportfoliojson into 4fb48ac96a257059374ff17243c6d8c2da7b0fb3 on alma.
base_ref_changed
by Trey Pendragon at 2021-06-23 17:58:20.head_ref_force_pushed
by Trey Pendragon at 2021-06-23 18:01:03.referenced
by Trey Pendragon at 2021-06-23 18:21:07.merged
by Trey Pendragon at 2021-06-23 18:21:07.closed
by Trey Pendragon at 2021-06-23 18:21:07.head_ref_deleted
by Trey Pendragon at 2021-06-23 18:21:07.assigned
by Trey Pendragon at 2021-06-23 16:33:30.referenced
by Trey Pendragon at 2021-06-23 16:44:28.referenced
by Trey Pendragon at 2021-06-23 18:01:02.closed
by None at 2021-06-23 19:08:49.closed
by None at 2021-06-23 19:09:30.review_requested
by Kevin Reiss at 2021-06-23 22:32:42.referenced
by Trey Pendragon at 2021-06-24 00:31:14.merged
by Trey Pendragon at 2021-06-24 00:31:14.closed
by Trey Pendragon at 2021-06-24 00:31:14.head_ref_deleted
by Trey Pendragon at 2021-06-24 00:31:14.referenced
by Trey Pendragon at 2021-06-24 00:31:43.merged
by Trey Pendragon at 2021-06-24 00:31:43.closed
by Trey Pendragon at 2021-06-24 00:31:43.head_ref_deleted
by Trey Pendragon at 2021-06-24 00:31:43.labeled
by Trey Pendragon at 2021-06-24 00:25:22.labeled
by Trey Pendragon at 2021-06-24 00:25:22.Coverage increased (+0.02%) to 96.761% when pulling d19b2ee8b10b4252a86b14378ff4ee0b9fd72517 on alma into c099150eed8d71bd547d1990ba38518f50ff6da0 on main.
deployed
by Trey Pendragon at 2021-06-23 16:20:21.labeled
by None at 2021-06-23 18:13:48.The new configset is in use for the alma-production instance. Created https://github.com/pulibrary/pul_solr/issues/277 to track deletion of old configset.
closed
by None at 2021-06-23 18:14:14.@kevinreiss this looks ready to merge!
mentioned
by Kevin Reiss at 2021-06-23 14:25:40.subscribed
by Kevin Reiss at 2021-06-23 14:25:40.referenced
by Kevin Reiss at 2021-06-23 15:42:57.merged
by Kevin Reiss at 2021-06-23 15:42:57.closed
by Kevin Reiss at 2021-06-23 15:42:57.head_ref_deleted
by Kevin Reiss at 2021-06-23 15:43:03.Think this path needs an update to work in the context of an engine gem.
labeled
by Kevin Reiss at 2021-06-23 22:16:36.labeled
by Kevin Reiss at 2021-06-23 22:16:36.referenced
by Kevin Reiss at 2021-06-23 22:31:23.ready_for_review
by Bess Sadler at 2021-06-23 14:56:23.referenced
by Bess Sadler at 2021-06-23 14:57:05.merged
by Bess Sadler at 2021-06-23 14:57:05.closed
by Bess Sadler at 2021-06-23 14:57:05.head_ref_deleted
by Bess Sadler at 2021-06-23 14:57:06.referenced
by James R. Griffin III at 2021-06-23 17:32:35.merged
by James R. Griffin III at 2021-06-23 17:32:35.closed
by James R. Griffin III at 2021-06-23 17:32:35.head_ref_deleted
by James R. Griffin III at 2021-06-23 17:32:35.referenced
by James R. Griffin III at 2021-06-23 19:58:59.merged
by James R. Griffin III at 2021-06-23 19:58:59.closed
by James R. Griffin III at 2021-06-23 19:58:59.head_ref_deleted
by James R. Griffin III at 2021-06-23 19:59:00.closed
by James R. Griffin III at 2021-06-23 20:37:18.referenced
by James R. Griffin III at 2021-06-23 20:37:17.merged
by James R. Griffin III at 2021-06-23 20:37:17.closed
by James R. Griffin III at 2021-06-23 20:37:18.head_ref_deleted
by James R. Griffin III at 2021-06-23 20:37:18.unassigned
by Kevin McElwee at 2021-06-23 20:39:50.assigned
by Bess Sadler at 2021-06-23 20:39:54.


-
Test image -
Output on Wolfram Project -
Jug
Output on Mobilenet Project -
Water bottle
Result -
Mobilenet Model Is More Accurate
-
Test image -
Output on Wolfram Project -
Shoes
Output on Mobilenet Project -
Shoes
Result -
Both Models Are Accurate
-
Test image -
Output on Wolfram Project -
Field lens
Output on Mobilenet Project -
Microphone, Mike
Result -
Mobilenet Model Is More Accurate
-
Test image -
Output on Wolfram Project -
Plush toy
Output on Mobilenet Project -
Ski mask
Result -
Wolfram Model Is More Accurate
-
Test image -
Output on Wolfram Project -
Bedroom
Output on Mobilenet Project -
Bathtub, Bathing tub, Bath, Tub
Result -
Wolfram Model Is More Accurate
-
Test image -
Output on Wolfram Project -
Mug
Output on Mobilenet Project -
Coffee mug
Result -
Both Models Are More Accurate
-
Test image -
Output on Wolfram Project -
Entertainment center
Output on Mobilenet Project -
Television
Result -
Mobilenet Model Is More Accurate
-
Test image -
Output on Wolfram Project -
Joystick
Output on Mobilenet Project -
Mobile
Result -
Mobilenet Model Is More Accurate
-
Test image -
Output on Wolfram Project -
Organdy
Output on Mobilenet Project -
Gown
Result -
Mobilenet Model Is More Accurate
-
Test image -
Output on Wolfram Project -
House
Output on Mobilenet Project -
House
Result -
Both Models Are More Accurate


The Roster tool allows you to view the names, photos, and profiles of site participants. More...
For specific instructions on the functions of the Roster tool, see:


Policemen Driving Against Traffic Crush Two To Death
The yet to be identified persons were on a motorcycle when the incident occurred.
by SaharaReporters, New York
Two persons were crushed to death by some policemen allegedly driving against traffic.
The incident happened on Monday on the Long Bridge end of the Lagos-Ibadan Expressway in Ogun State, a report by PUNCH said.
The yet to be identified persons were on a motorcycle when the incident occurred.
The crash involving a white Toyota Hilux pickup van with number plate GGE 960 DD and a Bajaj motorcycle with number plate MEK 418 VH.
Eyewitnesses said the policeman ran away immediately without helping any of the victims.
Commuters and residents around rescued the victims but could only do little until the emergency response team arrived.
Sector Commander, Federal Road Safety Corps, Ogun State, Clement Oladele, said one of the three victims involved in the accident died.
Oladele stated, “Three people were involved in the accident, one died and the two injured victims were rescued to the Lagos State Emergency Centre, Ojota.
"The corpse of the dead victim was deposited in the hospital’s mortuary.
“The suspected cause of the accident was route violation as the driver of the vehicle was speeding while driving against the traffic."


The first big disappointment of the holiday season is You've Got Mail (* ½), Nora Ephron's uneven re-pairing of Sleepless in Seattle lovebirds Tom Hanks and Meg Ryan. Surprisingly empty and enormously light, Mail is anchored only by the presence of its two huge stars.
Once past the nifty computer-generated opening of a virtual New York City, viewers will be introduced to the two main characters. Ryan is Kathleen Kelly, an endlessly perky and chipper owner of a small children's book store. Hanks plays Joe Fox, the puffy-faced owner of a huge chain of successful bookstores (a la Barnes and Noble) that is opening its new outlet around the corner and intends to run Kelly's shop out of business. They unknowingly met in a chat room (before the film starts) and have been communicating via e-mail for months…but neither knows who their pen-pal really is.
The rest of the story unfolds so predictably unimaginative that it actually rivals Sister Act 2: Back in the Habit in terms of a sheer lack of originality. Essentially a remake of The Shop Around the Corner, the 1946 Jimmy Stewart/Margaret Sullavan classic, Mail plods along at powerfully sluggish two-hour pace that is about 30 minutes too long for fare this shallow and slight. Nobody that has been to the movies in the past forty years should be entertained by this film or surprised by its outcome.
Hanks' phoned-in performance is particularly vacant and reminiscent of Harrison Ford's wooden turn in Sabrina, while Ryan is, as always, a pleasure to watch. His charm is turned down to around `3' and hers is cranked up to about `12'. Mail will likely draw many comparisons to Seattle – a film about two love-hungry adults that fall for each other site unseen.
Why did the studio honchos think that the average American needed to see a flick so similar that they actually enlisted the same stars? The answer is simple – money. Hanks and Ryan are huge box office draws. Why? Because he's the type of guy that men want to be, and she is the girl that most women secretly wish they were (but will never ever admit…ever).
Mail also boasts an amazing cast of co-stars – Greg Kinnear, Jean Stapleton, Dave Chappelle and Dabney Coleman capably handle their roles, but Steve Zahn and indie-goddess Parker Posey stand out in their smaller parts. How does a film pay for this many stars of this magnitude? The answer is simple – product placement. Prepare to have America Online, Starbucks, Apple and Microsoft products shoved in your face for a full two hours.
I have a few suggestions for better plots; the most obvious being a more realistic story of two people who meet on the Internet. He would be a 400-pound unemployed Star Trek fan pretending to be a successful businessman, while she would say that she resembles Cindy Crawford but would actually turn out to be a man. Oh, yeah, and he would be a serial killer, too. The tagline would be `Life Is Like A Box Of Chocolates.'
Other suggestions include You've Got Herpes – a madcap comedy (presumably starring either Pauly Shore or Charlie Sheen) about a guy who has a drunken one-time sexual encounter with a girl he meets on the Internet and wakes up with genital warts and a white, clumpy discharge. The rest of the film would be a hilarious romp as the Shore/Sheen character tried to track down the one-night stand, who would also turn out to be a serial killer. Tagline – `This Christmas, Pornography Isn't The Only Thing Brad Flaherty Downloads.'
Or You've Got Cancer – a bittersweet drama, directed by David Lynch, about a Willy Loman-type travelling salesman who neglects his family and dies of prostate cancer. Things take a surreal turn when, one year after his death, the soul of the salesman is transferred to the toilet brush in his family's downstairs bathroom. The brush tries to be a better father to his two small children, but fails miserably as the children grow so frightened of him that they develop a psychological fear of the bathroom and must be hospitalized for severe constipation. Tragically, when the family returns home from the hospital, they find the brush hanging from a pipe on the bathroom ceiling. Then the two kids would grow up to be serial killers. Tagline – `Frank Schwartz Thought His Life Was Bad…Until He Died.'
How about You've Got Conjoined Twin Myslexia – the big-screen debut of television's South Park centers around the origins of the two-faced school nurse. The kids would get to use dirtier words, Cartman's manhood would be revealed, Stan would be a serial killer and Kenny would die in every reel. Tagline – `Give Us Your Money; It's South Park!'
Actually, You've Got anything (except Mail) would have been an improvement.
You've Got Mail (1:59) is rated PG for some very mild language and some adult situations.
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


A simple note taking application that allows you to save notes with a title and plain text.
Hi, My name is David Yi. I am a soon to be Full Stack Web Developer in the making. I live in the Bay Area and have been living here my whole life. I enjoy watching sports, listening to music, and playing games. I have been married for 4 years now and enjoy traveling, and spending time in the sun with my wife.


| Package | org.puremvc.as3.core |
| Class | public class View |
| Implements | IView |
IView
implementation.
In PureMVC, the View
class assumes these responsibilities:
IMediator
instances.
IMediators
.
IMediators
when they are registered or removed.
INotification
in the application.
IObservers
to an INotification
's observer list.
INotification
.
IObservers
of a given INotification
when it broadcast.
See also
| Property | Defined by | ||
|---|---|---|---|
|
instance : IView
[static]
|
View | ||
| mediatorMap : Array | View | ||
| observerMap : Array | View |
| Method | Defined by | ||
|---|---|---|---|
|
View()
Constructor.
|
View | ||
|
[static] View Singleton Factory method.
|
View | ||
|
hasMediator(mediatorName:String):Boolean
Check if a Mediator is registered or not
|
View | ||
|
notifyObservers(notification:INotification):void
Notify the
IObservers for a particular INotification .
|
View | ||
|
registerMediator(mediator:IMediator):void
Register an
IMediator instance with the View .
|
View | ||
|
registerObserver(notificationName:String, observer:IObserver):void
Register an
IObserver to be notified of INotifications with a given name.
|
View | ||
|
removeMediator(mediatorName:String):IMediator
Remove an
IMediator from the View .
|
View | ||
|
removeObserver(notificationName:String, notifyContext:Object):void
Remove the observer for a given notifyContext from an observer list for a given Notification name.
|
View | ||
|
retrieveMediator(mediatorName:String):IMediator
Retrieve an
IMediator from the View .
|
View |
| Method | Defined by | ||
|---|---|---|---|
|
initializeView():void
Initialize the Singleton View instance.
|
View |
| Constant | Defined by | ||
|---|---|---|---|
| SINGLETON_MSG : String = "View Singleton already constructed!" | View |
| instance | property |
protected static var instance:IView
| mediatorMap | property |
protected var mediatorMap:Array
| observerMap | property |
protected var observerMap:Array
| View | () | constructor |
public function View()
Constructor.
This IView
implementation is a Singleton, so you should not call the constructor directly, but instead call the static Singleton Factory method View.getInstance()
| — Error if Singleton instance has already been constructed |
| getInstance | () | method |
public static function getInstance():IView
View Singleton Factory method.
Returns
IView — the Singleton instance of View
|
| hasMediator | () | method |
public function hasMediator(mediatorName:String):Boolean
Check if a Mediator is registered or not
Parameters
mediatorName:String
|
Boolean — whether a Mediator is registered with the given mediatorName .
|
| initializeView | () | method |
protected function initializeView():void
Initialize the Singleton View instance.
Called automatically by the constructor, this is your opportunity to initialize the Singleton instance in your subclass without overriding the constructor.
| notifyObservers | () | method |
public function notifyObservers(notification:INotification):void
Notify the IObservers
for a particular INotification
.
All previously attached IObservers
for this INotification
's list are notified and are passed a reference to the INotification
in the order in which they were registered.
notification:INotification — the INotification to notify IObservers of.
|
| registerMediator | () | method |
public function registerMediator(mediator:IMediator):void
Register an IMediator
instance with the View
.
Registers the IMediator
so that it can be retrieved by name, and further interrogates the IMediator
for its INotification
interests.
If the IMediator
returns any INotification
names to be notified about, an Observer
is created encapsulating the IMediator
instance's handleNotification
method and registering it as an Observer
for all INotifications
the IMediator
is interested in.
mediator:IMediator — the name to associate with this IMediator instance
|
| registerObserver | () | method |
public function registerObserver(notificationName:String, observer:IObserver):void
Register an IObserver
to be notified of INotifications
with a given name.
notificationName:String — the name of the INotifications to notify this IObserver of
|
|
observer:IObserver — the IObserver to register
|
| removeMediator | () | method |
public function removeMediator(mediatorName:String):IMediator
Remove an IMediator
from the View
.
mediatorName:String — name of the IMediator instance to be removed.
|
IMediator — the IMediator that was removed from the View
|
| removeObserver | () | method |
public function removeObserver(notificationName:String, notifyContext:Object):void
Remove the observer for a given notifyContext from an observer list for a given Notification name.
Parameters
notificationName:String — which observer list to remove from
|
|
notifyContext:Object — remove the observer with this object as its notifyContext
|
| retrieveMediator | () | method |
public function retrieveMediator(mediatorName:String):IMediator
Retrieve an IMediator
from the View
.
mediatorName:String — the name of the IMediator instance to retrieve.
|
IMediator — the IMediator instance previously registered with the given mediatorName .
|
| SINGLETON_MSG | constant |
protected const SINGLETON_MSG:String = "View Singleton already constructed!"