As a current Computer Science major, I discovered the strong connection between software and user experience, which led me down the path of UX and UI.
I discovered the strong connection between software and user experience, which led me down the path of UX and UI. I never truly knew what I wanted to pursue in technology until I began diving deeper to discover that any great software or well designed product stems from the UX industry. A sleek, efficient and functional user experience, combined with a beautiful user interface, is what truly makes a great product. As a designer, it's in my nature to combine these elements to produce something that is both breathtaking and user/business defined.
Define the goal and problem statement. Who are the business stakeholders? What are the requirements? What is the scope? Meet with the business and product team to discover and define the project.
Research
Conduct research by interviewing business stakeholders and users to understand their motivations, values, and needs. Benchmark features by conducting comparative analysis and look at competitors. Focus on best practices and utilize well-known UX research resources.
Document
Analyze the research and gather the key takeaways. What's important? What's being prioritized? Begin brainstorming and creating the information architecture and sitemaps.
Design
Create sketches and flows, and then continue to design high-fidelity mockups based on the key takeaways. Prototypes can be created to represent the user experience and overall flow.
Deliver
Present the product to stakeholders for feedback and approval. Iterate the designs based on feedback. Through iteration cycle, A/B testing can be done as well as analyzing the usage and user behavior through data analytics.
Contact
email<EMAIL_ADDRESS>UNLV Guest Wifi Portal
Process
1. Define
The goal of this project is to redesign the UNLV (University of Nevada, Las Vegas) Guest Wifi Portal to be easy to connect, informative, and UNLV branded. The old portal was last updated in 2005 and contained
extraneous and repeated information. With the new design, the information has to be straightforward and
reflect UNLV branding. This portal serves over 4,000 guests, students, staff, and faculty per day at UNLV.
Requirements:
Keep important information
“Only campus guests should connect…” message
Availability section
IT Help Desk contact info
User Agreement
Remove repeated/unnecessary information
Remove CSUN sponsorship
Follow UNLV’s design style guide, i.e. use UNLV official colors and fonts
Old Portal
2. Research
In the research for this project, I asked the UNLV Networking Engineering department, who created the initial portal, about the users' demographics and how often the portal is used. As mentioned above, users include guests, students, staff, faculty. Majority of the users are guests who are visiting the UNLV campus, who do not study or work at UNLV. These guests include possible incoming students, inquiring parents, visiting professors, visiting speakers, affliated UNLV members, and so forth. Most users are 18 years old and above. According to a network engineer, the portal is used by over 4,000 guests per day.
3. Document
Analzying the research, it was determined that typical guest users connect to the guest wifi to learn more about UNLV, or use the wifi to work along with someone affliated at UNLV. Thus, it was important to distinguish the availability section for these users, since their time frame on the Wifi is limited. Since this portal is very simple and contains small amounts of information, the design needed to straightforward and quick to connect to accommadate for the guests.
4. Design
Based on the old portal's design and user research, the brainstorming and sketching began. Since there was only one single page, I kept the sketches and wireframes simple.
Sketches/Wireframes
5. Deliver
The deliverable is shown as below.
Users should quickly understand how to connect to the guest wifi, as well as acknowledge the specific
time frame available for them. This design is now currently being used as the official UNLV Guest Wifi Portal.
For this proof of concept, the goal was to create a mobile UI that presented two things: nutritional results of a scanned food item (scanned through phone) and relevant ads displayed within the app. Once an item is scanned, results will display nutritional information such as fat, carbohydrates, protein, and so forth. To gain revenue through this app, the scanning and results page should display suggested ads similar to the scanned food item or healthy food alternatives.
Requirements:
Create a categories page for users to select item they want to scan
Create a meter that displayed fat % in results screen
Display specific nutrition results, such as fat, carbohydrates, sugar, protein, etc
Incorporate relevant ads that are tailored or similar to the item being scanned
Implement two different styles for the UI
2. Research
To understand the user demographic and what a typical nutritional app looks like, I looked through the Play Store and App Store to see what was currently available and interviewed multiple people. From what I've seen, many nutritional apps not only incorporate nutritional results, but also the ability to input weight, weight advice, calendar options, etc. Looking through the reviews for multiple apps, the user demographic includes users who are trying to lose weight, users who are already fit and trying to maintain their current status, users who are looking to be healthier, etc. Users ages fit within a broad range, from mid 20s to mid 40s, based on interviews around the department I was working in.
3. Document
Analyzing the research, it was decided that the app should be dedicated to just strictly nutritional results and that it should be geared towards the younger audience, from mid 20s to late 30s. The app will be used by users who are more comfortable with technology, as the proof of concept involves a scanning device that has to be connected to the phone.
4. Design
Sketches/Wireframes
5. Deliver
Design A:
The theme in this design reflects the typical, bright, colorful palette of fruits
and vegetables. Created with this palette in mind, the UI for the app appeals to the user in a way of reminding them what an app about nutrition should look and feel, as if they're in a grocery store!
Design B: This theme takes a different turn from the normal color spectrum of foods.
Instead, it reflects a more futuristic, modern design that is tied with an overall white, green, and blue palette. This whole minimal, transparent trend contrasts a regular, traditional nutritional app design.
This senior design project consisted of eight team members creating a software suite called Convention Logistics Tracker (thats me, second to the left! One member is not pictured). We won First Place at the 2017 Senior Design Competition for the Computer Science category. I was an Android developer on this team, and focused mainly on the app development and UX/UI design for the app.
The suite contains three software packages: organizer portal, exhibitor portal, and consumer app. In the organizer portal, conference organizers are able to update app information and conference details, such as floor plans, weekly/daily schedules, exhibitors lists, news, and so forth. The exhibitor portal is either filled out by a conference organizer or the exhibitor themselves. Here, exhibitors can upload a description, company logo, and news items for their own booth. For the consumer app, the other app developer and I focused on creating an Android app that displayed all the data pulled from the Exhibitor and Organizer portal (based on the self built REST API my team had created). Features of the app include News, Exhibitors List, Floor Plan, and Schedule.
Process
1. Define
The origination of developing a software suite for a convention stemmed from one of the team members, who had attended CES 2016. While CES had an app available for attendees, he faced multiple issues with it, from slow and late updates, to poor user experience. As a team, we identified some main problems we wanted to target in our project:
Conventions require massive amounts of manpower and time to plan
Securing a convention venue
Handling exhibitor and attendee registration
Organizing shuttling services and parking
Planning larger conventions is cumbersome without proper organization
Registration becomes tedious to handle
Overhead and complexity increase with the size of the convention
There were many functional requirements for this project. To minimize the amount of text, I will only focus on those for the app.
Requirements for Android app:
News section
Exhibitor's List
Floor Plan
Schedule
2. Research
After identifying the problems, we researched online to find the current solutions from similar
companies which were actually not NOT viable solutions:
Paper maps dominate as the current standard but:
Printing paper maps and brochures come at a hefty cost; 170 trees
These physical copies are bulky and wasteful; 10 pounds
Organizing shuttling services and parking
Other consumer applications in the market are spotty and non-reusable
These per-convention applications lack flexibility
Developing a new application for each hosted convention is inefficient
We researched more about the conferences industry and found 44% of revenue comes from exhibit sales and design services. We created a few use case diagrams to understand who our audience
would be and how they will interact with our system. Typical users are business owners, industry leaders, investors, company employees, buyers, sellers, etc. Going to a convention or conference means business.
3. Document
Based on the research, it was noted that we needed to appeal to the current market by providing new and smarter alternatives to the existing solutions. For the app, we needed to figure out a way to display the four required components: News, Exhibitors List, Floor Plan, and Schedule. Our features would have to outdo the competitors, as shown in the chart below:
4. Design
The other app dev and I worked together in Android Studio to build the app. We created some sketches and wireframes before building the skeleton of the app, making sure we included the featured app requirements. Since the app did not require a very complex UI, we made the user experience very straightforward. For the branding of this project, I created the logo for the suite, which set the color scheme and font choices in stone for the other components of the software suite.
Sketches/Wireframes
5. Deliver
My team worked incredibly well together and worked very hard to create a solid deliverable. The front end team and back end team worked seamlessly to provide a reliable REST API for the app team. We presented our project at the Senior Design Competition in front of 5 judges of different academic backgrounds. We uploaded the app to the Play store and the site and app were live at that time. In the final product, we tested our software suite by using it live during the Senior Design Competition as a conference. However, due to server costs, we were unable to keep the portals and app live past an extended time.
Wynn Las Vegas is implementing an In-room iPad experience in their new property Encore Boston Harbor (opened June 2019). The iPad contains many functionalities and features, including room controls (lights, curtains, temperature, etc), TV/movie control, and information about dining, spa/salon, amenities, etc. The current deployment is Phase 1, an out of the box solution created by an external vendor. Phase 2 will consist of a new redesign led by me and another external vendor. It is being developed now and will be released in December 2019.
Process
1. Define
The goal of this project is to understand the needs of Encore Boston Harbor guests and create a simple tablet interface that addresses those needs. The task at hand was to improve the UX and UI of the outdated out-of-the-box solution provided, such as decreasing the number of navigation types, updating the bad information architecture and fixing the overcrowding of features on certain screens.
Overall, the app on the tablet needed to be user friendly, intuitive, have fast response time, easy to see and handle with buttons, easy to locate, font large enough to read, and screen navigation kept simple.
In the discovery phase, I interviewed business stakeholders to understand their needs, goals, and why the tablet was being added to the rooms and determine what features were being kept. While also acting as the product owner for this project, I helped gather the business and product requirements.
2. Research
To give context, Wynn is a luxury Forbes 5 Star hotel focused on giving the best customer experience with great attention to detail. While Encore Boston Harbor is a new property with the same values, we needed to know the new demographics and user base, as they’re slightly different from Wynn Las Vegas’. Customer base is 30-60 years old, with the average leaning towards 55 years old. Types of customers include regional customers, business guests, convention guests, international travelers, and most importantly casino customers, who are the largest user base. Using this information, we created various customer journeys to follow.
To conduct comparative analysis, I looked at competitors’ in-room tablet experiences such as Aria and Cosmopolitan in order to gauge the different feature sets and UX for their tablets. Aria included incredible amounts of information through numerous navigational tabs, as well as the ability to order room service and book reservations through the tablet. The Cosmpolitan’s tablet experience was more simple and only contained links to their website, with no integrated systems to allow ordering via tablet.
An interesting note is where these tablets were located inside the guest rooms. Intuitively, the Aria tablet was placed by the bed on the adjacent nightstand. However, Cosmopolitan’s was located right next to the doorway. One question that came up during a stakeholder interview was how does the tablet fit within the room itself? Is it supposed to blend in and act as an integrated part of the room? Was it a random device that stands out awkwardly? In Wynn’s context, the tablet has to be helpful in giving the best customer experience through the hotel.
During this research process, a large workshop containing stakeholders, product team and designers were brought together for user testing sessions on the Phase 1 solution to find any pain points and challenges, and a card sorting exercise to prioritize features. To emulate how guests are feeling during their stay, user testing sessions were held inside some of the guest suites.
3. Document
Once all the information was gathered, we began to focus on mapping out an information architecture to address the requirements and research conducted. Here are a few key takeaways:
Comparative analysis: Overcrowding of navigation in Aria’s tablet. Too much information given at once, which overwhelms and confuses user. Use of various navigation structures such as horizontal and vertical, which were similar to the navigation issues in Phase 1 solution.
Prioritizing features: Based on card sorting, user testing sessions, and discussions with stakeholders, we prioritized Room Controls and Media Controls. These needed to be accessible at all time.
Navigation structure: Implement a simple navigational structure to maintain consistency across all screens.
Information overload: With the amount of information and functionality included, the goal was to avoid overcrowding the screen and overwhelming the user with all the options.
Development limitations: Many integrations needed to be built out, from the vendor to utilize our SiteCore CMS APIs to reservation and housekeeping systems. These were defined by both timeline limitations and development resources.
4. Design
Using this information architecture, we designed wireframes, mockups and rapid prototypes, which were validated in user testing sessions with real guests. In the design iterations, we addressed different types of navigation structures and placement of main features to improve readability and usability. For room/media controls and overcrowded screens, we enhanced font size and placement of our designs based on our demographics. We also took into consideration the information being pulled from our SiteCore CMS to ensure they were being extracted and displayed correctly. We incorporated all screens with the Wynn branding and visual design.
The Wynn Nightlife Chatbot is a chatbot designed to easily answer questions about the Nightlife at Wynn Las Vegas. Since this is an interaction bot, it features both text and UI visual elements for users to type and click on images, links, menus and buttons. Some example questions users can ask include what time is XS open, when is Marshmello playing, is Alesso playing on April 4, what’s the dress code for Encore Beach Club, how much are tickets, etc.
Process
1. Define
The goal is to easily and successfully answer a user’s question via automation and provide a revenue channel for Nightlife merchandise to benefit the business. Since it’s currently difficult to navigate and find information on the Wynn Nightlife website, this chatbot serves to provide less distractions and more personalized functions to help users find what they need.
In the discovery phase, I interviewed the Nightlife business stakeholders to understand their needs, goals, and what were the current pain points on the nightlife website. I helped gather the business and product requirements. I also managed the communication and collaboration with the chatbot vendor.
2. Research and Chatbot Design
As the UX Designer, Istarted with researching the audience/user base for our Nightlife industry at the Wynn, as well as looking at popular chatbots such as Bank of America’s Erica, Domino’s Pizza bot, and Ebay bot. These bots lived on platforms such as Facebook Messenger, Apple Business Chat, and within their respective mobile apps.
After accumulating and observing the different types of features each bot had to offer, I began to create mind maps to map out user flows and provide lists of example intents (subject or topic that needs to be matched to the entered text) and utterances (any action on the intent that chatbot must respond to). Listing out the possble utterances paved the chat ux flow.
Working with the developer from the chatbot vendor, we created a beta version and conducted user interviews and user testing. We worked with our Nightlife team to provide content in a knowledge base format and utilize events/ticketing APIs for the chatbot to consume.
3. Deliver
The Wynn Nightlife Chatbot went live on both website and Facebook Messenger in April 2019. To interact with the bot, you can visit wynnsocial.com or the individual nightlife venues: XS, Encore Beach Club and Wynn Nightlife
Use this area of the page to describe your project. The icon above is part of a free icon set by Flat Icons. On their website, you can download their free set with 16 icons, or you can purchase the entire set with 146 icons for only $12!


Recently Played
Taylor Swift - Bad Blood, Daft Punk - Get Lucky
The (clock radio) icecast streaming app.
An open source project (MIT License)
https://github.com/rejhgadellaa/icerrr/
See what's new:
https://github.com/(..)/wiki/Changelog
Copyright (c) 2016 REJH Gadellaa
Icerrr would not be possible without the following projects:
Default/placeholder album art photo:
Jeff Holt, CC license


The for task iterates over a list, a list of paths, or any type that has a public iterator() method. The list will be evaluated first. Nested paths are evaluated in the order they appear in the task. Nested types will then be evalulated.
This task is the same as the <foreach> task, except that
This task only works for ant version greater than or equal to ant 1.6.0.
| Attribute | Description | Required |
|---|---|---|
| list | The list of values to process, with the delimiter character, indicated by the "delimiter" attribute, separating each value. | Yes, unless a nested path has been specified. |
| param | Name of the parameter to pass the tokens or files in as to the sequential. | Yes |
| delimiter | The delimiter characters that separates the values in the "list" attribute. Each character in the supplied string can act as a delimiter. This follows the semantics of the StringTokenizer class. | No, defaults to ",". |
| parallel | If true , all iterations of the nested
<sequential>
will execute in parallel. Defaults to false ,
which forces sequential execution of the iterations. It is up to
the caller to ensure that parallel execution is safe.
| No |
| keepgoing | If true , all iterations of the called
<sequential> will be executed, even if a task in one or more of them fails.
Defaults
to false , which forces execution to stop as soon as a
task fails. At the end, if any iterator has failed, the <for>
task will fail, otherwise <for> will succeed.
Note that execution does not proceed keepgoing from one task to the next within the <sequential>, but rather from one iteration to the next. It is up to the caller to ensure that keepgoing execution is safe. |
No |
| threadCount | The maximum number of allowable threads when executing in parallel. | No. Defaults to 5. |
| trim | If true , any leading or trailing
whitespace will be removed from the list item before it is passed
to the sequential.
|
No. Defaults to false. |
Paths are used to select sets of files or directories to iterate over.
Using a path allows you to determine the order by which files
are considered by using
filelists
or explicit pathelements
. You also can specify
whether you want to iterate over files or directories by chosing
either filesets or
dirsets.
FileSets are used to select sets of files to iterate over.
DirSets are used to select sets of directories to iterate over.
To print out the first five letters of the latin alphabet:
<echo message="The first five letters of the alphabet are:"/> <for list="a,b,c,d,e" param="letter"> <sequential> <echo>Letter @{letter}</echo> </sequential> </for>
A more complicated example to to iterate over a set of c++ source files and invoke the <cc> task on them:
The preceding example will stop as soon as one of the <cc> tasks fails. If you change the first line of the example to<for param="file"> <path> <fileset dir="${test.dir}/mains" includes="*.cpp"/> </path> <sequential> <propertyregex override="yes" property="program" input="@{file}" regexp=".*/([^\.]*)\.cpp" replace="\1"/> <mkdir dir="${obj.dir}/${program}"/> <mkdir dir="${build.bin.dir}"/> <cc link="executable" objdir="${obj.dir}/${program}" outfile="${build.bin.dir}/${program}"> <compiler refid="compiler.options"/> <fileset file="@{file}"/> <linker refid="linker-libs"/> </cc> </sequential> </for>
<for param="file" keepgoing="true">All iterations will be executed, and then <for> will fail if any one or more of the <cc> tasks failed.
The following example embeds an outofdate type and iterates over the sources that are newer than their corresponding targets.
<ac:for param="xmlfile" xmlns:ac="antlib:net.sf.antcontrib"> <ac:outofdate> <ac:sourcefiles> <ac:fileset dir="${basedir}/xdocs" includes="**/*.xml"/> </ac:sourcefiles> <ac:mapper dir="${basedir}/xdocs" type="glob" from="*.xml" to="${basedir}/docs/*.html"/> </ac:outofdate> <ac:sequential> <echo>Need to generate a target html file from source file @{xmlfile}</echo> </ac:sequential> </ac:for>
Copyright © 2003-2005 Ant-Contrib Project. All rights Reserved.


{{ address.postCode }} [Area of Deprivation]
No address entered
Phone number : {{ address.phoneNumber }}
Email : {{ address.email }}
Website : {{ address.website }}


Branding
Global Nav
Local Nav
Footer
Top Story
Global News
National News
Local News
Search
Market Info
Advertising 1
Advertising 2


This page demonstrates a mashup between the sudoku service and the digit2image service which fetches images of digits from Flickr.


Park Now
Park Now helps UCSD students view current parking conditions, so you'll never be late again!
SIGN IN
SIGN UP


- Stock Quote
- SEC Filings & Investor Relations
- Recent News
To view our information posted within the EDGAR Database of the U.S. Securities and Exchange Commission, please just click on the SEC logo.
INVESTOR RELATIONS:
Dylan Yarter
Ph.<PHONE_NUMBER>
dylan@stockorange.com


Minimum demo
done Accept Demo
Command Bar Buttom - Contextual Menu Button
A fancy way to open a menu
add New item
add New item
add New item
add New item
add New item
Split Button
Trigger main action or open menu
done Accept
done Accept
done Accept
done Accept
done Accept
Theming
Usa material theming as usual
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
done Accept
Material Buttons
Material buttons for reference


{% include head.html %}
{% assign page_type = "pricing" %} {% include header.html %}Solo plan is a special plan targetted toward indi-developers with a limited budget.
It has most of our paid features. But, it can't have collobarators and have a limit of 5 alerts per an app.
A DDP Session is realtime connection made to your Meteor server. It can be made either from a browser or from a mobile app.
We don't count it as a new connection, when a connection just got reconnected within 30 minutes after it gets disconnected from the server.
A connection will be marked as IDLE if it didn't send any method call or subscription request for 30 minutes. When an IDLE connection comes active again, we count it as a new connection.
Data Retention indicates the period of time we keep your application data with us.
Of course you can change plans anytime.
We'll inform you before you reach limits and after you've exceeded. Then you can decide to upgrade your account or not. If you didn't upgrade, you will be transferred into a forever free which only has the "Dashboard" view and we don't track errors and traces.
Currently, this process is not automated and you'll have enough time to decide.
No, we don't track them. We don't count connections coming from the localhost or from private networks.
There are no hard limitations. But we are monitoring the usage to prevent abuse.
You can simply allow other members in your team to use Kadira UI to monitor and optimize your app. You can change the ownership to another user as well.
Collaborators can be added to any app, but there is no way to add account-level collaborators.
Kadira Alerts sends you a notification when something strange happens with your app. You can set alerts for almost every metric available in Kadira.
Kadira tracks both server and client errors for you automatically. You can use Kadira UI to analyze error traces and understand them.
Do you have any other questions? Please ask!
We are happy to help you out.


I have finally got around to getting Glimpse working with XAF. Glimpse is an amazing extensible ASP.NET plug-in which gives you valuable information about what is going on within your server in production. It’s also very pretty.
Let’s jump right in and have a look at what XAF looks like with Glimpse running.
That banner along the bottom of the screen is the Glimpse heads up display (HUD). Hovering over various sections of it pops up more information:
If you click on the Glimpse icon in the bottom right, you get even more goodies. Here’s the Timeline view.
And there are many other tabs available. The Configuration tab shows the contents of the web.config file.
Here’s the Control Tree tab:
The Page Life Cycle tab:
The Request tab:
The Session tab:
And the Trace tab including the DevExpress log items that were added to the trace during this page load:
As you can see, this is a very valuable glimpse into the server which can be turned on as needed in production.
Adding Glimpse to an XAF application
First install the Glimpse Nuget package into the project.
The Nuget installation will make various incorrect changes to the web.config. The corrected sections are below:
Next, there is an outstanding problem with the current release version of the Glimpse ASP.NET NuGet package (1.6.0) which prevents it from working with the development webserver. (Apparently it’s fixed in 1.7.0 which should be released soon). If you try to run MainDemo.Web you will get the following error:
Type 'System.Web.HttpContextWrapper' in assembly 'System.Web, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' is not marked as serializable.
However it works fine against IIS Express (or full IIS). Go to the MainDemo.Web and change the debug properties as follows:
Then run the web application. Glimpse is off by default. In order to turn it on, you need to set a cookie, which you can do by navigating to Glimpse.axd. This is the Glimpse configuration screen.
Additional Glimpse extensions
Glimpse is extensible and there are many additional plugins available. Many of these take the form of additional tabs with details about a particular aspect of your application: SQL Queries, Elmah errors, ASP.NET caching, logging, dependency injection, etc.
MainDemo Sample Project
I have uploaded a modified XAF MainDemo to this GitHub repository with all the above changes. (Don’t forget to debug against IIS Express).


A FRIEND OF THE DECEASED
Reviewed by Harvey Karten, Ph.D. Sony Pictures Classics Director: Vyacheslav Krishtofovich Writer: Andrei Kourkov Cast: Alexandre Lazarez, Titiana Krivitska, Eugen Pachin, Constantin Kostychin, Elena Korikova, Angelika Nevolina, Sergiy Romanyuk.
Depending on your views about communism, "A Friend of the Deceased" is either the most reactionary movie since "Starship Troopers" or the most progressive one since "Red Sorghum." Director Vyacheslav Krishtifovich, who filmed the action in Ukraine's touristic capital of Kiev, has a political axe to grind. He may not wholeheartedly support a return to the good old days of Ukraine's provincial role in a firmly communist Soviet Union. But while he appreciates the freedom the new country has since independence from Moscow, he looks back sympathetically to a time that Ukrainians were more warm and neighborly and blames capitalism for a new atmosphere of coldness. It's all business dealings now, he seems to say, not human connection. His theory has pertinence to the countries like the U.S. which have long enjoyed capitalism. It's commonly believed that in poor areas, the residents support one another. They refuse to send their elderly and frail to nursing homes, they sit on stoops and chat the night away. But Krishtofovich is forgetting that in needy neighborhoods, crime is sometimes rampant and social pathologies make their mark in the disproportionate number of the mentally ill. And China, still firmly in the communist camp despite its free-market reforms, is no model of people-to-people cordiality.
Krishtofovich, using a screenplay by Andrei Kourkov, seems eager to display a new Dodge City world in Kiev ruled by high-flying entrepreneurs, the Mob and the black market. At least that's what the press notes indicate. By focusing on a lonely intellectual who seems unable to make it in this brave new world, he wants to portray a society adrift, one in which a new class of losers abounds. Anatoli (Alexandre Lazarev), a nerdy Woody Allen type without that master's sense of humor or irony, had always made his living as a translator for Ukrainian firms who need to deal with those who speak English and French. For reasons not explained, he has fallen on hard times since the silent revolution which has replaced the Iron Curtain with the open door. Why would his country need him in the past but not now? One would think a flourishing business economy could use his talents to an even greater degree.
His wife Katia (Angelika Nevolina) is leaving him for a hipper guy with a fancy red car (as though the wheels were the only reason for her departure). His phone--whose handset is mysterious and inexplicably tied to the unit forcing him to use the speakerphone--rarely rings. He is depressed and, through a friend, Dima (Eugen Pachin), he hires a hit man. The intended victim is not Katia's boyfriend but his own suicidal self. When he meets a hooker, Lena (Tatiana Krivitska), a spirited but unappealing vamp who is attracted to Anatoli, his mood brightens, he wants to call off the hit, but discovers that it's too late. The contract, once agreed to, must be fulfilled. The remainder of the story deals with his efforts to stop his own execution, which involves the hiring of Ivan (Sergiy Romanyuk), a hit man for the hit man.
Lazarez plays the role in a deadpan manner that would not impress W.C. Fields. He is so down-and-out throughout, so phlegmatic and inarticulate, that he seems already to be the titled deceased guy. Only Elena Korkova in the role of Marina, the wife of the contract killer, brings breath to this downer of a film, which fails appropriately to exploit the Kiev milieu and, more important, does not promote the creators' view that Anatoli's problems are the fault of the new capitalism. In Russian with English titles, "A Friend of the Deceased" was exhibited at several film festivals including those at Cannes, Toronto, and Sundance. Rated R. Running time: 100 minutes. (C) Harvey Karten 1998
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


There are no members to be displayed!
| UUID | Birth Date | First Name | Last Name | Address | City | Member since... |
|---|---|---|---|---|---|---|
| [{{member.UUID.substring(0,2) + ".." + member.UUID.substring(member.UUID.length - 2, member.UUID.length)}}] | {{member.birthDate}} | {{member.firstName}} | {{member.lastName}} | {{member.address}} | {{member.city}} | {{member.memberSince}} |


Our Challenges for you!Post them on our facebook page to show us what you have done!
Williams Challenge
Design your own campsite and build a model on the floor using household objects. Or in the garden with sticks and grass.
Please take part and post your pictures on here
Dear Future Me – write a postcard to yourself
The game leader should give everyone a postcard and ideas for how far in the future they’d like to send their postcard.
The players write or draw a note to their future self. Grown ups can help with scribing or spelling.
Fabulous fancy frames
Create a frame for a photograph that makes you smile then make a gallery for everyone to admire.
Decorate the border of the frame with pens, stamps, stickers and other photos you have taken.
Mark my words - make a bookmark
“This activity is a chance to get creative, but it also reminds everyone how to look after books,” the Scouts say.
“Bookmarks help people remember where they’ve got to without damaging the book. What other materials could bookmarks be made from?”
What Bookmarks can you make at home?
The Way I got so fast at typing was using a bbc biteize activity calling Dance Mat! Its a fun way to learn typing skills for kids and adults!
Parachutes!
Make your own paratroopers with some string and a plastic bag! Drop your new army from the top of the stairs or a ladder! Whats the heaviest object you can successfully float down?


Salutation
:
Mr
Ms
Mrs
नाम थर
:
First Name
*
:
First Name is required
First Name must be less than 30 characters
Middle Name
:
Middle Name must be less than 30 characters
Last Name
*
:
Last Name is required
Last Name must be less than 30 characters
Date Of Birth
:
Date Of Birth is required
Wrong date is selected
Age
*
:
Years
Months
Days
Age is required
Phone number
*
:
Primary Phone is not proper
Primary Phone is required
LandLine Number
:
Please enter valid landline number.
Country
*
:
{{Country.CountryName}}
Country is required
Passport Number
:
District/State
*
:
District/State is required
Municipality
:
Address
:
Blood group
:
A+
A-
B+
B-
O+
O-
AB+
AB-
Gender
*
:
--select--
Male
Female
Other
Gender is required
Caste/Ethnic Group
:
Dalit
JanaJaati
Madhesi
Muslim
Brahmin/Chhetri
Other
Marital status
:
Married
Unmarried
Notifications ?
:
Employer Info
:
Previous Last Name
:
Occupation
:
Email
:
Email is not proper
Race
:
PAN Number
:
PAN number is not proper
Dialysis Patient
:
Yes
Gender is required


I am Barrister Steve Greg, an attorney at law. A deceased client of mine,by name Mr. Samson Owen, who here in after shall be referred to as my client,died as the result of an auto car accident here in England. I am contacting you to help assist me in ensuring that the funds lodged by my client with a bank in Cayman Island, his bank is not decleared unclaimed hence my reason for contacting you. This bank has issued me a notice to contact the next of kin, or the account will be confiscated. My proposition to you is to seek your consent to present you as the next-of-kin and beneficiary of my late client, so that the proceeds of this account can be paid to you,Then we can share the amount on a mutually agreed-upon percentage. All legal documents to back up your claim as my client's next-of-kin will be provided. All I require is your honest cooperation to enable us see this transaction through. This will be executed under a legitimate arrangement that will protect you from any breach of the law. If this business proposition offends your moral values,do accept my apology. Please contact me at once to indicate your interest. However if you are willing to assist me in this venture i will establish a verbal telephone communication with you and bring you into a much better picture of the situation. Best Regards, Barrister Steve Greg, Morley House, 26-30 Holborn Viaduct, London EC1A 2BP, U.K TEL:+44-7040110790. ___________________________________________________________________________ Mail sent from WebMail service at - http://www.sscsouth.co.uk


Stock Portfolio Dashboard
Hello,
Guest
Home
Stock Breakdown
Sector Breakdown
Market Cap Breakdown
Profile
Wrong password!
Password was changed successfully!
Update Password
Old password
New password
Confirm new password
Change password
Delete account


MEDICINE MAN A film review by Frank Maloney Copyright 1992 Frank Maloney
MEDICINE MAN is a film directed by John McTiernan, from a script by Tom Schulman and Sally Robinson. The film stars Sean Connery, Lorraine Bracco. Cinematography is by Donald McAlpine and musical score by Jerry Goldsmith. Rated PG-13 for strong language, nudity.
MEDICINE MAN suffers from two slight weaknesses: clumsy, heavy-handed direction by John McTiernan, who has made his reputation with thrillers like DIE HARD and THE HUNT FOR RED OCTOBER; and the brainless script by Tom Schulman and Sally Robinson. Schulman, who wrote the script for DEAD POETS SOCIETY, reportedly got $3 million for the story idea. The film overall cost around $40 million dollars. And except for the beautiful location photography, Andrew Vajna, the producer, and Hollywood Pictures, the Disney unit that released it, did not get much for their money.
There is an enormous hole in the plot. The only people who don't see the obvious solution half-way through the film are the two principals, who are supposed the Great Scientists. Instead, they are the Great Clueless. Also, I found the idea that anything could cause tumors to vanish overnight entering the realm of science fiction of a very decidedly non-hardcore type.
Lorraine Bracco, as Dr. Rae Crane and who was an interesting character actress in GOODFELLAS, fails to connect with Sean Connery. Her character is alternately abrasively independent or anachronistically spoiled, withering, a city girl-scientist who screams at snakes and who won't share the swimming hole with the village children. One minute she's demanding to be accepted as Connery's new research assistant, and the next she's demanding to be allow to return to the City. I read that Vajna explicitly said the idea behind the film was to recreate the unique chemistry of the 1951 classic THE AFRICAN QUEEN -- comedy, jungle adventure, and the attraction of opposites. In view of the results, we can safely conclude that Bracco is no Katherine Hepburn.
As for Connery, in the role of Dr. Robert Campbell, this may be his worst film since the 1979 METEOR.  I note that he is credited with being executive producer for this film. Mind you, bad Connery is still pretty good, and he has his moments. But the set-up, grumpy, misogynistic, anti-social, out-of-touch, and over-the-hill boy-genius with an excessive taste for native hootch and angst, is hackneyed and uninspired at best.
The best part of the movie is the work of the cinematographer McAlpine, especially a voyage through the canopy of the rain forest by rope and pulley. Goldsmith's music is pleasant -- a hint of samba played on steel drum.
Overall, I'd recommend that unless you have to see Sean Connery's every movie you would be just as well off to give MEDICINE MAN a miss. Maybe as a cheap video rental, but it is only marginally worth the price of a matinee ticket.
-- Frank Richard Aloysius Jude Maloney .
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


You can develop GNSDK for Mobile applications using several object-oriented languages. The following table describes these APIs and where to find the corresponding API Reference documentation :
| API Name | Description | Location in Package |
|---|---|---|
| Java (Android) API Reference | API descriptions of the GNSDK for Mobile Java Android interface | docs/html/Content/api_ref_java_android/html/index.html |


This document is currently a working draft published with the intent of soliciting community feedback. Please send your comments and concerns to the public mailing-list JSON-RPC Yahoo! Group. Make sure you prefix the subject line with “1.1WD:”, as in “1.1WD: Comment on errors”.
This specification is designed to provide the developer with the information needed to implement the protocol on the client or server end of a communication bus.
JSON-RPC is a stateless and light-weight remote procedure call (RPC) protocol for inter-networking applications over HTTP. It uses JSON as the data format for of all facets of a remote procedure call, including all application data carried in parameters.
By leveraging HTTP, JSON-RPC allows implementations to immediately benefit from the widely deployed World Wide Web infrastructure that is well-documented and understood today. It introduces no new HTTP verbs or message header extensions. JSON-RPC relies on JSON for the format of the HTTP message bodies, which allows implementations to benefit from a simple and standard text format that has suitable representations for the most commonly used scalar and structured data types inapplications. It is being quickly and widely adopted for web applications, and for which libraries are readily available in several languages.
The general mechanism for a remote procedure call using JSON-RPC consists of a client establishing a connection with a service and then invoking one or more procedures provided by that service. A single remote procedure call begins life as a request sent from the client to the server. The call ends when the client subsequently receives a response from the server over the same connection. Another call on the same connection is only made once the previous call has ended.
The primary goals of this specification are to define the JSON-RPC 1.1 protocol in terms of:
JSON-RPC does not address security, correlation, reliability, sessions management, state management and many other features that may be found in other RPC protocols or distributed systems. Developers are instead encouraged to employ features of HTTP and related Internet technologies that can offer some of these features in an equally compelling, robust and satisfying manner. Some features may be defined as extensions by other specifications.
The following list (non-comprehensive) summarizes the general changes that have been applied to version 1.0:
Content-Type
for JSON-RPC.version
member to Procedure Call and Procedure Return objects.The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY and OPTIONAL in this document are to be interpreted as described in RFC 2119.
An implementation is not compliant if it fails to satisfy one or more of the MUST requirements for the protocols it implements. An implementation that satisfies all of the MUST and all of the SHOULD requirements for its features is said to be unconditionally compliant; one that satisfies all of the 'must' requirements but not all of the SHOULD requirements for its features is said to be conditionally compliant.
Below is a summary of some terminology used in this documentation that can help in disambiguation of commonly applied and therefore often overloaded terms:
JSON-RPC shares the same type system as JSON to specify all value components of a call. In its abstract form (grammatic and syntatic details aside), JSON can represent four primitive types—String, Number, Booleans, and Null—and two structured types—Object and Array—that are briefly defined here:
true
or false
.null
.For the remainder of this document, it is expected that the reader has some familiarity with the basic syntax of JSON text. Otherwise, consult the JSON specification (RFC 4627) for further details.
This document also uses a specific convention to refer to any JSON type. Wherever a JSON type is mentioned, the first letter is always capitalized and the whole word appears in its root form (never in its plural form).
A remote procedure call is made by sending a request to a remote service using either HTTP POST or HTTP GET. How and where the call is encoded within the HTTP message depends on the HTTP method that is employed. In the case of HTTP POST, the procedure call is carried in the body of the HTTP message whereas in the case of HTTP GET, it is expressed along the path and query components of the HTTP Request-URI.
Suppose that a service exposes a procedure named sum
that takes two Number parameters,
as in sum(a, b)
, and returns their sum.
The HTTP POST to call this procedure call would be as follows:
POST /myservice HTTP/1.1 User-Agent: Wget/1.6 Host: www.example.com Content-Type: application/json Content-Length: 181 Accept: application/json { "version" : "1.1", "method" : "sum", "params" : [ 17, 25 ] }
In this example, the method being targeted is provided by a
service located at http://www.example.com/myservice
.
The call is expressed as a JSON Object in the body of the HTTP
POST message. The version
member of this object tells
the receiver the version of the JSON-RPC protocol being used by the
client. The method
member indicates the procedure
being invoked, which is sum in this example. Finally,
the params
member contains a JSON Array that lists
the parameters (in order) to be supplied to the procedure.
The same invocation is shown here using HTTP GET:
GET /myservice/sum?a=17&b=25 HTTP/1.1 User-Agent: Wget/1.6 Host: www.example.com Accept: application/json
There are two distinctions from the HTTP POST version that are improtant to note. First, an HTTP GET targeting a procedure on a JSON-RPC service is largely indistinguishable from a regular HTTP GET transaction. For this reason, there is no mention of of the JSON-RPC protocol version being used. Second, the entire call is encoded in the HTTP Request-URI. The procedure to invoke is appended to the location of the service, such that it appears as the last component of the URI path component. The call parameters appear as the query component and are named after the formal arguments of the target procedure.
Regardless of whether a remote procedure call is made using HTTP GET or POST, the HTTP request message MUST specify the following headers:
User-Agent
MUST be specified.Content-Type
MUST be specified and SHOULD read application/json
.Content-Length
MUST be specified and correct according
to the guidelines and rules laid out in Section 4.4, “Message Length”,
of the HTTP specification.Accept
MUST be specified and SHOULD read application/json
.When using HTTP POST, the call is expressed in the HTTP request body as a JSON Object that carries the following members:
"1.1"
for this member.system
followed by a period character (U+002E
or ASCII 46) are reserved. In other words, a procedure named system.foobar
is considered to have reserved semantics.
proc
to reflect the procedure in RPC, but
is being left as method
for sake of compatibility. One could permit
both, but that could unnecessarily increase complexity.
In the text of this document, however, I have tried to stick to the term procedure.
If anyone spots any use of the word method, except references to the
membermethod
,
then please let me know.Unless a call is for notification purposes only, bearing one-way semantics, it MUST be replied to with a response.
Parameters for a procedure call can be identified by their name, position, or both. The name and position of a parameter is defined by the formal argument list of the target procedure. The first position is zero and increments by one for each subsequent formal argument.
A client can specify parameters by-name, by-position or both using a JSON Object as the value for the params member. Each member of this object becomes a candidate parameter for the call. If the name of the object member consists entirely of decimal digits (0-9) then it identifies the parameter by its position in the formal argument list. In all other instances, the member name identifies the parameter by its name and MUST match exactly (including in case) the name defined by the formal argument.
Suppose a remote procedure called sum that defines three formal arguments called
a
, b
and c
.
Suppose further that a
comes first in the argument list, b
second and c
third. The following example shows how this procedure would be called using named parameters in an HTTP POST transaction (the
headers have been omitted from all examples in this section for sake of brevity):
{ "version" : "1.1", "method" : "sum", "params" : { "a" : 12, "b" : 34, "c" : 56 } }
Since parameters are identified by their name, the order is insignificant. The same MAY be expressed with parameters appearing in a different order than which is defined by the formal argument list:
{ "version" : "1.1", "method" : "sum", "params" : { "b" : 34, "c" : 56, "a" : 12 } }
A client MAY choose to send all or some of the paramters by-position, in or out
of sequence. The example
below shows the same call being expressed with parameters
a
and
b
named after their positions
in the formal argument list:
{ "version" : "1.1", "method" : "sum", "params" : { "1" : 34, "c" : 56, "0" : 12 } }
If a client chooses to send parameters exclusively by their position, then it MAY
use a JSON Array for the params
member of the Procedure Call object as a terser
method:
{ "version" : "1.1", "method" : "sum", "params" : [ 12, 34, 56 ] }
A server MUST accept all forms of parameter expressions described in this section. The last case, where parameters are sent in an array, was the only one supported in JSON-RPC 1.0. Servers conforming to JSON-RPC 1.1 can therefore continue to support calls from existing JSON-RPC 1.0 clients.
If the value of the params member is any other type except JSON Object or Array, then the server MUST reject the call with an error.
params
member
is neither JSON Object or Array.
Calls that identify all parameters exclusively by-name are RECOMMENDED over any positional parameters for the following reasons:
The Null value MAY be used as the value of any parameter and MUST be taken to mean that the parameter is not being supplied for the call.
Client implementations SHOULD strive to order the members of the Procedure Call
object such that the server is able to employ a streaming strategy to process the contents.
At the very least, a client SHOULD ensure that the version
member
appears first and the params
member last.
An example how this can be an advantage is
where a client tries to invoke a procedure that does not exist on the target service. The server can then skip to the end and issue an error as soon as it reads
the value of the method
member and finds it to be in error.
params
member appears before method
.When using HTTP GET, the target procedure and parameters for the call are entirely expressed within the Request-URI of the HTTP message. The target procedure MUST appear as the last component of the Request-URI path component. The procedure's name MUST therefore be preceded by a forward-slash (U+002F or ASCII 47) but MUST NOT end in one.
The parameters are placed in the query component (as defined in
RFC 3986) of the Request-URI, which is then formatted using the same scheme as defined
for HTML Forms with
the get
method.
Each parameters consists of a name/position and value pair that is separated by
the equal sign (U+003D or ASCII 61) and parameters themselves are separated by an
ampersand (U+0026 or ASCII 38):
name1=value1&name2=value2&name3=value3…
A client MAY send the parameters in a different order than in which the formal argument list of the target procedure defines them.
The client MUST NOT use the JSON syntax for the parameter values. All values MUST be plain text and observe the escaping rules defined for the query component of the URL. After decoding, the server MUST treat all values as if they were sent as JSON String values. The server MAY then perform conversions at its discretion (on a best-attempt basis) if the formal arguments of the target procedure expects other non-String values. This specification does not define any conversion rules or methods.
Parameters named identically on the query string MUST be collapsed
into an Array of String values using the same order in which they appear in the query string and
identified by the repeating parameter name. For instance, the following query string specifies two parameters only,
namely scale
and city
:
city=london&scale=farenheit&city=zurich&city=new+york
The parameter scale
has the single String value of "farenheit"
whereas
city
is an Array of String values equivalent to the JSON text [ "london", "zurich", "new york" ]
.
It is specifically not possible to send parameters of type Object using HTTP GET.
Due to semantics and therefore requirements of HTTP GET, only procedures that are considered safe and idempotent MAY be invoked using HTTP GET. An explanation of what is considered safe and idempotent is provided in Section 9.1 (Safe and Idempotent Methods) of HTTP 1.1 specificiation. A server SHOULD provide a means (through a configuration file, for example) for a service to indicate which of its procedures are safe and idempotent in order to be callable using HTTP GET. In the absence of such means on the other hand, the server MUST allow invocations using HTTP POST only.
A server MUST respond with an error if a client attempts to invoke a procedure that has not been designated by the service as safe for call using HTTP GET.
A procedure callable using HTTP GET SHOULD also be callable using HTTP POST.
The choice of the HTTP method for a remote procedure call depends on the consequences of calling the procedure as well as the benefits afforded by each of the two HTTP methods. In general, any remote procedure call can be made using HTTP POST, but some benefits
HTTP GET can be particularly useful when:
Conforming implementations MUST treat procedure and parameter names as being case-sensitive such the names bar
and BAR
would be
seen as two distinct entities.
The parity of a procedure call is defined by how closely it matches the target procedure's formal definition and argument list. A call is on full parity with the target procedure when it meets all of the following conditions:
Note that when parameters are named by-position or by-name, their sequence does not change or contribute to the parity of the call. A call can have full parity with its procedure even if the parameters were not sent in the sequence of the formal argument list.
A server SHOULD try to adapt a call such that it has the greatest chance of succeeding by making the following adjustments for the actual invocation:
When a remote procedure call is made, the service MUST reply with a response whether the invocation was successful or not.
When the call is made using HTTP POST, the HTTP status code for a successful result MUST be 200.
When the call is made using HTTP GET, the HTTP status code for a successful result SHOULD be 200. If the HTTP GET call requested cache validation as well, the response MAY be 304 (Not Modified). The use of status codes generally related to redirection (e.g., 302 “Found” or 301 “Moved Permanently”) of HTTP GET transactions is not strictly prohibited, but service providers are RECOMMENDED instead to use public documentation and communication methods to advertise the relocation of a service.
Clients SHOULD be prepared to handle a status code of 401 (Unauthorized) resulting from an authentication challenge when a call is sent anonymously.
Unless noted otherwise, a status code of 500 (Internal Server Error) MUST be used under the following conditions:
Regardless of the HTTP method used to make the remote procedure call, the HTTP response message MUST specify the following headers:
Content-Type
MUST be specified and SHOULD read application/json
.Content-Length
MUST be specified and correct according
to the guidelines and rules laid out in Section 4.4, “Message Length”,
of the HTTP specification.Regardless of the HTTP method used to make the remote procedure call, the response body MUST be a JSON Object that carries the following properties or members:
id
member
of Procedure
Call object to which the response corresponds. This member is maintained
for backward compatibility with version 1.0 of the specification where it was used
to correlate a response with its request. If the id
member was
present on the request, then the server MUST repeat it verbatim on the response."1.1"
for this member. The absence of this member
can effectively be taken to mean that the remote server implement version 1.0 of
the JSON-RPC protocol.
Only one of result
or error
members MUST be specified, but never both. If both are missing, then the Procedure Return should be treated
as if it had the value Null.
HTTP/1.1 200 OK Connection: close Content-Length: 23 Content-Type: application/json Date: Sat, 08 Jul 2006 12:04:08 GMT Server: Microsoft-IIS/6.0 { "version" : "1.1", "result" : 42 }
When a remote procedure call fails, the Procedure Return object MUST contain the error
member whose value is a JSON Object with the following properties
members:
"JSONRPCError"
.{ "version" : "1.1", "error" : { "name" : "JSONRPCError", "code" : 123, "message" : "An error occurred parsing the request object.", "error" : { "name" : "JSONError", "message" : "Bad array", "at" : 42, "text" : "{\"id\":1,\"method\":\"sum\",\"params\":[1,2,3,4,5}"} } }
The following table lists the errors codes defined by this specification:
| code | Example Message | Meaning |
|---|---|---|
| 000 | Server error | A general error occurred on the server prior to procedure invocation on the service. |
| 000 | Parse error | An error occurred on the server while parsing the JSON text comprising the procedure call. |
| 000 | Bad call | The procedure call is not valid. |
| 000 | Call member out of sequence |
The server refuses to process the call because a member is not in the required sequence.
For example, the params member of the Procedure Call object appeared before version or
method members. |
| 000 | Service error | The call is valid, but a general error occurred during the procedure invocation. |
| 000 | Procedure not found | The call is valid but the procedure identified by the call could not be located on the service. |
The processing model for the treatment of a remote procedure call is outlined as follows:
A JSON-RPC service MUST, at a mimum, support a procedure called system.describe
.
The result of calling this procedure without any parameters MUST be a
Service Description
object as described in the next section.
A service description is a JSON Object with the following members or properties:
"1.0"
for conforming implementations."2.5"
to mean a major version of 2 and a minor version
of 5. The use and interpretation of the version number is left at the discretion
of the applications treating the Service Description.summary
has
any useful purpose in a service description. There is the help
member to serve a similar purpose anyhow.
Also, without this member being typed as Object, it is difficult to imagine how to
communicate the language of the text unless one includes a language
member (which starts to make things messy).http
or https
. Although this value is optional, it is highly RECOMMENDED that a service always publish its address so that a service description obtained
indirectly can be used nonetheless to locate the service.
A service SHOULD NOT include the system.describe
procedure in its description as it is assumed that all conforming services MUST support it.
A procedure description is a JSON Object with the following members and properties:
summary
has
any useful purpose in a service procedure description. There is the help
member to serve a similar purpose anyhow.
Also, without this member being typed as Object, it is difficult to imagine how to
communicate the language of the text unless one includes a language
member (which starts to make things messy).true
for the procedure to be considered idempotent."any"
. In either case, the elements
of the array MUST be ordered after the formal argument list of the procedure being
described. If this member is missing or the Null value then the procedure does not
expect any parameters."any"
.A procedure description is a JSON Object with the following members and properties:
"any"
.
The type
member of the Procedure Parameter Description MAY be one of
the following String values:
"bit"
"num"
"str"
"arr"
"obj"
"any"
"nil"
If another String value is found then it must be treated the same
as "any"
.
The "nil"
string MUST NOT be used to describe the type of a procedure's
formal argument. Rather, it is strictly reserved to denote the return type of a procedure
that is not expected to produce a result. In other words, the result
member of the
Procedure Return object resulting from a call to such procedure is
not interesting because it will always be the Null value.
It is valid for a call to supply the Null value for any parameter no matter how it is typed in its description.
Below is an example of Service Description object that describes a fictious DemoService
service that resides at the address http://www.example.com/service
and which publishes
a single procedure called sum
with two Number parameters, namely a
and b
,
and which returns a Number result.
{ "name" : "DemoService", "id" : "urn:uuid:41544946-415a-495a-5645-454441534646", "summary" : "A simple demonstration service.", "help" : "http://www.example.com/service/index.html", "address" : "http://www.example.com/service", "procs" : [ { "name" : "sum", "summary" : "Sums two numbers.", "help" : "http://www.example.com/service/sum.html", "params" : [ { "name" : "a", "type" : "num" }, { "name" : "b", "type" : "num" } ], "return" : { "type" : "num" }, { "name" : "time", "summary" : "Returns the current date and time in ISO 8601 format.", "help" : "http://www.example.com/service/time.html", "return" : { "type" : "string" } ] }
The summary
members of the Service Description and Procedure Description objects
contain human-readable text. A service MAY use the
Accept-Language header from the HTTP request message to deliver a localized
text for its String value. Likewise, the URL for the help
members MAY
also point a page that contains the localized documentation. However, the documentation
at the URL SHOULD also provide hyperlinks to the documentation in other languages
if the translations are available.
In JSON-RPC, service, procedure, parameters identifiable by name. The names of all these artifacts SHOULD only include:
All other characters in a name, although not technically excluded here, could severely limit the reach of the service and its procedures given certain environments, scenarios and especially programming languages.
Objects defined in this specification (Procedure Call, Procedure Return, Error)
MAY contain additional members not specifically
mentioned. Such
member names SHOULD be prefixed with the Dollar sign (U+0024 or ASCII 36), as in $extension
.
x-extension
, the Dollar sign seems like a more natural
and appropriate fit for JSON-RPC. Should we really be caring about the JavaScript/JSON
heritage in a communication protocol? One downside of using Dollar sign is that
it reserved in the Query component of the
URI Generic Syntax (RFC 2396).
It is worth noting that JSON-RPC is limited by the inability to represent cyclic object graphs in JSON text. Therefore implementations SHOULD take care that parent-child, sibling and cross-reference relationships result in error at the client end when making the remote procedure call or server end when responding with the result of the call. There are two possible ways to control this:
As soon as either configured limit is breached, the client or server fail the call with an error.


Package name - version/git SHA (date) - author/organization
Detailed Description
License
REQUIRE
Travis


Unique codes that define Kyrio error types. More...
Public Attributes | |
| const string | NO_CONNECTION = "NO_CONNECTION" |
| No connection to Kyrio servers. More... | |
| const string | UNAUTHORIZED = "UNAUTHORIZED" |
| Kyrio was not able to authorize client by provided ID. More... | |
| const string | BAD_REQUEST = "BAD_REQUEST" |
| Request contained invalid parameters. More... | |
| const string | UNKNOWN = "UNKNOWN" |
| Cause of error was unknown. More... | |
| const string | INTERNAL = "INTERNAL" |
| Internal server error. More... | |
| const string | TIMEOUT = "TIMEOUT" |
| Response to server or MSOs failed after timeout. More... | |
| const string | MAINTENANCE = "MAINTENANCE" |
| Server is temporary unavailable due to maintenance. More... | |
Unique codes that define Kyrio error types.
| const string Kyrio.Services.ErrorCode.BAD_REQUEST = "BAD_REQUEST" |
Request contained invalid parameters.
| const string Kyrio.Services.ErrorCode.INTERNAL = "INTERNAL" |
Internal server error.
| const string Kyrio.Services.ErrorCode.MAINTENANCE = "MAINTENANCE" |
Server is temporary unavailable due to maintenance.
| const string Kyrio.Services.ErrorCode.NO_CONNECTION = "NO_CONNECTION" |
No connection to Kyrio servers.
| const string Kyrio.Services.ErrorCode.TIMEOUT = "TIMEOUT" |
Response to server or MSOs failed after timeout.
| const string Kyrio.Services.ErrorCode.UNAUTHORIZED = "UNAUTHORIZED" |
Kyrio was not able to authorize client by provided ID.
| const string Kyrio.Services.ErrorCode.UNKNOWN = "UNKNOWN" |
Cause of error was unknown.


The Rust Platform
A programming language is much more than its compiler and standard library. It’s a community. Tools. Documentation. An ecosystem. All of these elements affect how a language feels, its productivity, and its applicability.
Rust is a very young language – barely a year past 1.0 – and building out and maturing the full complement of ecosystem and tooling is crucial to its success. That building is happening, but sometimes at an explosive rate that makes it hard to track what’s going on, to find the right library for a task, or to choose between several options that show up on a crates.io search. It can be hard to coordinate versions of important libraries that all work well together. We also lack tools to push toward maturity in a community-wide way, or to incentivize work toward a common quality standard.
On the other hand, the core parts of Rust get a tremendous amount of
focus. But we have tended to be pretty conservative in what is considered
“core”: today, essentially it’s rustc
, cargo
, libstd
/libcore
, and a
couple of other crates. The standard library also takes a deliberately
minimalistic approach, to avoid the well-known pitfalls of large standard
libraries that are versioned with the compiler and quickly stagnate, while the
real action happens in the broader ecosystem (“std
is where code goes to die”).
In short, there are batteries out there, but we’re failing to include them (or even tell you where to shop for them).
Can we provide a “batteries included” experience for Rust that doesn’t lead to stagnation, one that instead works directly with and through the ecosystem, focusing attention, driving compatibility, and reaching for maturity?
I think we can, and I want to lay out a plan that’s emerged after discussion with many on the core and subteams.
What is “The Rust Platform”?
I want to say right off the bat that the ideas here draw significant inspiration from the Haskell Platform, which is working toward similar goals for Haskell.
The basic idea of the Rust Platform is simple:
Distribute a wide range of artifacts in a single “Rust Platform Package”, including:
- The compiler, Cargo, rust-lang crates (e.g.
std
,libc
), docs - Libraries drawn from the wider ecosystem (going beyond rust-lang crates)
- Tools drawn from the wider ecosystem (e.g.
rustfmt
, NDKs, editor plugins, lints) - Cross-compilation targets
- The compiler, Cargo, rust-lang crates (e.g.
Periodically curate the ecosystem, determining consensus choices for what artifacts, and at what versions, to distribute.
In general, rustup is intended to be the primary mechanism for distribution; it’s expected that it will soon replace the guts of our official installers, becoming the primary way to acquire Rust and related artifacts.
As you’d expect, the real meat here is in the details. It’s probably unclear what it even means to “distribute” a library, given Cargo’s approach to dependency management. Read on!
Library mechanics
Cargo metapackages
The most novel part of the proposal is the idea of curating and distributing
crates. The goal is to provide an experience that feels much like std
, but
provides much greater agility, avoiding the typical pitfalls of large standard
libraries.
The key to making sense of library “packaging” for Rust is the idea of a metapackage for Cargo, which aggregates together a number of library dependencies as a single name and version. Concretely, this would look like:
[dependencies]
rust-platform = "2.7"
which is effectively then shorthand for something like:
[dependencies]
mio = "1.2"
regex = "2.0"
log = "1.1"
serde = "3.0"
Meta packages give technical meaning to curation: we can provide assurance that the crates within a metapackage will all play well together, at the versions stated.
With the platform metapackage, we can talk coherently about the “Rust Platform 2.0 Series” as a chapter in Rust’s evolution. After all, core libraries play a major role in shaping the idioms of a language at a given point of time. Evolution in these core libraries can have an effect on the experience of the language rivaling changes to the language itself.
With those basics out of the way, let’s look at the ways that the platform is,
and is not, like a bigger std
.
Stability without stagnation
The fact that std
is effectively coupled with rustc
means that upgrading the
compiler entails upgrading the standard library, like it or not. That means that
the two need to provide essentially the same
backwards-compatibility guarantees. TL;DR,
it’s simply not feasible to do a new, major version of std
with breaking
changes. Moreover, std
is forcibly tied to the Rust release schedule, meaning
that new versions arrive every six weeks, period. Given these constraints, we’ve
chosen to take a minimalist route with std
, to avoid accumulating a mass of
deprecated APIs over time.
With the platform metapackage, things are quite different. On the one hand, we
can provide an experience that feels a lot like std
(see below for more on
that). But it doesn’t suffer from the deficits of std
. Why? It all comes down
to versioning:
Stability: Doing a
rustup
to the latest platform will never break your existing code, for one simple reason: existingCargo.toml
files will be pinned to a prior version of the platform metapackage, which is fundamentally just a collection of normal dependencies. So you can upgrade the compiler and toolchain, but be using an old version of the platform metapackage in perpetuity. In short, the metapackage version is orthogonal to the toolchain version.Without stagnation: Because of the versioning orthogonality, we can be more free to make breaking changes to the platform libraries. That could come in the form of upgrading to a new major version of one of the platform crates, or even dropping a crate altogether. These changes are never forced on users.
But we can do even better. In practice, while code will continue working with an
old metapackage version, people are going to want to upgrade. We can smooth that
process by allowing metapackage dependencies to be overridden if they appear
explicitly in the Cargo.toml
file. So, for example, if you say:
[dependencies]
rust-platform = "2.7"
regex = "3.0"
you’re getting the versions stipulated by platform 2.7 in general, but
specifying a different version of regex
.
There are lots of uses for this kind of override. It can allow you to track progress of a given platform library more aggressively (not just every six weeks), or to try out a new, experimental major version. Or you can use it to downgrade a dependency where you can otherwise transition to a new version of the platform.
Approaching std
ergonomics
There are several steps we can take, above and beyond the idea of a metapackage,
to make the experience of using the Rust Platform libraries approximate using
std
itself.
cargo new
. A simple step: havecargo new
automatically insert a dependency on the current toolchain’s version of the platform.Global coherence. When we assemble a version of the platform, we can do integration testing against the whole thing, making sure that the libraries not only compile together, but work together. Moreover, libraries in the platform can assume the inclusion of other libraries in the platform, meaning that example code and documentation can cross-reference between libraries, with the precise APIs that will be shipped.
Precompilation. If we implement metapackages naively, then the first time you compile something that depends on the platform, you’re going to be compiling some large number of crates that you’re not yet using. There are a few ways we could solve this, but certainly one option would be to provide binary distribution of the libraries through
rustup
– much like we already do forstd
.No
extern crate
. Getting a bit more aggressive, we might drop the need forextern crate
when using platform crates, giving a trulystd
-like feel. (In general,extern crate
is already redundant withCargo.toml
for most use cases, so we might want to take this step broadly, anyway.)
Versioning and release cadence
I’ve already alluded to “major versions” of the platform in a few senses. Here’s what I’m thinking in more detail:
First off, rustc
itself is separately versioned. Conceivably, the Rust
Platform 5.0 ships with rustc
1.89. In other words, a new major version of
the platform does not imply breaking changes to the language or standard
library. As discussed above, the metapackage approach makes it possible to
release new major versions without forcibly breaking any existing code; people
can upgrade their platform dependency orthogonally from the compiler, at their
own pace, in a fine-grained way.
With that out of the way, here’s a plausible versioning scheme and cadence:
A new minor version of the platform is released every six weeks, essentially subsuming the existing release process. New minor releases should only include minor version upgrades of libraries and tools (or expansions to include new libs/tools).
A new major version of the platform is released roughly every 18-24 months. This is the opportunity to move to new major versions of platform libraries or to drop existing libraries. It also gives us a way to recognize major shifts in the way you write Rust code, for example by moving to a new set of libraries that depend on a major new language feature (say, specialization or HKT).
More broadly, I see major version releases as a way to lay out a narrative arc for Rust, recognizing major new chapters in its development. That’s helpful internally, because it provides medium-term focus toward shipping The Next Iteration of Rust, which we as a community can rally around. It’s also helpful externally, because people less immediately involved in Rust’s development will have a much easier way to understand the accumulation of major changes that make up each major release. These ideas are closely tied to the recent Roadmap proposal, providing a clear “north star” toward which quarterly plans can head.
Two-level curation
So far I’ve focused on artifacts that officially ship as part of the platform. Curating at that level is going to be a lot of work, and we’ll want to be quite selective about what’s included. (For reference, the Haskell Platform has about 35 libraries packaged).
But there are some additional opportunities for curation. What I’d love to see is a kind of two-level scheme. Imagine that, somewhere on the Rust home page, we have a listing of major areas of libraries and tools. Think: “Parsing”, “Networking”, “Serialization”, “Debugging”. Under each of these categories, we have a very small number of immediate links to libraries that are part of the official platform. But we also have a “see more” link that provides a more comprehensive list.
That leads to two tiers of curation:
Tier one: shown on front page; shipped with the platform; highly curated and reviewed; driven by community consensus; integration tested and cross-referenced with the rest of the platform.
Tier two: shown in “see more”; lightly curated, according to a clearly stated set of objective criteria. Things like: platform compatibility; CI; documentation; API conventions; versioned at 1.0 or above.
By providing two tiers, we release some of the pressure around being in the platform proper, and we provide valuable base-level quality curation and standardization across the ecosystem. The second tier gives us a way to motivate the ecosystem toward common quality and consistency goals: anyone is welcome to get their crate on a “see more” page, but they have to meet a minimum bar first.
The rust-lang
crates
One small note: our previous attempt at a kind of “extended std
” was the
rust-lang crates concept. These
crates are “owned” by the Rust community, and governed by the RFC process, much
like std
. They’re also held to similar quality standards.
Ultimately, it’s proved pretty heavy weight to require full RFCs and central control over central crates, and so the set of rust-lang crates has grown slowly. The platform model is more of a “federated” approach, providing decentralized ownership and evolution, while periodically trying to pull together a coherent global story.
However, I expect the rust-lang crates to stick around, and for the set to slowly grow over time; there is definitely scope for some very important crates to be completely “owned by the community”. These crates would automatically be part of the platform, having been approved via the RFC process already.
Open questions
The biggest open question here is: how does curation work? Obviously, it can’t run entirely through the libs team; that doesn’t scale, and the team doesn’t have the needed domain expertise anyway.
What I envision is something that fits into the Roadmap planning proposal. In a given quarter, we set out as an initiative to curate crates in a few areas – let’s say, networking and parsing. During that quarter, the libs team works closely with the portion of the community actively working in that space, acting as API consultants and reviewers, and helping shepherd consensus toward a reasonable selection. There are a lot of details to sort out, but working in an incremental way (a sort of quarterly round-robin between areas) seems like a good balance between focus and coverage. But there are a lot of details to sort out.
It’s also not entirely clear what will need to go into each minor release. Hopefully it can be kept relatively minimal (e.g., with library/tool maintainers largely driving the version choice for a given minor release).
Wrap-up
Although the mechanics are not all that earth-shattering, I think that introducing the Rust Platform could have a massive impact on how the Rust community works, and on what life as a Rust user feels like. It tells a clear story about Rust’s evolution, and lets us rally around that story as we hammer out the work needed to bring it to life. I’m eager to hear what you think!


|
Cooperative Futures
|
Base class for the specialization and general Future objects. More...
#include <coopfuture.hpp>
Classes | |
| union | Contents |
| The contents of a Future object. More... | |
Public Member Functions | |
| FutureBase (Scheduler &sched) | |
| A Future is constructed by providing a scheduler on which to resolve the value, if it is not provided before it is needed. More... | |
| void | setError (ErrorType) throw (FutureAlreadyFulfilled) |
| Fulfills an unsuccesful Future with the exception to throw. More... | |
| void | setUnexpected () throw (FutureAlreadyFulfilled) |
| Future was fulfilled with an exception outside of its scope. More... | |
Protected Types | |
| enum | State { State::UNRESOLVED, State::SUCCESS, State::FAILURE, State::UNEXPECTED } |
Protected Member Functions | |
| void | complete () throw (FutureAlreadyFulfilled) |
Protected Attributes | |
| Scheduler & | scheduler |
| The scheduler to invoke if blocking is necessary. | |
| State | state |
| The current state, determines which view of the union member is valid. | |
| union fut::FutureBase::Contents | contents |
| Singleton instantiation of Contents. | |
Base class for the specialization and general Future objects.
The Future class is used to specify that a result will be forthcoming at some point in the future. It is therefore a building block for asynchronous programing. A function can return a Future rather than an actual result and then set up a mechanism whereby the result is provided. When a Future is cast into its underlying value, if the value has not currently been provided then the scheduler is invoked in an attempt to fulfill the value.
This class is NOT thread-safe and is intended for cooperative multi-tasking.
|
strongprotected |
|
inline |
|
protected |
Check whether the Future was already fulfilled and release any waiting contexts.
| void fut::FutureBase< ValueType, ErrorType >::setError | ( | ErrorType | newError | ) | |
| throw | ( | FutureAlreadyFulfilled | |||
| ) |
| void fut::FutureBase< ValueType, ErrorType >::setUnexpected | ( | ) | ||
| throw | ( | FutureAlreadyFulfilled | ||
| ) |


Summary
This release is primarily a bug fix release with some additional runtime-system changes to help prepare for the planned switch to using an LLVM backend for the AMD64 target.
Version 110.98.1 was a patch release that addressed some of the pretty printing regressions introduced in 110.98. The release notes for those fixes are included here.
Also note that this release is the last 110 series release. We are switching our release numbering scheme to the format <year>.<relnum>, so the next release will be 2021.1.
Details
Compiler
The binary-file format used to store compiled code has been simplified by eliminating support for multiple code objects in a file (a feature that has not been used in many years). We have also changed the format of the "magic string" that is used to identify binfiles.
Runtime System
The boot loader was updated to work with the new binary-file format for code.
The layout of the stack frame used by SML code was changed to be compatible with the register spilling conventions used by LLVM. Specifically, the spill area is now at the top of the frame (i.e., at offset zero from the stack pointer and the various bits of stack-allocated state are at the bottom of the frame.
SML/NJ Library
Made a number of improvements to the pretty-printing library.
The PP_DEVICE
signature was extended with a number of additional
properties (max indentation, max depth, ellipses, …), as well
as functions for setting properties on a device. The pretty-printer
engine was updated to to use the max depth and max indentation
properties when rendering.
A new device module (CharBufferDev
) was added. This is a device
for pretty printing to a character buffer and is the device structure
that underlies the CharBufferPP
structure.
ML-LPT
Changed the semantics of the spans returned by ml-ulex so that the second component of a span is the position of the rightmost character in the token (instead of the character following the token). Specifically, the span \((p_1, p_2)\) specifies the \(p_2 - p_1 + 1\) characters that start with the character at position \(p_1\) and run to \(p_2\) (inclusive).
32-bit macOS issues
While the x86 installer for 110.99 works on macOs 10.14 Mojave, building from source requires some extra steps because the version of Xcode distributed for Mojave does not include a 32-bit SDK.
Another issue that you may encounter when building on macOs 10.14 Mojave is an error message for a shell script of the form
/bin/sh: bad interpreter: Operation not permitted
This error arises because the com.apple.quarantine
attribute is set on the
shell script. To fix the problem, remove the attribute using the command
xattr -d com.apple.quarantine shell-script
and resume the build.
Bugs
Here is a list of tracked bugs fixed (or closed) since 110.98 (including those patched in 110.98.1). Please see the bug tracker for more details.
254 |
|
266 |
Pretty printing regression in SML/NJ 110.98 |
267 |
Returns an incorrect result for a calculation on |
268 |
Polymorphic Type Pretty Printing Regression |
269 |
|
271 |
Pretty printer regression for structure binding |
274 |
Minor pretty printing glitch when printing structure specs |
276 |
Missing option to control extra newlines in REPL |
277 |
Excess white space when pretty printing a module signature |
Supported systems
We believe that SML/NJ will build and run on the following systems, but have only tested some of them:
| Architecture | Operating System | Status |
|---|---|---|
AMD64 |
FreeBSD 12.0 |
Tested |
macOS 10.14 (Mojave) |
Tested |
|
macOS 10.15 (Catalina) |
Tested |
|
Ubuntu 16.04.3 LTS |
Tested |
|
Ubuntu 18.04.3 LTS |
Tested |
|
|
||
Power PC |
Mac OS X 10.5 (Leopard) |
|
AIX |
||
|
||
Sparc |
Solaris |
|
Linux |
||
|
||
x86 (32-bit) |
Mac OS X 10.6 (Snow Leopard) |
|
Mac OS X 10.7 (Lion) |
||
Mac OS X 10.8 (Mountain Lion) |
||
Mac OS X 10.9 (Mavericks) |
||
Mac OS X 10.10 (Yosemite) |
||
Mac OS X 10.11 (El Capitan) |
||
macOS 10.12 (Sierra) |
Tested |
|
macOS 10.13 (High Sierra) |
Tested |
|
macOS 10.14 (Mojave) |
Tested |
|
Ubuntu 16.04.3 LTS |
Tested |
|
Other Linux variants |
||
FreeBSD 12.0 |
Tested |
|
Other BSD variants |
||
Windows 7 |
||
Windows 10 |
||
Cygwin (32-bit) |
||
|


Winners Of The 2019 Comedy Wildlife Photography Awards Announced
by Emily BrownThe winners of the 2019 Comedy Wildlife Photography Awards have been announced and the photos are about to make your day a whole lot better.
Advertisements
Nature is a profound and beautiful thing and animals are often perfect examples of that, with sea creatures creating spectacles as they leap from the water, majestic birds flying in awe-inspiring formations and jungle cats sleuthing through the undergrowth.
Of course, the natural world is also home to a number of less gracious scenes, and that’s where the Comedy Wildlife Photography Awards come in.
Advertisements
Created in 2015, the Comedy Wildlife Photography Awards prides itself on being ‘light-hearted [and] upbeat’ as it highlights some of the funniest scenes the world has to offer, while also promoting conservation through a collaboration with wildlife charity Born Free.
The finalists for this year’s awards were announced in September and contenders for the win included a penguin chest-bumping a sea lion, a rodent who looked to be in the middle of performing a power ballad and a rhino who emptied his bladder all over an unsuspecting bird.
While they were all incredible in their own right, there were four photos in particular which were deemed worthy of an award.
Check them out below.
Advertisements
Spectrum Photo Creature’s in the Air Award went to Vlado Pirsa for his image entitled ‘Family Disagreement’, which basically summed up every relationship ever:
The Olympus Creatures Under the Water Award and the Affinity Photo People’s Choice Award were given to Harry Walker for capturing what might just be the cutest image ever, titled ‘Oh My!’:
The Amazing Internet Portfolio Award was given to Elaine Kruer for her photo series titled ‘First Comes Love… Then Comes Marriage’, which managed to depict an entire romance in just four images:
Advertisements
These three winners offer some of this year’s funniest and most relatable scenes but the pièce de résistance comes in the form of Sarah Skinner’s shot, entitled ‘Grab Life By The…!’
The perfectly timed shot was chosen as the winner for the Creatures of the Land Category as well as the overall winner for the 2019 Comedy Wildlife Photography Awards, and it’s easy to see why:
The image, taken in Botswana, shows the moment a cute little lion cub raised its sharp claws towards the balls of an unsuspecting adult. What happened after the photo was taken remains a mystery, though photographer Skinner has assured the cub is still thriving – and wreaking havoc, no doubt.
Commenting on her win, she said:
I am absolutely delighted to be awarded the title as Overall Winner in the Comedy Wildlife Photography Awards 2019. It certainly warms my heart to know that this image will spread some laughter and happiness around the world.
I am happy to report that this cub continues to thrive in the pride, having seen her again in October this year.
Skinner continued:
I can only hope and encourage everyone, as a collective to each do our part in the conservation of all wildlife species, so that future generations can enjoy them, in the same way that I have done during my career as a wildlife photographer.
Long may lions walk the plains.
Skinner’s win includes a safari in the Masai Mara, Kenya, along with a unique handmade trophy from the Wonder Workshop in Tanzania, an Airport Advantage bag from THINK TANK and an iPad preloaded with the Affinity Photo’s award-winning software.
The win is certainly well deserved!
Emily Brown first began delivering important news stories aged just 13, when she launched her career with a paper round. She graduated with a BA Hons in English Language in the Media from Lancaster University, and went on to become a freelance writer and blogger. Emily contributed to The Sunday Times Travel Magazine and Student Problems before becoming a journalist at UNILAD, where she works on breaking news as well as longer form features.


Diversely skilled Data Analyst with a capacity for learning at a fast pace and managing large, complex projects. Database engineer and builder of advanced reports, SQL queries, ETL processes, and data visualizations. Fearless problem-solver, often automating and reducing system complexities by over 40%. Passionate about transforming data into user-friendly tools and bridging communication between engineers and end-users.
Establishing foundational data structures and reporting dashboards for Enterprise Marketing Operations and Strategy. Managing the reporting and funnel analytics for all of Enterprise Marketing. Collaborating with 12+ global markets across NA, EMEA, and APAC, as well as cross-functionally across data platforms, data science, and marketing teams.
Introduced and standardized automation into integrated marketplace reports using MDX and OLAP data cubes in Excel. Restructured and streamlined financial reports.
Responsible for supply chain network capacity planning and optimization. Analyzing consumer goods flow using data analytics tools including Tableau, Alteryx, Snowflake, Teradata, Excel, etc. Performing cloud database administration and ad hoc analysis. Managing logistics operations in a highly collaborative, cross-functional team environment.
Founded and grew a successful multi-channel retail store, initially as e-commerce then also as a brick-and-mortar store in 2013. Continued to sell on four e-commerce platforms and designed financial tools to forecast the annual purchasing budget, product mix and monthly cash flow.
Overhauled the corporate website to a content management system and trained 30 stakeholders from 7 business groups across 4 languages. Managed an international marketing budget of ~$100K. Drove the strategic and creative direction of quarterly advertising campaigns.
Produced websites for small to mid-sized businesses in an agency environment. Managed feature enhancements for Intel’s digital asset management system.
Cleaned 48% of the intranet in obsolete sites and defined new account management procedures. Served as interim Senior Digital Manager to facilitate progress and motivation during leadership and IT transitions.


{% extends "_base.html" %} {% block page_name %}reset{% endblock %} {% block title %}Reset your password{% endblock %} {% block content %}
Enter your email address below and we will send you an email with instructions explaining how to reset your password.


The Kane Hames mystery: Chiefs break silence on All Black's omission
by Online EditorsBy Christopher Reive, NZ Herald
Having missed the last two years of Super Rugby due to health concerns, Kane Hames will not feature in the 2020 season.
Hames was not re-signed by the Chiefs for the 2020 Super Rugby season, having struggled with concussion issues over the past two seasons.
The 10-test All Blacks prop hasn’t played a Super Rugby match since the Chiefs’ 2017 semifinal against the Crusaders, with his health issues putting an abrupt halt to his rapid rise.
Continue reading below…
Hames earned his All Blacks debut in 2016 after a breakout season in the Chiefs’ pack. His selection at the time was questioned by some, and Hames made headlines at a media session when he called out a journalist who had questioned his ability. However, he proved his place and earned 10 caps through 2016 and 2017.
Speaking about Hames’ absence from the squad this year, Chiefs forwards coach Neil Barnes said the 31-year-old prop had “to put things in priority”.
“I don’t think it’s a secret that he had concussion issues and he went through the processes of trying to get right,” Barnes said.
“Your health and your whole life in front of you, he’s probably made the right decision. We would have loved to have had him back, but we’re certainly not going to put people in a position where it affects the rest of their well being.
“He’s come back in other areas; he’s a talented individual as you’ll see in his work on TV, so good on him.”
As well as being unavailable for the Chiefs over the past two years, Hames hasn’t featured for Tasman at the Mitre 10 Cup level either but has tried his hand in the commentary booth.
Hames told the Herald in a statement: “It’s been a frustrating two years learning and applying concussion recovery protocols with slow progress. However, progress is progress and I am hoping that it keeps going to the point where I can be in a position to play again”.
This article first appeared on nzherald.co.nz and was republished with permission.
In other news:


Kantabilon:
Oh, how romantic! And melancholy at the same time... Like love, wouldn't you agree? Yes, this definitely has an Elven quality to it... Perhaps I should add a female Elven voice to the crystal?~
It is complete. Enjoy!