Hey, Mom! The Explanation.

Here's the permanent dedicated link to my first Hey, Mom! post and the explanation of the feature it contains.

Also,

Tuesday, August 7, 2018

A Sense of Doubt blog post #1264 - Why is Python so slow?


A Sense of Doubt blog post #1264 - Why is Python so slow?

Hi readers,

Once again, a straight share because I have fallen behind schedule.

But this is an interesting article for us programmers, especially those who want to use Python for things in which speed is important. Is it app worthy?

Thank you HACKER NOON and ANTHONY SHAW for this excellent analysis of Python speed (or not so much speed).




FROM -

https://hackernoon.com/why-is-python-so-slow-e5074b6fe55b



Why is Python so slow?

Python is booming in popularity. It is used in DevOps, Data Science, Web Development and Security.
It does not, however, win any medals for speed.

How does Java compare in terms of speed to C or C++ or C# or Python? The answer depends greatly on the type of application you’re running. No benchmark is perfect, but The Computer Language Benchmarks Game is a good starting point.

I’ve been referring to the Computer Language Benchmarks Game for over a decade; compared with other languages like Java, C#, Go, JavaScript, C++, Python is one of the slowest. This includes JIT (C#, Java) and AOT (C, C++) compilers, as well as interpreted languages like JavaScript.
NB: When I say “Python”, I’m talking about the reference implementation of the language, CPython. I will refer to other runtimes in this article.
I want to answer this question: When Python completes a comparable application 2–10x slower than another language, why is it slow and can’t we make it faster?

Here are the top theories:
  • It’s the GIL (Global Interpreter Lock)
  • It’s because its interpreted and not compiled
  • It’s because its a dynamically typed language
Which one of these reasons has the biggest impact on performance?


“It’s the GIL”

Modern computers come with CPU’s that have multiple cores, and sometimes multiple processors. In order to utilise all this extra processing power, the Operating System defines a low-level structure called a thread, where a process (e.g. Chrome Browser) can spawn multiple threads and have instructions for the system inside. That way if one process is particularly CPU-intensive, that load can be shared across the cores and this effectively makes most applications complete tasks faster.
My Chrome Browser, as I’m writing this article, has 44 threads open. Keep in mind that the structure and API of threading are different between POSIX-based (e.g. Mac OS and Linux) and Windows OS. The operating system also handles the scheduling of threads.
IF you haven’t done multi-threaded programming before, a concept you’ll need to quickly become familiar with locks. Unlike a single-threaded process, you need to ensure that when changing variables in memory, multiple threads don’t try and access/change the same memory address at the same time.
When CPython creates variables, it allocates the memory and then counts how many references to that variable exist, this is a concept known as reference counting. If the number of references is 0, then it frees that piece of memory from the system. This is why creating a “temporary” variable within say, the scope of a for loop, doesn’t blow up the memory consumption of your application.
The challenge then becomes when variables are shared within multiple threads, how CPython locks the reference count. There is a “global interpreter lock” that carefully controls thread execution. The interpreter can only execute one operation at a time, regardless of how many threads it has.

What does this mean to the performance of Python application?

If you have a single-threaded, single interpreter application. It will make no difference to the speed. Removing the GIL would have no impact on the performance of your code.
If you wanted to implement concurrency within a single interpreter (Python process) by using threading, and your threads were IO intensive (e.g. Network IO or Disk IO), you would see the consequences of GIL-contention.

From David Beazley’s GIL visualised post http://dabeaz.blogspot.com/2010/01/python-gil-visualized.html

If you have a web-application (e.g. Django) and you’re using WSGI, then each request to your web-app is a separate Python interpreter, so there is only 1 lock per request. Because the Python interpreter is slow to start, some WSGI implementations have a “Daemon Mode” which keep Python process(es) on the go for you.

What about other Python runtimes?

PyPy has a GIL and it is typically >3x faster than CPython.
Jython does not have a GIL because a Python thread in Jython is represented by a Java thread and benefits from the JVM memory-management system.

How does JavaScript do this?

Well, firstly all Javascript engines use mark-and-sweep Garbage Collection. As stated, the primary need for the GIL is CPython’s memory-management algorithm.
JavaScript does not have a GIL, but it’s also single-threaded so it doesn’t require one. JavaScript’s event-loop and Promise/Callback pattern are how asynchronous-programming is achieved in place of concurrency. Python has a similar thing with the asyncio event-loop.

“It’s because its an interpreted language”

I hear this a lot and I find it a gross-simplification of the way CPython actually works. If at a terminal you wrote python myscript.py then CPython would start a long sequence of reading, lexing, parsing, compiling, interpreting and executing that code.
If you’re interested in how that process works, I’ve written about it before:
An important point in that process is the creation of a .pyc file, at the compiler stage, the bytecode sequence is written to a file inside __pycache__/on Python 3 or in the same directory in Python 2. This doesn’t just apply to your script, but all of the code you imported, including 3rd party modules.
So most of the time (unless you write code which you only ever run once?), Python is interpreting bytecode and executing it locally. Compare that with Java and C#.NET:
Java compiles to an “Intermediate Language” and the Java Virtual Machine reads the bytecode and just-in-time compiles it to machine code. The .NET CIL is the same, the .NET Common-Language-Runtime, CLR, uses just-in-time compilation to machine code.
So, why is Python so much slower than both Java and C# in the benchmarks if they all use a virtual machine and some sort of Bytecode? Firstly, .NET and Java are JIT-Compiled.
JIT or Just-in-time compilation requires an intermediate language to allow the code to be split into chunks (or frames). Ahead of time (AOT) compilers are designed to ensure that the CPU can understand every line in the code before any interaction takes place.
The JIT itself does not make the execution any faster, because it is still executing the same bytecode sequences. However, JIT enables optimizations to be made at runtime. A good JIT optimizer will see which parts of the application are being executed a lot, call these “hot spots”. It will then make optimizations to those bits of code, by replacing them with more efficient versions.
This means that when your application does the same thing again and again, it can be significantly faster. Also, keep in mind that Java and C# are strongly-typed languages so the optimiser can make many more assumptions about the code.
PyPy has a JIT and as mentioned in the previous section, is significantly faster than CPython. This performance benchmark article goes into more detail —

So why doesn’t CPython use a JIT?

There are downsides to JITs: one of those is startup time. CPython startup time is already comparatively slow, PyPy is 2–3x slower to start than CPython. The Java Virtual Machine is notoriously slow to boot. The .NET CLR gets around this by starting at system-startup, but the developers of the CLR also develop the Operating System on which the CLR runs.
If you have a single Python process running for a long time, with code that can be optimized because it contains “hot spots”, then a JIT makes a lot of sense.
However, CPython is a general-purpose implementation. So if you were developing command-line applications using Python, having to wait for a JIT to start every time the CLI was called would be horribly slow.
CPython has to try and serve as many use cases as possible. There was the possibility of plugging a JIT into CPython but this project has largely stalled.
If you want the benefits of a JIT and you have a workload that suits it, use PyPy.

It’s because its a dynamically typed language

In a “Statically-Typed” language, you have to specify the type of a variable when it is declared. Those would include C, C++, Java, C#, Go.
In a dynamically-typed language, there are still the concept of types, but the type of a variable is dynamic.
a = 1
a = "foo"
In this toy-example, Python creates a second variable with the same name and a type of str and deallocates the memory created for the first instance of a
Statically-typed languages aren’t designed as such to make your life hard, they are designed that way because of the way the CPU operates. If everything eventually needs to equate to a simple binary operation, you have to convert objects and types down to a low-level data structure.
Python does this for you, you just never see it, nor do you need to care.
Not having to declare the type isn’t what makes Python slow, the design of the Python language enables you to make almost anything dynamic. You can replace the methods on objects at runtime, you can monkey-patch low-level system calls to a value declared at runtime. Almost anything is possible.
It’s this design that makes it incredibly hard to optimise Python.
To illustrate my point, I’m going to use a syscall tracing tool that works in Mac OS called Dtrace. CPython distributions do not come with DTrace builtin, so you have to recompile CPython. I’m using 3.6.6 for my demo
wget https://github.com/python/cpython/archive/v3.6.6.zip
unzip v3.6.6.zip
cd v3.6.6
./configure --with-dtrace
make
Now python.exe will have Dtrace tracers throughout the code. Paul Ross wrote an awesome Lightning Talk on Dtrace. You can download DTrace starter files for Python to measure function calls, execution time, CPU time, syscalls, all sorts of fun. e.g.
sudo dtrace -s toolkit/.d -c ‘../cpython/python.exe script.py’
The py_callflow tracer shows all the function calls in your application
So, does Python’s dynamic typing make it slow?
  • Comparing and converting types is costly, every time a variable is read, written to or referenced the type is checked
  • It is hard to optimise a language that is so dynamic. The reason many alternatives to Python are so much faster is that they make compromises to flexibility in the name of performance
  • Looking at Cython, which combines C-Static Types and Python to optimise code where the types are known can provide an 84x performance improvement.

Conclusion

Python is primarily slow because of its dynamic nature and versatility. It can be used as a tool for all sorts of problems, where more optimised and faster alternatives are probably available.
There are, however, ways of optimising your Python applications by leveraging async, understanding the profiling tools, and consider using multiple-interpreters.
For applications where startup time is unimportant and the code would benefit a JIT, consider PyPy.
For parts of your code where performance is critical and you have more statically-typed variables, consider using Cython.

Further reading

Jake VDP’s excellent article (although slightly dated) https://jakevdp.github.io/blog/2014/05/09/why-python-is-slow/
Dave Beazley’s talk on the GIL http://www.dabeaz.com/python/GIL.pdf


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


- Bloggery committed by chris tower - 1808.07 - 10:10

- Days ago = 1130 days ago

- New note - On 1807.06, I ceased daily transmission of my Hey Mom feature after three years of daily conversations. I plan to continue Hey Mom posts at least twice per week but will continue to post the days since ("Days Ago") count on my blog each day. The blog entry numbering in the title has changed to reflect total Sense of Doubt posts since I began the blog on 0705.04, which include Hey Mom posts, Daily Bowie posts, and Sense of Doubt posts. Hey Mom posts will still be numbered sequentially. New Hey Mom posts will use the same format as all the other Hey Mom posts; all other posts will feature this format seen here.

Monday, August 6, 2018

A Sense of Doubt blog post #1263 - INDUSTRIAL ACCIDENT - IN MEMORY OF WAX TRAX - a Musical Monday for 1808.06

A Sense of Doubt blog post #1263 - INDUSTRIAL ACCIDENT - IN MEMORY OF WAX TRAX -  a Musical Monday for 1808.06

The week before last I was writing about how the ways I discover new music has changed since the advent of the real and true, we're-always-on-it Internet (not that dial up crap) and that led me to think of the great Wax Trax, the first big city (Chicago) MUSIC STORE that I found that opened my eyes, mind, and ears to a wide array of new music, things I did not know existed. As I investigated the history of Wax Trax, which can be found online, I learned that -- HOLD THE FREAKING PHONE!! -- there's a WAX TRAX DOCUMENTARY FILM. It's not available for purchase in a digital form (yet) and is still making the rounds in special engagements and festivals, but it's out and I WANT TO SEE IT.

So, two weeks ago when I learned these facts, I promised a Wax Trax Musical Monday mix, but it took me two weeks to create it because I was distracted with childhood music nostalgia and last week's David Cassidy themed mix.




Here's the Wax Trax mix, and here's how I created what I have created. DAMN, as usual, You Tube is amazingly helpful.

But first, here's the link to the films company and some text from my previous posting.

WAX TRAX FILMS


From -

http://sensedoubt.blogspot.com/2018/07/a-sense-of-doubt-blog-post-1249-dengue.html


Browsing record stores ranks second because these businesses featured glittery, densely-packed displays of albums with cool cover art or names of artists that grabbed my attention. I found Peter Gabriel this way. I had no idea who he was, but I bought his first solo album purely on the strength of the album art. Soon after, I bought the third one, too. The first time I went to Wax Trax in Chicago (also this one - WIKI) was like scaling the stairs to heaven. I found Cabaret Voltaire, Neu, Can, Throbbing Gristle, Killing Joke, TuxedoMoon, the Residents among others with visits to this store, but I also found the bands produced by the Wax Trax label, such as Meat Beat Manifesto, Ministry, KMFDM, Front 242, and many others. Hey!!!! There's a Wax Trax documentary!!!!!!!! More on this next week.













Did you watch that promo video for the film??

Good stuff.

I used the Wiki that lists the DISCOGRAPHY to assemble this mix. I started with the earliest releases by the Wax Trax label, such as Ministry's Cold Life and a Brian Eno ep, which was the first ever release featuring "The Lion Sleeps Tonight (Wimoweh)"  and "Seven Deadly Finns"; it's amazing that You Tube offers videos of these tracks, too.

Though the second cut is also from the very early period of first ten Wax Trax releases -- Front 242 "Controversy Between" from Endless Riddance, I did not remain chronological in my arrangement and choices. I also have a couple of tracks from outside the Wax Trax label, such as the Cabaret Voltaire "Sluggin' for Jesus," which is one of the first albums I bought at Wax Trax and my very first Cabaret Voltaire album. I also came across a really great little video of supposedly the first ever "techno" performance by Kraftwerk in Germany in 1970.

I tried to assemble a good selection of cuts from all of the main (or what I perceive as main) Wax Trax bands before repeating, so in addition to Ministry and Front 242, I added tracks by Revolting Cocks, Meat Beat Manifesto, Front Line Assembly, KMFDM, Coil, and My Life With The Thrill Kill Cult before I start repeats with three in a row by Psychic TV and then some of the other bands before closing with two tracks by Ministry, including the ever popular "Everyday Is Halloween."


I am proud of the way this mix came together. I referred to the music as "punk," but it's so much more than how punk is often narrowly defined. New Wave and Industrial are also inaccurate labels. The music really crosses genres and defies description and explanation.

Following, you will find a track list, the videos individually, and a final embedded video link that gives access to the entire playlist as does this URL - PLAYLIST URL.


INDUSTRIAL ACCIDENT - IN MEMORY OF WAX TRAX
- A MIX FOR THE STORE LABEL'S MUSIC AND THE MUSIC I DISCOVERED THERE
- MUSICAL MONDAY FOR 1808.06



1. Ministry - "Cold Life" - 5:09
2. Front 242 - "Controversy Between" - (1983)- 3:31
3. Cabaret Voltaire - "Sluggin' fer Jesus - pt1&2" - 9:20
4. Brian Eno - "The Lion Sleeps Tonight (Wimoweh)" - 2:57
5. Brian Eno - "Seven Deadly Finns" - 3:14
6. Front Line Assembly - "Conflict" - 5:38
7. Revolting Cocks - "No Devotion" - Live - 12:07
8. Meat Beat Manifesto - "God O.D." - 7:37
9. KMFDM - "More and Faster" - 3:37
10. My Life With The Thrill Kill Cult - "Kooler Than Jesus" - wax trax 1990 - 6:16
11. Coil - "Love's Secret Domain" - 3:53
12. Psychic TV - "Towards Thee Infinite Beat - Horror House" - 6:11
13. Psychic TV - "Infinite Beat" - 7:55
14. PSYCHIC TV - "I.C WATER (Re-Edited Video Version)" - 8:50
15. Front 242 - "Lovely Day"  from NO COMMENT - 5:26
16. Kraftwerk 1970 - "first" techno - 3:30
17. Meat Beat Manifesto - "Re-Animator, Pt.1" - 6:04
18. Revolting Cocks - "Big Sexy Land" - 3:59
19. Front 242 - "Quite Unusual" - 3:45
20. Ministry - "Nature Of Love [Cruelty Mix]" - 6:46
21. Ministry - "Everyday Is Halloween" - 6:32







































































VIDEO LINK TO ENTIRE PLAYLIST



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


- Bloggery committed by chris tower - 1808.06 - 10:10

- Days ago = 1129 days ago

- New note - On 1807.06, I ceased daily transmission of my Hey Mom feature after three years of daily conversations. I plan to continue Hey Mom posts at least twice per week but will continue to post the days since ("Days Ago") count on my blog each day. The blog entry numbering in the title has changed to reflect total Sense of Doubt posts since I began the blog on 0705.04, which include Hey Mom posts, Daily Bowie posts, and Sense of Doubt posts. Hey Mom posts will still be numbered sequentially. New Hey Mom posts will use the same format as all the other Hey Mom posts; all other posts will feature this format seen here.


Sunday, August 5, 2018

Hey, Mom! Talking to My Mother #1105 - Hugo Awards again - Hey Mom Reprint

Paris 1986

Hey, Mom! Talking to My Mother #1105 - Hugo Awards again - Hey Mom Reprint

Hi Mom,

In this week's reprint feature, I thought I would divert from the usual maudlin survey of old post when I was more deeply in the throes of grief.

Then again, I will return to this theme. I feel an instant connection when I learn of someone who loses a parent. An author I follow just lost her father, after having lost her mother years before. My Dad's still here, Mom, and so I am very thankful and grateful for that amazing gift. It makes missing you easier.

But there I go, getting a little maudlin.

My original point was that I chose this post for reprint because I had been on the lookout the other day for posts I had written on the Hugo Awards. Oddly, this post did not come up when I searched the phrase "Hugo Awards." Really?? The original post had been titled "Hugo Awards," and so one would think this would naturally come up in a text search. What gives Google? Sometimes I wonder if I am close to exceeding the limit for free Google, but last I checked, I had many gigs to go.

So, as I shared, I was writing about the Hugo Awards the other day in this post about Saul Williams' Neptune Frost.

This year's Hugo Awards (for 2018) will be announced at Worldcon in San Jose, California on August 19th.

There are many categories, but the best novel category is a great collection of work.

Best Novel
  • The Collapsing Empire, by John Scalzi (Tor)
  • New York 2140, by Kim Stanley Robinson (Orbit)
  • Provenance, by Ann Leckie (Orbit)
  • Raven Stratagem, by Yoon Ha Lee (Solaris)
  • Six Wakes, by Mur Lafferty (Orbit)
  • The Stone Sky, by N.K. Jemisin (Orbit)
N.K. Jemisin has won the last two Hugo Awards for best novel (2016 and 2017) for her excellent Broken Earth series. These awards have not been undeserved. But will she win for the third and last book in her trilogy? I have not read the other five books. In fact, I have only read Scalzi's book on this list (so far), but I read Jemisin's first Broken Earth book, I read Leckie's past efforts in the Ancillary series, and though I have considered starting up Robinson's novel, I have not delved into yet. I must confess that I have not heard of Mur Lafferty, who is surely a great writer if on this list.

In any case, I felt it was a good time to share the great Hugo debate of a few years ago.

Thanks for listening, Mom.

Good luck to this year's Hugo nominees.

FROM - http://sensedoubt.blogspot.com/2015/08/hey-mom-talking-to-my-mother-44-hugo.html



Hey, Mom! Talking to My Mother #45 - HUGO AWARDS

Hi Mom, And now for something completely different. HUGO AWARDS!!

For those not in the know, check out HUGO AWARDS WIKIPEDIA. The Hugo Award is best described as a popular vote (as opposed to Nebula, which is given by the SFWA (Science Fiction and Fantasy Writers of America), which is an organization exclusive to those with suitable publishing credits in the field). The Hugo Award collects the votes of fans who attend (and/or register to attend or just register with rights to vote) the World Science Fiction Convention, known as SASQUAN this year due its location in Spokane. Washington.

picture taken by Liesel
at Seattle's SF museum
Mom, I know you have zero interest in science fiction and even less in the current controversy surrounding the Hugo Awards. But since this blog charts on ongoing conversation with you, Mom, and this is a conflict I have been watching since the beginning of the year when the Hugo nominations were announced, I am going to collect the things I have read and a few thoughts here. When you were still alive and physically present, you would have listened to me describe all this nonsense. I am not sure I talked about it while you were still with us. It seemed more important to talk about school or Y&R. But I have been wanting to collect my readings about the Hugo Awards and now is as good a time as any.

The SASQUAN convention at which the Hugos will be given starts today.  I have been posting about the Hugos and following the controversy for some time. I have also been cobbling together this blog post for some time. I had wanted to post this before voting for the Hugos ended as it did on July 31st. But then it seemed more important to write about you, Mom, at least more often than not. And yet today also seems like a good day to unleash this content as it's the first day of SASQAUAN, and now I can post about winners after the awards are given on Saturday night.

The links I provide here do a great job of giving a tour of the controversy regarding the Hugos if you want to really dig into it.

I am going to crib George RR Martin's summary of the Sad Puppies issues as it is the bets on eI have seen to encapsulate the controversy. In a nut shell, the story goes like this.

The actual Sad Puppies opposition to the Hugo Awards ballots and method for granting one of SF's two most presitigious awards goes back three years. Some fans have argued that the Hugo Awards have been "taken over" by SJWs (Social Justice Warriors). Those arguing this supposition feel that the awards have become rigged so that only left-leaning, liberal, SJWs win Hugo, while those who are not part of that clique are left out or even black-listed.

Originally, when sad for not being nominated, the self-proclaimed Sad Puppies argued that the Hugo exclusion is political while others claim that it is religious in nature. Others decry the SJWs for racial prejudice, claiming that "straight (cis) white males" are excluded from the awards to promote an SJW agenda. And lastly, many Sad Puppies argue that the Hugo nominees represent boring stories and works of art unpopular with the masses whereas Sad Puppies write good old, entertaining SF and Fantasy yarns in the tradition of great masters like Heinlein.

Thus, these Puppies vowed to take back SF by creating slates of works for people to nominate to effectively "take back" or even "take control" of the Hugo ballot. Some people associated with Puppies have claimed that if SF fans ever want to re-claim their precious awards that they will have to accede to the demands of the Sad Puppies (or Rabid Puppies which is another group).

Those are the bare bones of the issue, though it's detailed in grander scope and breadth in the following links, some of which are from mass media outlets. You can find George RR Martin's comments via a link, too. If you do not know, as I know you may not, Mom, George RR Martin is the author of Game of Thrones and its series known as The Song of Ice and Fire.

And that's about it. Read on if you wish. I will be back later, maybe next week, with who wins the Hugo.

Voting ended on July 31st but if one was inclined to vote in the future, information could be found here: Voting for the Hugo Awards via SASQUAN

Original declaration of the 2015 PUPPY SLATE


ROUND-UP OF PUPPY AND NON-PUPPY LISTS


VOTE YOUR CONSCIENCE - Scalzi


PRETTY much EVERYTHING Puppy related and on "Hugo Neepery" can be found here:

The Compleat Litter of Puppy Roundup Titles


GOOD DUO TO READ

STARTER - 

Destroy the myth, destroy the culture by Patrick Richardson

RESPONSE - 

You Can’t Take Back What You Already Have by John Scalzi


GOOD COLLECTION OF QUOTES AND STUFF

The Left Paw of Darkness 5/16

FROM A SAD PUPPY - why-sad-puppies-3-is-going-to-destroy-science-fiction

ON DROPPING THE NOVELETTE CLAUSE - An open letter to the WSFS about unintended consequences

PUPPY HISTORY AND COMMENTARY - WHY PUPPIES ARE SAD AND ALWAYS WILL BE

MAJOR MEDIA

WSJ - The Culture Wars Invade Science Fiction - Online campaigners are pushing to give SF’s annual Hugo Awards to popular space yarns, not more literary fiction or tales of diversity

San Francisco Book Review on Puppygate

NEW REPUBLIC - Science Fiction's White Boys' Club Strikes Back

BIG THINK -  Sci-Fi Hugo Awards Controversy Is a Cultural Proxy War


LOTS OF HUGO STUFF - Various

GEORGE RR MARTIN ON PUPPIES

CORREIA RESPONDS TO MARTIN

Some fantastic data analysis with actual charts and graphs!

Some Sad Puppy Data Analysis


MORE HUGO AND HUGO RELATED STUFF

This next link is one of the best on the whole puppies situation. However, to read David's remarks you have to have Facebook.

DAVID GERROLD ON HUGOS AND PUPPYGATE


Some rhetoric by a blogger casting John Scalzi as a bully. Not directly Hugo related but in the same vicinity.

John Scalzi and the Bully Kool-Aid

The next five links are all HUGO related and additional information on the entire conflict if you are REALLY interested.

Puppies in Their Own Words

Two from Eric Flint:

WHAT THE HELL, LET’S DO IT AGAIN – STILL MORE ON THE HUGO AWARDS

AND AGAIN ON THE HUGO AWARDS

Puppygate – Winners and Losers | Cheryl's Mewsings

The Latest Hugo Conspiracy Nonsense Involving Me | Whatever

Not at all about Hugos, but since so much ire is directed at Scalzi, when he signed his big deal with Tor, there was lots of of complaining from Scalzi opponents on the Internet. Here's some smart reaction to all that hoopla.

My Inevitable and Utterly Redundant John Scalzi Multi-Million-Dollar Deal Hot Take | Matt Wallace

I figured this post should have a picture of my Mom in it. This seems like a fitting enough picture. Here's our family (minus my Dad) on our trip to Europe in 1986.

Paris - 1986

Have someone give you a kiss, and tell you that I love you.

Talk to you tomorrow, Mom.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

- Days ago = 46 days ago


- Bloggery committed by chris tower - 1508.19 - 12:04















+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Reflect and connect.

Have someone give you a kiss, and tell you that I love you, Mom.

I miss you so very much, Mom.

Talk to you tomorrow, Mom.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

- Days ago = 1128 days ago

- Bloggery committed by chris tower - 1808.05 - 10:10

NEW (written 1708.27) NOTE on time: I am now in the same time zone as Google! So, when I post at 10:10 a.m. PDT to coincide with the time of your death, Mom, I am now actually posting late, so it's really 1:10 p.m. EDT. But I will continue to use the time stamp of 10:10 a.m. to remember the time of your death, Mom. I know this only matters to me, and to you, Mom.