New Functional Map API in Infinispan 8 - Introduction
In Infinispan 8.0.0.Beta3, we have a introduced a new experimental API for interacting with your data which takes advantage of the functional programming additions and improved asynchronous programming capabilities available in Java 8.
Over the next few weeks we’ll be introducing different aspects of the API. In this first blog post, we’ll focus on why we felt there’s a need for a new approach, answering a few key questions.
ConcurrentMap and JCache
Map-like key/value pair APIs have often been used for distributed caching and in-memory data grids. Initially, ConcurrentMap became popular but this was designed to be run within a single JVM, and hence some of the operations suffered in distributed environments or when persistence stores were attached. For example, methods such as 'https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#put-K-V-[V put(K, V)]', 'https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html#putIfAbsent-K-V-[V putIfAbsent(K, V)]', 'https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html#replace-K-V-[V replace(K, V)]' would force implementations to return the previous value, but often this value is not needed yet this could be expensive to transfer.
JSR-107 set out to improve on this and came up with the JCache specification which solved this particular problem separating operations such ConcurrentMap’s 'https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#put-K-V-[V put(K, V)]' into two operations: 'https://github.com/jsr107/jsr107spec/blob/v1.0.0/src/main/java/javax/cache/Cache.java#L194[void put(K, V)]' and 'V getAndPut(K, V)', and it applied the same logic to other operations such as 'replace' by providing an alternative 'getAndReplace(K, V)'… etc.
However, even though JCache was designed with distributed caching in mind, it still failed to provide an API to execute operations asynchronously and hence avoid resource underutilization by having threads waiting for remote operations to complete. 'loadAll' is probably the only exception, and it would have been the perfect candidate to return a Future or similar construct, but having to pass in a completion listener feels a bit clunky and cannot be chained easily.
In my opinion, the best parts of JCache are 'invoke' and 'https://github.com/jsr107/jsr107spec/blob/v1.0.0/src/main/java/javax/cache/Cache.java#L599[invokeAll]' methods. When you look at them, you see a lot of potential to reimplement get, put, getAndPut, getAndReplace, putAll, getAll, and many others using these methods. In other words, as an implementer, all you should need to implement is those two functions, and the rest would be syntactic sugar for the user. Unfortunately, the way 'invoke' and 'invokeAll' handle arguments is a bit clunky, and really, it’s just screaming for lambdas to be passed in and CompletableFuture instances to be returned (Java 8!).
So, when Infinispan moved to Java 8, we decided to revisit these concepts and see if we could come up with a better, distilled map-like interface to be used for as either a caching or data grid API.
New Functional Map API
Infinispan’s Functional Map API is a distilled maplike asynchronous API which uses lambdas to interact with data.
Asynchronous and Lazy
Being an asynchronous API, all methods that return a single result,
return a
CompletableFuture
which wraps the result, so you can use the resources of your system more
efficiently by having the possibility to receive callbacks when the
CompletableFuture has completed, or you can chain or compose them with
other CompletableFuture. If you do want to block the thread and wait for
the result, just as it happens with a ConcurrentMap or JCache method
call, you can simply call
CompletableFuture.get()
(for such situations, we are working on finding ways to avoid
unnecessary thread creation when the caller will block on the
CompletableFuture).
For those operations that return multiple results, the API returns instances of a https://github.com/infinispan/infinispan/blob/master/commons/src/main/java/org/infinispan/commons/api/functional/Traversable.java[Traversable] interface which offers a lazy pull-style API for working with multiple results. Although push-style interfaces for handling multiple results, such as RxJava, are fully asynchronous, they’re harder to use from a user’s perspective. Traversable, being a lazy pull-style API, can still be asynchronous underneath since the user can decide to work on the traversable at a later stage, and the Traversable implementation itself can decide when to compute those results.
Lambda transparency
Since the content of the lambdas is transparent to Infinispan, the API has been split into 3 interfaces for read-only (ReadOnlyMap), read-write (ReadWriteMap) and write-only (WriteOnlyMap) operations respectively, in order to provide hints to the Infinispan internals on the type of work needed to support lambdas.
For example, Infinispan has been designed in such way that our 'ConcurrentMap.get()' and 'JCache.getAll()' implementations do not require locks to be acquired. These get()/getAll() operations are read-only operations, and hence if you call our functional map ReadOnlyMap’s 'eval()' or 'evalMany()' operations, you get the same benefit. A key advantage of ReadOnlyMap’s 'eval()' and 'evalMany()' operations is that they take lambdas as parameters which means the returned types are more flexible, so we can return a value associated with the key, or we can return a boolean if a value has the expected contents, or we can return some metadata parameters from it, e.g. last accessed time, last modified time, creation time, lifespan, version information…etc.
Another important hint that is required to make efficient use of the system is to know when a write-only operation is being executed. Write-only operations require locks to be acquired and as demonstrated by JCache’s 'https://github.com/jsr107/jsr107spec/blob/v1.0.0/src/main/java/javax/cache/Cache.java#L505[void removeAll()]' and `void put(K, V)' or ConcurrentMap’s 'https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#putAll-java.util.Map-[putAll()]', they do not require the previous value to be queried or read, which as explained above is a very important optimization since reading the previous value might require the persistence layer or a remote node to be queried. WriteOnlyMap’s 'https://github.com/infinispan/infinispan/blob/master/commons/src/main/java/org/infinispan/commons/api/functional/FunctionalMap.java#L281[eval()]', 'https://github.com/infinispan/infinispan/blob/master/commons/src/main/java/org/infinispan/commons/api/functional/FunctionalMap.java#L351[evalMany()]', and 'https://github.com/infinispan/infinispan/blob/master/commons/src/main/java/org/infinispan/commons/api/functional/FunctionalMap.java#L414[evalAll()]' follow this same pattern with the added flexibility for the lambda to decide what kind of write operation to execute.
The final type of operations we have are read-write operations, and within this category we find CAS-like (Compare-And-Swap) operations. This type of operations require previous value associated with the key to be read and for locks to be acquired before executing the lambda. ￼Most of the operations in ConcurrentMap and JCache operations fall within this domain including: 'V put(K, V)', 'https://github.com/jsr107/jsr107spec/blob/v1.0.0/src/main/java/javax/cache/Cache.java#L283[boolean putIfAbsent(K, V)]', 'V replace(K, V)', 'boolean replace(K, V, V)'…etc. ReadWriteMap’s 'eval()', 'evalMany()' and 'evalAll()' provide a way to implement the vast majority of these operations thanks to the flexibility of the lambdas passed in. So you can make CAS-like comparisons not only based on value equality but based on metadata parameter equality such as version information, and you can send back previous value or boolean instances to signal whether the CAS-like comparison succeeded.
$DEITY, I need to learn a new API!!!
This new functional Map-like API is meant to complement existing Key/Value Infinispan API offerings, so you’ll still be able to use ConcurrentMap or JCache standard APIs if that’s what suits your use case best.
The target audience for this new API is either:
-
Distributed or persistent caching/in-memory data-grid users that want to benefit from CompletableFuture and/or Traversable for async/lazy data grid or caching data manipulation. The clear advantage here is that threads do not need to be idle waiting for remote operations to complete, but instead these can be notified when remote operations complete and then chain them with other subsequent operations.
-
Users wanting to go beyond the standard operations exposed by ConcurrentMap and JCache, for example, if you want to do a replace operation using metadata parameter equality instead of value equality, or if you want to retrieve metadata information from values…etc.
Internally, we feel that this new functional Map-like API distills the Map-like APIs that we currently offer (including ConcurrentMap and JCache) and gets rid of a lot of duplication in our AdvancedCache API (e.g. 'https://docs.jboss.org/infinispan/8.0/apidocs/org/infinispan/AdvancedCache.html#getCacheEntry-java.lang.Object-[getCacheEntry()]', 'https://docs.jboss.org/infinispan/8.0/apidocs/org/infinispan/commons/api/AsyncCache.html#getAsync-K-[getAsync()]', 'https://docs.jboss.org/infinispan/8.0/apidocs/org/infinispan/commons/api/AsyncCache.html#putAsync-K-V-[putAsync()]', 'put(K, V, Metadata)'…etc), and hence down the line, we’d want all these APIs to be implemented using the new functional Maplike API. By doing that, we hope to reduce the number of commands that our internal architecture implements, hence reducing our code base.
This new API also offers a new approach for passing per-invocation parameters, and much more flexible Metadata handling compared to our current approach. As we dig into this new API in next blog posts, we’ll explain the differences and advantages provided by these.
Functional Map API usage examples
To give you a little taste of what the API looks like, here is a write-only operation to associate a key with a value, whose CompletableFuture has been chained so that when it completes, a read-only operation can be executed to read the stored value, and when that completes, print it to the system output:
You can find more examples of this new API in FunctionalConcurrentMap and FunctionalJCache classes, which are implementations of ConcurrentMap and JCache respectively using the new Functional Map API.
Tell me more!!￼
Over the next few weeks I’ll be posting examples looking at the finer details of these new Functional Map APIs, but if you’re eager to get started, check the classes in org.infinispan.functional package, FunctionalConcurrentMap and FunctionalJCache which are ConcurrentMap and JCache implementations based on these Functional Map APIs, and FunctionalMapTest which demonstrates operations that go beyond what ConcurrentMap and JCache offer.
Happy (functional) hacking :)
Galder


| TEZ-2569 |
branch 0.5 build fails due to cannot find symbol TaskAttemptTerminationCause |
Major |
. |
Prakash Ramachandran |
Prakash Ramachandran |
| TEZ-2566 |
Allow TaskAttemptFinishedEvent without TaskAttemptStartedEvent when it is KILLED/FAILED |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-2557 |
Port TEZ-1910 to branch-0.5 |
Blocker |
. |
Hitesh Shah |
Hitesh Shah |
| TEZ-2537 |
mapreduce.map.env and mapreduce.reduce.env need to fall back to mapred.child.env for compatibility |
Major |
. |
Jonathan Eagles |
Rohini Palaniswamy |
| TEZ-2533 |
AM deadlock when shutdown |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-2475 |
Tez local mode hanging in big testsuite |
Major |
. |
André Kelpe |
Siddharth Seth |
| TEZ-2397 |
Translation of LocalResources via Tez plan serialization can be lossy |
Critical |
. |
Siddharth Seth |
Siddharth Seth |
| TEZ-2379 |
org.apache.hadoop.yarn.state.InvalidStateTransitonException: Invalid event: T_ATTEMPT_KILLED at KILLED |
Blocker |
. |
Rajesh Balamohan |
Hitesh Shah |
| TEZ-2369 |
Add a few unit tests for RootInputInitializerManager |
Major |
. |
Siddharth Seth |
Siddharth Seth |
| TEZ-2348 |
EOF exception during UnorderedKVReader.next() |
Major |
. |
Jason Dere |
Rajesh Balamohan |
| TEZ-2334 |
ContainerManagementProtocolProxy modifies IPC timeout conf without making a copy |
Major |
. |
Chang Li |
Chang Li |
| TEZ-2317 |
Event processing backlog can result in task failures for short tasks |
Major |
. |
Rohini Palaniswamy |
Bikas Saha |
| TEZ-2305 |
MR compatibility sleep job fails with IOException: Undefined job output-path |
Critical |
. |
Tassapol Athiapinya |
Jeff Zhang |
| TEZ-2304 |
InvalidStateTransitonException TA_SCHEDULE at START_WAIT during recovery |
Major |
. |
Jason Lowe |
Jeff Zhang |
| TEZ-2303 |
ConcurrentModificationException while processing recovery |
Major |
. |
Jason Lowe |
Jeff Zhang |
| TEZ-2289 |
ATSHistoryLoggingService can generate ArrayOutOfBoundsException |
Major |
. |
Jonathan Eagles |
Chang Li |
| TEZ-2257 |
NPEs in TaskReporter |
Major |
. |
Siddharth Seth |
Siddharth Seth |
| TEZ-2240 |
Fix toUpperCase/toLowerCase to use Locale.ENGLISH |
Major |
. |
Tsuyoshi Ozawa |
Tsuyoshi Ozawa |
| TEZ-2238 |
TestContainerReuse flaky |
Major |
. |
Bikas Saha |
Bikas Saha |
| TEZ-2224 |
EventQueue empty doesn't mean events are consumed in RecoveryService |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-2221 |
VertexGroup name should be unqiue |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-2220 |
TestTezJobs compile failure in branch 0.5 |
Major |
. |
Rajesh Balamohan |
Hitesh Shah |
| TEZ-2217 |
The min-held-containers being released prematurely |
Major |
. |
Gopal V |
Bikas Saha |
| TEZ-2214 |
FetcherOrderedGrouped can get stuck indefinitely when MergeManager misses memToDiskMerging |
Major |
. |
Rajesh Balamohan |
Rajesh Balamohan |
| TEZ-2199 |
updateLocalResourcesForInputSplits assumes wrongly that split data is on same FS as the default FS |
Major |
. |
Hitesh Shah |
Hitesh Shah |
| TEZ-2193 |
Check returned value from EdgeManagerPlugin before using it |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-2192 |
Relocalization does not check for source |
Blocker |
. |
Rohini Palaniswamy |
Hitesh Shah |
| TEZ-2162 |
org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat is not recognized |
Critical |
. |
Oleg Zhurakousky |
Jeff Zhang |
| TEZ-2133 |
Secured Impersonation: Failed to delete tez scratch data dir |
Major |
. |
Johannes Zillmann |
Chang Li |
| TEZ-2080 |
Localclient should be using tezconf in init instead of yarnconf |
Major |
. |
Prakash Ramachandran |
Siddharth Seth |
| TEZ-2071 |
TestAMRecovery should set test names for test DAGs |
Major |
. |
Bikas Saha |
Jeff Zhang |
| TEZ-2058 |
Flaky test: TestTezJobs::testInvalidQueueSubmission |
Blocker |
. |
Hitesh Shah |
Hitesh Shah |
| TEZ-2037 |
Should log TaskAttemptFinishedEvent if taskattempt is recovered to KILLED |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-2036 |
OneToOneEdgeManager should enforce that source and destination tasks have same number |
Major |
. |
Bikas Saha |
Bikas Saha |
| TEZ-2020 |
For 1-1 edge vertex configured event may be sent incorrectly |
Major |
. |
Bikas Saha |
Bikas Saha |
| TEZ-2015 |
VertexImpl.doneReconfiguringVertex() should check other criteria before sending notification |
Major |
. |
Bikas Saha |
Bikas Saha |
| TEZ-2011 |
InputReadyVertexManager not resilient to updates in parallelism |
Major |
. |
Bikas Saha |
Bikas Saha |
| TEZ-1949 |
Whitelist TEZ_RUNTIME_OPTIMIZE_SHARED_FETCH for broadcast edges |
Critical |
. |
Gopal V |
Gopal V |
| TEZ-1942 |
Number of tasks show in Tez UI with auto-reduce parallelism is misleading |
Blocker |
. |
Rajesh Balamohan |
Prakash Ramachandran |
| TEZ-1934 |
TestAMRecovery may fail due to the execution order is not determined |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-1931 |
Publish tez version info to Timeline |
Critical |
. |
Hitesh Shah |
Hitesh Shah |
| TEZ-1928 |
Tez local mode hang in Pig tez local mode |
Major |
. |
Daniel Dai |
Hitesh Shah |
| TEZ-1924 |
Tez AM does not register with AM with full FQDN causing jobs to fail in some environments |
Major |
. |
Ivan Mitic |
Ivan Mitic |
| TEZ-1923 |
FetcherOrderedGrouped gets into infinite loop due to memory pressure |
Major |
. |
Rajesh Balamohan |
Rajesh Balamohan |
| TEZ-1895 |
Vertex reRunning should decrease successfulMembers of VertexGroupInfo |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-1893 |
Verify invalid -1 parallelism in DAG.verify() |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-1878 |
Task-specific log level override not working in certain conditions |
Major |
. |
Hitesh Shah |
Siddharth Seth |
| TEZ-1861 |
TestOnFileSortedOutput failing |
Major |
. |
Siddharth Seth |
Siddharth Seth |
| TEZ-1852 |
WordCount in local mode hangs in shuffle phase |
Critical |
. |
Jeff Zhang |
Prakash Ramachandran |
| TEZ-1851 |
FileSystem counters do not differentiate between different FileSystems |
Critical |
. |
Prasanth Jayachandran |
Siddharth Seth |
| TEZ-1836 |
Provide better error messages when tez.runtime.io.sort.mb is wrongly configured |
Major |
. |
Rajesh Balamohan |
Vasanth kumar RJ |
| TEZ-1800 |
Integer overflow in ExternalSorter.getInitialMemoryRequirement() |
Major |
. |
Rajesh Balamohan |
Rajesh Balamohan |
| TEZ-1642 |
TestAMRecovery sometimes fail |
Major |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-1560 |
Invalid state machine handling for V_SOURCE_VERTEX_RECOVERED in recovery |
Critical |
. |
Jeff Zhang |
Jeff Zhang |
| TEZ-1529 |
ATS and TezClient integration in secure kerberos enabled cluster |
Blocker |
. |
Prakash Ramachandran |
Prakash Ramachandran |
| TEZ-900 |
Confusing message for incorrect queue for some tez examples |
Major |
. |
Jonathan Eagles |
Chang Li |


The OTA Server plugin provides Over-the-air commands for upgrading firmware and downloading specific files on the server side.
◆ EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_NOTIFY
| #define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_NOTIFY |
plugin ota-server notify [destination:2] [endpoint:1] [payloadType:1] [jitter:1] [manuf-id:2] [imageTypeId:2] [version:4]
- Sends an OTA Image Notify message to the specified destination indicating a new version of an image is available for download.
- destination - INT16U - The node ID (can be a broadcast address) to which this OTA Notify message should be sent
- endpoint - INT8U - Target endpoint for the OTA Notify message (only really meaningful for non-broadcast target destination).
- payloadType - INT8U - Used to specify which parameters you want included in the OTA Notify cluster command payload (0 = jitter value only; 1 = jitter and manufacturer id; 2 = jitter, mfr id, and device id; 3 = jitter, mfr id, device id, and firmware version)
- jitter - INT8U - Corresponds to QueryJitter parameter in the OTA Upgrade cluster specification. The parameter indicates whether the client receiving Image Notify Command should send in Query Next Image Request command or not.
- manuf-id - INT16U - Manufacturer ID for the image being advertised (should match the mfr ID in the OTA file's header)
- imageTypeId - INT16U - Image type ID for the image being advertised (should match the image type ID from the OTA file's header)
- version - INT32U - Firmware version of the image being advertised (should match the version from the OTA file's header)
◆ EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_BLOCK_REQUEST
| #define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_BLOCK_REQUEST |
plugin ota-server policy block-request [policyValue:1]
- Sets the policy used by the ota-server Policy Plugin when it receives an image block request.
- policyValue - INT8U - 0: Send block (default), 1: Delay download once for 2 minutes, 2: Always abort download after first block
◆ EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_IMAGE_REQ_MIN_PERIOD
| #define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_IMAGE_REQ_MIN_PERIOD |
plugin ota-server policy image-req-min-period [period:2]
- period - INT16U - The minimum block period in milliseconds.
◆ EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_PAGE_REQ_MISS
| #define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_PAGE_REQ_MISS |
plugin ota-server policy page-req-miss [modulus:1]
- Sets the modulus number of blocks to not respond to. This is used in testing to simulate a device that fails to receive certain blocks from an Image Page Request message.
- modulus - INT8U - The block modulus number to skip sending when responding to an Image Page Request. E.g. if 2, every other block will not be sent. 0 turns the feature off.
◆ EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_PAGE_REQ_SUP
| #define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_PAGE_REQ_SUP |
plugin ota-server policy page-req-sup [pageRequestSupported:1]
- Sets whether the Page Request feature is supported or not.
- pageRequestSupported - INT8U - 1 if Page Request is supported, 0 if unsupported
◆ EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_PRINT
| #define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_PRINT |
plugin ota-server policy print
- Prints the polices used by the OTA Server Policy Plugin
◆ EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_QUERY
| #define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_QUERY |
plugin ota-server policy query [policyValue:1]
- Sets the policy used by the OTA Server Policy Plugin when it receives a query request from the client.
- policyValue - INT8U - 0: Upgrade if server has newer (default), 1: Downgrade if server has older, 2: Reinstall if server has same, 3: No next version (no next image is available for download)
◆ EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_UPGRADE
| #define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_POLICY_UPGRADE |
plugin ota-server policy upgrade [policyValue:1]
- Sets the policy used by the OTA Server Policy Plugin when it receives an upgrade end request
- policyValue - INT8U - 0: Upgrade Now (default), 1: Upgrade in 2 minutes, 2: Ask me later to upgrade, 3: Abort Upgrade (send default response)
◆ EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_UPGRADE
| #define EMBER_AF_DOXYGEN_CLI_COMMAND_PLUGIN_OTA_SERVER_PLUGIN_OTA_SERVER_UPGRADE |
plugin ota-server upgrade [nodeId:2] [endpoint:1] [mfrId:2] [imageType:2] [fileVersion:4]
- Instruct a device to upgrade now.
- nodeId - INT16U - Short destination to send message
- endpoint - INT8U - Endpoint destination to send message
- mfrId - INT16U - Manufacturer ID for the image (0xFFFF for wildcard)
- imageType - INT16U - Image type for the image (0xFFFF for wildcard)
- fileVersion - INT32U - File version for the image (0xFFFFFFFF for wildcard)


FLOW VISUALIZATION FOR BETTER RESOURCE ALLOCATION IN SORT CENTERS
UX INTERNSHIP, AMAZON DEVELOPMENT CENTER
Brief
The project was carried out as a part of my summer internship at Amazon Development Center, Hyderabad office.
Sort Centers at Amazon are responsible for sorting the packages, palletizing them and loading them to their corresponding trucks. However, the current systems rely on excel sheets to represent data in tabular form only. I was responsible for visualizing the flow of packages within the facility in order to facilitate managers to make better resource (labour) allocation decisions. Currently sort center managers use manual sheets to allocate labours. I addressed the problem by designing an interface that would enable managers to see and reallocate labour allocation within the facility.
I followed "The Amazon User Centred Design Process". I began by understanding and evaluating the current existing system. I conducted stakeholder interviews, created a persona of the user, identified pain points and set user goals.
I created scenarios, conducted task analysis, made paper prototypes and then I began with wireframing and explored possible ways of visualizing the data. I was given constant feedback by my manager and mentor via weekly meetings. Based upon the feedback, I created iterations.
May'16 - June-'16
Mr. X
Interaction Design, Data Visualization


Originally written by Michael Borkow
Transcribed by Josh Hodge
[Scene: Monica and Rachel's apartment. Everyone is sitting at the couches,
Chandler enters.]
CHAN: OK, what is it about me? Do I not look fun enough? Is there something. . .
repellant. . . about me?
RACH: So, how was the party?
CHAN: Well it couldn't have been worse. A woman literally passed through me. OK, so
what is it, am I hideously unattractive?
PHOE: No, you are not, you are very attractive. You know what, I go through the exact same
thing. Every time I put on a little weight, I start questioning everyting.
CHAN: Woah, woah, I've put on a little weight?
PHOE: No, not wieght... y'know, more like insulation.
MNCA: Chandler, I'm unemployed and in dire need of a project. Ya wanna work out? I can
remake you.
CHAN: Oh, you know, I would, but that might get in the way of my lying around time.
MNCA: Please.
ALL: C'mon. Let her. Yeah.
CHAN: Alright, OK, alright. But if we put on spandex and my boobs are bigger than yours,
I'm goin' home.
 Look, I never should have said anything. Come here. Come here.
[hugs Chandler but holds her hands apart behind his back] Oh, can't make.... hands...
meet....
OPENING TITLES
[Scene: Hallway between the apartments. Chandler comes out wearing spandex, jogging in
place. Monica is there.]
CHAN: OK, let's do it. [Monica looks at him funny] What?
MNCA: Nothing, just never seen you in little stretchy pants before.
CHAN: And we're changing. [jogs back in his apartment]
[Cut to the city street. Monica and Chandler are jogging. Chandler is lagging behind so he
hops in a cab and takes off, leaving Monica behind]
[Scene: Back in Chandler and Joey's apartment. Chandler is doing situps.]
MNCA: C'mon give me five more. Five more.
CHAN: [weakly] No.
MNCA: Five more and I'll flash you.
CHAN: One. . . two. . . two and a half. OK, just show me one of them.
[Scene: Central Perk. Chandler and Joey are sitting on the couch. Rachel is working.]
CHAN: [slowly lifts coffee cup to his mouth] Ow, ow, ow, ow, ow, ow, ow. [slowly sets the
cup back down] Ow, ow, ow, ow, ow. [Joey intercepts the cup and puts it down for him].
She's insane, the woman is insane. It's before work, it's after work, it's during work.
She's got me doing butt clenches at my desk.
[Phoebe enters.]
RACH: Hey Phoebs, how'd it go with Scott last night?
PHOE: Oh, um, it was nice. Took him to a romantic restraunt, ordered champagne, nice.
JOEY: The guy still won't put out, huh?
PHOE: Nope. Zilch, nothin', uh-uh.
ALL: Sorry Phoebs.
PHOE: Look, I, y'know, I don't mind taking it slow, I like him a lot, y'know he's really
interesting and he's really sweet and why won't he give it up?
JOEY: Maybe he, uhh... drives his car on the other side of the road, if ya know what I
mean.
PHOE: No, whad'ya mean? He's not British.

PHOE: Oohh, um, no, I don't think that's the problem. 'Cause we went, um, dancing the
other night and the way he held me so close, and the way he was looking into my eyes I
just like... definitely felt something.
RACH: Yeah, but how much can you tell from a look?
PHOE: No, I felt it on my hip. You could tell.
[Monica enters.]
MNCA: [to Chandler] Yo, Bing. Racquetball in 15 minutes.
CHAN: Joey, be a pal. Lift up my hand and smack her with it.
PHOE: [seeing Ross kissing Julie outside the window] Ooh, oh, Rachel, don't look.

JOEY: Woah, woah, woah, you have a date?
RACH: Yeah, Monica's settin' me up.
JOEY: But uh, uh, what about uh, Ross and uh. . .?
RACH: Oh what, my whole insane jealousy thing? Well, y'know, as much fun as that was, I've
decided to opt for sanity.
CHAN: So you really OK about all this?
RACH: Oh yeah, c'mon, I'm movin' on. He can press her up against that window as much as he
wants.
[Ross and Julie enter.]
ROSS: Hi guys.
ALL: Hey.
ROSS: Oh, Monica, I figured I'd come by tomorrow morning and pick up Fluffy's old cat toy,
OK?
MNCA: Only if you say his full name.
ROSS: [reluctantly] Can I come over tomorrow and pick up Fluffy Meowington's cat toy.
MNCA: Alright.
JOEY: [to Ross] You're getting a cat?
ROSS: Uh, actually, we're getting a cat.
RACH: Together?
ROSS: Uh huh.
RACH: Both of you?
ROSS: Yep.
RACH: Together.
JULIE: Yeah, we figure it'll live with Ross half the time, and with me half the time.
RACH: Ohh, well, isn't that just lovely. That's something the two of you will be able to
enjoy for a really, really, really, really, really long time.
ROSS: Hopefully.
RACH: Well. [looks at watch] Woah, look at that! I gotta go, I gotta date. With a man. Um,
OK, you guys have a really, uh, have a really good night and you two have a, uh, have a,
uh, really good cat. [she leaves carrying her tray then comes back in] OK, we're not
supposed to take these when we leave.
[Scene: A nice restraunt. Rachel is on her date with Michael (MICH).]
MICH: I don't know if Monica told you but this is the first date I've gone on since my
divorce so, if I seem a little nervous, I am.
RACH: [distracted] How long do cats live?
MICH: [confused] I'm sorry?
RACH: Cats, how long do they live figuring you don't... y'know, throw 'em under a bus or
something?
MICH: Um, maybe 15, 16 years.
RACH: That's just great. [she picks up her champagne and starts drinking]
MICH: Um, cheers.
RACH: Oh, right, clink. [downs her glass]
MICH: Monica told you I was cuter that this, didn't she?
RACH: Oh, no, Michael, it's not you. I'm sorry, it's just, it's this thing. It's probably
not as bad as it sounds but this friend of mine is, is getting a cat with his girlfriend.
MICH: Oh, that does sound. . .Ahh.
RACH: I mean he just started going out with her.
MICH: Is this guy, uhh, an old boyfriend?
RACH: Ah, hah-hah-hah-ho, yeah, he wishes. Oh, I'm sorry, look at me. OK, Michael, let's
talk about you.
MICH: Alright.
RACH: OK, OK. So, you ever get a pet with a girlfriend?
[Scene: Central Perk. Phoebe and Joey are sitting on the couch.]
PHOE: So, I figured it out.
JOEY: What?
PHOE: Why Scott doesn't want to sleep with me.
JOEY: Phoebe, that's crazy. When I first met you, you know what I said to Chandler? I
said, "Excellent butt, great rack."
PHOE: Really? That's so sweet. I mean, I'm officially offended but, sweet.
JOEY: Phoebs look, if you want to know what the deal is, you're just gonna have to ask
him.
PHOE: You're right, you're right. Ah, you are so yumm. [they hug]
[Outside the window, Monica and Chandler jog up. Monica playfully pushes him. They start
puching and slapping harder and harder until Monica pushes him down. Chandler stands up,
with a serious expression, and chases her away.]
[Scene: Back in the restraunt. Rachel pours the last of the champange bottle in her
glass.]
RACH: [obviously drunk] I mean, it's a cat, y'know, it's a cat. Why can't they get
one of those bugs, y'know, one of those fruitflies, those things that live for like a day
or something? [belligerently] What're they called, what're they called, what're they
called?
MICH: Fruitflies?
RACH: Yes! Thank you.
[The waiter comes to the table.]
WAITER: So, would you like any dessert?
MICH: No! No dessert, just a check, please.
RACH: Oh, you're not having fun, are you?
MICH: No, no, I am, but only because for the last hour and a half I've been playing the
movie Diner in my head.
RACH: Oh, look at me, look at me. Oh, I'm on a date with a really great guy, all I can
think about is Ross and his cat and his... Julie. I just want to get over him. gosh, why
can't I do that?
MICH: Oy. Look, I've been through a divorce, trust me you're gonna be fine. You just can't
see it now because you haven't had any closure.
RACH: Yeah! Closure. That's what it is, that's what I need. God, you're brilliant! Why
didn't I think of that? How do I get that?

RACH: Closure, that's what it is. Closure. [she looks around the restaurant, spotting a
guy with a cellular phone] Hello, excuse me. Excuse me, hel. . . woo [she almost falls out
of her chair]
GUY: Hang on.
RACH: Hello, excuse me.
GUY: What.
RACH: Hi, I'm sorry, I need to borrow your phone for just one minute.
GUY: I'm talkin'!
RACH: I can see that. I... just one phone call, I'll be very quick, I'll even pay for it
myself. [man is still reluctant] OK, you're bein' a little weird about your phone.
GUY: Alright, fine. [on the phone] I'll call you back. [hands the phone to her]
RACH: Thank you. OK. [dials] [to Michael] Machine. Just waiting for the beep.
MICH: Good.
RACHEL: [on phone] Ross, hi, it's Rachel. I'm just calling to say that um, everything's
fine and I'm really happy for you and your cat who, by the way, I think you should name
Michael. And, you know, ya see there I'm thinking of names so obviously, I am over you. I
am over you and that, my friend, is what they call closure. [hangs up and tosses phone in
the ice bucket]
[Scene: Chandler and Joey's apartment. Chandler is answering the door in his robe.]
CHAN: No, no, no, no, no, no [opens door to Monica] No. Monica, it's Sunday morning. I'm
not running on a Sunday.
MNCA: Why not?
CHAN: Because it's Sunday. It's God's day.
MNCA: OK, if you say stop, then we stop.
CHAN: OK, stop.
MNCA: No, c'mon, we can't stop, c'mon, we've got three more pounds to go. I am the energy
train and you are on board. Woo-woo, woo-woo, woo-woo [Chandler walks out of the
apartment, leaving Monica] Woo.
[Scene: Rachel and Monica's apartment. Rachel is taking asprin. Ross enters.]
ROSS: Hey Rach.
RACH: Ahhhh.
ROSS: Oh. And how was the date?
RACH: Umm, I think there was a restaurant... I know there was wine. . .
[Rachel looks at Ross as though she remembers something, but can't place what it is.]
ROSS: Wow, well uh, uh, actually, Julie's downstairs getting a cab, I just need the cat
toy, did Monica say. . . What? Why, why are you looking at me like that?

ROSS: OK. Oh, oh, oh. [runs over and picks up the cat toy]
RACH: Did we speak on the phone last night? Did you call me?
ROSS: No, I stayed at Julie's last night.
RACH: Huh.
ROSS: Oh, actually I haven't even been home yet. Do you mind if I check my messages?
 [Rachel walks in her room. Ross picks up the phone and dials his
machine to check his messages.]
ROSS: Rach, I got a message from you. [pauses] Who's Michael?
[Rachel comes out of her room, suddenly she remembers leaving the message.]
RACH: Oh my God. Oh my God Ross, no, hang up the phone, give me the phone Ross, give me
the phone, give me the phone, give me the. . . [jumps the couch and lands on Ross's back,
finally getting the phone from him. Ross has a confused expression on his face.]
ROSS: You're over me?
RACH: Ohhhhhhhh God. [climbs off his back]
ROSS: Wha... you're uh, you're, you're over me?
RACH: Ohh, ohh.
ROSS: When, when were you... under me? Rach.
What?
RACH: Ohh, OK, OK, OK, well, basically, lately, I've uh, I've uh, sort of had feelings for
you.
ROSS: You've had feelings for me?
RACH: Yeah, what, so? You had feelings for me first.
ROSS: Woah. Huh.
RACH: Chandler told me.
ROSS: Chandler. When did he... when did he... when did he?
RACH: When you were in China.
ROSS: China.
RACH: Meeting Julie.
ROSS: Julie. Julie. That. Oh God. Julie, right. OK, I need to lie down. No, ya know, I'm
gonna stand. I'm gonna stand, I'm gonna walk, I'm walkin' and I am standing. OK so you uh,
and now wha... and now, now, now you're over me?
RACH: Are you over me?
[A moment of silence.]
ROSS: [doorbell buzzes] That's, that's Julie. Ju... Julie, Julie. [talks on intercom] Hi
Julie.
JULIE: [over intercom] Hi honey, I've got a cab waiting.
ROSS: [perky] I'll be right down.
RACH: Wait, so, you're going?
ROSS: Well, OK, I uh, I have to. I can't deal with this right now. I mean, I've uh,
y'know, I've got a cab, I've got a girlfriend, I'm...
RACH: OK, OK.
ROSS: Cat. [leaves]
[Scene: Chandler and Joey's apartment. Joey is watching a rabbi play an electric guitar on
TV. Phoebe enters.]
PHOE: Hey Joey.
JOEY: Hey Phoebs.

JOEY: I can't find the remote. [Phoebe turns off the TV] Thank you.
PHOE: So, Scott asked me to come over for lunch today and I did.
JOEY: And?
PHOE: And we did.
JOEY: All right Phoebs, way to go.
PHOE: Yay me.
JOEY: So, so how did it happen?
PHOE: Well, I finally took your advice and asked him what was going on.
JOEY: And what did he say?
PHOE: He said that, um, he understands how sex can be like, a very emotional thing for a
woman and he was just afraid that I was gonna get all, y'know, like, 'ohh, is he gonna
call me the next day' and, y'know, 'where is this going' and, ya know, blah-la-la-la-la.
So he said he wanted to hold off until he was prepared to be really serious.
JOEY: Wow.
PHOE: Yeah, so I said, "OK, relax please," y'know, I mean, sex can be just about
two people right there in the moment, y'know, it's, if he wants to see me again he can
call and if not, that's fine too. So after a looooot of talking. . . I convinced him.
JOEY: Let me get this straight. He got you to beg to sleep with him, he got you to say he
never has to call you again, and he got you thinking this was a great idea.
PHOE: Um-hum.
JOEY: This man is my God.
[Scene: Central Perk. Rachel is closing up and Ross comes in. Get your Kleenex.]
RACH: Hi.
ROSS: I didn't get a cat.
RACH: Oh, that's um, interesting.
ROSS: No, no it's not interesting. OK, it's very, very not interesting. In fact it's
actually 100 percent completely opposite of interesting.
RACH: Alright, I got it Ross.
ROSS: You had no right to tell me you ever had feelings for me.
RACH: [hurt] What?
ROSS: I was doing great with Julie before I found out about you.
RACH: Hey, I was doin' great before I found out about you. You think it's easy for me to
see you with Julie?
ROSS: Then you should have said something before I met her.
RACH: I didn't know then. And how come you never said anything to me.
ROSS: There was never a good time.
RACH: Right, you, you only had a year. We only hung out every night.
ROSS: Not, not, not every night. You know, and... and it's not like I didn't try,
Rachel, but things got in the way, y'know? Like, like Italian guys or ex-fiances or, or,
or Italian guys.
RACH: Hey, there was one Italian guy, OK, and do you even have a point?
ROSS: The point is I... I don't need this right now, OK. It, it's too late, I'm with
somebody else, I'm happy. This ship has sailed.

ROSS: Hey, I've been doin' it since the ninth grade, I've gotten pretty damn good at it.
RACH: Alright, fine, you go ahead and you do that, alright Ross.
ROSS: Fine.

ROSS: Good.
RACH: Good. [Ross leaves]
[Rachel gets up and opens the door, yelling after him.]
RACH: And ya know what, now I've got closure.
[Rachel slams the door and locks it. She sits down, visibly upset.  Ross comes back and is standing outside the window. When
Rachel regroups and gets back up to finish closing, she sees him. She smiles. She goes to
open the door and can't get the lock undone.]
ROSS: Try the bottom one.
[She opens the door and they kiss.]
[Scene: Chandler and Joey's apartment. Chandler answers the door to find Monica.]
CLOSING CREDITS
CHAN: Monica, it's 6:30 in the morning. We're not working out, it's over.
MNCA: No way, with one pound to go, c'mon. We're workin', we're movin', we're in the zone
we're groovin'.
CHAN: OK, I don't, I don't mind the last pound. OK, in fact I kind of like the last pound.
OK, so don't make me do anything that I'll regret.
 What?
CHAN: Nothing, except tell you, uh, I think it's wonderful how much energy you have.
MNCA: Well, thanks.
CHAN: I mean, especially considering how tough it's been for you to find work.
MNCA: Well, you know.

MNCA: [sad] Uh-huh.

MNCA: Well no, but um.
CHAN: I mean, if it were me, I think I'd have difficulty just getting out of bed at all.
MNCA: Y'know, I try to stay positive. . .
CHAN: So, you feel like goin' for a run?
MNCA: Alright.
CHAN: Because, you know, you don't have to. If you want, you could just take a nap right
here.
MNCA: OK. Just for a little while.
CHAN: OK. [Puts an afghan over her and dances into his room]
END


It's an effort to implement and conduct studies on a variety of load balancing algorithms.
Seeing how they work and perform, in regard of things such as
Load Distribution, Cache Hits, and their Guarantees.


Python Basic Hands-on Workshop
• Published on Mar 26, 2018
Glug-PESCE organised a one day workshop on Phython Programming language on 24th March, 2018 which was a Saturday. The session started with a small introductory at 10am with the ISE dept HoD, Dr.Minavathi sharing her thoughts.
The resource persons for the day’s workshop were Karthik Rao, an AI Consultant and Abraar Syed, a product engineer, content developer and a corporate trainer with jnaapti. It was indeed a great pleasure to have them as the day’s speakers.
The workshop had limited seats for 50 students and it was a great success having all the 50 seats being registered before the last date of registration.
The session started after the small inaugural and the first half went on till 1:30pm with a small refreshment break in middle, with the same enthusiasm and eager from the students. After lunch being provided, the second half went on till 5pm ending up with the students earning enough knowledge on Python basics as well as a few topics outside the box.
It was indeed a great success and with all gratitude to the speakers when students expressed their wish and wanted more such workshops in the coming days. With all the knowledge gained, students were surprised with few goodies like Python badges and stickers. The session ended with all the students receiving their certificates.


Calculates a Satorra-Bentler scaled chi-squared difference test between nested models that were estimated using maximum likelihood (ML) with robust standard errors, which cannot be calculated the traditional way. For details see Satorra & Bentler (2001) <doi:10.1007/bf02296192> and Satorra & Bentler (2010) <doi:10.1007/s11336-009-9135-y>. This package may be particularly helpful when used in conjunction with 'Mplus' software, specifically when implementing the complex survey option. In such cases, the model estimator in 'Mplus' defaults to ML with robust standard errors.
| Version: | 0.1.0 |
| Imports: | stats |
| Published: | 2018-05-03 |
| Author: | Frank D. Mann |
| Maintainer: | Frank D. Mann <frankdmann at gmail.com> |
| License: | MIT + file LICENSE |
| NeedsCompilation: | no |
| CRAN checks: | SBSDiff results |
| Reference manual: | SBSDiff.pdf |
| Package source: | SBSDiff_0.1.0.tar.gz |
| Windows binaries: | r-devel: SBSDiff_0.1.0.zip, r-release: SBSDiff_0.1.0.zip, r-oldrel: SBSDiff_0.1.0.zip |
| OS X binaries: | r-release: SBSDiff_0.1.0.tgz, r-oldrel: SBSDiff_0.1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=SBSDiff to link to this page.


Lately I had to deal with Excel files as REST Http service response. I came up with a pretty clever validation mechanism in Citrus that I would like to share with you. You can apply the Excel validator to your Citrus project, too. It is not very complicated as you will see in this post.
First of all lets have a closer look at the response message we get from REST Http service.
The response message states a Content-Type header set to application/vnd.ms-excel which indicates the Excel content to the browser. Furthermore the Content-Disposition header informs the browser that he should open the save as dialog to the user rather than displaying the content. Finally the Excel file is added as binary content with charset windows-1252.
So now we would like to receive this message in our Citrus test also being able to validate the Excel file content as well as the important header entries. This is how we can do it:
First of all we introduce a custom message validator which handles the binary Excel message content. We intend to create an Excel workbook object that we can pass into the Citrus test. The tester is then able to write Groovy validation code accessing the Excel workbook object. Heres the code for the custom Excel message validator:
The message validator is quite simple isn’t it. We extend GroovyScriptMessageValidator as we would like to write groovy validation code inside the test. The validator uses a custom script template (excel-script-validation.groovy) and supports message type ms-excel. Keep that in mind as we will use this later in our test case. For now we add this message validator to the Citrus Spring application context (citrus-context.xml).
Not much has happened though in this validator’s Java code. The magic is done inside the Groovy script template excel-script-validation.groovy that we have added to the classpath in our project. Lets have a look at this file:
Ah, now we are getting more precisely! We introduce a new HSSFWorkbook (see also http://poi.apache.org/) with the message payload that we have just received. Please do not mind the Java-like Groovy programming style - I want to keep things easy for Java programmers in this post. However we now have the workbook object ready for validation code in our test which automatically comes in where @SCRIPTBODY@ placeholder is located. So before we continue to look at the test example we shortly add apache poi jar dependency to our project Maven pom.
Finally let’s write the Citrus test with custom Excel file validation code in Groovy:
We can access the Excel workbook object like a charm. Also the important message headers are checked for expected values. Do not forget to define the message type ms-excel in the receive action. This ensures that the validation mechanism in Citrus uses our custom Excel message validator for preparing the apache poi workbook object in advance.
That’s it! We are now able to validate Excel files in Citrus! The same thing can easily be done with other MS office formats (doc), too. If I have time the next days I will zip that project code and add it as download for you. Have fun with it!


|
Anslatortray
|
Namespace containing functions to translate from English to Pig Latin. More...
Namespaces | |
| Characters | |
| Arrays of diffrent characters (internal use) | |
Functions | |
| std::string | smartWordToPig (const std::string &englishWord) |
| Translates a single complex English word to Pig Latin. (more robust) More... | |
| std::string | translate (const std::string &englishText) |
| Uses smartWordToPig and changeWords to perform translation from English to Pig Latin on every word it is given. More... | |
| std::string | wordToPig (const std::string &englishWord) |
| Translates a single English word to Pig Latin. More... | |
| std::string | wordsToPig (const std::string &englishWords) |
| Uses wordToPig and changeWords to perform dumb translation from English to Pig Latin on every word it is given. More... | |
| std::string | attemptWordToEnglish (const std::string &pig, std::uint64_t numBeginningConosoants=1) |
| Tries to translate a word in Pig Latin back to English. More... | |
| std::string | changeWords (const std::string &words, std::string wordChanger(const std::string &word)) |
| Helper function to perform an operation on all whitespace-seperated words (tokens) given to it. More... | |
Variables | |
| constexpr char | VOWEL_START_STYLE [] = {"way"} |
| Ending to use if word to translate starts with a vowel. More... | |
Namespace containing functions to translate from English to Pig Latin.
|
inline |
Tries to translate a word in Pig Latin back to English.
This is hard to do because diffrent English words can be the same in Pig Latin.
Disabled by defining ANSLATORTRAY_TINY_TRANSLATOR
| pig | Word in Pig Latin |
| numBeginningConosoants | The number of conosonants before the first vowel in the original word. Default 1 (most common) |
|
inline |
Helper function to perform an operation on all whitespace-seperated words (tokens) given to it.
See Characters::WHITESPACE for the types
| words | Words (tokens) seperated by whitespace |
| wordChanger | Function taking a const std::string & as a single parameter and returning a std::string |
|
inline |
Translates a single complex English word to Pig Latin. (more robust)
Unlike wordToPig, this function also handles punctuation (not seperated by whitespace), singular possesion ('s) and creates similar capatilization to the original english word (unless disabled by defining ANSLATORTRAY_IGNORE_CAPS).
Imperfect results with plural words (ending in "s") and words with mutiple possesion (ending in "s'")
| englishWord | An English word to translate |
|
inline |
Uses smartWordToPig and changeWords to perform translation from English to Pig Latin on every word it is given.
Replaces all whitespace with a regular space.
| englishText | The original English text |
|
inline |
Uses wordToPig and changeWords to perform dumb translation from English to Pig Latin on every word it is given.
Replaces all whitespace with a regular space.
Disabled by defining ANSLATORTRAY_TINY_TRANSLATOR
| englishWords | The original English text |
|
inline |
Translates a single English word to Pig Latin.
Moves all constanants until the first vowel to the end of the word and adds "ay". Alternativly, if the word starts with a vowel, "way" is added to the end.
| englishWord | An English word to translate |
| constexpr char anslatortray::VOWEL_START_STYLE[] = {"way"} |
Ending to use if word to translate starts with a vowel.


{%extends 'mgmt/index.html'%} {% load static%} {% block content %} {% load widget_tweaks %}
Select a window to gain access and functionallity to inventory avaliable to you.
Create/Receive and PDF part orders.
Receive inventory from a source without a pending order
Remove Part from aircraft as servicable or repairable.


Conditional Exercise
If age is negative
print an error message
If age is 21
print "Happy Birthday!"
If age is odd
print "Your age is odd!"
Bonus:
If age is a perfect square
print "Perfect square!"
You can check the console for the full message.


{% load staticfiles %}
Pledge to achieve your personal goals
Your Wisely pledge helps you get there.
Earn hard cash for your hard work and get rewarded for your achievement.
Wisely will only collects your pledge upfront to help you stay committed to your learning.
Once you complete your course, you will receive full refund of your pledge along with a reward for your hard work.
Rewards are paid from money collected from users in your course who do not reach their goal. The higher you set your goal, the higher your reward.
Your pledge amount is for your personal motivation and does not impact your reward amount.
Welcome to Wisely!
We are currently in Beta. Take a look around!
We would love to hear your feedback.


Pulse a lightweight and ultra-fast Material Design styled speed dial, equipped with GPU accelerated animations (thanks to GSAP)
Get it Now! (alpha 1.0)Pulse a lightweight and ultra-fast Material Design styled speed dial, equipped with GPU accelerated animations (thanks to GSAP)
Get it Now! (alpha 1.0)


Samples elements of X so result uses at most maxMegs megabytes of memory. If X is m+1 dimensional, say of size [d1 x d2 x...x dm x n], each [d1 x d2 x...x dm] element is treated as one observation, and X is treated as having n such observations. The subsampling then occurs over the last dimension n. Different types of arrays require different amounts of memory. Each double requries 8 bytes of memory, hence an array with 1.024 million elements of type double requires 8MB memory. Each uint8 requires 1 byte, so the same size array would require 1MB. Note that when saved to .mat files arrays may take up more or less memory (due to compression, etc.) Different from Matlab randsample ! Note, to see how much memory a variable x is using in memory, use: s=whos('x'); mb=s.bytes/2^20 USAGE [X,keeplocs] = subsampleMatrix( X, maxMegs ) INPUTS X - [d1 x ... x dm x n], treated as n [d1 x ... x dm] elements maxMegs - maximum number of megs Xsam is allowed to take up OUTPUTS Xsam - [d1 x ... x dm x n'] (n'<=n) Xsam=X(:,..,:,keeplocs); keeplocs - vector of indicies kept from X; EXAMPLE % Xsam should have size: 1024xround(1024/10) X = uint8(ones(2^10,2^10)); Xsam = subsampleMatrix( X, 1/10 ); % Xsam should have size: 100x10x~(1000/8) X = rand(100,10,1000); Xsam = subsampleMatrix( X, 1 ); See Also Piotr's Image&Video Toolbox Version 2.0 Copyright 2008 Piotr Dollar. [pdollar-at-caltech.edu] Please email me if you find bugs, or have suggestions or questions! Licensed under the Lesser GPL [see external/lgpl.txt]


Max Demo
Use the
StreamExt.max
function to yield the longest word and sentence.
I'm done
Longest word :
Longest sentence :


{% load i18n %}
{% blocktrans with cl.result_count as total_count %}Select all {{ total_count }} {{ module_name }}{% endblocktrans %}


--- title: 'Success!' description: "Thank you for applying." image: our-team.jpg lang: en layout: cds/page permalink: /success/ trans_url: '/reussi/' ---
Thank you for submitting your application to CDS. We will be evaluating candidates on a rolling basis.


You are not allowed Sorry for the inconvenience, but you cannot enter to this system. If you wish you can contact us to<EMAIL_ADDRESS>otherwise try again in a few seconds. — The Team


Welcome to Foodie!
Here at Foodie you can discover new recipes as well as share your own delicious recipes.
There is no sign up necessary so feel free to share what you'd like.
Discover Recipes
Share a recipe
Featured
Lunch
Beet Salad
Some type of salad.
10 min
Posted on: 6/12/20
Full recipe
More


This document is present in Google Drive at = drivePath ?>. Please enter the local file system path of the directory containing this document.
if(error) { ?> After entering the local path, we will attempt to resume execution. } ?>


Genesis 21:15
And the water was spent in the bottle, and she cast the child under one of the shrubs.


Tuna avocado roll
Shrimp Tempura roll
Eel Avocado roll
california roll
My favorite Sushi Resteraunts :
Yamato is in Parkslope Brooklyn near my house.... so it is my go to sushi place
1. YAMATONanatori is in Brooklyn Heights which is near my School.... so when school lunch comes and I want sushi i go here
2. NANATORINobu is Where I go to for Birthdays and special events
3.NOBUHow to make Sushi


view1
view2
Search:
{{query}}
{{post.title}}
{{post.detail}}
EDIT
DELETE
Title:
Detail:
RESET
SAVE
form = {{post | json}}
master = {{master | json}}


William Hine
Backend Skills: C#, Entity, Java, Spring, C++, Node
Frontend Skills: Html, CSS, LESS, BootStrap
Scripting Skills: Javascript, PERL, BASH
Backend Skills: C#, Entity, Java, Spring, C++, Node
Frontend Skills: Html, CSS, LESS, BootStrap
Scripting Skills: Javascript, PERL, BASH
I am a passionate learner! I read, watch tutorials, and even dream about code every day. Leraning new things is what drew me to the coding world. My life in sports made me love working in a team environment. With my previous work histories I have had some of the best customer service training in the world, I like to bring strong customer service to the development world. I am not drawn to any paticular coding language, my belief is that the languages and tools you use should be what is best for the current project, not the tools you are most comfortable in.


Birthday boy Christian Horner hails Verstappen pole: "He eked out the gains"
by Nicolás Quarles van UffordAston Martin Red Bull Racing team principal Christian Horner was given the perfect birthday present on Saturday as his star driver Max Verstappen claimed pole position at Interlagos, and the Brit praised both the Dutchman as well as engine partner Honda for putting it all together.
Horner, who turned 46 on Saturday, witnessed Verstappen get the second pole position of his career and of the 2019 season.
The 22-year-old took provisional pole after his first run in Q3 and improved on it in the second run, cementing his fate as pole-sitter.
"I think he just got the car really hooked up and the whole package has been working really well. The circuit was difficult to improve there (in the final lap) and he eked out the gains - it was brilliant from him," Horner told Sky Sports F1.
"It's my birthday let's take the pole and we'll deal with tomorrow tomorrow. We've been a contender for pole in the last three races now so that's really encouraging."
Verstappen, of course, was stripped of his pole position in Mexico three weeks ago, as the Dutchman failed to lift as he zoomed past the wreckage of the crashed Valtteri Bottas.
Now, with tomorrow's race being the ideal opportunity for Red Bull to get their third win of the season.
"All credit to Honda they've done a wonderful job, and to get their second pole position in the turbo hybrid era is wonderful and this is a high altitude track, so all credit to them."


This post is part of a series where I'm trying to teach myself OCaml.
You might want to start at the beginning.
It's been a few days into my OCaml experience so this is a write-up of what I've come across so far. I've spent more time reading background rather than getting stuck in so I've copied in some of the links that I've found interesting/useful at the end.
There are number of ways you can get OCaml on your machine. The most obvious would be to get the source via the release page, but you could also use something called GODI, which apparently bundles a bunch of other stuff alongside the language.
I don't really want to install from source 'by hand' and I definitely don't need all the stuff that comes with GODI. I happen to use Homebrew on my machine, so I checked to see if I can install that way. Turns out I can, so that's what I ended up doing.
$ brew install objective-caml
The current version of OCaml is 4.00.0 and you can check the version you have installed by typing ocaml -version
in your terminal.
Be aware that Homebrew has it's own installation process and depends on Ruby. To get Ruby, someone recommended that I install via Ruby Version Manager. To be able to do the above, you'll need to have the OSX developer tools installed, which means having Xcode.
The first thing to do is get a hello world programme working. Since OCaml is a compiled language, that means writing the necessary source code into a file, compiling it and then executing it. In this case I only need one line that prints 'hello world' to the screen and I'm taking it from INRIA's site (link).
print_string "Hello, world!\n";;
Take the one line above and save it in a file called hello.ml
. Now we need to compile that file using the OCaml compiler. At the command prompt, type the following:
$ ocamlc -o hello hello.ml
$ ./hello
Since I don't really understand the first line I should break it down. ocamlc
is the command to invoke the compiler, the option -o hello
means you want to name the output executable to be (in this case) 'hello' and the final argument is the source code file. It's useful to look at the man page for ocamlc
to see what other options are available. The second line executes the programme, which prints hello world to the screen with a line-break.
I also notice that I now have two other files in addition to the source, hello.cmi
and hello.cmo
. According to the man page, these are the 'compiled interface' and 'compiled object code file' respectively. I have no idea what that means but removing the files doesn't affect the executable.
Even though OCaml is a compiled language, there's something called 'toplevel' that allows interactive use (more on toplevel). To enter this mode, you simply have to type ocaml
at the prompt so let's try running the above hello world program using toplevel.
$ ocaml
OCaml version 4.00.0
# print_string "Hello, world!\n";;
Hello, world!
- : unit = ()
# #quit;;
$
The $
prompt is the command line and the #
prompt is where toplevel is awaiting a new line of input. The input can span multiple lines and is terminated by ;;
(as in the source code).
To exit toplevel, type #quit;;
. It took me three attempts to get that right. I haven't really played around with toplevel much and I think I'm likely to stick with source code and compiling until I'm a little more comfortable with the syntax.
That's pretty much where I am for the moment and everything so far has been straightforward. Obviously, I should push myself a bit harder :)
This is the material I found and have been looking over for the last couple of days. Useful as background but I'd say I'm in danger of (semi-productive) procrastination if I'm not careful.


Using Optimizely for A/B testing
Split testing
Shows two different versions of the web page to the users
Optimizely
Set Up Experiment
name
url
Variations
Edit Element
Save the experiment
Targeting and goals
Experiment audiences
Start Experiment
Harnessing Google Analytics
language
country
city
Device
Browser
Operating System
Service Provider
Screen Resolutions
Traffic
Keywords used by users to search for site
Source/Medium
Employing Heatmapping
Color coded guide to specific areas
crazyegg - Free Trial
snapshot - experiment
Heatmap - shows where users are clicking
Scroll Map - shows how users are scrolling on the page
Create New Snapshot
Enter URL
Name
Description
Screenshot Device
Advanced Options
Install tracking script before closing head tag
Use Mouse Tracking Tools to Identify Sticking Points
mouseflow
Records the user’s mouse movement
Show recordings from a specific date range
Play recording
Applying MOZ for larger scale sites
Analytics
Site Explorer
Ranking Tools
Analytics Campaigns
Pick a site
Keyword ranking
Site Explorer
Authority of the site
Social Shares
Spam Score
Shows anchor text
Page Grader
Measure a page grade for a particular keyword


本书pdf是文字识别版，影印质量较差。
Introduction — On Units and Measurement
Solids — Liquids — Gases
Elements and Compounds
Chemical Action — General Conditions
Chemical Action — Characteristics
Laws of Chemical Combination
Illustrations of Chemical Action — Combustion
Illustrations of Chemical Action — Oxidation and Reduction
Laws of Boyle and Charles
Density — Vapour Density
Avogadro's Law
Determination of Atomic Weights
Chemical Notation — Symbols, Formule, and Equations
Bases — Acids — Salts
The Kinetic Molecular Theory
Mass Action and Dissociation
Solutions
Electrolysis
Equivalence
Substitution and Double Decomposition
Chemical Constitution
The Periodic Law


CovsirPhy introduction¶
Documentation | Installation | Quickest usage | API reference | Qiita (Japanese)
CovsirPhy is a Python package for COVID-19 (Coronavirus disease 2019) data analysis with phase-dependent SIR-derived ODE models. We can download datasets and analyse it easily. This will be a helpful tool for data-informed decision making. Please refer to “Method” part of Kaggle Notebook: COVID-19 data with SIR model to understand the methods.
Functionalities¶
Data preparation and data visualization
Numerical simulation of ODE models
Stable: SIR, SIR-D and SIR-F model
Development: SIR-FV and SEWIR-F model
Phase-dependent parameter estimation of ODE models
Scenario analysis: Simulate the number of cases with user-defined parameter values
(In development): Find the relationship of government response and parameter values
Inspiration¶
Monitor the spread of COVID-19
Keep track parameter values/reproduction number in each country/province
Find the relationship of reproductive number and measures taken by each country
If you have ideas or need new functionalities, please join this project. Any suggestions with Github Issues are always welcomed. Please read Guideline of contribution in advance.
Installation and dataset preparation¶
We have the following options to start analysis with CovsirPhy. Datasets
are not included in this package, but we can prepare them with
DataLoader
class.
Installation |
Dataset preparation |
|
|---|---|---|
Standard users |
pip/pipenv |
Automated with |
Developers |
git-cloning |
Automated with |
Kagglers (local environment) |
git-cloning |
Kaggle API and Python script and
|
Kagglers (Kaggle platform) |
pip |
Kaggle Datasets and |
Installation and dataset preparation explains how to install and prepare datasets for all users.
Stable versions of Covsirphy are available at PyPI (The Python Package Index): covsirphy and support Python 3.6 or newer versions.
pip install covsirphy --upgrade
Development versions are in GitHub repository: CovsirPhy.
pip install "git+https://github.com/lisphilar/covid19-sir.git#egg=covsirphy"
Usage¶
Quickest tour of CovsirPhy is here. The following codes analyze the
records in Japan, but we can change the country name when creating
Scenario
class instance for your own analysis.
import covsirphy as cs
# Download datasets
data_loader = cs.DataLoader("input")
jhu_data = data_loader.jhu()
population_data = data_loader.population()
# Check records
snl = cs.Scenario(jhu_data, population_data, country="Japan")
snl.records()
# S-R trend analysis
snl.trend().summary()
# Parameter estimation of SIR-F model
snl.estimate(cs.SIRF)
# History of reproduction number
_ = snl.history(target="Rt")
# History of parameters
_ = snl.history_rate()
_ = snl.history(target="rho")
# Simulation for 30 days
snl.add(days=30)
_ = snl.simulate()
Further information:
Support¶
Citation¶
We have no original papers the author and contributors wrote, but please cite this package as follows.
CovsirPhy Development Team (2020), CovsirPhy, Python package for COVID-19 analysis with SIR-derived ODE models, https://github.com/lisphilar/covid19-sir
If you want to use SIR-F/SIR-FV/SEWIR-F model, S-R trend analysis, phase-dependent approach to SIR-derived models, and other scientific method performed with CovsirPhy, please cite the next Kaggle notebook.
Lisphilar (2020), Kaggle notebook, COVID-19 data with SIR model, https://www.kaggle.com/lisphilar/covid-19-data-with-sir-model


--- layout: post status: publish published: true title: A Tweaked Color Scheme for VS2005 author: display_name: Tomas Restrepo login: tomasr email<EMAIL_ADDRESS>url: http://winterdom.com/ author_login: tomasr author_email<EMAIL_ADDRESS>author_url: http://winterdom.com/ wordpress_id: 473 wordpress_url: http://winterdom.com/2006/09/atweakedcolorschemeforvs2005 date: '2006-09-20 16:47:55 +0000' date_gmt: '2006-09-20 16:47:55 +0000' categories: - Development - VS Color Scheme tags: [] comments: - id: 329 author: Nish author_email: '' author_url: http://blog.voidnish.com date: '2006-09-21 13:00:07 +0000' date_gmt: '2006-09-21 13:00:07 +0000' content: | Cool - reminds me of the DOS days and Turbo C :-) - id: 330 author: Avery author_email<EMAIL_ADDRESS>author_url: '' date: '2007-05-11 13:54:52 +0000' date_gmt: '2007-05-11 13:54:52 +0000' content: | I just stumbled across this today. I like it better than my current black setup. Thanks for sharing. ---
Jeff Atwood posted his own Visual Studio Color Schemes here; I have to say, the screenshots look pretty enticing, and I look forward to trying them out.
Meanwhile, After using the dark color scheme I posted last week for Visual Studio 2005 for some time now, I've been slowly doing some "improvements" to it. This one features a slightly darker background, matching tool windows correctly configured, and changes a few colors. It also uses Consolas instead of Monaco.
Here's what code looks like:
Here's what XML code looks like:
You can download my settings file from here.
Update: Download the Visual Studio 2008 version here.


execline
Software
skarnet.org
The execline-shell script
execline-shell executes $HOME/.execline-shell
if available (or /bin/sh otherwise) with the arguments
it is given.
Interface
/etc/execline-shell
- execline-shell transforms itself into
${HOME}/.execline-shell<EMAIL_ADDRESS>- ${HOME}/.execline-shell must be readable and
executable by the user. It must exec into an interactive
shell with $@ as its argument.
Notes
- execline-shell is meant to be used as the SHELL
environment variable value. It allows one to specify their favourite shell and
shell configuration in any language, since the ${HOME}/.execline-shell
file can be any executable program. ${HOME}/.execline-shell can be seen
as a portable .whateverrc file.
- As an administrator-modifiable configuration file, execline-shell
is provided in execline's examples/etc/ subdirectory, and should be copied by
the administrator to /etc.


The ESUG board is pleased to announce that the 26th ESUG conference/summer-school will be held in Cagliari, Italy 10-14 September 2018. The conference is co-organised by University of Cagliari and the Agile Group of the Faculty of computer science.
The conference registration is open. Pay attention the 13th of July is the deadline for the early registration.
You can find the program below. A note about the Smalltalk Camp. This year we do not have access to a building during the Sunday. Campers should use the ESUG mailing-list to set a meeting point.
Share your Smalltalk related code with the community, and enter the contest to win up to 500 Euros! All you have to do is submit your project along with a 3-5 min videos and post it to youtube!
Cagliari is the largest city of Sardinia.
The conference will be held at the University of Cagliari.
Here is a list of hotels that would allow you to easily reach the conference venue.
There are also many Bed & Breakfasts and short let flats. Look for them on sites such as Booking.com or Airbnb
Here is the bus company for the city: http://www.ctmcagliari.it/custom.php?nome=english
The social event will be held at Lido.
If you want to attend the social event with your partner contact us<EMAIL_ADDRESS>Cagliari has an international airport located at 10 min by train or taxi.


Blog Archive 2012 Debugging ‘render_template’ errors in Rspec Dec 12 2012 Everyday Rails Testing With Rspec Dec 11 2012 The difference between rake db:create and rake db:create:all Dec 10 2012 gboom: gists from the command line Nov 20 2012 How To Query NYC Open Datasets with Socrata Nov 14 2012 Easy datetime comparison with ActiveRecord and Rails Oct 25 2012 Common Antipatterns in Ruby Oct 16 2012 Conditionals and Null References in Ruby Oct 12 2012 Database Discussion with Chris Henry from Behance Oct 10 2012 String concatenation the right way; the fast and furious way Oct 09 2012 Hello World! Oct 03 2012


Sign up to Mint Admin
You already have an account? Log In here!
Username
{{userErr.message}}
First Name
Last Name
Email
{{mailErr.message}}
Password
Confirm Password
{{passMatch.message}}
Sign up


p key: pause/start
r key: drag spring; R key: reinitialize
↑ look up, ↓ look down, ← look left, → look right.
i key: move forward, k key: move backward, j key: move left, l key: move right
Change Interactive Rate
Quick View Change:
Click upper half of screen to make bigger fire, and vice versa.
b key: add wind to fire and cloth.
Flying Mode (key 4 to turn on/off) : OFF
Change Solver : MidPoint


The access token displayed above can be used to authenticate to the REST API using a standard
HTTP or REST client.
You must specify the access token in the query string
(?access_token=xxxxx
) or as an additional HTTP header (X-Access-Token: xxxxx
).


|
QuantLib: a free/open-source library for quantitative finance
Fully annotated sources - version 1.30
|
Discretized option on a given asset. More...
#include <ql/discretizedasset.hpp>
Public Member Functions | |
| DiscretizedOption (ext::shared_ptr< DiscretizedAsset > underlying, Exercise::Type exerciseType, std::vector< Time > exerciseTimes) | |
| void | reset (Size size) override |
| std::vector< Time > | mandatoryTimes () const override |
| Public Member Functions inherited from DiscretizedAsset | |
| DiscretizedAsset () | |
| virtual | ~DiscretizedAsset ()=default |
| Time | time () const |
| Time & | time () |
| const Array & | values () const |
| Array & | values () |
| const ext::shared_ptr< Lattice > & | method () const |
| void | initialize (const ext::shared_ptr< Lattice > &, Time t) |
| void | rollback (Time to) |
| void | partialRollback (Time to) |
| Real | presentValue () |
| void | preAdjustValues () |
| void | postAdjustValues () |
| void | adjustValues () |
Protected Member Functions | |
| void | postAdjustValuesImpl () override |
| void | applyExerciseCondition () |
| Protected Member Functions inherited from DiscretizedAsset | |
| bool | isOnTime (Time t) const |
| virtual void | preAdjustValuesImpl () |
Protected Attributes | |
| ext::shared_ptr< DiscretizedAsset > | underlying_ |
| Exercise::Type | exerciseType_ |
| std::vector< Time > | exerciseTimes_ |
| Protected Attributes inherited from DiscretizedAsset | |
| Time | time_ |
| Time | latestPreAdjustment_ |
| Time | latestPostAdjustment_ |
| Array | values_ |
Additional Inherited Members | |
| Protected Types inherited from DiscretizedAsset | |
| enum class | CouponAdjustment { pre , post } |
Discretized option on a given asset.
Definition at line 160 of file discretizedasset.hpp.
| DiscretizedOption | ( | ext::shared_ptr< DiscretizedAsset > | underlying, |
| Exercise::Type | exerciseType, | ||
| std::vector< Time > | exerciseTimes | ||
| ) |
Definition at line 162 of file discretizedasset.hpp.
|
overridevirtual |
This method should initialize the asset values to an Array of the given size and with values depending on the particular asset.
Implements DiscretizedAsset.
Reimplemented in DiscretizedSwaption.
Definition at line 221 of file discretizedasset.hpp.
|
overridevirtual |
This method returns the times at which the numerical method should stop while rolling back the asset. Typical examples include payment times, exercise times and such.
Implements DiscretizedAsset.
Definition at line 229 of file discretizedasset.hpp.
|
overrideprotectedvirtual |
This method performs the actual post-adjustment
Reimplemented from DiscretizedAsset.
Definition at line 25 of file discretizedasset.cpp.
|
protected |
Definition at line 239 of file discretizedasset.hpp.
|
protected |
Definition at line 173 of file discretizedasset.hpp.
|
protected |
Definition at line 174 of file discretizedasset.hpp.
|
protected |
Definition at line 175 of file discretizedasset.hpp.


Null value area ignored in calculation: 75.487671 Plan area used in calculation: 93.428832 Surface area calculation(low, high, avg): 23.736667 25.338908 24.537787 Current region plan area: 93.575684 Estimated region Surface Area: 24.576356


SABC to screen Bafana v Sudan AFCON qualifier live
Cape Town - Football fanatics will be overjoyed at the news that the South African Broadcasting Corporation (SABC) has confirmed Sunday's 2021 Africa Cup of Nations (AFCON) qualifier between Bafana Bafana and Sudan will be televised.
South Africans were left unable to watch Bafana's Thursday AFCON qualifier in Ghana after neither SuperSport nor the SABC screened the match.
Thomas Partey and Kudus Mohammed netted a goal each as Ghana secured maximum points in a 2-0 win over South Africa at the Cape Coast Sports Stadium.
Bafana coach Molefi Ntseki will be hoping to bounce back when South Africa face Sudan on Sunday.
Meanwhile, the northeast African nation will be in good spirits after they ran out 4-0 winners over Sao Tome and Principe earlier in the week.
Bafana are expected to depart Ghana on Friday morning as they shift their focus to Sunday's crucial clash at the Orlando Stadium.
Kick-off is at 15:00 and screened live on SABC 1.
- Compiled by Tashreeq Vardien


--- title: National Day Of Civic Hacking permalink: "/ndoch/" layout: page type: hidden ---
| 9:30 AM EDT |
Opening Remarks |
|||
|---|---|---|---|---|
|
10:00 AM EDT
All activities start
at the same time Participants should pick one |
Activity BlockFoodlink in Arlington
How COVID-19 has changed food rescue and how that has affected their organization
Room:
Document:
Massachusetts Association for Community Action
Speaker: Martha Rogers
Taxes in the time of COVID-19 and what Virtual VITA is enabling
Room:
|
|||
| 12:00 PM EDT |
CFA KeynoteJoin a panel of leaders from Code for America, the SF-Marin Food Bank, and the Center for Budget Policy and Priorities discuss the current state of the social safety net as the impacts of COVID-19 continue, approaches to strengthening it for those who need it most from grassroots to government at all levels, and what’s on the horizon. Speakers
Code for America: Amanda Renteria,
Meredith Horowski, Tracey Patterson, Veronica Young
|
|||
|
1:00 PM EDT
All activities start
at the same time Participents should pick one |
Activity BlockMassAccess
How COVID-19 has changed how to file court forms, since most court buildings are closed
Room:
Chat:
Document:
Budgeting - Workshop
How do we make effective change for a budget through the lens of defunding the police?
Room:
Document:
Nashua Emergency Management Project
Facilitated Design
Room:
Document:
|
|||
| 2:00 PM EDT
Project Challenge
|
Project BreakoutsBudgetsGive activists a tool to re-orient a budget
Room:
Document:
Access to JusticeProject Description
Room:
Document:
|
|||
| 6:00 PM EDT |
Closing Remarks
Room:
|
|||
| 7:00 PM EDT |
After Party
Room:
|


--- layout: post title: Hadoop Disillusionment - Part 2 categories: [] tags: [] status: draft type: post published: false meta: {} --- Last time I wrote about how I came to this point and promised some more details around some of my disappointment with Hadoop as I get deeper into implementing a system on it. In this post I'll discuss in varying detail my top five current issues with the current state of Hadoop. I freely admit that some of this may be a misunderstanding on my part. As I said in the first post I'm a Hadoop newbie climbing the steep learning curve, so I welcome anyone more knowledgeable than I straightening me out.


val shipping: Shipping?
Shipping address for the order. Required if any of the SKUs are for products that have shippable set to true.
shippable


ProfChoper
Are you sure you want to reject the booking on dd/MM/yyyy - HH:mm with Text placeholder and delete the slot?
Are you sure you want to cancel the booking on dd/MM/yyyy - HH:mm with Text placeholder and delete the slot?
Text placeholder wants to see you ondd/MM/yyyy - HH:mm for consultation. Confirm his booking?
This slot is available for booking. Do you want to delete it?
You do not have an office hour slot here. Do you want to create a new slot?
Pending Test Notification Confirm Reject
Cancelled Test Notification


Hip pain
Most cases of hip pain in adults that are treated with surgery are caused by osteoarthritis, the most common type of arthritis in the UK.
This page aims to give you a better idea of whether osteoarthritis or something more unusual is causing your hip pain, and what you can do about it.
But do not try to diagnose the cause of your hip pain yourself. This should always be a matter for your doctor.
Find out more about hip pain in children
Osteoarthritis
The symptoms of osteoarthritis can vary greatly from person to person, but if it affects the hip, it'll typically cause:
- mild inflammation of the tissues in and around the hip joint
- damage to cartilage, the strong, flexible tissue that lines the bones
- bony growths (osteophytes) that develop around the edge of the hip joint
This can lead to pain, stiffness and difficulty doing certain activities.
There's no cure for osteoarthritis, but the symptoms can be eased using a number of different treatments. Surgery is not usually needed.
Find out more about treating osteoarthritis
Less common causes
Less commonly, hip pain may be caused by:
- the bones of the hip rubbing together because they're abnormally shaped (femoroacetabular impingement)
- a tear in the ring of cartilage surrounding the socket of the hip joint (a hip labral tear)
- the hip joint is the wrong shape or the hip socket is not in the correct position to completely cover and support the top of the leg bone (hip dysplasia)
- a hip fracture – this will cause sudden hip pain and is more common in older people with weaker bones
- an infection in the bone or joint, such as septic arthritis or osteomyelitis – see a GP immediately if you have hip pain and fever
- reduced blood flow to the hip joint, causing the bone to break down (osteonecrosis)
- inflammation and swelling of the fluid-filled sac (bursa) over your hip joint (bursitis)
- a hamstring injury
- an inflamed ligament in the thigh, often caused by too much running – this is known as iliotibial band syndrome and is treated with rest (read more about sprains and strains)
When to get medical advice
Hip pain often gets better on its own and can be managed with rest and painkillers you can buy from a pharmacy, such as paracetamol and ibuprofen.
But see a GP if:
- your hip is still painful after 1 week of resting it at home
- you also have a fever or rash
- your hip pain came on suddenly and you have sickle cell anaemia
- the pain is in both hips and other joints as well
Your GP may ask you the following questions:
- Where do you feel the pain?
- When and how did the pain start?
- Does anything make the pain worse?
- Does anything make the pain better?
- Can you walk and bear weight on it?
- Do you have any other medical problems?
- Do you take any medicines?
Go straight to hospital if:
- the hip pain was caused by a serious fall or accident
- your leg is deformed, badly bruised or bleeding
- you're unable to move your hip or bear any weight on your leg
- you have hip pain with a temperature and feel unwell
Managing hip pain at home
If you do not need to see a doctor straight away, consider managing and monitoring the problem at home.
You may find it helpful to:
- lose weight if you're overweight to relieve some of the strain on your hip
- avoid activities that make the pain worse, such as downhill running
- wear flat shoes and avoid standing for long periods
- see a physiotherapist for some muscle-strengthening exercises
- take painkillers, such as paracetamol and ibuprofen
Overactivity
If your hip pain is related to exercising or other types of regular activity:
Page last reviewed: 02 August 2019
Next review due: 02 August 2022


Bindings for MaterialDateTimePicker for Xamarin.Android apps
One of the good libraries for Android apps made in Material design is the “Material DateTime Picker” from @wdullaer.
Here is a short article how to create Xamarin.Android bindings library to consume that awesome picker in your Xamarin.Android applications.
We go the Snowshoe ski resort almost every weekend when there is snow.
Driving there takes up to 5 hours.
As long as you drive off the interstate you loose your cell signal.
Last year we had to learn how to drive and communicate in a disconnected world. We now know the route by heart, we know stops, we know which restaurants or gas stations have Wi-Fi. We also got some low-power FRS radios to have more flexibility during our trips.
Honestly, I was always wondering why T-Mobile was so bad in this area. This spring I switched to AT&T to compare the coverage on Outer Banks (where T-Mobile is also failing to get you even basic coverage).
Now it`s winter and it’s time to check out AT&T coverage in our favorite skiing area.