|
Connected Home over IP
672cf7684
|
#include <stdint.h>
#include <lwip/opt.h>
Go to the source code of this file.
Namespaces | |
| chip | |
| Adaptation for LwIP ip4_addr_t type. | |
| chip::System | |
Macros | |
| #define | CHIP_SYSTEM_CONFIG_TRANSFER_INETLAYER_PROJECT_CONFIGURATION 0 |
| Define as 1 to transfer the project configuration variable definitions from InetProjectConfig.h into the corresponding variables for the CHIP System Layer. More... | |
| #define | CHIP_SYSTEM_CONFIG_NO_LOCKING 0 |
| Disable the use of locking within the system layer. More... | |
| #define | CHIP_SYSTEM_CONFIG_POSIX_LOCKING 1 |
| Use POSIX locking. This is enabled by default when not compiling for BSD sockets. More... | |
| #define | CHIP_SYSTEM_CONFIG_FREERTOS_LOCKING 0 |
| Use FreeRTOS locking. More... | |
| #define | CHIP_SYSTEM_CONFIG_ERROR_TYPE int32_t |
| This defines the data type used to represent errors for the CHIP System Layer subsystem. More... | |
| #define | CHIP_SYSTEM_CONFIG_NO_ERROR 0 |
| This defines the CHIP System Layer error code for no error or success. More... | |
| #define | CHIP_SYSTEM_CONFIG_ERROR_MIN 7000 |
| This defines the base or minimum CHIP System Layer error number range. More... | |
| #define | CHIP_SYSTEM_CONFIG_ERROR_MAX 7999 |
| This defines the top or maximum CHIP System Layer error number range. More... | |
| #define | _CHIP_SYSTEM_CONFIG_ERROR(e) (CHIP_SYSTEM_CONFIG_ERROR_MIN + (e)) |
| This defines a mapping function for CHIP System Layer errors that allows mapping such errors into a platform- or system-specific range. More... | |
| #define | CHIP_SYSTEM_CRYPTO_HEADER_RESERVE_SIZE 24 |
| #define | CHIP_SYSTEM_HEADER_RESERVE_SIZE (38 + CHIP_SYSTEM_CRYPTO_HEADER_RESERVE_SIZE) |
| The number of bytes to reserve in a network packet buffer to contain the CHIP message and exchange headers. More... | |
| #define | CHIP_SYSTEM_CONFIG_PACKETBUFFER_POOL_SIZE 15 |
| This is the total number of packet buffers for the BSD sockets configuration. More... | |
| #define | CHIP_SYSTEM_CONFIG_PACKETBUFFER_CAPACITY_MAX 1583 |
The maximum size an application can use with PacketBuffer . This is not the raw memory size consumed by a PacketBuffer object. More... | |
| #define | CHIP_SYSTEM_CONFIG_LWIP_EVENT_TYPE int |
| This defines the type for CHIP System Layer event types, typically an integral type. More... | |
| #define | CHIP_SYSTEM_CONFIG_LWIP_EVENT_UNRESERVED_CODE 32 |
| This defines the first number in the default event code space not reserved for use by the CHIP System Layer. Event codes used by each layer must not overlap. More... | |
| #define | _CHIP_SYSTEM_CONFIG_LWIP_EVENT(e) (e) |
| This defines a mapping function for CHIP System Layer codes for describing the types of events for the LwIP dispatcher, which allows mapping such event types into a platform- or system-specific range. More... | |
| #define | CHIP_SYSTEM_CONFIG_LWIP_EVENT_OBJECT_TYPE const struct chip::System::LwIPEvent* |
| This defines the type of CHIP System Layer event objects or "messages" for the LwIP dispatcher. More... | |
| #define | CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_POSIX_ERROR_FUNCTIONS 0 |
| This defines whether (1) or not (0) your platform will provide the following platform- and system-specific functions: More... | |
| #define | CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_LWIP_ERROR_FUNCTIONS 0 |
| This defines whether (1) or not (0) your platform will provide the following system-specific functions: More... | |
| #define | CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS 0 |
| This defines whether (1) or not (0) your platform will provide the following platform-specific functions: More... | |
| #define | CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS 0 |
| This defines whether (1) or not (0) your platform will provide the following platform-specific functions: More... | |
| #define | CHIP_SYSTEM_CONFIG_NUM_TIMERS 32 |
| This is the total number of available timers. More... | |
| #define | CHIP_SYSTEM_CONFIG_PROVIDE_STATISTICS 0 |
| This defines whether (1) or not (0) the CHIP System Layer provides logic for gathering and reporting statistical information for diagnostic purposes. More... | |
| #define | CHIP_SYSTEM_CONFIG_TEST 0 |
| Defines whether (1) or not (0) to enable testing aids. More... | |
| #define | CHIP_SYSTEM_CONFIG_HEADER_RESERVE_SIZE (PBUF_LINK_HLEN + PBUF_IP_HLEN + PBUF_TRANSPORT_HLEN + CHIP_SYSTEM_HEADER_RESERVE_SIZE) |
| The number of bytes to reserve in a network packet buffer to contain all the possible protocol encapsulation headers before the application message text. On POSIX sockets, this is CHIP_SYSTEM_HEADER_RESERVE_SIZE. On LwIP, additional space is required for the all the headers from layer-2 up to the TCP or UDP header. More... | |
| #define | CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_TIME 0 |
| Use platform-supplied functions for System Layer clock functions. More... | |
| #define | CHIP_SYSTEM_CONFIG_USE_POSIX_TIME_FUNCTS 1 |
| Use the POSIX time functions for System Layer clock functions. More... | |
| #define | CHIP_SYSTEM_CONFIG_USE_LWIP_MONOTONIC_TIME 1 |
| Use LwIP time function for System Layer monotonic clock functions. More... | |
| #define | CHIP_SYSTEM_CONFIG_VALID_REAL_TIME_THRESHOLD 946684800 |
| The earliest time at which the real time clock is considered to be valid. More... | |
| #define | CHIP_SYSTEM_CONFIG_USE_POSIX_PIPE 1 |
| Use the POSIX pipe() function. More... | |
| #define | CHIP_SYSTEM_CONFIG_USE_BSD_IFADDRS 1 |
| Use BSD ifaddrs.h API to enumerate available network interfaces. More... | |
This file contains default compile-time configuration constants for the CHIP System Layer, a common abstraction layer for the system networking components underlying the various CHIP target network layers.
Package integrators that wish to override these values should either use preprocessor definitions or create a project- specific SystemProjectConfig.h header and then assert HAVE_SYSTEMPROJECTCONFIG_H via the package configuration tool via –with-chip-system-project-includes=DIR where DIR is the directory that contains the header.
NOTE WELL: On some platforms, this header is included by C-language programs.
| #define _CHIP_SYSTEM_CONFIG_ERROR | ( | e | ) | (CHIP_SYSTEM_CONFIG_ERROR_MIN + (e)) |
This defines a mapping function for CHIP System Layer errors that allows mapping such errors into a platform- or system-specific range.
| #define _CHIP_SYSTEM_CONFIG_LWIP_EVENT | ( | e | ) | (e) |
This defines a mapping function for CHIP System Layer codes for describing the types of events for the LwIP dispatcher, which allows mapping such event types into a platform- or system-specific range.
| #define CHIP_SYSTEM_CONFIG_ERROR_MAX 7999 |
This defines the top or maximum CHIP System Layer error number range.
| #define CHIP_SYSTEM_CONFIG_ERROR_MIN 7000 |
This defines the base or minimum CHIP System Layer error number range.
| #define CHIP_SYSTEM_CONFIG_ERROR_TYPE int32_t |
This defines the data type used to represent errors for the CHIP System Layer subsystem.
| #define CHIP_SYSTEM_CONFIG_FREERTOS_LOCKING 0 |
Use FreeRTOS locking.
This should be generally asserted (1) for FreeRTOS + LwIP-based systems and deasserted (0) for BSD sockets-based systems.
However, if you are simulating an LwIP-based system atop POSIX threads and BSD sockets, this should also be deasserted (0).
| #define CHIP_SYSTEM_CONFIG_HEADER_RESERVE_SIZE (PBUF_LINK_HLEN + PBUF_IP_HLEN + PBUF_TRANSPORT_HLEN + CHIP_SYSTEM_HEADER_RESERVE_SIZE) |
The number of bytes to reserve in a network packet buffer to contain all the possible protocol encapsulation headers before the application message text. On POSIX sockets, this is CHIP_SYSTEM_HEADER_RESERVE_SIZE. On LwIP, additional space is required for the all the headers from layer-2 up to the TCP or UDP header.
| #define CHIP_SYSTEM_CONFIG_LWIP_EVENT_OBJECT_TYPE const struct chip::System::LwIPEvent* |
This defines the type of CHIP System Layer event objects or "messages" for the LwIP dispatcher.
Such types are not directly used by the CHIP System Layer but are "passed through". Consequently a forward declaration and a const pointer or reference are appropriate.
| #define CHIP_SYSTEM_CONFIG_LWIP_EVENT_TYPE int |
This defines the type for CHIP System Layer event types, typically an integral type.
| #define CHIP_SYSTEM_CONFIG_LWIP_EVENT_UNRESERVED_CODE 32 |
This defines the first number in the default event code space not reserved for use by the CHIP System Layer. Event codes used by each layer must not overlap.
| #define CHIP_SYSTEM_CONFIG_NO_ERROR 0 |
This defines the CHIP System Layer error code for no error or success.
| #define CHIP_SYSTEM_CONFIG_NO_LOCKING 0 |
Disable the use of locking within the system layer.
Unless you are simulating an LwIP-based system on a Unix-style host, this value should be left at its default.
This value is mutually exclusive with CHIP_SYSTEM_CONFIG_POSIX_LOCKING and CHIP_SYSTEM_CONFIG_FREERTOS_LOCKING.
| #define CHIP_SYSTEM_CONFIG_NUM_TIMERS 32 |
This is the total number of available timers.
| #define CHIP_SYSTEM_CONFIG_PACKETBUFFER_CAPACITY_MAX 1583 |
The maximum size an application can use with PacketBuffer
. This is not the raw memory size consumed by a PacketBuffer
object.
This value should be set large enough to accomodate the usage of PacketBuffer in the system. In particular, for the use in CHIP, the value should be set to accomodate the desired path MTU (i.e. the largest IP packet that can be sent over the network interface) plus any protocol overhead.
For example, sending an IP packet over the tunnel requires additional overheads that depend on platform's network interface. On socket platforms, the tunnel protocol overhead is 47 bytes; on LwIP platforms the overhead is 101 bytes, plus any "sub-Ethernet" data structure space (e.g. the linked list pointers used by some interfaces to queue packets).
The overheads are calculated as follows:
(variable) -- "Sub-Ethernet" data structures (LwIP-only) 14 -- Ethernet Header (LwIP-only) 20 -- IPv4 Header (LwIP-only) 20 -- TCP Header (LwIP-only) 2 -- CHIP Message Length 24 -- CHIP Header 1 -- Tunnel Header 20 -- Crypto Trailer
The size of PacketBuffer structure does not need to be included in this value.
| #define CHIP_SYSTEM_CONFIG_PACKETBUFFER_POOL_SIZE 15 |
This is the total number of packet buffers for the BSD sockets configuration.
This may be set to zero (0) to enable unbounded dynamic allocation using malloc.
| #define CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_EVENT_FUNCTIONS 0 |
This defines whether (1) or not (0) your platform will provide the following platform-specific functions:
| #define CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_LWIP_ERROR_FUNCTIONS 0 |
This defines whether (1) or not (0) your platform will provide the following system-specific functions:
| #define CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_POSIX_ERROR_FUNCTIONS 0 |
This defines whether (1) or not (0) your platform will provide the following platform- and system-specific functions:
| #define CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_TIME 0 |
Use platform-supplied functions for System Layer clock functions.
Determines whether (1) or not (0) the underlying platform provides implementations for the System Layer GetClock/SetClock functions.
| #define CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_XTOR_FUNCTIONS 0 |
This defines whether (1) or not (0) your platform will provide the following platform-specific functions:
| #define CHIP_SYSTEM_CONFIG_POSIX_LOCKING 1 |
Use POSIX locking. This is enabled by default when not compiling for BSD sockets.
Unless you are simulating an LwIP-based system on a Unix-style host, this value should be left at its default.
| #define CHIP_SYSTEM_CONFIG_PROVIDE_STATISTICS 0 |
This defines whether (1) or not (0) the CHIP System Layer provides logic for gathering and reporting statistical information for diagnostic purposes.
| #define CHIP_SYSTEM_CONFIG_TEST 0 |
Defines whether (1) or not (0) to enable testing aids.
| #define CHIP_SYSTEM_CONFIG_TRANSFER_INETLAYER_PROJECT_CONFIGURATION 0 |
Define as 1 to transfer the project configuration variable definitions from InetProjectConfig.h into the corresponding variables for the CHIP System Layer.
| #define CHIP_SYSTEM_CONFIG_USE_BSD_IFADDRS 1 |
Use BSD ifaddrs.h API to enumerate available network interfaces.
Defaults to enabled on Unix/Linux platforms using sockets
| #define CHIP_SYSTEM_CONFIG_USE_LWIP_MONOTONIC_TIME 1 |
Use LwIP time function for System Layer monotonic clock functions.
Use the LwIP sys_now() function to implement the System Layer GetClock_Monotonic... functions.
Defaults to enabled if the system is using LwIP and not sockets.
This configuration is overridden if CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_TIME is set.
| #define CHIP_SYSTEM_CONFIG_USE_POSIX_PIPE 1 |
Use the POSIX pipe() function.
Use the POSIX pipe() function to create an anonymous data stream.
Defaults to enabled if the system is using sockets (except for Zephyr RTOS).
| #define CHIP_SYSTEM_CONFIG_USE_POSIX_TIME_FUNCTS 1 |
Use the POSIX time functions for System Layer clock functions.
Use the POSIX time functions (clock_gettime, gettimeofday, etc.) to implement the System Layer GetClock/SetClock functions.
Defaults to enabled if the system is using sockets.
This configuration is overridden if CHIP_SYSTEM_CONFIG_PLATFORM_PROVIDES_TIME is set.
| #define CHIP_SYSTEM_CONFIG_VALID_REAL_TIME_THRESHOLD 946684800 |
The earliest time at which the real time clock is considered to be valid.
The value is given in Unix time scaled to seconds.
The default value corresponds to 2000/01/01 00:00:00
| #define CHIP_SYSTEM_CRYPTO_HEADER_RESERVE_SIZE 24 |
| #define CHIP_SYSTEM_HEADER_RESERVE_SIZE (38 + CHIP_SYSTEM_CRYPTO_HEADER_RESERVE_SIZE) |
The number of bytes to reserve in a network packet buffer to contain the CHIP message and exchange headers.
This number was calculated as follows:
CHIP Crypto Header:
4 -- Length of encrypted block 4 -- Reserve 8 -- Initialization Vector 8 -- Encryption Tag
This number was calculated as follows:
CHIP Message Header:
2 -- Frame Length 2 -- Message Header 4 -- Message Id 8 -- Source Node Id 8 -- Destination Node Id 2 -- Key Id
CHIP Exchange Header:
1 -- Application Version 1 -- Message Type 2 -- Exchange Id 4 -- Profile Id 4 -- Acknowleged Message Id


.NET Developer
I'm a software developer in training with probably one too many tabs open. I'm always learning and that's how I like it. Please visit my resume to learn more about me.


{% extends 'base.html' %} {% block title %}Error {{ error_code }}{% endblock %} {% block content %}
The system has encountered an error. Meanwhile, you may return to dashboard


This is a test of mylog's content search capability.
 Did no one think we
would be alive in that year? Cor Blimey! By the way, Bryan says Cor Blimey way too
much.


--- layout: post title: Just let me read one more thing and I'll be ready date: 2020-04-28 13:59:52.000000000 -04:00 type: post parent_id: '0' published: true password: '' status: publish categories: - Philosophical Nuggets tags: - Advice - Success meta: _publicize_job_id: '43594816404' timeline_notification: '1588100397' author: login: paulweidinger email<EMAIL_ADDRESS>display_name: paul first_name: Paul last_name: Weidinger permalink: "/2020/04/28/just-let-me-read-one-more-thing-and-ill-be-ready/" ---
I.
I have this tendency, and maybe you do too. I think it's born from a feeling of never quite being ready or skilled enough to accomplish something -- say a job interview, or a diet, or a new hobby, or a blog, or a business. It's caused by the fear of uncertainty that lies ahead in whatever pursuit might be worthwhile.
I believe the biggest achievers in life (and don't lie, you want to be one of them too), have a singular, obsessive focus. A grand vision. A master plan. And they pursue it doggedly until it is realized.
So I try to bootstrap myself to a vision. And unfortunately this is incredibly easy for my uber-forward-looking brain to do. I get drunk on that vision. I succumb to daydreams and sleepless hours of bedtime fantasizing. I create movies of conversations I'll have with mentors, or future employees.
I encumber my browser tabs with articles promising to answer the question "how do I do this?" Or I fill my Amazon cart with books from an online reading list promising everything you need to know about this. "Once I read through all of these," I think to myself, "I'll have developed enough expertise to begin."
I get this rush in my chest like I'm finally about to open the lost scrolls and be given The Secret. So I settle into a chair, open the book, and be prepare to be graced with enlightenment...
But it never, ever, comes.
And then I find reality of the work is nothing like these fantasies. I'm crushed. And I walk away, rejected and defeated. Please, fate, tell me I'm not the only one.
Sure I get closer. I gain a little knowledge or wisdom. I become a better person, or better thinker. But no, I still don't have it figured out. I'm still not an expert. And I'm still navigating with uncertainty.
I flounder. I experience the dip. I realize how hard it really is to become an expert, or to change a personality trait, or to fix a diet. And I quit. Books go unread. Tabs get closed.
You think I'd be immune to this pattern by now. I'm not.
II.
If it can't be destroyed, can it be managed? I believe it can. And a blog is one way to do that. By writing freely and openly about my current pursuits or interests, waking from the daydream and releasing my expectations for what each pursuit might bring, I will build a path, brick-by-brick, with destination unknown. You can only connect the dots looking backward.
Michel de Montaigne, a favorite lay philosopher of mine, took this flaneur-like approach to his own interests. He'd write an essay on whichever topic happened to excite his intellect. It seems like a more fulfilling and care-free way to live.
A great struggle in my life is to overcome building up a vision so clearly only to have reality slap me in the face. I know that by reading, instead of doing, I can prolong that slap. But it will hit sooner or later, and it will turn me away all the same.
How can we set ourselves up to expect, and then push through, the slap? Is it better to live aimlessly? No, I contend. But neither is it good to live with such a targeted and specific aim that you cannot accomplish it.
I believe, like most things in life, the optimum is somewhere in the middle. How can we feel out that middle path?
First, by setting an abstract vision for yourself -- the kind of life you want to lead and the kind of achievement you strive for -- you can give yourself flexibility to reorient and determine a concrete path to the next step. If it's too concrete, the cold slap of reality will destroy it swiftly.
Second, determine the next concrete step to achieving that goal and set a deadline. Try to do it without too much research first; another failure trap. But what if research and asking for advice are part of the next step? It's fine, but make sure you self-reflect enough to know it's not a procrastination technique.
Third, keep a constant perspective on long-term thinking. Short-term thinking is really easy to abandon. A goal like "lose 5 pounds in a month" is incredibly short-term. The consequences of failure are small, and the ability to push out the deadline too easy. Instead, if your next concrete step is short-term, remind yourself that this short-term goal is the best thing to get me closer to my long-term vision.
Fourth, bias yourself towards action. If you don't know if you should consume or produce, always pick produce. The most successful people in life have been those that could Get Things Done.
III.
I am not a master at this process, nor am I entirely sure it's perfect. I'll write posts here as I discover more about it and how my mind works. It's an on-going conversation. Maybe you have a different perspective, which I encourage hearing.
I can say, though, that from what I've gotten from studying successful people, they all do something like the four steps above. Take everybody's default successful person example: Steve Jobs. Was his grand 25-year old vision in 1982 to invent the iPhone? Impossible. But his unflinching vision did guide him into determine that the iPhone was the next best concrete step in the mid 2000s.
What is that vision to you?


MYRA is a collection of Ant Colony Optimization (ACO) algorithms for the data mining
classification task. It includes popular rule induction and decision tree induction algorithms.
The algorithms are ready to be used from the command line or can be easily called from your own
Java code. They are build using a modular architecture, so they can be easily extended to
incorporate different procedures and/or use different parameter values.


The third type of Cicada variable is an array variable, which is simply N copies of some other variable type. To define an array we write N inside square brackets before the type we want to copy. Multi-dimensional arrays are just arrays of arrays. Here are some examples.
numDays :: [12] int
checkerboard :: [8][8] bool
coordinates :: [] { x :: y :: double }
Notice that coordinates was defined without a specific array size, so it will start off as a size-0 array until it is manually resized. Arrays defined using empty brackets (or equivalently with the [*] symbol) are given extra storage so that elements can be added easily. Use empty brackets for arrays that will be resized often.
We access array elements using square brackets after the array name, just as in C. The last element can be accessed using the keyword top. To access a range of elements a through b, write [<a, b>]. To access all elements we can simply write [*] or [].
numDays[1] = 31 | assign a single element
numDays[<2, 4>] = { 31, 31, 30 } | assign 3 elements
checkerboard[1][1] = checkerboard[1][3] = true | assign 2 elements
checkerboard[3] = checkerboard[1] | assign a whole row of elements
checkerboard[top] = checkerboard[top-2] | ditto for the 6th and 8th rows
coordinates[*].x = coordinates[*].y | assign all 'x's
coordinates[*].y = -1 | assign all 'y's (scalar-to-array copying)
Strings are effectively character arrays, and we can use array operators to access either single characters or ranges of characters. The single-element operator [n] returns a character, whereas the multi-index operator [<a, b>] returns a character array (equivalent to a string). Given two strings s1 and s2, the following commands are legal: s1 = s2[<3, 4>], s1 = s2[<4, 4>], s1 =! s2[4]; however s1 = s2[4] is illegal since Cicada does not allow char-to-string assignment. Note that array operators only work on string variables, not string literals, so "abc"[2] will cause an error.
Cicada has a technical restriction on the elements we can access simultaneously in multi-dimensional arrays: their memory has to be contiguous. Internally, the last index counts consecutive elements in memory; then the next-to-last index increments; etc. So the elements of some 2-dimensional array A elements are [1][1], [1][2], ..., [2][1], [2][2], ..., etc as shown in Figure 1. Here are some legal and illegal expressions involving a matrix A :: [3][4] { x :: ... }:
A[<2, 3>] | legal
A[<2, 3>][<1, 4>] | legal
A[<2, 3>][2] | will cause error
A[2][<2, 3>] | legal
A[1][2] | legal of course
A[<2, 3>][*].x | legal -- x is stored separately from other members
When we address part of an array using two or more [*] operators, Cicada loses track of how many elements were in each dimension and pretends that it is looking at a one-dimensional list. For example, if we define:
grid :: [5][5] int
then both grid and grid[*] refer to a 2-dimensional array, but grid[*][*] is effectively a single 1-dimensional list of 25 elements. This is another technical limitation of Cicada, and it may change in the future.
Last update: July 25, 2021


Before Change
limitby = (0, 1)
).first()
districts_and_uk = copy.copy(districts)
districts_and_uk[uk.id] = "Outside Cumbria"
// Check Type of Registration
agency = donor = existing = group = False
After Change
districts = db((gtable.level == "L3") & (gtable.L2 == "Cumbria")).select(gtable.id,
gtable.name)
districts = {d.id:d.name for d in districts}
districts = OrderedDict(sorted(districts.items(), key=lambda t: t[1]))
uk = db((gtable.level == "L0") & (gtable.name == "United Kingdom")).select(gtable.id,
limitby = (0, 1)
).first()
districts_and_uk = OrderedDict([(uk.id, "Outside Cumbria")])
for key in districts:
districts_and_uk[key] = districts[key]
// Check Type of Registration
agency = donor = existing = group = False
def individual_formfields():


Make Single Request
#{scaleSingleRequestController.singleRequestConfig.frontPage.title}
#{scaleCommonConfig.scaleConfig.frontPage.text}
There was a problem saving your request - #{scaleSingleRequestController.error}
Your request was submitted
Reason


JavaScript is disabled on your browser.
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
Prev Letter
Next Letter
Frames
No Frames
All Classes
A
B
C
D
E
F
G
H
I
L
M
N
O
P
R
S
T
U
V
X
Y
C
CacheStoryTask
- Class in
ualberta.g12.adventurecreator.tasks
A task used to Cache a story.
CacheStoryTask(Context)
- Constructor for class ualberta.g12.adventurecreator.tasks.
CacheStoryTask
Create a CacheStoryTask with the given context.
CacheStoryTestCases
- Class in
ualberta.g12.adventurecreator.test
This class of test cases tests the caching functionality, use case 9.
CacheStoryTestCases()
- Constructor for class ualberta.g12.adventurecreator.test.
CacheStoryTestCases
cancel
- Static variable in class ualberta.g12.adventurecreator.
R.string
checkId(int)
- Method in class ualberta.g12.adventurecreator.online.
OnlineHelper
checks if there is already a story with the same id in our database This function can be used to check for a storyId already on the system to prevent the case of accidental overwriting.
Choice
- Class in
ualberta.g12.adventurecreator.data
Used to implement, set, and link desired choices to each other.
Choice()
- Constructor for class ualberta.g12.adventurecreator.data.
Choice
default setting given to a newly implemented choice.
choiceBody
- Static variable in class ualberta.g12.adventurecreator.
R.id
choiceButton
- Static variable in class ualberta.g12.adventurecreator.
R.id
ChoiceEditActivity
- Class in
ualberta.g12.adventurecreator.views
Activity used for choice editing within the selected story.
ChoiceEditActivity()
- Constructor for class ualberta.g12.adventurecreator.views.
ChoiceEditActivity
choosechoice
- Static variable in class ualberta.g12.adventurecreator.
R.drawable
Create
- Static variable in class ualberta.g12.adventurecreator.
R.string
createBlankStory()
- Method in class ualberta.g12.adventurecreator.controllers.
StoryListController
Creates a blank story by calling the no argument constructor of
Story
and adds it to the StoryList.
createnew
- Static variable in class ualberta.g12.adventurecreator.
R.drawable
CreateNew
- Static variable in class ualberta.g12.adventurecreator.
R.id
A
B
C
D
E
F
G
H
I
L
M
N
O
P
R
S
T
U
V
X
Y
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
Prev Letter
Next Letter
Frames
No Frames
All Classes


Installing and using TravCalc seems simple enough. Just download the archive from GitHub and extract it to a folder you prefer.
If you have Classic Python 2.5.4 installed, you can start travcalc306b.py from a CMD prompt or double-click the Python script.
Alternatively, if you do not have Classic Python 2.5.4, you can start travcalc306b.exe (located in the dist folder) from a CMD prompt or by double-clicking the executable program.


I'm Charles and I am an incoming postdoc at the University of Michigan. Previously, I was a graduate student at Harvard advised by Lauren Williams and Bernd Sturmfels. Before that, I completed my undergraduate studies at Georgia Tech.
I am broadly interested in algebraic combinatorics, algebraic geometry, integrable systems, and D-modules. My current research focuses on combinatorial aspects of cluster varieties and the KP equation.
My email address is cmwang@math.harvard.edu.


Register
Name:
Nickname:
Name:
Age:
Sex
Male
Female
Other
How many people in your family
3
4
5
6
7
8


Back to Top Button
Scroll down the page
"He says, Monsieur, that his principles won't admit of his drinking; but that if Monsieur wants to live another day to drink, then Monsieur had best drop all four boats, and pull the ship away from these whales, for it's so calm they won't drift."


Check out what makes this program one of a kind
As a performance coach for over 10 years, Mike G has worked with some of the world’s top basketball players, including Anthony Davis, Jrue Holiday and Mike James.
In order to take on constant coaching requests, Mike created GBG HOOPS to provide the ultimate basketball-specific training app.


Today's DiscussionThe National Weather Service Forecasts-
TODAY...MOSTLY CLOUDY. CHANCE OF SNOW AND SLIGHT CHANCE OF LIGHT FREEZING RAIN IN THE AFTERNOON. HIGHS 27 TO 33. NORTHEAST WIND 5 TO 15 MPH SHIFTING TO THE SOUTHEAST IN THE AFTERNOON.
TONIGHT...SNOW. RAIN AND SLIGHT CHANCE OF LIGHT FREEZING RAIN
LATE. SNOW ACCUMULATION 4 TO 6 INCHES. LOWS 24 TO 29 EARLY.
TEMPERATURES SLOWLY RISING THROUGH THE NIGHT. NORTHEAST WIND 10 TO 20 MPH.
SUNDAY...SLIGHT CHANCE OF LIGHT FREEZING RAIN IN THE MORNING.
RAIN...HEAVY AT TIMES. RAIN MIXED WITH SNOW AT TIMES. SNOW
ACCUMULATION UP TO 3 INCHES. HIGHS AROUND 38. SOUTHEAST WIND 5 TO 15 MPH SHIFTING TO THE SOUTHWEST IN THE AFTERNOON.
We have received no new snow in the last 36 hours. Temperatures have remained fairly steady over the last 36 hours. This has given the new snow from Thurday the time it needed to settle and bond. It is holding fairly well to the old snow surface. There is windloading present in places but most of this new snow was capped with rain at the end putting an ice crust in place. This crust may be the next layer of concern as weight is added to it and/or it breaks down.
Winds have been fairly calm over the last 36 hours so even though we had windloading during the storm we have not seen much over the last 36 hours once again giving the snowpack time to settle and bond. Even if we had a little wind the ice crust would limit transport at this time until we see new snow.
Avalanche danger is LOW today yet you may find small pockets of moderate instability in wind loaded places from during the storm.
Danger levels will increase tonight into tomorrow as we start to see new snow load followed by warming and rain. Hopefully our freezing levels will remain low but this next storm event will be an upside down event placing lighter drier snow under what will finish as either heavy wet snow or rain. This does not tend to support load well. Tomorrow we will want to watch how much new snow we get and how much rain and warming we see on top of it. Rain changes the stability equasion very quickly. Today's Avalanche TipUpside-Down Storm:
Nationally most storms deposit new snow with denser snow on the bottom and lighter snow on top—just the way we like it. Unfortunately that is not the case for here in SE Alaska.
This is because most snow comes from cold fonts, which usually start out warm and windy but end up cold and calm. But sometimes snowstorms deposit denser, stiffer snow on top of softer, fluffier snow. We call this “upside down” snow. We often call it “slabby” or “punchy” meaning that you punch through the surface slab into the softer snow below, making for difficult riding and trail breaking conditions. It also means that we need to carefully monitor avalanche conditions within the new snow because—by definition—a denser slab has been recently deposited on top of a weaker layer, which should make anyone’s avalanche antennae stand at attention. Most instabilities within upside-down snow stabilize within a day or two.
The kind of weather conditions that often produce upside-down snow include warm fronts, storms in which the wind blows harder at the end of the storm than the beginning, or storms that end with an unstable airmass, which can precipitate a lot of graupel within instability showers.
|


Please provide your contact info. We'll keep you up-to-date on the latest in technology in industry
Submit Cancel
Please confirm submission
Confirm Cancel


API air cities mortality total <. China quality pollution data association study Available collab: from: average using analysis health index China. Health effect significantly {border-style correlation px;} significant #ffffff;} -year Statistical annual climate factors measures observed time Province cities, increase studies time-lag Air daily higher mean p-Value pollutants results r = ., Drexel exposure major Chinese Environ National Public Year analysis, associations rate rates (%) (i.e., Data University conducted examined increased variation vs. China, Figure Table book highest lower positive sample size test > Beta Bureau No. Statistics. available cardiovascular city climatic concentration effects examine individual meteorological national n = , px; residents spatial years {font-family (Figure Chen City-level Environmental Res Total city-level correlated differences findings font-size hours outcomes panel p = .) regions reported respiratory shows study, use winter (defined Annual Findings Meteorological North Panel SPH), aged burden disease double; early example, fixed including number particulate public p = .). regression risk summer surveillance temperature trend variations weekly (MPH, City Furthermore, GDP However, Liu People’s Republic Ring Therefore, USA adjustment analysis. applied assuming border-color border-width calculated compared consideration different distribution ecological environmental experienced explained factors, fall group important lowest maximum pollutant positively precipitation, previous provinces), p < .). seasonal seasons solid; statistical sunshine testing univariate used winter, year {font-style {font-weight (. mm) (assessed (h) (kPa) API, APIs College Daily Drs. GIS Guo Heat Int Kan Pollution Quality Research SARI SPH) Service Study Urban Zhou analyses analyzed and/or approach article associated bold change changes cities. clustering coal collected comments concentrations country. courier; em; energy events help included individuals limited measured mortality, non-significant older outcomes, partial percentage pt;} p = .), quality, random report showed small sources spring standard sum support supported temperature, temperatures temporal urban value weighted ≥ days


The Twelfth Night
ACT 1
Scene 1 - DUKE ORSINO'S palace
Enter DUKE ORSINO, CURIO, and other LORDS; musicians attending
DUKE ORSINO
If music be the food of love, play on;
Give me excess of it, that, surfeiting,
The appetite may sicken, and so die.
That strain again! it had a dying fall:
O, it came o'er my ear like the sweet sound,
That breathes upon a bank of violets,
Stealing and giving odour! Enough; no more:
'Tis not so sweet now as it was before.
O spirit of love! how quick and fresh art thou,
That, notwithstanding thy capacity
Receiveth as the sea, nought enters there,
Of what validity and pitch soe'er,
But falls into abatement and low price,
Even in a minute: so full of shapes is fancy
That it alone is high fantastical.

DUKE ORSINO
What, Curio?
CURIO
The hart.
DUKE ORSINO
Why, so I do, the noblest that I have:
O, when mine eyes did see Olivia first,
Methought she purged the air of pestilence!
That instant was I turn'd into a hart;
And my desires, like fell and cruel hounds,
E'er since pursue me.
Enter VALENTINE
How now! what news from her?
VALENTINE
So please my lord, I might not be admitted;
But from her handmaid do return this answer:
The element itself, till seven years' heat,
Shall not behold her face at ample view;
But, like a cloistress, she will veiled walk
And water once a day her chamber round
With eye-offending brine: all this to season
A brother's dead love, which she would keep fresh
And lasting in her sad remembrance.
DUKE ORSINO
O, she that hath a heart of that fine frame
To pay this debt of love but to a brother,
How will she love, when the rich golden shaft
Hath kill'd the flock of all affections else
That live in her; when liver, brain and heart,
These sovereign thrones, are all supplied, and fill'd
Her sweet perfections with one self king!
Away before me to sweet beds of flowers:
Love-thoughts lie rich when canopied with bowers.
Exeunt


Universal Principles of Design: The Mandatory Book with the Science behind the Black Magic
This book is much better than a holy bible or some ten commandments of design: it goes beyond. It describes the what, answers the why, teaches the how and shows where it all came from.
After watching Joe Natoli's
Fundamentals, Principles and Practices for Great UI Design
course on Skillshare, I was really surprised that design black magic
is actually mostly based on solid science and research.
Universal Principles of Design
goes through 125 guidelines built on top of decades of research in
various scientific fields, always citing the essential
bibliography
I wish I had read this book years ago, when starting my engineering studies, it would have been much more worthwhile than blindly reproducing dummy silly mandatory projects on AutoCAD. I think this book should be read by anyone, it would enable individuals to have a much more objective and productive way of criticizing our environment and society.
Anyway, let me share some
In alphabetical order, they are
-
80/20 Rule
- A high percentage of effects in any large system are caused by a low percentage of variables.
- Also known as the Pareto Rule.
-
This is probably one of the most important and most not
emphasized rules in life, it would be one of the first
concepts I would ever teach to a child. In basically every
practical human project, around 80% of the gains come from 20%
of the effort
: - 80 percent of a product’s usage involves 20 percent of its features.
- 80 percent of a town’s traffic is on 20 percent of its roads.
- 80 percent of errors are caused by 20 percent of the components.
-
Alignment
- The placement of elements such that edges line up along common rows or columns, or their bodies along a common center.
- Two other principles closely related to Alignment are: Area Alignment and Mapping.
- Most designers, including Joe Natoli, say that this is probably the most frequently broken principle in the real world. After a bit more than 1 month producing and reviewing designs, I would say I completely agree — just imagine the mess if all of these bullet points and numbered principles had the same indentation...
- It is very impressive how much a design can improve by simply aligning its items in a way that groups and similarities are correctly in evidence. Doing the opposite can incur in disastrous consequences, as was the case of the Butterfly Ballot.
- One very simple example of what not to do when it comes to alignment is long text with centered alignment: the left border alignment will be so irregular that the user will have to put extra effort into keeping track of it. In sum, only use centered text for one-liners or very short text.
-
Biophilia Effect
- Environments rich in nature views and imagery reduce stress and enhance focus and concentration.
- One interesting finding is that this effect does not seem to require real plants in the environment, but mere imagery — window views, posters on the wall, and so forth seem to suffice.
- Some examples of beautiful application of this principle are: Frank Lloyd Wright's Fallingwater and Mies van der Rohe's Farnsworth House.
-
Cathedral Effect
- A relationship between the perceived height of a ceiling and cognition. High ceilings promote abstract thinking and creativity. Low ceilings promote concrete and detail-oriented thinking.
-
Different ceilings, different perspectives, it is not really
true that high ceilings are better:
- High ceilings tend to improve focus on general product characteristics and creativity.
- Low ceilings tend to improve focus on specific features and problem solving.
- The Cathedral Effect is closely related to Priming.
-
Chunking
- A technique of combining many units of information into a limited number of units or chunks, so that the information is easier to process and remember.
- It used to be believed that the optimal number of short-term memory items is 7, but research has converged on actually 4 ± 1. So, try chunking related items in blocks of, at most, 4 ± 1.
-
Cognitive Dissonance
- A tendency to seek consistency among attitudes, thoughts, and beliefs.
-
People alleviate cognitive dissonance in one of three ways: by
reducing the importance of dissonant cognitions, adding
consonant cognitions, or removing or changing dissonant
cognitions.
- For example, advertising campaigns that urge people to show how much you care by buying diamonds seek to create cognitive dissonance in consumers — i.e., dissonance between the love that people have for others, and the pressure to prove that love by buying diamonds. In order to alleviate the dissonance, people can reduce the importance of the dissonant cognition (e.g., a diamond is, after all, just a bunch of pressed carbon), add consonant cognitions (e.g., recognize that the advertising campaign is trying to manipulate them using cognitive dissonance), or remove or change dissonant cognitions (e.g., show how much you care by doing something else or, of course, buying the diamonds).
-
When a situation involves incentives, it is interesting to
note that incentives of different sizes yield different
results. Too big an incentive and the person will change her
behavior, but but diverge in her attitude
.
-
Cost-Benefit
- An activity will be pursued only if its benefits are equal to or greater than the costs.
- Very closely related to Cost-Benefit is the principle of Affordance.
-
If the costs associated with interacting with a design
outweigh the benefits, the design is poor. If the benefits
outweigh the costs, the design is good. For example, walking
some distance to see a museum exhibit constitutes a cost. The
level of interest in the exhibit constitutes a benefit. Thus,
if the level of interest outweighs the cost of the walk, the
exhibit design is good.
- In the end, the ultimate way of evaluating an app is with a cost-benefit ratio. How many apps do you know which have a higher cost of usability than their benefits?
-
Depth of Processing
- A phenomenon of memory in which information that is analyzed deeply is better recalled than information that is analyzed superficially.
- Having to perform analysis of a piece of information can make recall go to 2-3 times better than simply having to memorize something.
- This phenomenon is frequently experienced when learning new vocabulary. Words that seem unfathomable are actually the ones people tend to remember the most, due to their first attempts at trying to initially understand what they meant.
-
Design by Committee
- A design process based on consensus building, group decision making, and extensive iteration.
- Generally, specially among writers, it is believed that only bad designs can come from committees. The compromises are so inevitable and numerous that the end product is, supposedly, invariably mediocre at best.
-
However, with large products, nothing would be done if
multiple inputs weren't accepted. If iterated correctly, these
inputs and proper management will lead to a superior product.
- Autocracy is linear and fast, but risky and prone to error. Democracy is iterative and slow, but careful and resistant to error.
-
Desire Line
- A design process based on consensus building, group decision making, and extensive iteration.
-
Desire lines generally refer to worn paths where people
naturally walk — the beaten path that trails off the
sidewalk, usually as a shortcut to a destination. But, more
generally, they are said to be an unbiased indication of how
an object or environment is actually used by people, which is
valuable information that can be applied to the design or, in
some cases, redesign of the object or environment.
- Desire lines are being more and more incorporated into architectural designs, but they should also be present in apps.
-
Face-ism Ratio
- The ratio of face to body in an image that influences the way the person in the image is perceived.
-
Images depicting a person with a high face-ism ratio —
the face takes up most of the image — focus attention on
the person’s intellectual and personality attributes. Images
depicting a person in a low face-ism ratio — the body
takes up most of the image — focus attention on the
physical and sensual attributes of the person. The face-ism
ratio is calculated by dividing the distance from the top of
the head to the bottom of the chin (head height) by the
distance from the top of the head to the lowest visible part
of the body (total visible height).
- It is very common to see web pages being needlessly sexualized by using images with high face-ism ratios, when, in fact, it would have been more intellectually compelling to use low face-ism ratios.
-
Flexibility-Usability Tradeoff
- As the flexibility of a system increases, the usability of the system decreases.
- The flexibility-usability tradeoff is related to the well-known maxim, jack of all trades, master of none. Flexible designs can perform more functions than specialized designs, but they perform the functions less efficiently. Flexible designs are, by definition, more complex than inflexible designs, and as a result are generally more difficult to use.
- This is the cause of many web and mobile app failures. Managers tend to overextend the focus of an app and the quality of its usability sharply decreases.
-
Form Follows Function
- Beauty in design results from purity of function.
- The form follows function corollary is interpreted in one of two ways — as a description of beauty or a prescription for beauty. The descriptive interpretation is that beauty results from purity of function and the absence of ornamentation. The prescriptive interpretation is that aesthetic considerations in design should be secondary to functional considerations. The corollary was adopted and popularized by modernist architects in the early 20th century, and has since been adopted by designers in a variety of disciplines, causing many misinterpretations and design disasters worldwide.
-
Both interpretations, when taken to the extreme, defeat any
design. Beauty without function has no usability. A functional
design without attractiveness will not make anyone want to use
it.
- Use beauty to improve the function, and the function to make the design useful.
-
Hick's Law
- The time it takes to make a decision increases as the number of alternatives increases.
-
All tasks consist of four basic steps:
- Identify a problem or goal
- Assess the available options to solve the problem or achieve the goal
- Decide on an option
- Implement the option. Hick’s Law applies to the third step: decide on an option.
-
This is a very interesting law for keeping the design as
simple as possible
. The more you bloat it with options, the more annoying and time-consuming it is to deal with it.
-
Hierarchy of Needs
- In order for a design to be successful, it must meet people’s basic needs before it can attempt to satisfy higher-level needs.
-
There are five levels of design:
- Functionality
- Reliability
- Usability
- Proficiency
- Creativity
- It's a very common mistake to strive for creativity directly, where the perceived value is the highest. However, in doing so, people forget to put sufficient effort into the 4 prior levels.
-
Highlighting
- A technique for bringing attention to an area of text or image.
- A good directive is to highlight at most 10% of the visible design. High percentages can actually have a negative effect on readability.
- Bolding and italicizing are the most advisable ways of highlighting text. Underlining usually adds considerable noise and can sharply decrease readability.
-
Horror Vacui
- A tendency to favor filling blank spaces with objects and elements over leaving spaces blank or empty.
- Two other interesting principles closely related to Horror Vacui are Scarcity and the Veblen Effect.
- Horror Vacui means "fear of emptiness".
- People tend to feel unease at emptiness. For example, an empty sheet is a common source of anxiety; once the sheet starts to get filled up, people will try to complete it with patterns resembling the original ones.
- Nevertheless, it is important to keep in mind that the more things exist within a design, the perceived value of each particle decreases. That's one of the reasons for luxury brands to display fewer items than their cheaper competitors.
-
Legibility
- The visual clarity of text, generally based on the size, typeface, contrast, text block, and spacing of the characters used.
- Readability is another useful topic for research in Legibility, which is also related to Highlighting.
- For printed text, standard 9- to 12-point type is considered optimal, unless you're dealing with specific groups of people, like seniors.
- There is no performance difference between serif and sans serif typefaces.
- Performance is optimal when contrast levels between text and background exceed 70%.
- Proportionally spaced typefaces are preferred over monospaced.
-
Not Invented Here
- A bias against ideas and innovations that originate elsewhere.
-
Four social dynamics underlie NIH:
- Belief that internal capabilities are superior to external capabilities
- Fear of losing control
- Desire for credit and status
- Significant emotional and financial investment in internal initiatives
- The best way to address NIH is prevention. Incentivize open minds, encourage team members to interact with the wider community, use external reviewers, etc.
-
Ockham's Razor
- Given a choice between functionally equivalent designs, the simplest design should be selected.
- The Ockham's razor is one of the most useful principles in life. It is also closely related to the Pareto (80/20) and the KISS (Keep It Simple, Stupid) programming rule. It is very common for overenthusiastic engineers and designers to overengineer products and systems.
- Although the principle is named after William of Ockham, a 14th century Franciscan friar and logician, nobody has ever truly confirmed its origins.
-
Some related quotes coming from various different sources:
- Entities should not be multiplied without necessity. — William of Ockham (1287 – 1347)
- That is better and more valuable which requires fewer, other circumstances being equal. — Robert Grosseteste (circa 1175 – 1253)
- Nature operates in the shortest way possible. — Aristotle (384 – 322 BC)
- We are to admit no more causes of natural things than such as are both true and sufficient to explain their appearances. — Isaac Newton (1642 – 1726)
- Everything should be made as simple as possible, but not simpler. — Albert Einstein (1879 – 1955)
-
Personas
- A technique that employs fictitious users to guide decision making regarding features, interactions, and aesthetics.
-
The design that seeks to accommodate everybody generally
accommodates nobody well. So try to aim for one or more
archetypal personas or users which would represent the target
audience.
- It is a very common mistake to only account for one persona when, in fact, there might be 2 or more different types of core customers for your service or product, resulting in an oversimplifed product which accomodates no one. Typically, products require around 3 primary personas in order to achieve good quality.
-
Priming
- The activation of specific concepts in memory for the purposes of influencing subsequent behaviors.
- Whenever stimuli are received by the senses — sights, sounds, smells, touches, tastes — concepts are automatically activated in memory. Once concepts are activated, they stay activated for a period of time, capable of influencing subsequent thoughts, reactions, emotions, and behaviors.
- In a classic experiment on the effects of priming, two groups of college students were given a series of written language tests. The language test for one group included words related to politeness, and the language test for the other group included words related to rudeness. Subjects were instructed to complete the test, and then go down the hall and find the test administrator to get instructions for their next task. When each student completed his or her test and went down the hall, the student found the test administrator engaged in a conversation with another person. Unbeknownst to the students, the real test regarded whether the students would interrupt the conversation, or wait politely until the conversation ended. The results were dramatic: 63 percent of the students primed with words related to rudeness interrupted, whereas only 17 percent primed with words related to politeness interrupted.
-
Recognition over Recall
- Memory for recognizing things is better than memory for recalling things.
- Recognition memory is attained through exposure, and does not necessarily involve any memory about origin, context, or relevance. It is simply memory that something (sight, sound, smell, touch) has been experienced before. Recall memory is attained through learning, usually involving some combination of memorization, practice, and application. Recognition memory is also retained for longer periods of time than recall memory.
- Decision-making is also greatly influenced by recognition. Easily recognized brands will probably feature better in rankings simply because people are used to them and not necessarily due to quality criteria.
-
Scaling Fallacy
- A tendency to assume that a system that works at one scale will also work at a smaller or larger scale.
-
Upon my death, if anyone asked what principle was broken most
frequently during my lifetime, I'm certain I would answer that
the biggest human disease is the Scaling Fallacy.
- Every manager I've ever encountered — including me, of course —, from the lowest to the highest rank has made this mistake in his or her past: no, things almost always do not scale linearly; no, your product that works in a small scale will probably not work in the same way in a bigger scale.
-
There are two basic kinds of scaling assumptions to
avoid when growing or shrinking a design:
- Load assumptions occur when designers scale a design by some factor, and assume that the working stresses on the design scale by that same factor.
- Interaction assumptions occur when designers scale a design, and assume that the way people and other systems interact with the design will be the same at other levels of scale.
-
Serial Position Effects
- A phenomenon of memory in which items presented at the beginning and end of a list are more likely to be recalled than items in the middle of a list.
- The von Restorff Effect is another very interesting effect related to memory retention.
-
There are two major types of serial position effects:
- Primacy effects occur because the initial items in a list are stored in long-term memory more efficiently than items later in the list.
- Recency effects occur because the last few items in a list are still in working memory, and readily available.
- The Serial Position Effect should be taught to anyone who's going to make a prsentation. The order in which the content is presented is going to completely alter how it will be memorized and, more importantly, interpreted.
- For visual stimuli, items presented early in a list have the greatest influence; they are not only better recalled, but influence the interpretation of later items. For auditory stimuli, items late in a list have the greatest influence.
- Present important items at the beginning or end of a list (versus the middle) in order to maximize recall. When the list is visual, present important items at the beginning of the list. When the list is auditory, present important items at the end. In decision-making situations, if the decision is to be made immediately after the presentation of the last item, increase the probability of an item being selected by presenting it at the end of the list; otherwise, present it at the beginning of the list.
- As a curiosity, in the previously mentioned Butterfly Ballot disaster, being first on it was estimated to be worth between 1 percent and 4 percent of the vote.
Unfortunately, I won't cover many other brilliant principles, but here are some that didn't quite make the cut of the previous section — also in alphabetical order:
-
Aesthetic-Usability Effect
- Aesthetic designs are perceived as easier to use than less-aesthetic designs.
-
Affordance
- A property in which the physical characteristics of an object or environment influence its function.
-
Attractiveness Bias
- A tendency to see attractive people as more intelligent, competent, moral, and sociable than unattractive people.
-
Closure
- A tendency to perceive a set of individual elements as a single, recognizable pattern, rather than multiple, individual elements.
-
Expectation Effect
- A phenomenon in which perception and behavior changes as a result of personal expectations or the expectations of others.
-
Exposure Effect
- Repeated exposure to stimuli for which people have neutral feelings will increase the likeability of the stimuli.
-
Fitt's Law
- The time required to move to a target is a function of the target size and distance to the target.
-
Forgiveness
- Designs should help people avoid errors and minimize the negative consequences of errors when they do occur.

-
Inverted Pyramid
- A method of information presentation in which information is presented in descending order of importance.
-
Mapping
- A relationship between controls and their movements or effects. Good mapping between controls and their effects results in greater ease of use.
-
Mental Model
- People understand and interact with systems and environments based on mental representations developed from experience.
-
Propositional Density
- The relationship between the elements of a design and the meaning they convey. Designs with high propositional density are more interesting and memorable than designs with low propositional density.
-
Prospect-Refuge
- A tendency to prefer environments with unobstructed views (prospects) and areas of concealment and retreat (refuges).
-
Red Effect
- A tendency to perceive women wearing red as more attractive and men wearing red as more dominant.
-
Redundancy
- The use of more elements than necessary to maintain the performance of a system in the event of failure of one or more of the elements.
-
Rosetta Stone
- A technique for communicating novel information using elements of common understanding.
-
Savanna Preference
- A tendency to prefer savanna-like environments to other types of environments.
-
Stickiness
- A method for dramatically increasing the recognition, recall, and unsolicited sharing of an idea or expression.
-
Uncanny Valley
- Anthropomorphic forms are appealing when they are dissimilar or identical to humans, but unappealing when they are very similar to humans.
-
Uncertainty Principle
- The act of measuring certain sensitive variables in a system can alter them, and confound the accuracy of the measurement.
-
Waist-to-Hip Ratio
- A preference for a particular ratio of waist size to hip size in men and women.


Flashreport CloudFoundry Spring sample
This sample application lets you generate reports using the flashreport api.
Unless you inject the VCAP_SERVICES environment variable yourself, it will only work
correctly when deployed on CloudFoundry and bound to a flashreport service.
Generate a report
Use the /report/new endpoint to generate a report. For your convenience, this endpoint support both GET and
POST.
From there you can use two other endpoints : /report/uuid and /report/uuid/download,
where uuid is the unique identifier of the report you generated.
Generate a report now
Keep in mind that the number of reports you can generate is limited based on the plan you
selected
in the marketplace. Attempting to generate reports when over the limit will result in 429 responses.
Additional documentation
http://flashreport.io/docs.html


Mesh Editing and GLSL
In this project, I first learned to tesselate bezier patches to generate triangular meshes from bezier curves. Then, I implemented the ability to modify those meshes by flipping and splitting edges, or "upsampling" to increase the amount of triangle faces that represent the mesh. Finally, I wrote some cool GLSL shaders. My favorite was the reflection shader, which maps each pixel on the surface to a place on a reflection texture.
Part 1: Fun with Bezier Patches
The first thing I needed to do was generate a triangle mesh from an input Bezier Surface. A Bezier surface is specified by control points (16, in this case). The control points specify curves, and the convex hull of the control points contains a surface. That surface is the mesh I am trying to represent.
In order to represent the surface as a triangular mesh, I need to tesselate the Bezier surface specified by the control points into triangles. I accomplished this using the Bernstein Polynomials.I wrote some helper functions to help me evaluate the Bernstein Polynomials, used them to evaluate each control point. Once I determined which triangles I needed, I added them to a halfedge data structure to represent the mesh.
Part 2: Average normals for half-edge meshes
Next, I computed per vertex normals that were an average of the normals of their faces. This results in a nicer, smoother shading effect than when normal vectors are just computer per face. To accomplish this, I traversed the faces that the vertex belonged to in the half edge data structure, computing the normal for each face along the way. First I got the half edge that the vertex was attached to. Then, I saved it as h_original so I could keep track of where I started. Then I got the halfedge's twin and next half edge, and computed the vectors those half edges represented. I computed the normal of that face by crossing those two vectors before advancing to the next face. Once I reached h_original again, indicating I had tranversed all of the faces of that vertex, I returned the unit vector of the sum of all of the normal vectors as the normal vector for that particular vertex.
Part 3: Edge Flip
Next, I implemented the abillity to flip edges in the mesh. As I mentioned before, the mesh is represented as a half edge data structure. A half edge data structure is mostly a few key components: vertices, halfedges, edges, and faces. Vertices, edges, and faces each keep track of a single half edge. Halfedges each keep track of a twin halfedge (the one on the other side of the edge), a next halfedge (the next one on the face), an edge (made up of the half edge and its' twin), and a face.
In order to accomplish the edge flip, I just needed to reassign the pointers of all of the elements involving the edge before and after the flip.
Initially I was only reassigning pointers for the elements on the inside of the two faces between the edge I was trying to flip. Can you imagine why this would poke holes in my mesh? I was neglecting to reassign pointers for the halfedges on the outside of the borders of the faces. So while the edge may have been flipped correctly, the halfedges in the rest of the mesh weren't informed of the changes, and lost track of (could no longer traverse) that part of the mesh!
Once I assigned the pointers to the outside half edges too, I got the desired result.
Part 4: Edge Split
Next, I implemented the ability to split edges of the mesh. This was somewhat similar to flipping edges in that it involved a lot of reassigning of pointers. However, splitting became a little more complicated because it involved adding some new edges, faces, and a new vertex to the mesh.
This initial error was caused by an error calculating the position of my new vertex. In fact, I wasn't calculating the position of the vertex at all. So everytime I split an edge, I was adding a new vertex at the origin. That's why when I split, all of these dents were getting punched toward the same spot!
Once I updated the position of the new vertex to be the midpoint between the other corner vertices, I achieved the desired result.
Part 5: Upsampling via Loop Subdivision
Upsampling was the most challenging part of the project for me. There were quite a few issues to be debugged, but at a high level the approach is pretty straight forward.
n = vertex degree
u = 3/(8*n)
(1 - 3/8) * original_position + u * neighbor_position_sum
3/8 * (A + B) + 1/8 * (C + D)
where A and B are the vertex positions on the edge that the new vertex will lie, and C and D are the vertex positons on the adjacent edges of the faces on either side of the edge that the new vertex will lie.
Some times a little pre processing before upsampling a mesh can help significantly. A good example of this is the simple cube mesh. The way the edges are oriented can cause some irregularity when then mesh is upsampled. The upsampling behavior can be improved significantly if the edges that cross the faces of the cube are split prior to upsampling. This gives a more symmetrical mesh, which helps the upsampling give a symmetrical result.
Here you can see a side by side comparison of the upsampling of two cubes. The left cube is the original mesh being upsampled. The right cube had each of the face crossing edges split before it is upsampled.
Part 6: Fun with Shaders
Part 6 was my favorite! I wrote GLSL shaders which specify how OpenGL should light the scene. I implemented a simple Blinn Phong shader, and a really cool reflection environment map shader.
For the Phong shader, I followed the following procedue:
LightVec = ambient_light + diffuse_light*max(dot(normal_vector, l), 0) + specular_light*(max(dot(n,normalize(l+v)), 0)^shininess_factor
I liked the environment map reflection shader the best. This is what I did to accomplish this effect:


This page showcases some of my academic research work on Finite Element Method (with focus on fluid dynamics and fluid-structure interaction), as well as optimization (operations research).
Scientific Computation
I participated in the maintenance and development of IFEM_versatile, which is a scientific computing software aimed at solving fluid-structure interaction (FSI) problems. The core of the IFEM_versatile software is the Immersed Finite Element Method technique, which is a unique approach to efficiently handle FSI; the software can function as a standalone finite element (FE) fluid solver as well. The source codes are written in FORTRAN with MPI (Message Passing Interface), and can be compiled and run on different platforms, e.g. Mac Pro (multiprocessor server) and IBM Blue Gene (supercomputer).
A few computation cases are demonstrated here to showcase my work. The examples are to display computations on FSI cases, CFD cases, and acoustics cases where non-reflective Boundary Conditions are important.
I. Fluid-Structure Interaction between Laryngeal Airflow and Vocal Folds
This is a numerical simulation of a classical fluid-structure interaction process: phonation. Airflow is being forced out of the lungs, and needs to push open the gap between the vocal folds, in order to travel through the larynx, the pharynx, and eventually the mouth or the nasal cavity into the external environment. The pressure variation and modulation (corresponds to acoustic wave generation and filtration) in this process is what is perceived as voice.
Laryngeal airflow driving, and in return regulated by, vocal fold vibrations
II. Vortex shedding past a cylinder, with vortices being absorbed by PML
This is a direct numerical simulation of the famous vortex shedding past an obstacle (a cylinder in this case). There is an absorption region (Perfectly Matched Layer) covering one-fourth of the channel length on the right, where the vortices are clearly seen being absorbed; the absorption is to make sure the reflection effect of a finite channel length is subdued.
Vortex shedding past a circular cylinder; vortices are absorbed in PML on the right-hand side of the domain
(domain colored by vorticity, superimposed by velocity vector field)
III. Acoustic Propagation with Proper Application of Perfectly Matched Layers (PML)
These are various numerical simulations of acoustic wave propagation: the sound sources in the first two are vibrating structures, while those in the second two are initial pressure perturbation. In these cases, the simulation are extremely sensitive to the reflection effect from the boundaries of finite computational domain; therefore, Perfectly Matched Layers are applied to absorb outgoing waves.
-
Left-to-right vibrating source
A vibrating source with PML; note that outgoing waves are absorbed in the PML near the domain boundaries.
A vibrating source without PML; note that the spurious reflections on the domain boundaries contaminated the pressure field.
-
Spiraling vibrating source
A spiraling source with PML; note that outgoing waves are absorbed in the PML near the domain boundaries.
A spiraling source without PML; note that the spurious reflections on the domain boundaries contaminated the pressure field.
-
Initial pressure point source
An initial pressure point source with PML; note that outgoing waves are absorbed in the PML near the domain boundaries.
An initial pressure point source without PML; note that the spurious reflections on the domain boundaries contaminated the pressure field.
-
Initial pressure point source, off-centered
An initial pressure point source with PML; note that outgoing waves are absorbed in the PML near the domain boundaries.
An initial pressure point source without PML; note that the spurious reflections on the domain boundaries contaminated the pressure field.
Optimization
These are optimization projects I worked on, with teammates, as competition entries to Modeling and Optimization: Theory and Applications (MOPTA) conferences in 2014 and 2015. Our two projects won Honorable Mention in 2014 and Second-place in 2015 respectively.
I. Utility Pricing for Different Categories of Customers
This competition asks to set the energy prices, for 5 categories of customers and for different hours of the day respectively, in order to maximize the total revenue. The customers' energy consuming behavior would be affected by the price. (Intuitively the higher the prices are, the less energy the customers are going to consume. There are certain data based on which this behavior can be modeled.) The constraints include:
The optimal energy price scheme is presented with tabular data and graphs, along with the expected energy consumption rate.
II. Robust Project Scheduling
This competition asks to select certain projects to undertake, and determine when to initiate these projects, in order to maximize the net profit adjusted by a discount rate (sum of revenues discounted by their respective finish time, minus the sum of costs discounted by their respective start time). Constraints for this optimization problem are:
An extension of this problem is to also consider "bad-luck scenarios", i.e. each project may experience delay after initiation, may simply fail, or may even fail after being delayed. A deterministic approach considers the scenarios known beforehand, while a robust approach designs a schedule that still generates maximum possible amount of profit while making sure the worst outcome under this schedule would not incur a loss larger than the given "bad-luck budget".
The optimal schedule is presented with Gantt charts and expected discounted profit, in comparison to its worst-scenario outcome.
* Last updated in Dec. 2016.


#include <FileGeoTIFF.h>
|
|
| FileGeoTIFF (const std::string &path, const std::string &mode="w") |
| |
|
virtual void | open (const std::string &path, const std::string &mode="w") |
| | Opens a GeoTIFF file.
|
| |
| void | writeMetadata () |
| | Specialize only for strings. More...
|
| |
|
virtual void | close () |
| | "Opens" a GeoTIFF structure inside an opened TIFF file.
|
| |
|
virtual bool | isOpen () const |
| | Todo: subclass.
|
| |
| void | setGdalScale (double scale=1.0, double offset=0.0) |
| | Use EPSG specific support only, if found. Else use also fromProj4Str(). More...
|
| |
| void | setGdalNoData (const std::string &nodata) |
| | This is between Tiff and GeoTiff? More...
|
| |
|
void | setGeoMetaData (const drain::image::GeoFrame &frame) |
| | Sets projection and bounding box. Adjusts spatial resolution accordingly.
|
| |
|
void | setProjection (const std::string &proj) |
| |
|
void | setProjection (const drain::Proj4 &proj) |
| |
|
void | setProjectionLongLat () |
| |
|
void | setProjectionEPSG (short epsg) |
| | If EPSG is detected (currently by +init=epsg:EPSG) and support configured for EPSG code, set it directly.
|
| |
|
| FileTIFF (const std::string &path="", const std::string &mode="w") |
| |
|
int | setField (int tag, const std::string &value) |
| |
|
template<class T > |
| int | setField (int tag, const std::vector< T > &value) |
| |
|
template<class T > |
| int | setField (int tag, T value) |
| |
|
void | useDefaultTileSize () |
| |
|
void | setTileSize (int tileWidth, int tileHeight=0) |
| |
|
void | setTime (const drain::Time &time) |
| |
|
void | setDefaults () |
| |
| void | writeImageData (const drain::image::Image &src) |
| |
Extends TIFF by adding geo information in the metadata
https://gdal.org/drivers/raster/gtiff.html
◆ setGdalNoData()
| void setGdalNoData |
( |
const std::string & |
nodata | ) |
|
This is between Tiff and GeoTiff?
- Parameters
-
◆ setGdalScale()
| void setGdalScale |
( |
double |
scale = 1.0 , |
|
|
double |
offset = 0.0 |
|
) |
| |
Use EPSG specific support only, if found. Else use also fromProj4Str().
This is between Tiff and GeoTiff?
- Parameters
-
◆ writeMetadata()
Specialize only for strings.
"Opens" a GeoTIFF structure inside an opened TIFF file.
◆ gtif
Writes image to a TIIF (GeoTIFF) file.
Writes drain::Image to a tif image. Writes in 8 or 16 bits. Floating point images will be scaled as 16 bit integral (unsigned short int).
The documentation for this class was generated from the following files:


Logout successful
You have successfully logged out of the Central Authentication Service.
For security reasons, exit your web browser.
You have successfully logged out of the Central Authentication Service.
For security reasons, exit your web browser.


CNN Architectures
In this article, I will introduce some popular CNN architectures
LeNet-5
Before CNN was invented, character recognition had been done mostly by using feature engineering by hand, followed by a machine learning model to learn to classify hand engineered features. In , Yann Lecun first proposed a neural network architecture for handwritten and machine-printed character recognition–LeNet. LeNet made hand engineering features redundant, because the network learns the best internal representation from raw images automatically.
LeNet- is a very simple network from the point of current standards. It only has layers, amomng which are convolutional layers(C , C , C ), pooling layers(S , S ), fully connected layer(F6) and an output layer. LeCun et al.,
C
The input for LeNet- is a x grayscale image which is passed through the first convolutional layer(C ) with filters(a.k.a convolutional kernels, or receptive fileds) having size x and a stride of . The image is then changed from x x to x x
S
Then the LeNet- applies average pooling layer with a filter size x and a stride of . The resulting image dimensions will be reduced to x x
C
Next, there is a second convolutional layer with filters having size x and a stride of . In this layer, only out of filters are connected to previous feature maps, as shown below: LeCun et al.,
The reason for not fully connecting is to break the symmetry in the network and to keep the number of connections within reasonable bounds.
S
THe fourth layer is again an average pooling layer with filter size x and a stride of . This layer is the same as S and the output would be x x
C
The fifth layer is a fully connected convolutional layer with filters each of size x . Each of the units in C is connected to all the node( x x ) in the fourth layer S .
F
The sixth layer is a fully connected layer with units.
Output layer
The final layer is a fully connected softmax output layer with possible values corresponding to the digits from to .
AlexNet
Within more than a decade after LeCun proposed LeNet- , due to the low expressivity of neural net as well as inefficient computating power, neural nets had been making slow progress. This trough continued for many years until landscape AlexNet won the ILSVRC- with a top- error of % and outperformed the runner up by % error point.
AlexNet inherented the idea of LeNet- but it expanded the neural nets much deeper. Compared to only k parameters in LeNet- , AlexNet has M parameters, k neurons, and M connections. AlexNet has layers(not including pooling layers), among which are convolutional layers and fully connected layers. Importantly, AlexNet uses max pooling instead of average pooling and are only applied after the convolutional layers.
Krizhevsky et al.,
Let’s look at this architecture closely.
Multiple filters extract interesting features in an image. In a single convolutional layer, there are usually many filters of the same size. For example, the first Conv Layer of AlexNet contains 96 filters of size x x . Note the width and height of the filter are usually the same and the depth is the same as the number of channels(here we have channels).
The first two Convolutional layers are followed by the Overlapping Max Pooling layers. The third, fourth and fifth convolutional layers are connected directly. The fifth convolutional layer is followed by an Overlapping Max Pooling layer, the output of which goes into a series of two fully connected layers. The second fully connected layer feeds into a softmax classifier with class labels.
ReLU nonlinearity is applied after all the convolution and fully connected layers. The ReLU nonlinearity of the first and second convolution layers are followed by a local normalization step before doing pooling. But researchers later didn’t find normalization very useful. So we will not go in detail over that.
Highlights of AlexNet:
-
Use ReLU as activation function, which has better effect than Sigmoid by preventinbg vanishing gradient
-
Use dropout in fully connected layer to prevent overfitting
-
Use Max pooling instead of average pooling to prevent blur
-
Use multiple GPU to parallelly compute
-
Use data augmentation to prevent overfitting
How to reduce overfitting
AlexNet uses two methods to reduce overfitting.
- Data Augmentation
Showing a Neural Net different variation of the same image helps prevent overfitting. You are forcing it to not memorize! Often it is possible to generate additional data from existing data for free! Here are few tricks used by the AlexNet team.
Data Augmentation by Mirroring
If we have an image of a cat in our training set, its mirror image is also a valid image of a cat
Data Augmentation by Random Crops
In addition, cropping the original image randomly will also lead to additional data that is just a shifted version of the original data.
- Dropout
Dropout is a technique introduced by G.E. Hinton in another paper in . In dropout, a neuron is dropped from the network with a probability of . When a neuron is dropped, it does not contribute to either forward or backward propagation. So every input goes through a different network architecture, as shown in the animation below. As a result, the learnt weight parameters are more robust and do not get overfitted easily. During testing, there is no dropout and the whole network is used, but output is scaled by a factor of to account for the missed neurons while training. Dropout increases the number of iterations needed to converge by a factor of , but without dropout, AlexNet would overfit substantially.
AGGNet
ZFNet won the ILSVRC- but since it was almost the same as AlexNet except for some size and stride change, I wont’t talk about it in thins article. And then in ILSVRC- , we have two very close winners: VGGNet achieved error of % and GoogleNet achieved of %. Let’s first look at VGGNet and then I will talk about GoogleNet in a bit.
For the big pictute, VGGNet uses smaller filters and deeper networks. Usually, when people are talking VGGNet, they are refering to VGGNet- or VGGNet- , which differ in that VGGNet- uses layes while VGGNet- usese layers. Yet they both use x x filters.
VGGNet uses convolutional layers each followed by a max pooling layer, fully connected layers, and a Softmax output layer. All activation functions are ReLU.
Highlights of VGGNet:
-
Use smaller x filters instead of large x or x
-
Use Multi-Scale Training
-
Dense Testing
-
No local response normalization(LRN) since it does not improve much
Why do we use smaller layers?
- No need to use large size filters
By using layers of × filters, it actually have already covered × area as in the above figure. By using layers of × filters, it actually have already covered × effective area. Actually, the size of the effective receptive field of a N convolutional layers stack with × filters is equal to ( N+ )x( N+ ) Thus, large-size filters such as × in AlexNet and × in ZFNet indeed are not needed.
- Number of parameters are fewer. Suppose there is only filter per layer, layer at input, and exclude the bias:
layer of
×
filter, number of parameters =
×
=
layer of
×
filter, number of parameters =
×
×
=
Number of parameters is reduced by
layer of
×
filter, number of parameters =
×
=
layers of
×
filters, number of parameters =
×
×
=
Number of parameters is reduced by
- More non-linearities
How does multi-scaling work?
As object has different scale within the image, if we only train the network at the same scale, we might miss the detection or have the wrong classification for the objects with other scales. To tackle this, authors propose multi-scale training.
For single-scale training, an image is scaled with smaller-size equal to or . Since the network accepts × input images only, the scaled image will be cropped to × . The concept is as follows:
For multi-scale training, an image is scaled with smaller-size equal to a range from to , i.e. S=[ ; ], then cropped to × . Therefore, with a range of S, we are inputting different scaled objects into the network for training.
By using multi-scale training, we can imagine that it is more accurate for test image objects with different object sizes.
- VGG-13 reduced the error rate from % to %
- VGG-16 educed the error rate from % to %
- VGG-19 reduced the error rate from % to %
What is Dense Testing?
During testing, VGGNet replace all fully connected layers by convolutional layers. This is to relax the limit of input image size so that neural nets can accept input of any height and width and this is vital in testing.
If we keep fully connected layers, images should be subject to x x to satisfy fixed size vector.
In VGGNet, the first FC is replaced by × conv. The second and third FC are replaced by × conv.
GoogleNet
GoogleNet won ILSVRC-2014 with a slightly better result compared to VGGNet. It is a little bot deeper with layers and abandons the fully connected layers.
Highlights
-
No FC layers
-
Use efficient “Inception” module
What is Inception module?
Inception module is a local network topology that combines different convolutional layers and a max polling layer in parallel and then concatenate their results depth-wise and then stack many of these modules to form the whole neural net.
Here is a naive way of doing this
The problem of this naive inception module is huge computaional complexity. For example we have a input of x x (this is not the initial input to the whole net; it is just the local input from previous module).We use zero padding when needed to maintain the same feature map size in order for depth-wise concatenation.
We see that it is very expensive to compute. So we apply a bottleneck layer that use x convolutions to reduce feature depth.
In this architecture, we have 12x less parameters than AlexNet.
ResNet
ResNet is yet another CNN architecture that drastically improve the error rate and won the ILSVRC-2015 with error of %. It is a hugely deeper neural nets with 152 layers and uses residual connections.
So now you might be wondering, since deeper layers has demonstrated explicit improvement(as shown in VGGNet and GoogleNet), can we just make the neural net as deep as possible and achieve the best possible outcome?
The answer is NO.
The first obvious reason is overfitting right? With the increase of parameters, the model starts to overfit in testing data. However, what’s strange about about it is that the training error for deeper layer is still higher.
So the hypothesis is that it is not caused by overfitting. Rather, it is an optimization problem, i.e harder to optimize.
An intuition is that the deeper model should be able to perform at least as well as the shallower model. Hence, a solution by construction is copying the learned layers from the shallower model and setting additional layers to identity mapping.
So the full ResNet architecture is
- Stack residual blocks
- Every residual block has x conv. layers
- Periodically, double # of filters anddownsample spatially using stride (/ in each dimension)
Here is the summary of ILSVRC and performance of different CNN architectures
Ackownledge:Some AlexNet pictures and
contents are adapted from
SATYA MALLICK
and some GoogleNet pictures are from Stanford CS
n.


--- layout: post title: "mlTex - Document generation for the web" desc: "" thumbnail: "" categories: article tags: {} ---
mlTex is a Javascript library to render high quality typesetting in html and pdf.
This library is intended as an improvement on LaTeX, allowing users to write professional documents in markup with the benefits of LaTeX without many of the annoyances.
See the Pen mlTex - Showcase by Mathias Grundtvig Andreasen (@MGApcDev) on CodePen.
Todo:
- No finished implementation for footnotes
- No line-breaking algorithm (will be part of my bachelor project)
- Too simple pagination algorithm (will be part of my bachelor project)


Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled with this package in the file LICENSE.txt. It is also available through the world-wide-web at this URL: http://framework.zend.com/license/new-bsd If you did not receive a copy of the license and are unable to obtain it through the world-wide-web, please send an email to<EMAIL_ADDRESS>so we can send you a copy immediately.
This is an utility class which provides index locks processing functionality
_startReadLockProcessing(
\Zend_Search_Lucene_Storage_Directory $lockDirectory
)
:
\Zend_Search_Lucene_Storage_File
Obtain the exclusive "read escalation/de-escalation" lock
Required to protect the escalate/de-escalate read lock process on GFS (and potentially other) mounted filesystems.
Why we need this: While GFS supports cluster-wide locking via flock(), it's implementation isn't quite what it should be. The locking semantics that work consistently on a local filesystem tend to fail on GFS mounted filesystems. This appears to be a design defect in the implementation of GFS. How this manifests itself is that conditional promotion of a shared lock to exclusive will always fail, lock release requests are honored but not immediately processed (causing erratic failures of subsequent conditional requests) and the releasing of the exclusive lock before the shared lock is set when a lock is demoted (which can open a window of opportunity for another process to gain an exclusive lock when it shoudln't be allowed to).
| Name | Type | Description |
|---|---|---|
| $lockDirectory | \Zend_Search_Lucene_Storage_Directory |
| Type | Description |
|---|---|
| \Zend_Search_Lucene_Storage_File |
| Exception | Description |
|---|---|
| \Zend_Search_Lucene_Exception |
_stopReadLockProcessing(
\Zend_Search_Lucene_Storage_Directory $lockDirectory
)
:
void
Release the exclusive "read escalation/de-escalation" lock
Required to protect the escalate/de-escalate read lock process on GFS (and potentially other) mounted filesystems.
| Name | Type | Description |
|---|---|---|
| $lockDirectory | \Zend_Search_Lucene_Storage_Directory |
deEscalateReadLock(
\Zend_Search_Lucene_Storage_Directory $lockDirectory
)
:
void
De-escalate Read lock to shared level
| Name | Type | Description |
|---|---|---|
| $lockDirectory | \Zend_Search_Lucene_Storage_Directory |
escalateReadLock(
\Zend_Search_Lucene_Storage_Directory $lockDirectory
)
:
boolean
Escalate Read lock to exclusive level
| Name | Type | Description |
|---|---|---|
| $lockDirectory | \Zend_Search_Lucene_Storage_Directory |
| Type | Description |
|---|---|
| boolean |
obtainOptimizationLock(
\Zend_Search_Lucene_Storage_Directory $lockDirectory
)
:
mixed
Obtain exclusive optimization lock on the index
Returns lock object on success and false otherwise (doesn't block execution)
| Name | Type | Description |
|---|---|---|
| $lockDirectory | \Zend_Search_Lucene_Storage_Directory |
| Type | Description |
|---|---|
| mixed |
obtainReadLock(
$lockDirectory
)
:
\Zend_Search_Lucene_Storage_File
Obtain shared read lock on the index
It doesn't block other read or update processes, but prevent index from the premature cleaning-up
| Name | Type | Description |
|---|---|---|
| $lockDirectory |
| Type | Description |
|---|---|
| \Zend_Search_Lucene_Storage_File |
| Exception | Description |
|---|---|
| \Zend_Search_Lucene_Exception |
obtainWriteLock(
\Zend_Search_Lucene_Storage_Directory $lockDirectory
)
:
\Zend_Search_Lucene_Storage_File
Obtain exclusive write lock on the index
| Name | Type | Description |
|---|---|---|
| $lockDirectory | \Zend_Search_Lucene_Storage_Directory |
| Type | Description |
|---|---|
| \Zend_Search_Lucene_Storage_File |
| Exception | Description |
|---|---|
| \Zend_Search_Lucene_Exception |
releaseOptimizationLock(
\Zend_Search_Lucene_Storage_Directory $lockDirectory
)
:
void
Release exclusive optimization lock
| Name | Type | Description |
|---|---|---|
| $lockDirectory | \Zend_Search_Lucene_Storage_Directory |
releaseReadLock(
\Zend_Search_Lucene_Storage_Directory $lockDirectory
)
:
void
Release shared read lock
| Name | Type | Description |
|---|---|---|
| $lockDirectory | \Zend_Search_Lucene_Storage_Directory |
releaseWriteLock(
\Zend_Search_Lucene_Storage_Directory $lockDirectory
)
:
void
Release exclusive write lock
| Name | Type | Description |
|---|---|---|
| $lockDirectory | \Zend_Search_Lucene_Storage_Directory |


Generation:
0
<<<
Pause
Random
Clear
Place cells
matrix
squares
circles
stars
fast
medium
slow
5px
10px
15px
20px


U-TURN Directed by Oliver Stone
It's a telling sign that "U-Turn" is identified in the opening credits as "An Oliver Stone Movie" rather than "An Oliver Stone Film." This is Stone in an apolitcal, even -- dare we say it -- lighthearted mood.  "U-Turn" has some of the style of "Natural Born Killers" with almost none of its satiric sting or kinetic energy, and the result is a clunky black comedy with only a few scattered laughs breaking up a monotonous cruise.
Although the story claims to be based on John Ridley's "Stray Dogs," it actually owes more to such modern film-noirs as "Red Rock West" and "Body Heat." A breakdown strands luckless gambler Sean Penn in a desert town where everyone seems to be either hot-blooded or hot-tempered. Sultry local slut Jennifer Lopez (awkwardly making her way through a role originally intended for Sharon Stone) would fall in the first category; her real-estate magnate hubby Nick Nolte belongs in the latter. Penn gets the opportunity to murder both of them, in between would-be wacky misadventures straight out of the far superior Martin Scorsese opus "After Hours."
The only real amusement is provided by the vibrant Claire Danes, playing a bubble-brained tease who desperately tries to seduce Penn into helping her escape the town, and Joaquin Phoenix, as her even dumber boyfriend, who calls himself "T.N.T." Penn can be extremely funny given the right material, but "U-Turn" affords him few opportunities to do anything except look put-upon.  Cameos by everyone from Laurie Metcalf to Liv Tyler abound, creating only momentary interest. When "U-Turn" finally comes to its long-delayed ending, you realize "Donut" would have been a far more suitable title, as your unexciting two-hour journey has only taken you around in a circle; like its hero, this show never gets on the road. James Sanford
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


Pig Dice Game
Player 1
Roll
Hold
Roll:
This Turn:
Score:
Player 2
Roll
Hold
Roll:
This Turn:
Score:
New Game