Natalie led a fantastic session with my consumer insights, sensory, and analytics teams! We focused on storytelling with data, using unique tools to simplify complex data for various audiences. In advance of the session, she took the time to build customized, relevant activities with me… and during the session she passionately brought to life new ways of thinking that could easily be applied. She was a pleasure to work with, AND I received a ton of great feedback from the team after the session.

Success is when in the days immediately following, more than a few team members came to me excitedly to show new ways that they were packaging data and influencing their teams!

Risa Schwartz

The framework that Natalie and the design thinking process helped us create has now been embraced across our entire organization.

By the end of the session ALL participants grew from it; indicating it was the best session in which they had participated in a very long time. Natalie elevated my team’s ability to understand and solve for growth in a more creative and innovative way. She astutely guided a cross-functional senior team to think about the inputs to a challenge in a more iterative manner – and to embrace the ‘process’ of discovering new opportunities solving for effective solutions.

It was the best investment made in pushing us forward so that we are collectively future-ready to deliver solutions grounded in creativity; ones that drive growth and add value in numerous ways.

Esther Franklin

Natalie is a wonderful scholar-practitioner; she is able to connect the dots between theory and practice. Her remarkable, diverse background allows her to be a unique contributor to the new global, interdisciplinary world that is rapidly emerging.

Rosalyn McPherson

Natalie is a superb facilitator! She is a great listener and helps your group to land on new insights at the end of a workshop.

a function is nullipotent if not calling it at all has the same side effects as calling it once or more

Here’s a list of the most commonly used HTTP methods and whether they are idempotent and/or safe as defined by the contract:

Idempotency and safety (nullipotentcy) are
guarantees
that server applications make to their clients and the world. It is a
cheap nike air force max area 725
standard that developers must adhere to
when implementing RESTful APIs over HTTP. An operation doesn’t
automatically become idempotent
or safe just because it is invoked using the
GET
method, if it isn’t implemented in an idempotent manner. A poorly written server application might use
GET
methods to update a record in the database or to send a message to a friend (I have seen applications that do this.) This is a really, really bad design.

Adhering to the idempotency and safety contract helps make an API fault-tolerant and robust
. Clients, middleware applications and various servers that requests pass through before reaching your application,
use this contract for various optimizations
. Clients may automatically cancel a
GET
request if it is taking too long to process and repeat it because they assume it has the same effect (since
GET
is idempotent). However, they won’t do the same thing for
POST
requests because the first one may have already altered some state on the server side. This is the reason why web browsers display a warning message that you are about to re-submit a form when you hit the back button to go to a form (For this reason, always redirect after a successful
POST
operation.) In the same veins, cache servers
don’t cache
POST requests and safe methods can pre-fetched to stored in cache to enhance performance.

Adhering to the idempotency and safety contract helps make an API fault-tolerant and robust
use this contract for various optimizations

In summary, when building RESTful applications using HTTP, it is important to implement HTTP methods in a manner that
satisfies their idempotency and safety contract, because clients and intermediaries are free to use this contract to optimize and enhance the user experience
. Don’t use
GET
method for operations that alter the database and don’t use
POST
to retrieve information (
with one exception
).

Modernize Your DBMS

Get the Free Gartner Report on Optimizing with Open Source

The
AUTO_INCREMENT
attribute can be used to generate a unique identity for new rows. When you insert a new record to the table, and the auto_increment field is or DEFAULT, the value will automatically be incremented. This also applies to 0, unless the
NO_AUTO_VALUE_ON_ZERO
SQL_MODE
is enabled.

AUTO_INCREMENT
columns start from 1 by default. The automatically generated value can never be lower than 0.

Each table can have only one
AUTO_INCREMENT
column. It must defined as a key (not necessarily the
PRIMARY KEY
or
UNIQUE
key). If the key consists of multiple columns, the
AUTO_INCREMENT
column must be the first one, unless the storage engine is or
MyISAM
.

SERIAL
is an alias for
BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
.

You can use an
ALTER TABLE
statement to assign a new value to the
auto_increment
table option, or set the
insert_id
server system variable to change the next
AUTO_INCREMENT
value inserted by the current session.

LAST_INSERT_ID()
can be used to see the last
AUTO_INCREMENT
value inserted by the current session.

Until
MariaDB 10.2.3
, InnoDB and XtraDB used an auto-increment counter that is stored in memory. When the server restarts, the counter is re-initialized to the highest value used in the table, which cancels the effects of any AUTO_INCREMENT = N option in the table statements.

It is possible to specify a value for an
AUTO_INCREMENT
column. The value must not exist in the key.

If the new value is higher than the current maximum value, the
AUTO_INCREMENT
value is updated, so the next value will be higher. If the new value is lower than the current maximum value, the
AUTO_INCREMENT
value remains unchanged.