text:
SonOTA – Flashing Itead Sonoff devices via original OTA mechanism
Long story short
There's now a script with which you can flash your sonoff device via the original internal OTA upgrade mechanism, meaning, no need to open, solder, etc. the device to get your custom firmware onto it.
This isn't perfect (yet) — please mind the issues at the end of this post!
First things first: Credits!
The problem with credits is you usually forget somebody and that's most likely happening here as well.
I read around quite a lot, gathered information and partially don't even remember anymore where I read what (first).
Of course I'm impressed by the entire Tasmota project and what it enables one to do with the Itead Sonoff and similar devices.
Special thanks go to khcnz who helped me a lot in a discussion documented here.
I'd also like to mention Richard Burtons, who I didn't interact with directly but only read his blog. That guy apparently was too bored by all the amazing tech stuff he was doing for a living, so he took a medical degree and is now working as a doctor, has a passion for horology (meaning, he's building a turrot clock), is sailing regattas with his own rs200, decompiles and reverse-engineers proprietary bootloaders in his spare time and writes a new bootloader called rboot for the ESP8266 as a side project.
EDIT: Jan Almeroth already reversed some of the protocol in 2016 and also documented the communication between the proprietary EWeLink app and the AWS cloud. Unfortunately I only became aware of that great post after I already finished mine.
Introduction Sonoff devices
Quite recently the Itead Sonoff series — a bunch of ESP8266 based IoT homeautomation devices — was brought to my attention.
The ESP8266 is a low-power consumption SoC especially designed for IoT purposes. It's sold by Espressif, running a 32-Bit processor featuring the Xtensa instruction set (licensed from Tensilica) and having an ASIC IP core and WiFi onboard.
Those Sonoff devices using this SoC basically expect high voltage input, therewith having an AC/DC (5V) converter, the ESP8266 SoC and a relais switching the high voltage output.
They're sold as wall switches ("Sonoff Touch"), E27 socket adapters ("Slampher"), power sockets ("S20 smart socket") or as just — that's most basic cheapest model — all that in a simple case ("Sonoff Basic").
They also have a bunch of sensoric devices, measuring temperature, power comsumption, humidty, noise levels, fine dust, etc.
Though I'm rather sceptical about the whole IoT (development) philosophy, I always was (and still am) interested into low-cost and power-saving home automation which is completely and exclusively under my control.
That implies I'm obviously not interested in some random IoT devices being necessarily connected to some Google/Amazon/Whatever cloud, even less if sensible data is transmitted without me knowing (but very well suspecting) what it's used for.
Guess what the Itead Sonoff devices do? Exactly that! They even feature Amazon Alexa and Google Nest support! And of course you have to use their proprietary app to confgure and control your devices — via the Amazon cloud.
However, as said earlier, they're based on the ESP8266 SoC, around which a great deal of OpenSource projects evolved. For some reason especially the Arduino community pounced on that SoC, enabling a much broader range of people to play around with and program for those devices. Whether that's a good and/or bad thing is surely debatable.
I'll spare you the details about all the projects I ran into, there's plenty of cool stuff out there.
I decided to go for the Sonoff-Tasmota project which is quite actively developed and supports most of the currently available Sonoff devices.
It provides an HTTP and MQTT interface and doesn't need any connection to the internet at all. As MQTT sever (in MQTT speech called broker) I use mosquitto which I'm running on my OpenWrt WiFi router.
Flashing custom firmware (via serial)
Flashing your custom firmware onto those devices however always requires opening them, soldering a serial cable, pulling GPIO0 down to get the SoC into programming mode (which, depending on the device type, again involes soldering) and then flash your firmware via serial.
Side note: Why do all those projects describing the flashing procedure name an "FTDI serial converter" as a requirement? Every serial TTL converter does the job.
And apart from that FTDI is not a product but a company, it's a pretty shady one. I'd just like to remind of the "incident" where FTDI released new drivers for their chips which intentionally bricked clones of their converters.
How to manually flash via serial — even though firmware replacement via OTA (kinda) works now, you still might want unbrick or debug your device — the Tasmota wiki provides instructions for each of the supported devices.
Anyway, as I didn't want to open and solder every device I intend to use, I took a closer look at the original firmware and its OTA update mechanism.
Protocol analysis
First thing after the device is being configured (meaning, the device got configured by the proprietary app and is therewith now having internet access via your local WiFi network) is to resolve the hostname `eu-disp.coolkit.cc` and attempt to establish a HTTPS connection.
Though the connection is SSL, it doesn't do any server certificate verification — so splitting the SSL connection and *man-in-the-middle it is fairly easy.
As a side effect I ported the mitm project sslsplit to OpenWrt and created a seperate "interception"-network on my WiFi router. Now I only need to join that WiFi network and all SSL connections get split, its payload logged and being provided on an FTP share. Intercepting SSL connections never felt easier.
Back to the protocol: We're assuming at this point the Sonoff device was already configured (e.g. by the official WeLink app) which means it has joined our WiFi network, acquired IP settings via DHCP and has access to the internet.
The Sonoff device sends a dispatch call as HTTPS POST request to eu-disp.coolkit.cc including some JSON encoded data about itself:
POST /dispatch/device HTTP/1.1
Host: eu-disp.coolkit.cc
Content-Type: application/json
Content-Length: 152
"accept": "ws;2",
"version": 2,
"ts": 119,
"deviceid": "100006XXXX",
"apikey": "6083157d-3471-4f4c-8308-XXXXXXXXXXXX",
"model": "ITA-GZ1-GL",
"romVersion": "1.5.5"
It expects an also JSON encoded host as an answer
Server: openresty
Date: Mon, 15 May 2017 01:26:00 GMT
Content-Type: application/json
Content-Length: 55
Connection: keep-alive
"error": 0,
"reason": "ok",
"port": 443
which is used to establish a WebSocket connection
GET /api/ws HTTP/1.1
Host: iotgo.iteadstudio.com
Connection: upgrade
Upgrade: websocket
Sec-WebSocket-Key: ITEADTmobiM0x1DaXXXXXX==
Sec-WebSocket-Version: 13
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: q1/L5gx6qdQ7y3UWgO/TXXXXXXA=
which consecutively will be used for further interchange.
Payload via the established WebSocket channel continues to be encoded in JSON.
The messages coming from the device can be classified into action-requests initiated by the device (which expect ackknowledgements by the server) and acknowledgement messages for requests initiated by the server.
The first requests are action-requests coming from the device:
1) action: register
"userAgent": "device",
"apikey": "6083157d-3471-4f4c-8308-XXXXXXXXXXXX",
"deviceid": "100006XXXX",
"action": "register",
"version": 2,
"romVersion": "1.5.5",
"model": "ITA-GZ1-GL",
"ts": 712
responded by the server with
"error": 0,
"deviceid": "100006XXXX",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"config": {
"hb": 1,
"hbInterval": 145
As can be seen, action-requests initiated from server side also have an apikey field which can be — as long its used consistently in that WebSocket session — any generated UUID but the one used by the device.
2) action: date
"userAgent": "device",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"deviceid": "100006XXXX",
"action" :"date"
responded with
"error": 0,
"deviceid": "100006XXXX",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"date": "2017-05-15T01:26:01.498Z"
Pay attention to the date format: it is some kind ISO 8601 but the parser is really picky about it. While python's datetime.isoformat() function e.g. returns a string taking microseconds into account, the parser on the device will just fail parsing that. It also always expects the actually optional timezone being specified as UTC and only as a trailing
Z (though according to the spec "00:00" would be valid as well).
3) action: update — the device tells the server its switch status, the MAC address of the accesspoint it is connected to, signal quality, etc.
This message also appears everytime the device status changes, e.g. it got switched on/off via the app or locally by pressing the button.
"userAgent": "device",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"deviceid": "100006XXXX",
"action": "update",
"params": {
"switch": "off",
"fwVersion": "1.5.5",
"rssi": -41,
"staMac": "5C:CF:7F:F5:19:F8",
"startup": "off"
simply acknowlegded with
"error": 0,
"deviceid": "100006XXXX",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX"
4) action: query — the device queries potentially configured timers
"userAgent": "device",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"deviceid": "100006XXXX",
"action": "query",
"params": [
as there are no timers configured the answer simply contains a
"params":0 KV-pair
"error": 0,
"deviceid": "100006XXXX",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"params": 0
That's it – that's the basic handshake after the (configured) device powers up.
Now the server can tell the device to do stuff.
The sequence number is used by the device to acknowledge particular action-requests so the response can be mapped back to the actual request. It appears to be a UNIX timestamp with millisecond precision which doesn't seem like the best source for generating a sequence number (duplicates, etc.) but seems to work well enough.
Let's switch the relais:
"action": "update",
"deviceid": "100006XXXX",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"userAgent": "app",
"sequence": "1494806715179",
"ts": 0,
"params": {
"switch": "on"
"from": "app"
"action": "update",
"deviceid": "100006XXXX",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"userAgent": "app",
"sequence": "1494806715193",
"ts": 0,
"params": {
"switch": "off"
"from": "app"
As mentioned earlier, each action-request is responded with proper acknowledgements.
And — finally — what the server now also is capable doing is to tell the device to update itself:
"action": "upgrade",
"deviceid": "100006XXXX",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"userAgent": "app",
"sequence": "1494802194654",
"ts": 0,
"params": {
"downloadUrl": "http://184.108.40.206:8088/ota/rom/xpiAOwgVUJaRMqFkRBsoI4AVtnozgwp1/user1.1024.new.2.bin",
"digest": "1aee969af1daf96f3f120323cd2c167ae1aceefc23052bb0cce790afc18fc634",
"name": "user1.bin"
"downloadUrl": "http://188.8.131.52:8088/ota/rom/xpiAOwgVUJaRMqFkRBsoI4AVtnozgwp1/user2.1024.new.2.bin",
"digest": "6c4e02d5d5e4f74d501de9029c8fa9a7850403eb89e3d8f2ba90386358c59d47",
"name": "user2.bin"
"model": "ITA-GZ1-GL",
"version": "1.5.5",
After successful download and verification of the image's checksum the device returns:
"error": 0,
"userAgent": "device",
"apikey": "85036160-aa4a-41f7-85cc-XXXXXXXXXXXX",
"deviceid": "100006XXXX",
"sequence": "1495932900713"
downloadUrl field should be self-explanatory (the following HTTP GET request to those URLs contain some more data as CGI parameters which however can be ommitted).
digest is a sha256 hash of the file and the name is the partition onto which the file should be written on.
Implementing server side
After some early approaches I decided to go for a Python implementation using the tornado webserver stack.
This decision was mainly based on it providing functionality for HTTP (obviously) as well as websockets and asynchronous handling of requests.
The final script can be found here: https://github.com/mirko/SonOTA
==> Trial & Error
1st attempt
user1.1024.new.2.bin and
user2.20124.new.2.bin almost look the same, let's just use the same image for both, in this case a tasmota build:
MOEP! Boot fails.
Reason: The tasmota build also contains the bootloader which the Espressif OTA mechanism doesn't expect being in the image.
2nd attempt
Chopping off the first
0x1000 bytes which contain the bootloader plus padding (filled up with
0xAA bytes).
MOEP! Boot fails.
Boot mode 1 and 2 / v1 and v2 image headers
The (now chopped) image and the original upgrade images appear to have different headers — even the very first byte (the files' magic byte) differ.
The original image starts with
0xEA while the Tasmota build starts with
Apparently there are two image formats (called v1 and v2 or boot mode 1 and boot mode 2).
The former (older) one — used by Arduino/Tasmota — starts with
0xE9, while the latter (and apparently newer one) — used by the original firmware — starts with
The technical differences are very well documented by the ESP8266 Reverse Engineering Wiki project, regarding the flash format and the v1/v2 headers in particular the SPI Flash Format wiki oage.
The original bootloader only accepts images starting with
0xEA while the bootloader provided by Arduino/Tasmota only accepts such starting with
3rd attempt
Converting Arduino images to v2 images
Easier said than done, as the Arduino framework doesn't seem to be capable of creating v2 images and none of the common tools appear to have conversion functionality.
Taking a closer look at the esptool.py project however, there seems to be (undocumented) functionality.
esptool.py has the
elf2image argument which — according source — allows switching between conversion to v1 and v2 images.
When using
elf2image and also passing the
--version parameter — which normally prints out the version string of the tool — the
--version parameter gets redefined and expects an then argument:
1 or
Besides the sonoff.ino.bin file the Tasmota project also creates an sonoff.ino.elf which can now be used in conjunction with esptool.py and the
elf2image-parameter to create v2 images.
esptool.py elf2image --version 2 tmp/arduino_build_XXXXXX/sonoff.ino.elf
Remember the
upgrade-action passed a 2-element list of download URLs to the device, having different names (user1.bin and user2.bin)?
This procedure now only works if the user1.bin image is being fetched and flashed.
Differences between user1.bin and user2.bin
The flash on the Sonoff devices is split into 2 parts (simplified!) which basically contain the same data (user1 and user2). As OTA upgrades are proven to fail sometimes for whatever reason, the upgrade will always happen on the currently inactive part, meaning, if the device is currently running the code from the user1 part, the upgrade will happen onto the user2 part.
That mechanism is not invented by Itead, but actually provided as off-the-shelf OTA solution by Espressif (the SoC manufacturer) itself.
For 1MB flash chips the user1 image is stored at offset
0x01000 while the user2 image is stored at
And indeed, the two original upgrade images (user1 and user2) differ significantly.
If flashing a user2 image onto the user1 part of the flash the device refuses to boot and vice versa.
While there's not much information about how user1.bin and user2.bin technically differ from each other, khcnz pointed me to an Espressif document stating:
user1.bin and user2.bin are [the] same software placed to different regions of [the] flash. The only difference is [the] address mapping on flash.
4th attempt
So apparently those 2 images must be created differently indeed.
Again it was khcnz who pointed me to different linker scripts used for each image within the original SDK.
reveals that the irom0_0_seg differs (
org = 0x40100000 vs. org =
As Tasmota doesn't make use of the user1-/user2-ping-pong mechanism it conly creates images supposed to go to
0x1000 (=user1-partition).
So for creating an user2.bin image — in our case for a device having a 1MB flash chip and allocating (only) 64K for SPIFFS — we have to modify the following linker script accordingly:
--- a/~/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/ld/eagle.flash.1m64.ld
+++ b/~/.arduino15/packages/esp8266/hardware/esp8266/2.3.0/tools/sdk/ld/eagle.flash.1m64.ld
dport0_0_seg : org = 0x3FF00000, len = 0x10
dram0_0_seg : org = 0x3FFE8000, len = 0x14000
iram1_0_seg : org = 0x40100000, len = 0x8000
- irom0_0_seg : org = 0x40201010, len = 0xf9ff0
+ irom0_0_seg : org = 0x40281010, len = 0xf9ff0
PROVIDE ( _SPIFFS_start = 0x402FB000 );
So we will now create an user1 (without above applied modification> and an user2 (with above modification> image and converting them to v2 images with esptool.py as described above.
Depending on whether the original firmware was loaded from the user1 or user2 partition, it will fetch and flash the other image, telling the bootloader afterwards to change the active partition.
Mission accomplished? Not just yet…
Although our custom firmware is now flashed via the original OTA mechanism and running, the final setup differs in 2 major aspects (compared to if we would have flashed the device via serial):
- The bootloader is still the original one
- Our custom image might have ended up in the user2 partition
Each point alone already results in the Tasmota/Adruino OTA mechniasm not working.
Additionally — since the bootloader stays the original one — it still only expects v2 images and still messes with us with its ping-pong-mechanism.
This issue is already being addressed though and discussed on how to be solved best in the issue ticket mentioned at the very beginning.
Happy hacking!
intel 540s SSD fail
My intel SSD failed. Hard. As in: its content got wiped. But before getting way too theatrical, let's stick to the facts first.
I upgraded my Lenovo ThinkPad X1 Carbon with a bigger SSD in the late summer this year — a 1TB intel 540s (M.2).
The BIOS of ThinkPads (and probably other brands as well) offer to secure your drive with an ATA password. This feature is part of the ATA specification and was already implemented and used back in the old IDE times (remember the X-BOX 1?).
With such an ATA password set, all read/write commands to the drive will be ignored until the drive gets unlocked. There's some discussion about whether ATA passwords should or shouldn't be used — personally I like the idea of $person not being able to just pull out my drive, modify its unencrypted boot record and put it back into my computer without me noticing.
In regard of current SSDs the ATA password doesn't just lock access to the drive but also plays part in the FDE (full disk encryption) featured by modern SSDs — but back to what actually happened…
As people say, it's good practice to frequently(TM) change passwords. So I did with my ATA password.
And then it happened. My data was gone. All of it. I could still access the SSD with the newly set password but it only contained random data. Even the first couple of KB, which were supposed to contain the partition table as well as unencrypted boot code, magically seem to have been replaced with random data. Perfectly random data.
So, what happened? Back to FDE of recent SSDs: They perform encryption on data written to the drive (decryption on reads, respectively) — no matter if you want it or not.
Encrypted with a key stored on the device — with no easy way of reading it out (hence no backup). This is happening totally transparently; the computer the device is connected to doesn't have to care about that at all.
And the ATA password is used to encrypt the key the actual data on the drive is encrypted with. Password encrypts key encrypts data.
Back to my case: No data, just garbage. Perfectly random garbage. First idea on what happened, as obvious as devastating: the data on the drive gets read and decrypted with a different key than it initially got written and encrypted with. If that's indeed the case, my data is gone.
This behaviour is actually advertised as a feature. intel calls it "Secure Erase". No need to override your drive dozens of times like in the old days — therewith ensuring the data is irreversible vanished in the end. No, just wipe the key your data is encrypted with and done. And exactly this seems to have happened to me. I am done.
Fortunately I made backups. Some time ago. Quite some time ago. Of a few directories. Very few. Swearing. Tears. I know, I know, I don't deserve your sympathies (but I'd still appreciate!).
Anger! Whose fault is it?! Who to blame?!
Let's check the docs on ATA passwords, which appear to be very clear — from the official Lenovo FAQ:
"Will changing the Master or User hard drive password change the FDE key?"
– "No. The hard drive passwords have no effect on the encryption key. The passwords can safely be changed without risking loss of data."
Not my fault! Yes! Wait, another FAQ entry says:
"Can the encryption key be changed?"
– "The encryption key can be regenerated within the BIOS, however, doing so will make all data inaccessible, effectively wiping the drive. To generate a new key, use the option listed under Security -> Disk Encryption HDD in the system BIOS."
Double-checking the BIOS if I unintentionally told my BIOS to change the FDE key. No, I wasn't even able to find such a setting.
Okay — intermediate result: either buggy BIOS telling my SSD to (re)generate the encryption key (and therewith "Secure Erase" everything on it) or buggy SSD controller, deciding to alter the key at will.
Google! Nothing. Frightening reports about the disastrous "8MB"-bug on the earlier series 320 devices popped up. But nothing on series 540s.
If nothing helps and/or there's nobody to blame: go on Twitter!
#ssd (@intel 540s) wiped after changing the ATA password in @lenovo #thinkpad BIOS. Either buggy BIOS or broken SSD controller. Be careful.
— mirko (@foobarblablub) October 25, 2016
Some Ping-Pong:
@IntelSSD @intel @IntelSupport @lenovo LSF031C
— mirko (@foobarblablub) October 25, 2016
@foobarblablub @intel @IntelSupport @lenovo thank you for contacting us Mirko. This is an issue that was fixed in the latest FW.
— Intel SSD (@IntelSSD) October 26, 2016
Wait, what?! That's a known issue? I didn't find a damn thing in the whole internets! Tell me more!
And to my surprise – they did. For a minute. Shortly before having respected tweets deleted.
Let's take a look on what my phone cached:
The deleted tweets contain a link http://intel.ly/2eRl73j which resolves to https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00055&languageid=en-fr which is an advisory seemingly describing exactly what happened to me:
"In systems with the SATA devsleep feature enabled, setting or resetting the user or master password by the ATA security feature set may cause data corruption."
Later on:
"Intel became aware of this issue during early customer validation."
I guess I just became aware of being part of the "early customer validation"-program. This issue: Personally validated. Check.
Ok, short recap:
- intel has a severe bug causing data loss on 540s SSD and – according to the advisory – other series as well
- intel knows about it (advisory dates to 1st of August)
- intel doesn't seem to be eager to spread the word about it
- affected intel SSDs are sold with the vulnerable firmware version
- nobody knows a damn thing about it (recall the series 320 issue which was big)
Meanwhile, I could try to follow up on @lenovo's tips:
@foobarblablub Or from the Intel website https://t.co/sLiVTzQPcC or via the SSD Toolbox https://t.co/jnw2fxbDrj
— Lenovo (@lenovo) October 26, 2016
Sounds good! Maybe, just maybe, that could bring my data back.
Let's skip the second link, as it contains a dedicated Windows software I'd love to run, but my Windows installation just got wiped (and I'm not really keen of reinstalling and therewith overriding my precious maybe-still-not-yet-permamently-lost data).
The first link points to an ISO file. Works for me! Until it crashes. Reproducibly. This ISO reproducibly crashes my Lenovo X1 Carbon 3rd generation. Booting from USB thumb-drive (officially supported it says), as well as from CD. Hm.
For now I seem to have to conclude with the following questions:
- Why
there's notI can't find a damn thing about this bug in the media?
- Why did intel delete its tweets referencing this bug?
- Why does the firmware-updater doesn't do much despite crashing my computer?
- Why didn't I do proper backups?!
- How do I get my data back?!?1ß11
PS: Before I clicked the Publish button I again set up a few search queries. Found my tweets.
Flash memory
- How many read/write cycles and for which amount of size the flash needs to last without failure?
- NOR or NAND flash?
- SLC (single cell) or MLC (multi cell) flash?
- What about bad blocks and how to deal with them?
- How much flash space in spare do I need for my project?
- If a filesystem is needed: what kind of filesystem?
Erase blocks and erase cycles
Hardware vs. Software
NAND vs. NOR
- bad write performance (several times slower than on NAND flash)
- the very same erase block gets erased far more often and therewith exceed the 'max. erase cycles' far easier (in addition: erase cycles are usually about 1000 times less on NOR than on NAND flash)
Bad blocks
Hardware vs. Software
NAND vs. NOR
PostgreSQL – altering table name does not update references to its primary key and sequence automatically
During a setup of multiple PostgreSQL instances, replicating content via the replication framework Slony-I, I had to manually create the very same SQL schema to every Postgres node – as Slony just replicates the payload data and not the actual SQL schemas.
I was creating tables like this on every node:
CREATE TABLE x (
id SERIAL PRIMARY KEY,
content VARCHAR(255) DEFAULT NULL
but decided after half of having those nodes I already configured to rename the table from 'x' to 'y' using the 'ALTER TABLE' command
ALTER TABLE x RENAME TO y;
and continued creating the schemas on the remaining nodes with the following command:
CREATE TABLE y (
id SERIAL PRIMARY KEY,
content VARCHAR(255) DEFAULT NULL
After finally having provided the schema to all nodes I started the replication daemons and got thrown errors from half of the nodes that replication doesn't work properly since the schema doesn't match the one on the master replication server:
CESTERROR remoteWorkerThread_1: "select "_db".setAddTable_int(1, 3, '"public"."y"', 'x_pkey', 'Table public.y with primary key'); " PGRES_FATAL_ERROR ERROR: Slony-I: setAddTable_int(): table "public"."y" has no index x_pkey
All of the non-working nodes were those, I first created the table x on and later renamed it to y, instead of just directly creating table y like I did on the others.
Looking at the global table definitions – including the automatically co-created sequence – you can see that the table did get renamed, but the sequence didn't:
Table y directly created:
postgres=# d
List of relations
Schema | Name | Type | Owner
public | y | table | postgres
public | y_id_seq | sequence | postgres
(4 rows)
Table x created and altered to be named y:
postgres=# d
List of relations
Schema | Name | Type | Owner
public | y | table | postgres
public | x_id_seq | sequence | postgres
(4 rows)
That normally doesn't cause any trouble, since the reference of table y (formerly x) to the sequence x_id_seq is still valid. However since replication requires the very exact same schema on every node this actually is causing trouble. However that's not the error mentioned in the error message above, which is referring to the primary key.
Diff'ing the actual schemas shows up more differences:
Table "public.y"
Column | Type | Modifiers
– id | integer | not null default nextval('x_id_seq'::regclass)
+ id | integer | not null default nextval('y_id_seq'::regclass)
content | character varying(255) | default NULL::character varying
– "x_pkey" PRIMARY KEY, btree (id)
+ "y_pkey" PRIMARY KEY, btree (id)
The reference to the sequence and and name of the reference to the value of the primary key were NOT updated by altering the table name to match again. This separation of table-name and references might be a feature, however I find it hard to imagine a use-case where it makes sense using the sequence and/or primary key of another table. UPDATE: I just got told that it indeed might make sense sharing one sequence among several tables.
Also sequence and primary key were created inside / co-created by the 'CREATE TABLE' statement, so at least I'd find it more consistent if both would be always reference by this table, by means of the table they got originally created with.
Looking for information, hints or documentation about this behaviour wasn't fruitful as well.
So personally I'd really like to really see those reference updated – by changing the tables name – automatically. I'd like to see at least a NOTICE that primary key and sequence are still haveing the name of / are referring to it's old values and need to be updated / re-created to match again.
Conclusion: Make sure – when altering table names in Postgres – references to primary key and sequence are getting updated as well – manually! Primary key and sequence are NOT tied together with the table they got created with!
LinuxInput devices (in Qt embedded) – take care!
I'm currently working on an embedded project based on Linux which involves a graphical user interface based on Qt.
In our case Qt accesses framebuffer as well as the LinuxInput devices directly – there is no further layer (DirectFB, Xorg, Wayland, etc.) in between.
In this quite common scenario I noticed that Qt is treating the LinuxInput devices in a quite counterintuitive way which may lead into severe security problems.
The embedded device we are using in this particular project has a keyboard which to the userland is exposed as LinuxInput device.
Everything worked quite well, however our Qt application crashed once due to a programming error (our fault) and I was shown the underlying UNIX console which reflected every single keystroke I did inside the Qt application – all typing input within the Qt application also got passed to other applications / underlying shells!
An exposed root shell to the active TTY – possibly hidden by the GUI – is therewith also capturing all input. Since almost all linux (embedded) distributions are exposing login prompts / shells to all TTYs by default, this scenario is far from being unlikely.
My expected behavior would have been: the Qt application is opening the LinuxInput devices exclusively, so that only the Qt application receives data from the input devices.
After some research and asking around I got pointed to the EVIOCGRAB IOCTL implemented in the LinuxInput subsystem.
As stated in $(LINUX_KERNEL)/include/input/linux.h:
@grab: input handle that currently has the device grabbed (via
EVIOCGRAB ioctl). When a handle grabs a device it becomes sole
recipient for all input events coming from the device
This means: When opening LinuxInput devices they're not grabbed, they're not opened exclusively by default.
Okay, I got it 🙂
So let's just find the magic option / command which tells Qt to set up an EVIOCGRAB with an appropriate argument on the going-to-be-used LinuxInput device. Since I didn't find any documentation I grep'ed through the Qt source:
> ~/src/qt.git$ git grep EVIOCGRAB
> ~/src/qt.git$
nothing… so I took a closer look into how Qt implemented support for LinuxInput devices (src/gui/embedded/qkbdlinuxinput_qws.cpp) – still nothing…
So I implemented support for telling Qt to open LinuxInput devices exclusively by optionally passing an 'grab'-argument to the LinuxInput drivers inside Qt.
And here it is – a patch which adds support for passing another parameter named 'grab' to the LinuxInput device driver of Qt – to specify whether the device should be opened exclusively (grabbed) or not.
Conclusion: Take care when using Qt and its LinuxInput drivers – all input might be received and used by other applications as well – including shells running on TTYs.
UPDATE: The patch finally git committed and went upstream. Grabbing can now be configured since Qt version 4.8 (http://www.qt.gitorious.org/qt/qt/commit/947aaa79b05adec527c7500e36766c7ff19f118d/diffs)
RFM12 – kernel patches
Since I got asked several times about the pin mappings and wirings between the rfm12 modules and GPIOs of the devices providing them (in my case the Netgear WGT634U router / the Qi NanoNote) I'd like to try making some things clearer:
In Linux the use of buses is tried to get as abstracted as possible – the idea is that the actual boards (or call it whatever you like as devices, platforms etc) define and expose the capability of buses and its properties.
In our case the rfm12 kernel module requires the availability of an SPI bus – it doesn't matter how it is implemented (native SPI bus, SPI over GPIOs or any other way of implementation). The client module – the kernel module implementing an driver for the actual rfm12 hardware – simply doesn't care and doesn't need to know about that.
That's the reason why the actual rfm12 code doesn't contain any GPIO <-> rfm12 hardware mappings – the rfm12 code is just using an existing and otherwise exposed SPI bus.
The actual wiring / mapping and setup of the SPI bus is done within the platform / board / device code, which is located below arch/${ARCH}/${BOARD} – a common place for code like that is arch/${ARCH}/${BOARD}/setup.c.
This project however seemed to have raised some interest and I got asked quite a few times about the board specific changes I made – so here they are now:
the kernel patches which provide SPI buses on both boards, including GPIO mappings.
Since both targets I used the rfm12 module and driver on are running OpenWrt, I created both patches against the Linux vanilla tree having OpenWrt specific kernel patches already applied.
Changes however are small and clear, so they should be easy to understand and adapt.
The wiring I used to get the rfm12 module working on the NanoNote working by the way is the following:
GPIO | PIN on SD port | PIN on module | purpose / description
108 | D12 (1) | MISO / SDO | SPI: master input slave output
109 | D13 (2) | nIRQ | interrupt
104 | D08 (3) | (unused) | (unused)
X | VDD (4) | VDD | power
105 | D09 (5) | MOSI / SDI | SPI: master output slave input
X | VSS (6) | GND (1+2) | ground
106 | D10 (7) | SCK | SPI: clock
107 | D11 (8) | nSEL | SPI: chip select
There needs to be a resistor (10-100kOhm) between pin FSK (if used) of
the rfm12 module and VDD as pullup – however when just using ASK it isn't needed anyway.
GDB behaves strange while debugging threads
While debugging issues involving binaries on a system running Linux, having a debugger such as GDB available is quite helpful.
However while working on a certain project we recently experienced quite some issues debugging applications involving threads.
Debugging the application on my local workstation worked quite fine, however on OpenWrt-targets – ARM as well as MIPS – it behaved rather strange: stack corruptions, missing traces, weird signals got issued…
After quite some time of debugging the debug issue, we found out the issue is caused by a stripped version of libpthread.so.
Stripped – not in the sense of a more lightweight but compatible version of the pthread library – but stripped by the utility "strip", which purges all debug- and "other unneeded" symbols out of binaries to reduce their size, which usually is applied on all binaries by the OpenWrt framework automatically.
Usually binaries stripped by "strip" are still fully-fledged binaries, still usable with GDB (however without debugging symbols available of course). Applying strip on libpthread.so* however, it seems to strip out also stuff needed by GDB following and tracing threads. Without these symbols / meta-information not needed for running the actual application, but for tracking its threads, GDB results in mentioned issues above.
One might ask why someone is debugging binaries without debug symbols compiled in – reasons are obvious:
- there's not enough storage available
- there's not enough RAM available
- using gdbserver and having the binaries with debug symbols compiled in on another machine communicating with gdbserver
To check whether an object got stripped or not is quite easy using the "file" util:
$ file build_dir/target-arm_v5te_uClibc-0.9.30.1_eabi/root-foo/lib/libpthread-0.9.30.1.so
build_dir/target-arm_v5te_uClibc-0.9.30.1_eabi/root-foo/lib/libpthread-0.9.30.1.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
$ file staging_dir/target-arm_v5te_uClibc-0.9.30.1_eabi/root-foo/lib/libpthread-0.9.30.1.so
staging_dir/target-arm_v5te_uClibc-0.9.30.1_eabi/root-foo/lib/libpthread-0.9.30.1.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
Long story short: When debugging applications involving threads, always use a non-stripped version of libpthread.so, even if debug symbols are not needed!
Ben NanoNote able to control radio power sockets
The Ben NanoNote is now able to switch radio controlled power sockets, too!
The rfm12 433MHz module, produced by HopeRF, is attached to the microSD port of the Ben NanoNote, which pins are exposed via an microSD card dummy adapter.
The System-on-a-chip used inside the Ben NanoNote (ingenic JZ47XX) allows us to put the microSD pins into GPIO mode, so we can (as already done for the first device, the Netgear WGT634u router, I connected an rfm12-module to) create and export an SPI bus on top of them to be able communicating with the module.
That way there's no need of opening the device and/or soldering anything anywhere – the module is attached directly to the microSD dummy which gets simply inserted into microSD slot of the NanoNote.
I wrote a basic but fully working ncurses frontend using the rfm12 library listing configured devices waiting for getting switched.
There's also a ready-to-use XMLRPC daemon available which exposes all configured devices and provides functions for controlling them, so UIs for controlling devices are not limited to run on the same system the rfm12 module is installed on.
I've also written a little GUI in python using the qt4 toolkit, connecting to the master via XML-RPC:
Several other frontends are work-in-progress as e.g. a GUI for the Android platform, as well as one based on qt4/QML being able to run e.g. on phones running Meego/Maemo as operating system – both using the XML-RPC interface.
So all major parts of the project are mostly finished now and the API is more or less fix.
The the whole project now consists of (a rough overview):
- the kernel module which communicates with the actual hardware (so the rfm12 module) and exposes a character device to userspace
- the rfm12 library which
- connects to the kernel module
- contains the device type specific data and code to modulate signals which control the actual power sockets
- provides functions for reading / writing configuration files and controlling / switching devices
- UI applications linked directly against librfm12 (an ncurses frontend (shown above) is available yet)
- daemons providing network interfaces (a daemon exporting functionality via XMLRPC is available yet , one doing the same but using JSON-RPC as underlying rpc method is going to be implemented soon)
Devices are getting configured via configuration files, describing the product type of the device, a name and the actual code which is used to identify devices of a certain product type group.
The config used by the applications shown on the photos / screenshots above just looks this:
[socket_A]label = "one"product = "P801B"code = "1111110000"[socket_B]label = "two"product = "2272"code = "1111110000"[socket_C]label = "three"product = "2272"code = "1111101000"
One of the tasks I'm working on right now, is state sharing. While the list of configured devices and it's states (on/off) is already shared among all XML-RPC clients (so having switched a unit in one client, others will fetch the changed state next time they poll/refresh), the state is not yet shared between several processes invoking the librfm12.
Issue is: Every process linked against librfm12 creates its own list of devices, including states – so every process has its own copy. Changes done in one process are not shared among others. This could be solved using IPC (System V shared memory, sockets every instance connects to, etc.).
That's it – feedback and/or participation is highly appreciated!
Source Code is still available on github: https://github.com/mirko/rfm12-ASK-for-linux 🙂
RFM12 under Linux and remote controlled power sockets
Currently I'm working on a project communicating and transmitting signals over the air with an 433 MHz radio module called "rfm12", produced by HopeRF, soldered onto devices capable of running OpenWrt and having at least 3 accessible GPIO's.
Short story long:
These radio modules are capable of sending / receiving over the ISM frequency band, as e.g. 433 MHz or 868 MHz and just cost about 5 Euros.
The idea was to get the module working on several embedded boards running Linux, e.g. routers, microcomputers such as the NanoNote, etc. via a generic software interface.
The rfm12 module is controlled via the 4-wire protocol SPI which basically is based on toggling pins between the machine's logic-levels (high/low) at an individual non-specified clock-speed (http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus).
Since most of mentioned boards do not own a native SPI bus, but several GPIO's (most LED's are connected via GPIO's on such devices), SPI can be "emulated" by toggling these GPIO's in a specific way (also called "bitbanging").
That way there's no need for any other electronic peripherals such as microcontrollers, semiconductors, resistors, etc. – the chip is directly connected with the board – everything is done in software.
Inspired by the project "ethersex" – a project programming and maintaining a software for Atmel AVR micro-controllers used for home- / building automation – and an approach of soldering the module onto a specific router, communicating via SPI over GPIO's (however used code is rather old, unmaintained and board-specific) – the idea came up to write a generic linux kernel module to support the module from within linux directly.
Based on the ideas realised with the ethersex project, I decided to aim my project on being able to switch remote controlled power sockets of which I own several (to each other incompatible) modules.
Because the rfm12 module is (only) capable of doing FM (modulating payload data on top of the frequency), but lot's of devices are controlled via AM (most remote controlled power sockets included), we emulate AM by simply turning the module on and off in a specific sequence.
Since this operation is timing critical and needs to be atomic, we need to do basic stuff in the kernel space rather than from userspace.
The whole project is going to consist of 4 major parts:
- the rfm12 driver as kernel module which provides an API (accessible via a character device) to the userspace
- an userspace library which contains all the information and protocol (meta)data for such remote controllable devices, providing an (more or less) generic interface and configuration of devices
- an actual application using the library, so controlling the devices – maybe exporting the available functions via RPC (json, xml, etc.) to provide network access
- a remote usable UI (for mobile devices as phones (android/meego), web-related, qt/gtk…)
My testing device is an old Netgear WGT634U I had in spare which has a broadcom 47xx SoC working in and 4 unused GPIO's available.
Implemented yet is support for the most common radio controlled sockets sold – the ones which have a 2272/2262 IC built in (including these Chinese versions which get on fire – http://ec.europa.eu/consumers/dyna/rapex/create_rapex.cfm?rx_id=142 #25) and the ones using an P801B chip.
I also have a set of radio controlled dimmers which protocol I'm going to implement soon…
For now the source code is hosted on github: https://github.com/mirko/rfm12-ASK-for-linux – there's no project site yet but will be created if the project is growing / interest is getting raised 🙂
UPDATE: In case you're willing to participate, you're more than welcome! Just drop me an email… There's lot's of stuff I'd like to see implemented, especially usable (G)UI's… but for sure it's not just about me: patches, feedback, enhancements and feature-requests (in a certain extent) are highly appreciated!
comments, twitter…
I recognized just a few hours ago, there were comments written, which needed to be approved…
Did so now and tried to respond to them – sorry for the delay and thanks a lot for your input/contributions!
As most people reading my blog do know already anyway and I no longer feel ashamed of using it…
My twitter username: foobarbablub – respectively the twitter page: http://twitter.com/foobarblablub
Polluting the twitter cloud with statements / impressions I don't think they're worth a whole blog post… most tweets are not related to technical / computer stuff by the way – used language is mostly English…


text:
I am not from your community or even your county. I am a retired teacher and have 16 years experience driving buses for the Brunswick County School System.
To the editor:
I am not from your community or even your county. I am a retired teacher and have 16 years experience driving buses for the Brunswick County School System.
I have driven students to their sporting events on and off during that time; however, since I retired from teaching, I have been driving various sports teams full-time for the last three years to their athletic games. I have driven to schools from Socastee, S.C., as well as up and down North Carolina�s East Coast and inland as far west as Western Alamance High School.
Now that you know some of my background, you must realize I have had some experiences. Of all the schools I have ever driven to, Richlands High School is the best all around!
On March 12, I had the privilege to drive the West Brunswick High School Girls Soccer Team to the beautiful, well-manicured campus of Richlands High School. Since this was my first trip there, I was not aware as to where I needed to park the bus. Students walking on campus willingly and politely let me know the buses usually parked by the gym area but those spaces were filled with cars.
I parked and unloaded the girls and their coaches in another parking area nearby. While I was walking toward the field, I asked some gentlemen wearing school shirts on where buses normally park. They were overwhelmingly apologetic, seemingly for not being present when I pulled in to show me where to park.
I felt like they were genuinely concerned and that making us feel welcome to Richlands� campus was the priority on their agenda for the day. They showed me where I would park and by the time I got the bus to that area, the cars were gone. I was not left alone to back the bus in; instead, one of Richlands� coaches personally motioned me into the exact spot in which I needed to be.
Wouldn�t you know it � he had me back the bus up so it was directly in front of the girls locker and dressing room? How convenient is that?
The congeniality did not stop there. Later, the head soccer coach (I think) asked what kind of sandwich I wanted from McDonald�s. He was going there and �nothing� wouldn�t do; he insisted that I have a hot sandwich for driving the distance to his school! And they were still not done.
I did not have a broom on the bus to complete my cleaning and when asking some gentlemen in one of the buildings, they acted very kindly in letting me use one they had. In fact, they were so nice about it, I bet if I had asked, I believe they would have swept the bus for me!
So, to the community, faculty and staff of Richlands High School: Be proud of what and who you are � you walk the talk in a way we all need to.
Brunswick County

subset: commoncrawl


text:
Do you want to sell off your residence? If you are, you are most probably going to desire to meet with a real estate professional for support. They'll give you additional hints to be able to ready your property for the marketplace to make sure you obtain a greater total price. They'll likewise be able to identify your home in the in your community so that the most significant volume of prospective buyers find your home. They'll cope with everything for you, so that you don't need to be concerned with it.
If you find yourself putting together your own home for selling, you'll need it to be in the best shape achievable. Even if you don't have a large amounts of money to put into your home, getting rid of all the objects as you possibly can and reserving a storage unit for the valuables makes a large enhancement. Probable purchasers want to see how large the house is plus envision his or her own goods in the place, not likely look at the children's playthings tossed all around or even all your kitchen area gadgets on top of the counter tops.
Your own realtor may look your own house from a customer's prospective so you know exactly what can be improved so that you can attain your price range. In case it is extremely important to you for you to obtain the total price you need, you are going to wish to make employing a realtor the initial thing you do on your way to marketing your property.


text:
|| FAQ/About us | Browse | Memo | Random Quotes | Help |
Looking for a book? Want a deal?
No problem AddALL!
Search and Compare among 40+ sites, 20,000 sellers, millions of books!
The book search engine that allows you to comparison shop
more than 40 online bookstores including Amazon, Barnes and Noble, and Borders.
You can expect the most complete book search and the best price Internet-wide when you use AddAll
and comparison shop for:
[ New Books | Used Books | Cheap Magazines ]


text:
Goldilocks Puppets
Leluna Star
This set of Goldilocks finger puppets is ready to keep your child entertained for hours! These soft toys would be great for a road trip! Each puppet measures approximately 3.5" tall and is big enough to fit an adult finger. Crafted from felt, cut by hand and machine stitched. The Bag is made from felt.
1 for $6
House Bag for $8
4 for $20 - add in the Note field which 4 you want
Entire Set for $28
Great for toddlers fine motor skill (dexterity to put on all 5 on each of their fingers) or for party favors.
Each of the puppets are a handmade item made-to-order, therefore, the items placement might differ slightly due to its handmade nature. These finger puppets are MADE-TO-ORDER.
We have over 200 finger puppet sets available for purchase and are adding more every month. If there is a design that you are looking for and can't find, please contact us at email@example.com.
While my items are very carefully stitched, usage is recommended for children 3 years and older due to safety. Supervision is required at all times for items containing small pieces.


text:
Few historical Jesus scholars doubt the importance of the oral culture of Jesus' earliest followers. Yet few investigate the nature of eyewitness testimony, memory, or collective memory. McIver presents the latest research on personal and collective memory, and he applies it to the oral stage prior to the composition of the Gospels. Even though eyewitnesses may forget a large amount of their testimony, McIver concludes that the type of events recorded in the Gospels would have been memorable. A "personal event memory," a memory that involves a specific event and has emotional significance, can last much longer than an arbitrary list of facts.
McIver argues that all memories are transient. Most forgotten details are lost within three years of the event. Memories that last five years, however, are usually retained for fifteen more. This type of memory corruption usually occurs in a pattern. One may create a false memory by filling in where details have been forgotten or by allowing present circumstances to influence how the past is recalled. Yet these memory errors tend to cohere with established details of the memory. Though errors threaten the accuracy of the details that surround the event, an eyewitness can still recall the gist of the memory. In spite of frailties, people can remember about eighty percent of the details of a personal event memory.
McIver relies on James D. G. Dunn's model of oral transmission. Within five years of the events an oral community would combine personal reminiscences into a collective memory, a memory that the community has agreed upon. Dunn argues that the Evangelists would have relied more on the communal memory of the early church than on eyewitnesses testimony. McIver concedes that the needs of the church, and later the Evangelists, would have formed these memories. Based on collective memory research, however, it is doubtful that the community would have invented a story to meet a need. The communities exercised influence on the memories through emphasis, but never invention. McIver argues that the collective memory of the earliest church would have stabilized the Jesus traditions, whether they were written or oral.
McIver's work provides helpful analysis for the history of the Gospel traditions. He concludes that the nature of the events promotes accuracy and stability. Two aspects stand out. First, a difficulty for this type of study is bridging the distance between current literary culture and the first-century oral culture. Many of the memory studies that McIver notes involve situations that are nothing like the early church. McIver himself makes this observation. However, these tests show how remarkable memory is, as well as its limits; they challenge assumptions that many have made about memory. Second, McIver follows James D. G. Dunn's model of collective memory, which emphasizes the role of the community for the tradition over that of eyewitness testimony. Any conclusion on the role of the eyewitness testimony for the written Gospels remains speculative. McIver himself points out that readers are not now in a position to sort out traditions that came from eyewitness testimony and those that come from a collective memory. Nonetheless, if the Evangelists had access to the eyewitnesses, they would have consulted them.
These issues do not take away from McIver's overall thesis. McIver provides important research for historical Jesus studies. Since the advent of form criticism, critics have called into question the stability of oral transmission and have overplayed the unreliability of eyewitness memory. McIver's work provides a helpful corrective to this skeptical approach. Even though memory is transient, an eyewitness can report the gist of an event with a fair amount of accuracy.
Book reviews are published online and in print every quarter in Bibliotheca Sacra. Subcribe Today


text:
Comic books browse by: Shop category:
Artist Carine De BrabAvailable series in store category "Comic books"
Carine De Brab (AKA Carine de Brabanter) in the COMICLOPEDIA
" Carine de Brab decided to become a comics artist for children early on. She studied at the Institut Saint-Luc in Brussels, while she also cooperated on the animated feature film 'Le Chaînon Manquant' by Picha. After some advertising jobs, she met Yvan Delporte,..." [ Read more ]


text:
Every Sunday, The Simple Dollar reviews a personal finance book or other book of interest.
For my first book review of 2011, which will pop up on the site on Sunday and appear in subscriber's mailboxes early in the morning of the first working Monday of the year, I thought I'd take a look at one of the best books out there about defining and setting goals, since so many people start out the year with goals and resolutions of all kinds (and I'm no exception to that).
Goals! is one of a pile of self-motivation and self-improvement books written by Brian Tracy. I've read several of them, but the only one that really clicked with me was this one because it offered so many good pieces of advice about setting personal goals and working towards them. It worked for me because so much of the advice was actionable – I could actually do the things in the book and apply them immediately to my own goal-setting habits.
As with most of my book reviews, the things I share with you below just scratch the surface of the content. Instead, I usually try to seek out a key highlight or two from each chapter that really had an impact on me.
1. Get Started: Unlock Your Potential
Everything you have accomplished in your life up to this point is mere preparation for what is to come. You now have a pile of skills, experiences, and motivations to draw upon that you've accumulated throughout your life, and you should use those as constant fuel for the fire to move towards whatever you want in life. Think of the biggest things you've accomplished in life. Are the things you want in the future really that out of reach compared to what you've already done, especially considering all of the things you have at your disposal now as compared to then?
2. Take Charge of Your Life
You are responsible for everything you do in your life. You make the choices of how to spend your time, how to spend your money, how to spend your energy, and what you spend your time thinking about. Those things are up to you. Don't blame others or make excuses when you make choices related to how you spend your time, money, energy, and thoughts. Instead, focus on using your thoughts, money, energy, and time to achieve the goals you have in your life. When you spend an hour idling, you're not just losing an hour of time. You're losing an hour of energy. An hour of thought. An hour of forward progress on the things you really want.
3. Clarify Your Values
What do you really believe in? What do you truly care about? If you're trying to work towards goals that aren't fed by those beliefs and cares, you're going to have a very hard road with regards to achieving them. Spend some time clarifying what you care about and believe in before you even begin to set goals for yourself.
4. Analyze Your Beliefs
What do you believe with regards to your own abilities? What do you believe about the world around you? Is it holding you back or is it a giant pile of opportunities? It is these beliefs that will drastically constrain – or leave wide open – the goals that are available to you. Most of what's possible is defined within your own head.
5. Create Your Own Future
Imagine that you could progress towards the goals you have in life with no obstacles preventing you from doing so and you had all of the resources you needed. What would your life look like? I often call this a "five year sketch," in which I draw a picture of what I would like my life to look like in five years or so.
6. Determine Your True Goals
What do you want to accomplish in every major part of your life? Your finances? Your professional life? Your relationships and family life? Your health and wellness? What about other areas of importance to you? Think about each one and figure out what you most want in that area. This builds upon a foundation of your beliefs.
7. Decide Upon Your Major Definite Purpose
Often, when you look at the main goals you have for your life, it will become clear that they actually all point to a singular goal that rules them all. For example, in my case, my singular goal is to be a great father – it really does overlay every other goal and mission I have in my life. All of my significant goals are at least in part connected directly to my desire to be the best possible parent.
8. Start at the Beginning
What is your starting point for each of these goals? Where are you at right now? The more honest you are about your current situation, the easier it will be to create goals that actually work for you instead of goals that are completely out of touch with your current state. The more in touch your goals are, the easier they'll be to accomplish.
9. Set and Achieve All Your Financial Goals
Tracy spends this and the next few chapters focusing on goals people typically have in certain areas of their life. His financial suggestions are straightforward: in essence, he suggests making a net worth calculator in order to get a full view of your assets and debts, then look for specific ways to improve both areas (as foundations for goals).
10. Become an Expert in Your Field
You're better off being the best around at a very specific area than being just one of the bunch in a larger pool. Focus on getting to the very top in a specific area so that you can gan reknown for that expertise rather than being just one of a hundred people that throw their resume towards yet another essentially identical job.
11. Improve Your Family Life and Relationships
A big part of your life consists of the people around you, and the better your relationships are with those people, the better your life will be. Put effort into patching up rough relationships, eliminating unfixable ones, and putting continued focus on the relationships most important to your life.
12. Optimize Your Health and Wellness
Having a high level of energy and fitness makes it possible to enjoy many avenues of life that are difficult to enjoy without these attributes. You can cultivate these attributes in your life if you so choose, and the best way to do that is to take a realistic assessment of your current fitness and health and chart some goals leading you to where you want to be so you can tackle anything in life.
13. Measure Your Progress
For any goal, define a goal that has a clear way to determine if you've achieved it or not as well as a clear way to mark your progress. Then set milestones along the way so that you can constantly check and make sure that you're moving in a reasonable way towards your goal. "I want to lose weight" won't cut it; try "I'm going to lose 25 pounds this year" and have milestones each month that include losing two pounds that month.
14. Remove the Roadblocks
What are the biggest obstacles you can see that will keep you from achieving the goal? What can you do to remove these roadblocks? Goals are much easier to achieve if you don't have things working against you with regard to those goals. Seek out ways to remove the roadblocks, then actively remove as many as you can so that you're open to achieving the things you wish to achieve.
15. Associate with the Right People
The people you most closely associate with often set the standard for what you want out of life. For example, three of my four closest friends in the world at this point are very frugal people, and their frugality often rubs off on me with regard to my personal choices. Surround yourself with people who embody what you want to achieve. Make an effort to build relationships with them.
16. Make a Plan of Action
What is your plan for achieving your goal? Write your goal down, then write a detailed plan for achieving it. The more detail, the better. Can you boil that plan down to daily steps or individual actions? The smaller the pieces, the easier it is to just grab ahold and pull yourself towards your goal, one bit at a time.
17. Manage Your Time Well
Time management is key – if you don't have time for the things in your life right now, how will you have time to add the behavior changes that you're suggesting? One route is to focus on your time management and implement a better system for you, like GTD. Another route is to simply identify time you spend inefficiently in your life and free up the time needed for your new goal, as I did for exercise in 2011.
18. Review Your Goals Daily
Take time every day to review the goals you're working on, and do deeper reviews of it every week. I do this by writing in a journal and keeping tabs on a few key goals every single day in that journal. I literally have a daily section in my journal where I write "Goal #1:" followed by a sentence on my progress, then "Goal #2:" followed by a sentence and so on. It forces me to think about that goal every day, and I feel ashamed when I have to write "no progress."
19. Visualize Your Goals Continually
When you find yourself daydreaming, daydream about what success in terms of your goal will look like. It's actually great to fantasize about a world where you've found success with your chosen goal because it keeps that goal central in your mind throughout the day and the week.
20. Activate Your Superconscious Mind
Tracy uses the word "superconscious" to refer to flashes of inspiration or brilliance, when a great idea comes into your head seemingly out of nowhere and helps you solve a particular problem. I usually refer to this as being "in the zone," and I find it very worthwhile to spend time cultivating periods where such flashes of brilliance happen on a regular basis, which is exactly what Tracy advocates here.
21. Persist Until You Succeed
You absolutely can't give up on a goal because of one or two small failures. A step backwards isn't a call to quit. It's a call to keep marching forward, perhaps seeking out a slightly different path through the woods.
Is Goals! Worth Reading?
Goals! is perhaps the single best book I've yet read on goal setting and goal achievement. It offers an enormous collection of advice on how to figure out what you want, articulate it into a clear and achievable statement, then move toward that statement, improving your life along the way.
Yes, much of goal-setting is common sense, but it's the type of common sense that many people have a great deal of difficulty with (hence the huge numbers of failed New Years resolutions). This book lays the entire process out as clearly as can be.


text:
Hello lovelies!
I hope you all had a spooky Halloween! I know this is a little after the event but I thought I would share a couple of pictures and another card with you.
I go to one of my Zumba classes on a Monday night and we thought it would be a good idea to dress up, I went as a red devil (you can't see the horns in the pictures unfortunately - I had a tail too).
Now onto another cute card...
What you need...
Patterned paper: Daily Details (#1314) 12 x 12 Spooktacular Collection - Bella Blvd
Card stock: white
Baker's twine: orange
Googly eye
This collection is adorable, the papers are double sided and filled with cute characters in bright colours set against black. This sheet has large journal cards on one side and the dotty pattern on the other. The journal cards are perfect for making cards. The pumpkin does have one eye open and I thought it would look really good with a googly eye stuck over the top.
Well that's me for the moment, keep warm and cosy and I'll see you soon! xx


text:
The Toyota EV P002 made its debut this year at the postponed Pike's Peak International Hill Climb, where it used its 42 kilowatt-hour lithium-ceramic battery to clock a time of 10 minutes,15.380 seconds with Fumio Nutahara behind the wheel.
If that wasn't impressive enough, the team just hit the Nürburgring and checked in at 7 minutes, 22.329 seconds, a new lap record for electric cars. Driver Jochen Krumbach took on the 13-mile course and beat the previous record—held by Toyota's EV P001—by about 25 seconds.
The EV P002 uses its battery and two electric motors to pump out 469 hp and 664 lb-ft of torque. That's plenty of twist for exiting turns, but the EV must lose a little in the straights with a top speed of only 160 mph. That makes this run even more impressive.
There's no video yet—besides the one below of the car getting ready for Pike's Peak—but we assume it will be flying through our email inboxes within a few days. And that makes sense, because in this day and age, if it's not on YouTube it didn't happen.


text:
San Francisco subway system adopts 'buy American' policy
The nearly 800 trains that make up San Francisco Bay Area Rapid Transit, better known as BART, have reached the end of the line.
"We have the oldest cars that are currently running in the country," says Dick Wieczorek, head of BART'S procurement department.
Now, the largest public rail line on the West Coast is spending $3.2 billion to replace 775 cars with a state-of-the-art fleet made in the U.S.A.
"We are instituting a 'Buy American' policy so that we can help put America back to work," says BART board president John McPartland.
BART is the first transit agency in the nation to give preference to companies that manufacture most of their trains in the U.S., a move that makes it eligible for federal funds. At a recent press conference hailing the policy, California Congressman John Garamendi said BART's choice was simple: "It can support our foreign competitors, or help create thousands of jobs for American workers and signal to the world that American manufacturing is back in business."
Ironically, BART is looking at three foreign train makers, all with assembly plants in the eastern United States.
The one that uses the most American-made components, from engine parts to seat cushions, will stand a better chance of winning the lucrative bid.
"If somebody offers us more than 60 percent, in terms of domestic components, we can give them a bid preference in recognition of the fact that they may be spending more money to buy those U.S. components," explains Wieczorek.
John Lohnas is among the 370,000 passengers who commute on BART each day. "Any time a company, especially a tax-supported organization, buys American-made products it's wonderful," he says.
But San Francisco economist James Forcier contends doing business in America isn't always cheap, and the result will be higher fares for passengers.
"They [BART] already admit in their paperwork that the cost is going to be 5 percent to 10 percent greater as a result of this process than it would have been otherwise," Fortier says. "Those dollars have to come from somewhere, and most likely they're going to come from the riders."
In the next few weeks, BART will decide which foreign company will be the winner of this 'Buy American' policy, with the first new trains rolling out by 2017.


text:
They say the worst sound you can hear is a click when you expect a bang... I can tell you that's just not true. The worst sound you can hear is a bang when you had no idea it could be coming.
On April 24th, my son killed himself using the handgun I purchased to protect my family and the ammunition I selected for it's lethality.
Our family was home and heard the shot - but it didn't sound like a gunshot. It sounded like someone falling into a door. Since he was 15, Joey had a severe form of intractable, unresponsive epilepsy so I ran to Joey's room thinking he had fallen into the door from a seizure. I saw him on the ground, I saw the blood, and then I saw the handgun.
I know I screamed.
It was less than 10 seconds for me to be in the room and my son was gone before I got there. I started to assess for first aid as I screamed to call 911. No one responded so I dialed for myself and handed off the phone. Regardless of our medical supplies and my medical training, it was too late. How I wish I was wrong.
The next 6 hours are a blur of family, friends, neighbors, and police... lots of police with lots of questions. Too many people saying "don't try to figure out why this happened" and then asking me to tell them why this happened. Explaining to my 8-year-old that his brother, his idol, was gone and never coming back. Watching the Medical Examiner roll out that black bag on a stretcher. And so many people saying "if there's anything we can do, just ask".
Nothing in our lives will be the same yet everything is the same. We still face bills, school, work, and life yet we face it without Joey.
For a few minutes that day I was Mayor Bloomberg's biggest advocate and supported absolute gun control. Of course, that's not what my core values are but in that moment I was on board. Most of my personal values are being questioned right now as our family moves forward from this.
I can tell you that I don't believe in limiting anyone's choices or freedoms and that I don't believe in attacking people for the choices they make. We debated shuttering the site but Joey put a lot of time into this site - including some older guns being entered into the database we built but rarely promote. The site is going to take on a different feel as I feel less inclined to report on the violence (deserved if it is) and more inclined to call people out for their bullshit on both sides of the gun debate.
Whether it's kids and guns, smart guns, or mental health services (like why it was hard to keep Joey in counseling for the stress of his illness yet there were three counselors at our house less than an hour after he died) we're going to look at issues and discuss them without the drama or hyperbole that is so typical on both sides.
On that note - it pisses me off that next year, once the CDC and FBI compile their data, Mayor Bloomberg, Moms Demand Action, and their ilk will dangle statistics including Joey as a "victim of gun violence" or some listing of gun deaths as if all of those are the same. The term "gun violence" brings to mind images of armed intruders, of drug dealers having shootouts in the street, and of mass shootings. None of those applied to Joey - and using him as part of a campaign of misinformation is just more of the same bullshit in this debate.
People who have reached a level of pain or desperation so great that they take their own lives aren't victims of gun violence. They are dealing with whatever is the root of their situation... physical illness, mental illness, or some other factor. To lump these people in with criminals killed by other criminals, home invaders gunned down by law abiding citizens defending their homes, or even innocents killed by madmen and criminals is an insult to them, their families, and their memories.
If you're so certain of your moral stance - why are you basing your numbers on untruths? It seems everyone has become so dogmatic that they are unwilling to see their viewpoints exposed to real data? And why does the gun lobby fight research into gun violence?
If our rhetoric is true then the data is a boon for Second Amendment advocates. Hiding from data is like hiding from technology - it's a losing cause. Let's lead the way and provide the most comprehensive - and honest - studies on gun violence, on the effects of concealed carry, and on the enforcement of laws barring criminals from firearms. That won't happen, but it should. Off the top of my head, here are some studies that would have real value in addressing gun crime:
► What is the definition of gun violence?
Of course, getting gun control groups to admit Joey and people like him aren't "victims" of gun violence means they lose a substantial portion of the statistics they like to trot out each year.
► Is gun related crime any different from violent crime as a whole or is the gun truly just a tool for the criminal?
► How do firearms training standards for concealed carry impact concealed carry uses and results?
► Who commits gun crimes and who are the victims of gun crimes?
There's a distinct difference in approach between criminals killing each other and criminals attacking random innocents. Side note: some initial studies show that the leading indicator of being shot in your lifetime is having a criminal record.
► What is a realistic number of defensive gun uses annually?
What the number is matters less than having a solid, scientifically accepted number.
► What would enforcement of existing gun laws (i.e. background checks, felons, etc.) be on gun related crime nationwide?
There are plenty of other questions that deserve legitimate, independent research with a goal of finding ways to decrease overall gun deaths and real gun violence. Honest data will allow us to, for the first time, address fundamental questions about what is happening on our streets and in our homes. I'm not foolish enough to believe this will happen - both sides have too much money to make and too much credibility to lose to care about real research.
In the mean time, I'll wait for next years statistics with a sense of dread knowing that, according to some people's agenda, Joey somehow became a victim of gun violence alone inside his own bedroom.
If you're having thoughts of harming yourself, please seek help. The Suicide Prevention Lifeline has a 24 hour hotline available via phone or chat. Mantherapy.org is an informative site that bills itself as "therapy the way a man would do it."
Jason isn't too worried about his bio right now. He wrote them up for other people and was going to write one for himself but feels like it's a stupid ass exercise in vanity at this point. Plus, Mayor Bloomberg uses one so they have to be bad, right?


text:
True story. After Saturday's first of two Ferrari Challenge races, and before the start of the second, I took Onofrio Triarsi, the overall and Trofeo Pirelli class winner, and Brent Lawrence, the Coppa Shell class victor, up to the Lime Rock Fan Hospitality compound. We wanted them to talk a bit about the race they had finished just 20 minutes earlier, and to answer any questions our Fan Hospitality guests had.
On the golf cart ride up to the chalet, I asked them what they thought about racing at Lime Rock, as a stand-alone event. "This is fantastic," Onofrio (I call him "Over Time") said. "I can't believe how many people came, you know, for us."
Brent said, "This really is a great place for us to come. The fans, the track... we feel like superstars here."
After the talk and Q&A, the guys really had to get back down to their rigs to go over the data with the engineers and coaches, and I was trying to hustle them out, but guess what... they stuck around for another 20 minutes because the fans wanted photos and autographs and handshakes and there were babies needing to be kissed. Yup, like superstars...
Lime Rock Park is the only race track Ferrari Challenge goes to where it is the only series on track. And that's because you guys are knowledgeable, loyal fans who "get" the Lime Rock experience. The drivers felt it in the air, and all I have to say is, that's cool. And thanks...
Here are some great shots from the day by stellar shooters Greg Clark and Casey Keil. (Over Time is in the camo-colored #23 F458, while Brent is in the #14.)
- Rick Roso
The PDFs of the full results are on ferrarichallenge.com and can be clicked-through directly here (R1) and here (R2).


text:
Washington legalizes marijuana photos — Seattle Dec. 6
Just after midnight, Washington legalized possession of up to an ounce of marijuana for recreational use for those over 21 under Initiative 502, which took effect Thursday, Dec. 6. 2012. A public celebration hailed as Legalization Day in Washington State attracted about a hundred people to toke up at Seattle Center's International Fountain Thursday evening, after a similar event at 12:01 a.m. near the Space Needle. Public smoking is still against the law, and marijuana remains counter to federal law. Colorado passed a similar measure.
All photos available for licensing at http://seattlephotographer.photoshelter.com/gallery/Washington-legalizes-marijuana-photos/G0000..eNFpzfHOc/C0000fzMTw_NAP.c
Legalization Day in Washington State photos:
Click to view (more…)


text:
First, Ben & Jerry's hopped on the Jeremy Lin bandwagon with its "Taste the Lin-Sanity" flavor, featuring crumbled up fortune cookies. Then Ben & Jerry's took a few steps back and swapped the fortune cookies out for waffle pieces after a "bit of an initial backlash" about the fortune cookies. The main reason for the switch according to a spokesperson was, obviously, that customers were complaining the fortune cookies were soggy.
Now, the company has issued an apology for everything—delicious racism, soggy fortune cookies—everything.
"On behalf of Ben & Jerry's Boston Scoop Shops we offer a heartfelt apology if anyone was offended by our handmade Linsanity flavor that we offered at our Harvard Square location,'' the company said Saturday on its BenJerryBoston Twitter account.
Ben & Jerry's: We may give our ice cream flavors racially insensitive names, but that is handmade racially insensitive ice cream.
Ben & Jerry's apologizes for Jeremy Lin goof [Boston.com]


text:
A federal CBD medical marijuana bill picks up more sponsors, so does a federal asset forfeiture reform bill, Georgia advocates want whole whole plant medical marijuana, Mexico's first coca patch is busted, Saudi Arabia beheads another drug offender, and more. Let's get to it:
York, Maine, Selectmen Refuse to Put Legalization Initiative on Ballot, But… [24] Town selectmen voted against putting the initiative from Citizens for a Safer Maine on the November ballot, but since petitioners have already gathered sufficient signatures to force the issue, they can get their petition notarized to be placed on the ballot. York will join Lewiston and South Portland in voting on initiatives this year; Portland approved one last year.
Medical Marijuana
Charlotte's Web Medical Hemp Act Picks Up More Sponsors [25]. The Charlotte's Web Medical Hemp Act (HR 5226), which would exclude cannabidiol (CBD) from the definition of marijuana, has gained new sponsors. It now has 19 cosponsors -- 11 Democrats and eight Republicans. The latest are Reps. Ann Wagner (R-MO), Matthew Cartwright (D-PA), and Chris Stewart (R-UT).
Georgia Advocates Call for Whole Plant Medical Marijuana, Not Just CBD Oil [26]. As legislative hearings in Macon continue to examine the use of CBD oil, medical marijuana advocates are calling for whole plant medical marijuana. "The cannabis plant contains many compounds that have proven to be effective in treating a variety of conditions," said Georgia C.A.R.E [27] director James Bell. "We should not be determining who can and cannot benefit from this healing plant."
Asset Forfeiture
Civil Asset Forfeiture Act Picks Up New Sponsors [28]. The bill, HR 5212, now has five cosponsors. The latest are Reps. Stevan Pearce (R-NM), Cynthia Lummis (R-WY), and Reid Ribble (R-WI). All cosponsors so far are Republicans. The bill, filed by Rep. Tim Wahlberg (R-MI), would increase citizen protections against federal asset forfeiture actions.
Law Enforcement
Feds Raid LA Fashion District in Cartel Money Laundering Probe [29]. More than a thousand law enforcement officers spread out across LA's fashion district Wednesday, raiding more than 60 warehouses, storefronts, and residences, arresting nine people and seizing $65 million in cash that they said was being laundered for Mexican drug trafficking organizations. The feds called the mass bust Operation Fashion Police.
OAS Head Claims Regional Consensus on Drug Reform [30]. Speaking in front of the Inter-American Dialog in Washington, DC, Organization of American States (OAS) Secretary General Jose Miguel Insulza said Wednesday that regional leaders have reached consensus on four drug policy reform issues: to emphasize a public health approach, to seek out alternatives to incarceration, to stay strong against organized crime, and to work on strengthening regional institutions. Insulza's remarks come ahead of an OAS Special General Assembly to be held in Guatemala next week.
Mexico's First Coca Plantation Discovered in Chiapas [31]. Mexican soldiers have seized more than 1,600 coca plants being cultivated in southern Chiapas state, near the Guatemalan border. Mexican military and UN Office on Drugs and Crime (UNODC [32]) officials said it was the first time coca planting had been discovered in the country. "It's a pretty troubling discovery," said UNODC Mexico representative Antonio Mazzitelli. It could amount to "a small-scale experiment to see if there is a possibility of replicating" coca production in Mexico. Coca is currently grown only in the Andes, although there is nothing stopping it from being cultivated elsewhere.
Saudi Arabia Beheads Another Drug Offender [33]. Authorities in Saudi Arabia Tuesday beheaded a Pakistani national convicted of smuggling "a large quantity of heroin." They have executed at least seven other drug traffickers in recent weeks, and 49 people overall so far this year. It's unclear how many of the 49 were drug offenders.


text:
Beginners should start with an aromatic, otherwise known as a flavored blend. Such as our Wilshire, or a similar light aromatic Burley/Virginia blend such as Sunset. Keep the pouched closed when possible to keep it fresh. Experimenting with different blends is half of the fun of pipe smoking.
To get started what you will need besides a pipe and tobacco, of course is pipe cleaners, a pipe tool, and of course a lighter or matches. One important rule with pipe smoking is to never use a lighter with a blue flame because it will harm the briar wood the pipe is made of.
*Pipe Tools are in the Accessories Section
Packing the pipe with tobacco is an art form and has a great effect on the amount of time the pipe stays lit. You should Lets move on to the matter of packing and lighting. Pack the tobacco a bit at a time and be sure to leave a little spring in tobacco. Packing the bow too tightly will make it hard to draw.
If the pipe is new, you may find it more pleasent to rub a fingertip of honey in the bottom of the bowl. This will help give you the broken in taste a well used pipe will have.
If you have trouble keeping your pipe lit, don't be discouraged, everyone has to relight their pipe while smoking it. If you happen to hear a gurgle while you are smoking, you need to let your pipe cool down, then clean it with a pipe cleaner thoroughly. Also, smoking the same pipe more than one time in a day can be bad for the pipe.
A full selection of pipes and tobaccos are available on the site. Special orders can be made by calling the store phone number. Any questions can be addressed to us by email as well.


text:
Sunday, June 19, 2011
Manifest Destiny
In 1845 a magazine reporter wrote "Our manifest destiny is to overspread the continent allotted by Providence for the free development of our yearly multiplying millions." He was, in other words, giving a moral excuse to the greed and imperial ambition of the American people to expand westward. God had predestined the United States of America to stretch from sea to shining sea and it was, therefore, the duty of the American people to spread Christianity and democracy across the continent.
The idea of Manifest Destiny did not originate with this reporter. Since 1803, when President Thomas Jefferson instigated the Louisiana Purchase, Manifest Destiny was in the works. It continued on with the acquisition of Florida and parts of Alabama and Mississippi in 1819 from Spain. In 1845 Texas, its own republic since winning independence from Mexico ten years earlier was annexed into the United States. In 1846 the long disputed border with Canada in the Northwest was finally settled to be 49 degrees latitude. In 1848 the Treaty of Guadalupe Hidalgo, ending the Mexican War, gave the U.S. New Mexico and California. And finally, in 1853, the Gadsden Purchase acquired Arizona from Mexico. This completed the contiguous states.
It was not Manifest Destiny alone, however, that spurred on the millions of the people to take the harsh, dangerous journey west. It was economic depressions in 1837 and 1841. It was word of the rich, fertile soil in Oregon. It was the gold discovered in 1848. It was greed.
As AMERICA: A Narrative History says, "Trappers and farmers, miners and merchants, hunters, ranchers, teachers, domestics, and prostitutes, among others, headed west seeking their fortunes." THE UNITED STATES: A Brief Narrative History says, "The desire for land of their own, the search for economic opportunity, and the promise of starting over in a new region ranked high among the many and complex reasons that people decided to endure the hardships...."
The pioneers of the mid-1800's did overcome vast hardships to settle the land and fulfill Manifest Destiny. The trail alone offered up "difficulties in finding adequate food and water, hostile Indians, and the danger of being trapped by snow in the mountains." (THE UNITED STATES) Once they reached their destination, they often had those difficulties as well as others to contend with, including death. However, the westward movement "constitutes a colorful drama of determined pioneers and cowboys overcoming all obstacles to secure their visions of freedom and opportunity amid the regions awesome vastness." (AMERICA)
Yet, Manifest Destiny did not come without a long-lasting price to America. In addition to the hardship the pioneers suffered, "...the colonization of the Far West involved short-sighted greed and irresponsible behavior, a story of reckless exploitation that scarred the land, decimated its wildlife, and nearly exterminated the culture of Native Americans." (AMERICA)
It is hoped that if given a chance to do it all over again, the American government and people would have done it differently. But it is doubtful it would have it would have happened any other way. The desire of the government and the desire of the people would not have changed. As one gold seeker proclaimed, "The whole emigration is wild and frantic with a desire to be pressing forward." A desire to own land, find economic freedom, to find freedom itself in a new life. Millions of Americans and new emigrants were willing to endure the hardships and carve a place in history in the name of Manifest Destiny. And the government was glad they were.
Now, to put a writing lesson curve on this....how does your story emulate the idea of Manifest Destiny? How are your characters predestined to change their lives, their ideas, their souls? What are they willing to give up to find the brass ring across the dangerous frontier?
Leave a comment for a chance to win not one, but two prizes! I'll away pocket size Bath and Body Works Country Chic shower gel and lotion (drawing to be held Tuesday, June 21st after 6:00 p.m.). AND the Seduced by History blog is giving away a free Hearts Through History Campus Workshop to one lucky June commenter. So, double the reason to say hi! Be sure and leave a comment.
**I'll be teaching PIONEERING WOMEN OF THE WEST at HHRW's Online Campus August 1-31, 2011. $10 for HHRW members, $20 for non-members. Click HERE for more information.
Anna Kathryn Lanier
Where Tumbleweeds Hang Their Hats
This article first appeared on Chatting with Anna Kathryn September 3, 2009.
19 comments:
- Unknown said...
Anna--You do know your history. This is a great synopsis of Manifest Destiny. Yes, we look back and criticize...but really, some world events seem like a natural thing. There's no way a few disgruntled Europeans would come over to the New World and not be awed and excited by the possiblities. It's like slavery--no it's not right, but it happened and we have to deal with it within our history. Humans have an innate sense of "conquer" to survive.
Maybe if that man hadn't put it into words, we wouldn't be chastitising ourselves.
Every country in the world has been taken and re-taken. Conquer, move on. It's mankind at its basest. Maybe if women had ruled the world.....
Me? I'm glad we moved across the land--otherwise, I might be living in, oh, New Hampshire?
Good post! Celia
- June 19, 2011 at 8:08 AM
- Susan M said...
Anna, I do love your mini history lessons. Always thought provoking as well as informative. You should have been a history teacher. Think of all the kids out there that would have come away with more than a list of dates they would forget as soon as the bell rang.
- June 19, 2011 at 8:40 AM
LOL. I couldn't help but think as I read this piece how much today's evolving publishing industry is similar to the Manifest Destiny.
Great blog, Anna. I so enjoy the history lesson. Fortunately, history is my favorite subject. ;-)
- June 19, 2011 at 8:48 AM
- Caroline Clemmons said...
Anna Kathryn, my family needed land and a fresh start. You can't run from your problems, though, so they pretty much had the same problems in Texas as they'd faced in Georgia, except that the couple who treked west escaped a carping mother-in-law. That fact probably made the trip worth it. LOL
But Americans were not the first to come up with the manifest destiny idea. It seems to me each government felt they had the right to impose their will on others.
- June 19, 2011 at 9:53 AM
- Vonnie Davis ~ Romance Author said...
Loved the post. Read it to my husband while he made our morning coffee. Yes, greed drove so much of our country's expansion as with the expansion of past civilizations. Thanks for our history lesson of the morning.
- June 19, 2011 at 10:29 AM
- Anna Kathryn Lanier said...
Hi, Celia, Susan, Jenn and Caroline. Thanks for stopping by. I agree, I don't think what happened would have changed much, given the times. I would like to have seen the Native Americans treated better.
LOL, Susan. Had I gone to college out of high school, I would have gotten a history degree. I did get my A.A. in 2008, and subsitute teach, but given the state of education budgets right now, going ahead and getting the B.A. degree propably won't happen. Though I may take classes just learn!
- June 19, 2011 at 10:43 AM
- Anna Kathryn Lanier said...
Good morning, Vonnie. Yes, the United States didn't hold the market on greed.
Oh, btw, the book I referenced, AMERICA, was my college school book.
- June 19, 2011 at 10:44 AM
- Ciara Gold said...
Great post. I think we need to be reminded that I background was paved with more then heroism, that there was a dark side to the price of being an American. It keeps us humble. And excellent questions regarding our characters and their journey. Again, a wonderful reminder of the need for goals and motivation.
- June 19, 2011 at 12:22 PM
- Anna Kathryn Lanier said...
Hi, Ciara, thanks for stopping by.
- June 19, 2011 at 1:56 PM
- Paisley Kirkpatrick said...
I'd never really thought that deeply into the westword movement to settle the continent. I know my great, great grandfather came across country because he didn't believe in slavery and his family home was a plantation. He became a doctor and came west, helping people along the way. My first story was a wagon train with some of grandpa's insight put in as spice. Since I've grown as a writer since writing it, I plan to revise it and will have to see if I can put some of this other motivation into it. Thanks, Anna.
- June 19, 2011 at 6:01 PM
- Anna Kathryn Lanier said...
Hi, Paisley. Thanks for stopping by. One of these days, I'm going to write my wagon train story. I have it thought it, I just can't get it onto the paper. Great that you have anscestors you can draw on.
- June 19, 2011 at 6:19 PM
- Debby Lee said...
Hello Anna Katherine, wow, thanks so much for such an educational article. This one really made me think, and it hit close to home. My uncles own a large piece of farm land that has been in our family for 100 years. (Actually 2013 makes 100 years) The land was settled by my great grandparents and now sits close to a major Interstate Freeway.
There have been a few corporate mongrels who've tried to weasel thier way into getting rights to the family farm, all in the name of bringing "industry" to the local towns. Thank heavens we've been able to fight them off so far, although one case went to the state courts.
Stories of the farm have been passed down from generation to generation. Five generations have cried, sweat and bled on that land. I hope we are never forced to sell it for the sake of Manifest Destiny. How do you put a price tag on a kitchen sink where three generations of babies had thier bath? And what about trees that have been climbed by five generations of kids, how much should we ask for those?
Okay, I'm off my soap box now. Sorry for such a long, rambling, somewaht heated post. But thanks for sharing, it was a very interesting read. I loved it.
And please enter me in the drawing.
Sincerely, Debby Lee
- June 19, 2011 at 7:15 PM
Hello, Anna Kathryn. I enjoyed the history refresher, however, I would not have had the courage to leave everything and everyone I know in search of riches. When I travel by car with air conditioning across the Texas-Louisiana state line, I take notice of the swamps and shudder at the thought of dragging a sooner and a team of horses through the muck. Stepping out into indie publishing is as adventurous as it gets for me.
- June 19, 2011 at 8:13 PM
- Anna Kathryn Lanier said...
Hi, Debbie and Meb. Thanks for stopping by. Debbie, industry trying to take over family farms is not new. I still recall a pig farm outside Albuquerque in the 80's who'd been there for generations. Then a fancy subdivision got built beside his farm and quess what? The snobs living in the homes wanted to shut him down because of the smell....I don't recall what happened, but I'll bet that farmer had better things to do with his money then fight a court fight with idiots!
Meb, I'd go. It would have been hard to leave family behind, but I'd do the adventure!
- June 19, 2011 at 11:10 PM
- Gerri Bowen said...
An interesting post, Anna. I also doubt that things would be done differently, if there was a chance. However, I am always awed by those first pioneers, what they had to give up before plunging into the unknown. Add to that...free land!!! When had that happened within memory? It's no wonder, sadly, that so much was destroyed along the way.
- June 20, 2011 at 2:31 PM
- Anna Kathryn Lanier said...
Hi, Gerri. I so agree. For some it was an adventure, for others, I'm sure it was heart-renching.
- June 20, 2011 at 11:51 PM
- Anna Kathryn Lanier said...
Of course, I forgot to draw for the prize! Not surprising, but I usually remember sooner or later. Anyway, Ciara won the prize - Country Chic bath gel and lotion from Bath and Body Works. Thanks to everyone for droppng by!
- June 23, 2011 at 9:31 AM
- Renee said...
The whole idea of Manifest Destiny causes my insides warring. On one hand I understand the want of a better life, it's the way it was done that irritates me.
- June 23, 2011 at 11:25 AM
- MaryG said...
Thanks for the good article. I'd never thought much about Manifest Destiny but as far as government was concerned, I guess it was greed.
My grandparents came through Ellis Island and ended up homesteading in Montana. A hard life, my grandmother would later say, she wouldn't do it again.
- June 26, 2011 at 12:46 AM


text:
Jobs in America
- 13 Degrees, 83% Humidity
- Outlook: few clouds
1 in 8 American workers has been employed by Mc Donald's
1 in 8 American workers has been employed by Mc Donald's
Easily has the most educated populace in the world with 50% educated at post secondary level.
The SABMillers, a South African brewery is by volume the largest beer brewery. It supplies 50% of China's beer.
Although it spans over 5 time zones, all of China operates on Beijing time! It quickly becoming one of the top economies in the world.
Many movies have been filmed in Jamaica, including the very first James Bond flick, Dr. No.
Even though Dubai is in the middle of a desert and it is very flat, you can ski indoors at the Mall of the Emirates!
In Egypt, there are more than five million users on Facebook – more than any other country in the Middle East.
Singapore has the highest ratio of millionaires in the world! 1 out of every 6 households.
Chickens outnumber humans in England. There is nowhere in Britain that is more than 74.5 miles from the sea.