Tumblelog by Soup.io
Newer posts are loading.
You are at the newest post.
Click here to check if anything new just came in.

August 01 2012


Counting Tweets to Trigger an Email to Write a Blog Post

Like the old lady who swallowed a fly…

I’ve been feeling restless lately. Not enough coding getting done. Summer lull. Whatever. So when That Guy I Married said he wanted to be blogging more frequently, and had thought of a way to remind himself to do it, I perked up.

The concept: If you’re tweeting a lot during a short time period, chances are there is a blog post buried in there somewhere. So if there were a way to check the frequency of tweets in a certain time period, and trigger an alert if the frequency went over some limit, a blog post might get written.

The result: A little PHP script that can be run as a cron job. It uses the Twitter API to count how many tweets there have been since the previous date. (I would have liked to do it as number of tweets over the course of a few hours, but I couldn’t figure out how to do it without using a database to store the status ids.) Once the number of tweets has been calculated, it checks to see if that number meets the conditions for triggering an email. (In this case, 10 or more tweets since yesterday would trigger an email.) If the condition is met, That Guy I Married gets an email reminding him to write a blog post.

The code:

/* Script to count number of tweets since yesterday and trigger an email reminding user to write a blog post if the user has tweeted more than X times. */

global $total, $hashtag;
$yesterday = strtotime("-1 day", strtotime("now"));
$searchdate = date("Y-m-d", $yesterday);
$hashtag = 'from:TWITTERUSERNAME since:'.$searchdate;
$total = 0;
function getTweets($hash_tag, $page) {
global $total, $hashtag;
$url = 'http://search.twitter.com/search.json?q='.urlencode($hash_tag).'&';
$url .= 'page='.$page;
$ch = curl_init($url);
$json = curl_exec ($ch);
curl_close ($ch);
$json_decode = json_decode($json);
$total += count($json_decode->results);
$temp = explode("&",$json_decode->next_page);
$p = explode("=",$temp[0]);
if ($total >= 10) {
mail('USERNAME@EXAMPLE.COM', 'Write a blog post', 'You have tweeted '.$total.' times since '.$searchdate.'.');

I’m setting up the cron job tonight, and I guess we’ll see how effective this is. As always, suggestions for improvement are appreciated.

Tags: posts

January 04 2012


IKEA Hack: LACK coffee tables with TROFAST drawers and SIGNUM cable management

That Guy I Married and I recently replaced an old, tiny sofa with the IKEA KARLSTAD corner sofa. It’s huge. So huge, that we realized there was a hidden cost: We had to replace our old coffee table as well.

We decided to get two of the ~30″ square LACK coffee tables. The couch is also our dining area, so really, the more table space, the better. These tables have a shelf about halfway down the legs, but we have two active cats. Anything we left on that shelf would be identified as not bolted down, and therefore a cat toy.

So we needed drawers on rails that would hold from the top, instead of the side or bottom.

Based on another hack I’d seen around, I knew the TROFAST drawers had a lip that made them pretty much perfect for this use. My husband picked up the STRECKET rails from the kitchen department, and after testing that the rail and lip were a match, we took them home with us.

One of the tables also has the SIGNUM cable management rack attached for wrangling laptop cords since we work on the couch a lot. At some point, we might spraypaint those bright green drawers. :)

Tags: posts

December 18 2011


Daily Summary

I did:

Made like 200 cookies. My hands smell AMAZING.

Got two awesome books from my in-laws: Arguably: Essays by Christopher Hitchens and Radioactive: Marie & Pierre Curie: A Tale of Love and Fallout. Thanks Mom and Dad!

Attended two different birthday parties. Happy Birthday December people!

I learned:

Preheating the oven is not optional.

I read:

Dear Congress, It’s No Longer OK To Not Know How The Internet Works

Nerds and Male Privilege

Tags: posts

December 17 2011


December 16 2011


Introduction to Databases Statement of Accomplishment

Just got my statement of accomplishment from Jennifer Widom for the Introduction to Databases class!

Congratulations! You have successfully completed the free online offering of Introduction to Databases, offered October through December, 2011. To successfully complete this free online class, students were required to watch lectures, complete quizzes and automated exercises, and take a midterm exam and a ���nal exam. According to our automated system, your scores on these components were as follows:

Quizzes: 57 out of a maximum of 67
Exercises: 69 out of a maximum of 71
Exams: 26 out of a maximum of 38
Scaled total (exercises doubled, exams tripled): 273 out of a maximum of 323

We thank you for your interest in studying databases, and for participating in our ambitious experiment to deliver quality educational content to a worldwide audience.

Tags: posts

Daily Summary

I did:

Figured out what changes I need to make to my boundary service JavaScript files.

Checked out this crazy Facebook Timeline biznass.

Poked around online programming classes. I think I’m gonna work on mastering JavaScript next. Or at least one of the libraries.

I learned:

Spiders can make more than one kind of silk, and have multiple spigots in their spinnerets. Spiders are awesome.

If I bring homemade toffee to work, people will eat it.

How to find New York State geometry data with Google’s geocoding API

I read:

NPR’s StateImpact project explores regional topics through focused, data-driven journalism
The network is taking the resources of a national news organization and applying them to the local level.

24 Ways: Extracting the Content
Use page tables to break Content down into content.

Dalek Smash Cake & Doctor Who-Themed Birthday Party

Create Stunning HTML Email that Just Works by Matthew Patterson
We really need to start from scratch with our email templates at work.

Multi-Device Web Design: An Evolution

Tags: posts

November 17 2011


Intro to Databases: Querying XML, XQuery Intro

Expression language (compositional)
Each expression operates on and returns sequence of elements
XPath is one type of expression

FLWOR expression
For $var in expr -> iterator variables set(N)
Let $var := expr -> assignment
Where condition -> filter
Order By expr -> sorts results
Return expr -> what we are actually trying to get
- All except Return are optional
- For and Let can be repeated and interleaved

Mixing queries and XML

Tags: posts

Intro to Databases: Querying XML, XPath Demo

Use Bookstore data from early XML videos

Get all book titles
doc(“BookstoreQ.xml”) /Bookstore/Book/Title
output is XML

Get all book or magazine titles
doc(“BookstoreQ.xml”) /Bookstore/(Book | Magazine)/Title
output is XML

Get all titles
doc(“BookstoreQ.xml”) /Bookstore/*/Title
output is XML

Get all titles
doc(“BookstoreQ.xml”) //Title
output is XML

Every element + subelements at every level of the tree
doc(“BookstoreQ.xml”) //*
output is XML

Get all book ISBNs
doc(“BookstoreQ.xml”) /Bookstore/Book/data(@ISBN)
output is in strings

Get all books costing less than $90
doc(“BookstoreQ.xml”) /Bookstore/Book[@Price < 90]
outputs XML – all book data

Get all books costing less than $90
doc(“BookstoreQ.xml”) /Bookstore/Book[@Price < 90]/Title
output is XML, just book titles

Titles of books containing a remark
doc(“BookstoreQ.xml”) /Bookstore/Book[Remark]/Title
outputs XML

Titles of books costing less than $90 where “Ullman” is an author
doc(“BookstoreQ.xml”) /Bookstore/Book[@Price < 90 and Authors/Author/Last_Name = "Ullman"]/Title
outputs XML

Titles of books costing less than $90 where Jeffrey Ullman is an author
doc(“BookstoreQ.xml”) /Bookstore/Book[@Price < 90 and Authors/Author[Last_Name = "Ullman" and First_Name = "Jeffrey"]]/Title
outputs XML
no slash before conditions
conditions within conditions

All second authors
doc(“BookstoreQ.xml”) //Authors/Author[2]
output is XML

Titles of books with a remark containing “great”
doc(“BookstoreQ.xml”) //Book[contains(Remark, "great")]/Title
output is XML

All magazines where there’s a book with the same title
doc(“BookstoreQ.xml”) //Magazine[Title = doc("BookstoreQ.xml") //Book/Title]
output is XML

All elements whose parent is not “Bookstore” or “Book”
doc(“BookstoreQ.xml”) /Bookstore//*[name(parent::*) != "Bookstore" and name(parent::*) != "Book"]
output is XML

All books and magazines with non-unique titles
doc(“BookstoreQ.xml”) /Bookstore/(Book | Magazine) [Title = following-sibling::*/Title or Title = preceding-sibling::*/Title]
output is XML

All books or magazines with the same title as another book
doc(“BookstoreQ.xml”) /Bookstore/(Book | Magazine) [Title = following-sibling::Book/Title or Title = preceding-sibling::Book/Title]
output is XML

Books where every author’s first name includes “J”
doc(“BookstoreQ.xml”) //Book[count (Authors/Author[contains(First_Name, "J")]) = count (Authors/Author/First_Name)]
output is XML

Find all books where Ullman is an author, and Widom is not an author
doc(“BookstoreQ.xml”) /Bookstore/Book[Authors/Author/Last_Name = "Ullman" and count(Authors/Author[Last_Name = "Widom]) = 0]/Title
output is XML

implicit existential quantification vs universal quantification

Tags: posts

November 16 2011


Intro to Databases: Querying XML, XPath

Querying XML
Not nearly as mature as querying relational databases
-no underlying algebra

Sequence of Development
1. XPath – path expressions and conditions
2. XSLT – XPath + transformations, output formatting
3. XQuery – XPath + full-featured query language

Think of XML as a tree

-First Name
-Last Name

Basic Constructs
/ designates root element, also used as a separator
x designates the name of an element
* matches anything
@ attribute name
// designates any descendent of current element
[] conditions or matching nth subelement of current element

Built-in functions (lots of them)
contains(s1, s2) will return true if the first string contains the second string

Navigation “axes” (13 of them)

More details
XPath queries operate on and return sequence of elements
- XML doc
- XML stream
sometimes result can be expressed as XML, not always

Tags: posts

September 18 2011


ManageFilter users: Google+ losing momentum? Public posts decrease by 41% over past two months

ManageFilter is a Twitter account management tool which links Google+ to your Twitter account. 89n writes that 7,280 people have currently linked their Google+ accounts to Twitter using their service (see source below). I doubt if the usage data of 7,280 can be used to predict how 28 million Google+ users behave.

ManageFlitter :: Kevin Garber, CEO/Co-founder 89n, asks: "Is Google+ losing its momentum?" - The findings: ManageFilter data indicates that the average number of public Google+ posts per day has decreased from 0.68 public posts per day between 19 July 2011 and 19 August 2011 to 0.40 public posts per day between 19 August 2011 and 14 September 2011. This represents a decrease of 41%.

Continue to read Kevin Garber, 89n.com

July 28 2011


Link roundup: On the future of the CMS

Read this:


and this:


and these:

The Twilight of the CMS

The post-post-CMS CMS: Loosely coupled monoliths & read-only APIs


Read all the things these articles link to. There are probably more I haven’t seen. Think about what they’re saying. Somewhere in there is the solution to publishing tools that real people can use, with the flexibility that real programmers can love.

Tags: posts

July 27 2011


Learn Python The Hard Way, Exercise 37: Symbol Review

Some of these I haven’t been able to find. Gonna keep plugging along and hope I figure them out eventually.

Keywordsandboolean operatordeldeletefrominitialize importnotboolean operatorwhilerepeated execution as long as an expression is trueasrename an imported objectelifshort for else if, and is used as part of an if statementglobaldeclaration which holds for the entire current code blockorboolean operatorwithwrap the execution of a block with
methods defined by a context managerassertinsert debugging assertionselsepart of an if, while, for or try statementifconditional executionpassnull opyieldused when defining a generator functionbreakterminate loopexceptspecify exception handlersimportfind and initialize modulesprintwrites object of expression to outputclassdefines an objectexecexecute codeinevaluates to true if x is a member of the set sraiseraise an exceptioncontinuecontinues a loop cyclefinallypart of the try statementisoperator tests for object identityreturnreturn a value to the caller.defdefines a functionforlooplambdacreate anonymous functionstryspecifies exception handlers and/or cleanup code for a group of statementsData TypesTruex = xFalsey = xNoneabsence of a valuestrings“free beer”numbers1, 8, 38947345floats1.0, 8.0, 38947345.0lists [1, 9, apple]String Escapes Sequences\\Backslash (\)\’Single quote (')\”Double quote (")\aASCII Bell (BEL)\bBackspace\fASCII Formfeed\nNew Line\rCarriage Return\tHorizontal Tab\vVertical TabOperators+sum-subtract*multiply**x to the power y/division//quotient%remainder<less than>greater than<=less than or equal>=greater than or equal==equal!=not equal<>obsolete not equal( )arguments[ ]list, arguments{ }dictionary@,:.=;+=-=*=/=//=%=**=

Tags: posts

July 14 2011


Geocoding addresses in Firetracker for big map of recent fires

We’re gettin’ fancy now! After adding individual maps for each fire, the natural next step was to add a large map of all recent fires. This was a more complicated addition to Firetracker, but check it out! Awesome, right?

Here’s what I did: I started by studying the models.py from django-easy-maps, where the geocoding is done. I made a few attempts to figure out how to just pass the data from easy-maps back to my fires map, but since the model in easy-maps is named Address, and I also had a model in fires called Address, I would have had to rewrite a whole bunch of code…so I decided instead to use the easy-maps geocoder as a model for my own geocoder, so I would have the latitude and longitude variables within fires, and could easily pass that to the Google Maps JavaScript API.

If you’ve already created your Firetracker app and added data, you are going to hate me because this process involves dumping database tables. We are adding fields to a previously existing model, so we have to recreate the tables. I’m sure there’s a way to inject the additional data if you have a lot of data in there already, but since I only had two fires entries, it was easier to just dump.

After studying the easy-maps models.py, I wrote this geocoder class in my fires models.py:

Lines 1 – 6 create the table and its fields. Then there’s some data verification and error handling. Lines 12 – 14 do the actual geocoding. Then more error handling and finally we spit out the latitude and longitude for the address.

I also made some changes to the Address class, adding these two methods:

This adds the geocoded data to the Address class for easier referencing later.

The last change to the models.py is this:

These lines get added to the fire class. The first line (add this with the other fields in the fire class) adds the geocode field to the fire table. The save method makes the geocoder run when you save a new fire entry and saves the geocoded data to the database. Now we just have to use the Google Maps JavaScript API to generate our map!

If you’ve played with the Google Maps API before, this will all look very familiar to you. If it doesn’t, you should go learn about it. You can see in the script above where we’re calling our new geocoded variables in, so the map will automatically create markers for all the most recent fires.

Now, you have to dump all your fire tables. Then run manage.py syncdb and restart your server. When you go to the admin to add data, create a new fire entry. When you save it, the address will automagically be geocoded!

I think that’s it! A huge thank you to Ken Schwencke, who helped me figure out how to pass the data around to the Address and Fire classes.

Tags: posts

July 13 2011


Adding maps to FireTracker

After working through Andy Boyle’s FireTracker tutorial series, I decided to take things a step further. Gotta have maps!

So I Googled around for a way to do that. I found django-easy-maps, and after just a few changes to Andy’s original models, I had me some maps.


Here’s how to do it:

1. Go to django-easy-maps and follow the installation instructions. If you don’t use pip, easy_install will work too.

Install django-easy-maps in the same directory as your fires app. Make sure to add the app to your INSTALLED_APPS in settings.py.

2. You need to make a little change to Andy’s original models.

In models.py, find this class:

And make it look like this:

3. Now, because you’ve changed the models, you have to sync those changes to the database. So run manage.py syncdb. Then restart your server.

4. One more change! Open up the templates folder. Open up index.html (or whichever template you want to have the map) and type

wherever you want the map to appear, but AFTER {% for f in fires %}.

EDIT: The 200 200 bit tells the map what size to be. In this case, my maps are 200px wide by 200px tall. You can change that to suit your design.

Wheee! Mappage!

Basically, all we’ve done is created a new variable that will print “state, city, address”. We use that variable in the easy_maps template tag (that’s this bit: {% easy_map VARIABLE 200 200 %}). And easy_maps does the rest!

(h/t to Ken Schwencke and Jamie Wilson for helping me with this!)

Tags: posts

July 11 2011


Twitter still can’t figure out how to make money

I just read this: Twitter Ads in Timelines Coming in Weeks – AllThingsD.

Twitter is pushing a new ad product called “Promoted Tweets To Followers,” set to launch by early August.

They allow brands to send messages directly to people who have already said they care about them — that is, Starbucks can target people who are already following Starbucks on Twitter. And they can ensure that Starbucks’ followers actually see the ad, by inserting them at the top of their timelines.

The following is the result of a conversation with a coworker regarding Twitter’s neverendingly bad attempts to make money.

First of all, if a “Promoted Tweet” is going to move, and not sit at the top, then am I just paying to have the word “Promoted” appear? Because other than that, it’s just a tweet.

If it IS going to sit at the top like an ad, then I’m just going to unfollow you and these ads will be counterproductive as brands’ followership plummets.

They’ve already tried the dickbar, it failed, move on.

Lastly, an example:

If there’s a Coke advertiser out there, and I’m a guy who loves Coke and only drinks Coke and follows them on Twitter and Facebook and Coke.com is my homepage…

I’m not their target market! Why are you wasting advertising on your followers!? You’ve already got them in your circle.

Whats the difference between tweeting to people who are following you and tweeting to people who are following you?

Now, if they could promote tweets to followers of Pepsi and Dr. Pepper, THAT would be a business model.

h/t @echasser


Tags: posts

June 03 2011


“Learning Python the Hard Way”

These are thoughts and notes to myself while working through Zed Shaw’s book, “Learning Python the Hard Way.”

Ex1: Don’t over think the extra credit. Use # to comment out lines. This prevents the script from running the line.

Ex3: Order of operations: PEMDAS. Floating point: just add .0 to all integers. Don’t get all bogged down in the binary crap.

Ex4: I repeat: Don’t get all bogged down in the binary floating point crap.

Ex5: Format characters: http://docs.python.org/library/stdtypes.html#string-formatting-operations

Ex6: Strings concatenate ( + )

Ex7, 8, 9: Boring, but do it anyway.

Ex10: Escape sequences: new line character (\n), tab (\t), \, \\, “”", more: http://docs.python.org/reference/lexical_analysis.html#string-literals

Ex11: raw_input

Ex12: pydoc, open, file, os, and sys

Ex13: import, argv, modules

Ex15: file, read(), open, close()

Ex16: readline, truncate, write()

Ex17: output.close(), more file stuff

Ex18: functions, checklists
Did you start your function definition with def?
Does your function name have only characters and _ (underscore) characters?
Did you put an open parenthesis ( right after the function name?
Did you put your arguments after the parenthesis ( separated by commas?
Did you make each argument unique (meaning no duplicated names).
Did you put a close parenthesis and a colon ): after the arguments?
Did you indent all lines of code you want in the function 4 spaces? No more, no less.
Did you “end” your function by going back to writing with no indent (dedenting we call it)?

And when you run (aka “use” or “call”) a function, check these things:

Did you call/use/run this function by typing its name?
Did you put ( character after the name to run it?
Did you put the values you want into the parenthesis separated by commas?
Did you end the function call with a ) character.

Ex19: seek, +=

Tags: posts

January 20 2011


CoJ: The changing role of universities for the information needs of a community

This is a post for the Carnival of Journalism, a group of journalism bloggers who write each month about a topic. This month's topic:

The changing role of Universities for the information needs of a community: One of the Knight Commission‘s recommendations is to “Increase the role of higher education…..as hubs of journalistic activity.” Another is to “integrate digital and media literacy as critical elements for education at all levels through collaboration among federal, state, and local education officials.”

Okay – great recommendations. But how do we actually make it happen? What does this look like? What University programs are doing it right? What can be improved and what would be your ideal scenario? Or is this recommendation wrong to begin with? No box here to write inside of.

I really like the idea that universities, especially public schools, should provide their communities (the ones they are in, not just the ones built inside them) with the information, tools and support to improve the flow, analysis and consumption of information.

A few ideas for how this could happen:

What if the school news outlets were open to anyone in the community who wanted to participate? Much like the idea of the newsroom cafe. Since these are teaching systems as much as they are journalistic endeavors, someone from the outside could easily participate. Most student-run news organizations within universities are open only to students, which limits both the quantity and quality of output.

I would really like to see a lot more interdisciplinary work being done. Collaboration between university departments can only benefit everyone, from professors to students to the community. Journalism departments should team up with computer science, English, creative writing, political science, etc.

Maybe a sidenote: What if student journalists each had a beat within the university - a department. Not only would they learn about what different departments are up to, but they could serve as ambassadors between departments to encourage collaboration.

A more radical idea, stolen from Jay Rosen and Dave Winer's Rebooting the News podcast: make journalism a required university course. Everyone should know and use the basic tenants of journalism, and a community could not be better served than by having more "trained" journalists. I think just one class could create a vastly improved army of citizen journalists.

Another idea plucked from the mind of Dave Winer: Universities should provide a safeguard for materials published online after the author's death. An ueber-Internet Archive.

Since I'm writing this right before the deadline, that's all I've got for now. Please help me flesh these ideas out in the comments, or suggest your own, or tell me I'm way off the mark.

Post from: Megan Taylor: Web Journalist

CoJ: The changing role of universities for the information needs of a community

Tags: posts

Let’s think science-fictionally

This post is one of many that will be collected in the thrilling return of the Carnival of Journalism.

Brother Cavil: In all your travels, have you ever seen a star go supernova?

Ellen Tigh: No.

Brother Cavil: No? Well, I have. I saw a star explode and send out the building blocks of the Universe. Other stars, other planets and eventually other life. A supernova! Creation itself! I was there. I wanted to see it and be part of the moment. And you know how I perceived one of the most glorious events in the universe? With these ridiculous gelatinous orbs in my skull! With eyes designed to perceive only a tiny fraction of the EM spectrum. With ears designed only to hear vibrations in the air.

Ellen Tigh: The five of us designed you to be as human as possible.

Brother Cavil: I don’t want to be human! I want to see gamma rays! I want to hear X-rays! And I want to - I want to smell dark matter! Do you see the absurdity of what I am? I can’t even express these things properly because I have to - I have to conceptualize complex ideas in this stupid limiting spoken language! But I know I want to reach out with something other than these prehensile paws! And feel the wind of a supernova flowing over me! I’m a machine! And I can know much more! I can experience so much more. But I’m trapped in this absurd body! And why? Because my five creators thought that God wanted it that way!


Have you had a moment when you felt like you were breathing the network? When the waft of knowledge hit your nose and you could taste the data?

I have.

It’s a fleeting feeling, but I know it. For a taste, throw on your headphones, fire up TweetDeck and watch a crisis pan out. It’s thrilling.

And it’s where we’re headed. Totally immersive immediacy. I don’t know what the technologies will be. The data will ride on my 3d goggles and my conductive underwear, or my surround-view Kinect room, or my sensory deprivation in-ear headphones and holographic display… whatever the medium, I’m gonna *feel* it.

What is media literacy in that world? What does journalism become, when everything is ephemeral, when the Tweets wash over your mind, neighbor to your own thoughts?

Hell if I know.

But that’s what we need to be thinking about.

Catch up reading:

Rainbow’s End by Vernor Vinge
Counting Heads by David Marusek
Neuromancer by William Gibson
Snow Crash by Neal Stephenson

Tags: Posts

November 13 2010


Can I Please Give You My Money In Return for Your Goods?

(Ed. Note: I'm not making my point terribly well and I'm not providing any solutions, because I'm still angry about my experience today. Maybe I'll do a follow-up post when I cool down.)

Retailers have GOT to do something about enabling customers to go in, get their shit, pay, and get out. I spent several hours today standing in lines waiting to pay someone my hard-earned money in return for stuff I needed. I know some stores have started implementing "self-checkout" areas, but these actually slow things down because no one can figure out how to use them or the software is buggy and often requires a sales person to come over and fix it.

Today was a prime example of how infuriating it is to be forced to wait to pay for goods.

I haven't done much shopping over the past two years, but today we just had to fill some gaps: a new winter coat for me, jeans for That Guy I Married, a new George Foreman, Tupperware (we're going to start brown-bagging lunch), etc.

The day began optimistically: I cooked breakfast! I found a great coat at JCPenny! But it went downhill fast.

Starting in JCPenny, it took around 30 minutes to get someone to accept my money so I could leave without getting arrested. I'm not trying to shoplift, I really, really want to give you ~$100 for this coat, but I HATE having to stand in line forever to do it.

Then we went to Macy's (admittedly a horrible idea) in search of jeans. That Guy I Married likes his jeans with a little stretch to them, which are sometimes hard to find. It took us an hour to enter the store, find the men's jeans section (on the 1 and 1/2 floor?!) and determine that we weren't going to get jeans for under $70. Eff that. We had the misfortune on the way out to pass through the cosmetic area, where we both got dizzy, but couldn't get out of the damned store because apparently, no one else had anywhere to be.

Next stop: Target. First of all, the Target at the Gateway Mall in the Bronx has the most confusing layout ever. And none of the employees know where anything is. Another couple of hours gone there.

Finally, we hit up the grocery store. Went in with a list, got only what we needed, and as we approach the checkout lines, 3 lanes close. Mind you, it's like 7 p.m. and the store doesn't even close until 10 p.m. We stand in line for about 30 minutes.

Throughout the day, jokes were made to relieve the tension: "I would really like to pay you for this stuff. But if you make me stand here any longer, I'm just going to walk out with it. Your choice." "Why can't I pay for food by weight? Put the cart on the scale and swipe the card. I would buy only marshmallows."

This isn't the only thing that makes shopping frustrating (I also hate the crowds, constant bombardment with advertising, and broken price scanners) but it is the main reason that I prefer to do as much shopping as possible online. Unfortunately, that's not always ideal, in the case of clothing and certain other items.

Retailers, I'm begging you: Make it easier for me to give you my money. Please.

Post from: Megan Taylor: Web Journalist

Can I Please Give You My Money In Return for Your Goods?

Tags: posts

November 02 2010


Obligatory ONA10 Reaction Post

Wow. What a blast.

I haven't been to a big journalism conference in two years, since IRE in Miami in 2008. I love going to meetups and such, but the multi-day conference is a whole different experience: the people, the sleep deprivation, the alcohol, the sessions, getting lost in a different city...

Because I was livestreaming on Thursday and Friday, I didn't get to go to all the sessions I would have liked to. But it was worth it.

However, there was one conversation that I kept having over and over with various attendees: We need a more advanced conference.

The problem is that it feels like these conferences are being used to bring people up to date on the online news ecosystem. "Look, there are apps and hyper local sites, and data visualization!" There was even a session on comments, which turned into a debate on whether or not we should have comments.

Seriously? The journalism community has been doing that one for at least 4 years. Isn't it time to move past the "is _____ journalism" and "are comments good" crap and have a discussion about HOW we can do these things better?

I would have loved, in the comment session example, (which, by the way, I didn't actually attend, only heard about afterward) to see these topics of discussion:

  • How Slashdot makes comments awesome
  • Happy Cog's commenting system on their Cognition blog
  • Policies for journalists participating in comments
  • Other ways to make comments better

The solution to crappy comments is not to do away with comments altogether. Don't throw the baby out with the bathwater, figure out how to make the water clean itself.

In "Creating Killer Apps with Public Data," I wanted to know how they got to the demo. Show me the demo in 2 minutes and spend the rest of the time telling me how you got there. Inspirations, ideas, how did you put it together? Nuts and bolts, man.

"Seven Deadly Sins of Data Virtualization" was the worst named panel there. No sins were described. The panelists simply demoed their work.

Matt Waite put out the word on "demos not memos" a few years ago, but I don't think he was referring to conference sessions. Demoing your product instead of telling us how you got there is just lazy.

I don't know if we need a new conference/association for these ideas, or if we can just up the level of discussion at existing conferences. But if all we're gonna do is demos and rehash the same old conversations, I'll skip the sessions and see you in the hotel lobby and the afterparties.

Post from: Megan Taylor: Web Journalist

Obligatory ONA10 Reaction Post

Tags: posts
Older posts are this way If this message doesn't go away, click anywhere on the page to continue loading posts.
Could not load more posts
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
Just a second, loading more posts...
You've reached the end.

Don't be the product, buy the product!