Categories
social media

100 ReTweets of Wisdom – One Month Later

As an experiment, 100 RTs was not the most rigorous.  I started at 900 Tweets and I am now at 977, having only actually done 21 ReTweets.  So what did that accomplish?

First of all, I learned how hard it is to give up any tweets at all, for the sake of experiment or other.  I got some follow backs, which was fine.  I found out how difficult it is to find tweets of any substance by using search.twitter.com.

Did I discover cool new people to follow?  Resoundingly, yes.

More importantly, this exercise made me reach out of my twitter comfort zone and find people with no prior connection to me.  This underscores a feature of twitter unique among social media networks – you get to know people based on what they think, not what friends they have.

BTW –

technogoddess
technogoddess Today, I came out to play when I would have hidden. And it felt liberating. It wasn’t for her, but for me and the next woman who deserves me
Brian McLeod
LoudMac Today is one of those days to just pick one off the list of “everything that cannot be completed today” and knock it out.
mikhelk
mikhelk Sometimes I need to be reminded that I always have choices. Often many more than are 1st apparent. No matter where I am or what’s before me.
Rob Knight
robknight Never underestimate the power of a simple message to the client explaining honestly where a project stands. That’s all they need.
Dave Whelan
djwhelan My uncle just joined Facebook. Worlds collide. It can’t be very long before my father and future in-laws join. Maybe the world is too small.
Sarah Dopp
sarahdopp Low tide with storm winds. The water has a huge space to dance with. The ground is covered, then big and empty.
Evan
montythestrange Tech section of the office is getting the hax0r vibe; dark skies outside, no lights on by us. PHP Ninjas coding by the light of the LCD.
Maggie Mason
Maggie I want to achieve maximum efficiency without getting all worked up about it. I’m aiming at peacefully frantic. Serene rampage.
patobryan
patobryan everybody needs someone to look up to and someone to look down on… and apparently, something to fear.
ryan
secretsquirrel Spent most of my weekend playing an evil bisexual hooker-warrior in a game. I am worried what would happen if I did not have these outputs.
Noah
heyitsnoah Just failed six CAPTCHAs in a row. Does that mean I’m a robot?
Cat
CatBailey Why do I get told it’s ironic when I suggest someone ELSE see a shrink? It’s not like I’m hogging the crazy over here. *pissed*
Pedro Valle
petevalle Stealing some WiFi over at Dunkin Donuts. This is the sort of hijinks only a nerd gets excited about.
Nicole Reising
colereising Ran in the rain tonight-decided insurance on my blackberry might actually be a good idea afterall. 🙂
Shannon Thompson
TheBathProject made some Chai Tea with local honey, watching the sun come up over the mountains out back, a beautiful pale pink with orange tinge aaaahhhh
Warlach
Warlach Oi, seriously people, the internet is not rocket science. “Notepad” is not an appropriate response to how your site publishes content.
matthewktabor
matthewktabor bittersweet blog moment: trying to research a topic and finding only your own posts addressing the subject
burstein
burstein Met the ex. While it is a bad idea to bring a stick to a gun fight, sometimes a olive branch works out ok.
Rowan Price
roprice there’s a whole new generation of web developers who’ve never had to write actual Javascript, cuz they’re using JQuery. Green with envy 🙂
Karen Cardoza
mrsb Ok.. time to just pick a task and jump right in. There will be no fairies coming in the night to do everything for me.
Annalie Killian
maverickwoman NY times cover story: Obama vs McCain approach 2 maintain US relevance thru technological innovation. Obama strategy better but execution?
Categories
social media

Listening and 100 Tweets of Wisdom

I have always been the person with something to say.  Not that I am always producing content, but when it comes to social media it is typically because I want everyone to listen to me.  It’s weird how things kind of come together but I also had my 900th tweet coming up, and wondered if there might be some way I could use those 100 tweets before 1000 to do something more interesting than the usual day to day “what are you doing?”

My last blog post was on copyright and file sharing, and Chris Bloom took it upon himself to comment on it – a great and detailed comment that reminded me of Chris Brogan’s post “Finding Treasure in the Comments” – and inspired me to start reading more of the blog posts of those people I know and follow on twitter.  For the last few months I’ve been an eager audience of Mashable and TechCrunch, but I asked myself, do I know what my friends are working on?

I’ve created a folder in my Google Reader to keep track of rss feeds of friends.  I’m committing myself to comment frequently on their blogs and stay up to date on their projects.  And now I’m dedicating one hundred tweets from 900 to 1000 to retweeting people that I find inspiring, informative, funny, and original.

Now if anyone has any more ways that they like to keep track of what their friends are posting, tweeting, or working on, I’ll be glad to listen.

Categories
tech-talk

My take on Copyright and File Sharing

Creativity depends on a content producer being able to build on what has come before, but it also relies on the producer being protected and entitled to the benefits of his/her efforts.  If I study hard and work tirelessly to become a master musician or a programmer or an athlete, I should gain the rewards for it as well.  Someone who didn’t work to earn it shouldn’t feel entitled to the value of what I produce, and certainly should not be reaping the benefits of what I produce.

So what is free to take without permission and what requires the permission of the producer?  Copyright law makes the distinction between an idea and the form of an idea.  An idea is free to use and is exempt from ownership.  The way an idea is expressed, however, is owned by the person who originates that form of expression.  In my case as a programmer, I can rely on the principles of mathematics – I don’t have to attribute 1 + 2 = 3 to anyone else.  However, I can safely claim my method of applying that math to a specific problem and charge money for it or not.

Speaking of money, what does a purchase mean anyways?  It is a contract between a content producer and a content consumer, the consumer compensating the producer for the value they get out of the content.  Like any contract, it is subject to the intentions and interpretations of both parties.  If the value a consumer gets from the content is outside of the intention of the producer, does the consumer infringe on the producer’s right to the content?

I would argue that yes, the contract should be adhered to by both the consumer and the producer.  So in that case, who should enforce the contract?  Besides that consumer having an ethical obligation to the contract, the producer should be able to protect his/her legal right to the content. 

The government and industries representing the content producers have tried to make it easier for producers to safeguard their rights to their content.  Their efforts were unpopular, but have made it general knowledge that certain forms of file sharing are illegal and may be prosecuted.  If there is a complaint to be made about these efforts, it has to be that consumer behavior is intelligent and requires finesse.  The online community appreciates respect and disdains force, and lawsuits and subpoenas and file encryption are the exact opposite way to achieve compliance. 

The success of Radiohead in asking for as much as the fans were willing to pay for their album rather than loading their songs with DRM represents a contract in which both the consumers and the producers win.  In this model, the producers make their money, the consumers are respected and, most importantly, the contract is honored – no enforcement necessary.

Do I have it right?  wrong?  What do you think about copyright and file sharing?

 

Radiohead article:

http://musically.com/blog/2008/10/15/exclusive-warner-chappell-reveals-radioheads-in-rainbows-pot-of-gold/

Categories
geek

URLs, Models, Views, Templates, and Shell – Useful Snippets for Each

There have been quite a few times when I have resorted to my coding friends and mentors and good ole Prof. Google to teach me how to write the code I needed to get the job done.

In particular, Adam (@adamjt) and Andy (@ashearer) have been right there alongside me helping me out.

Learning Django has been particularly involved because there are so many “in” things to know.  My understanding of Django has come down to the fact that there are 5 things to master in order to code Django and python successfully – the urls, the models, the views, the templates, and the python shell (command line interface).  I’ll touch on each one and list something I didn’t get at first until my friends explained it to me or I found it on google.  It is written in the spirit of writing it down so I don’t forget it …

URLS:   All about the media … explained to me by Andy (@ashearer on twitter)

In order to link my templates to the site media such as images and javascript and all that fun stuff I had to follow some specific steps in a very un-PHP manner:

  1. put a special global variable in the settings file of my project:
    MEDIA_URL = ‘/site_media/’
  2. add an extra expression in my urls file:
    (r’^site_media/(?P<path>.*)$’, ‘django.views.static.serve’, {‘document_root’: os.path.join(os.path.dirname(__file__), ‘site_media’)}),
  3. make a directory on the same level as my urls and settings files called “site_media” that holds all my files (which can then contain subdirectories for css, images, javascript that I can include in my links in the template)
  4. link to the MEDIA_URL in the template itself, like so:
    <link href=”{{ MEDIA_URL }}your_stylesheet_name.css” type=”text/css” rel=”stylesheet” />Notice that in the template itself, the {{MEDIA_URL}} is a reverse look-up.  There’s no need to write out the exact relative path to the site_media folder.

MODELS: Optional ForeignKey attribute … explained to me by Adam (@adamjt on twitter)

When I specify a one to many relationship in my models file using an ForeignKey, sometimes I want that relationship to be optional.  Just blank=true or null=true doesn’t work though, you have to use both:

mynamedattribute = models.ForeignKey(MyModel, blank=True, null=True)

This is an optional field, not required, as ForeignKey fields usually are.

VIEWS: Authenticate me … Adam and Django Docs (@adamjt)

Logging users in and out is quite the hassle, but there are some built-in methods that take care of the work for me.  In order to get a user logged in and out, there needs to be a url side of it, a view side, and a template side.  There are more advanced registration and authentication modules out there ( Google code has one I recommend http://code.google.com/p/django-registration/ ) but there are also some short-cuts that come with Django that work very well.

  1. On the urls side, these are the urls that link to the views that are built into django to log users in and out:
    (r’^login/$’, ‘django.contrib.auth.views.login’),
    (r’^logout/$’, ‘django.contrib.auth.views.logout’),
    Teeny sidenote here:  there was a release of django that had the login template moved from registration to admin but referenced the old location in the view, so to fix it I took the non-coding way out and copied the template over to the proper directory
  2. For views that need authentication, “login_required” is an easy way to check for logged in users.  The view file first imports the necessary decorators:
    from django.contrib.auth.decorators import login_required
    from django.contrib.auth import logout
  3. Then the view can either start with login_required:@login_required
    def view(request):
    variable_name=processed_variable
    return render_to_response(
    ‘index.html’,
    {“ElementName”: variable_name}, context_instance=RequestContext(request))
  4. or it can use “if request.user.is_authenticated” within the view (if it came from a login form it will look like the code below):
    def otherview(request):
    if request.method == ‘POST’:
    if request.user.is_authenticated():
    variable_name=request.user.username

    else:
    variable_name=”Not logged in so no name”
    return render_to_response(
    ‘index.html’,
    {“LoggedInName”: variable_name}, context_instance=RequestContext(request))
  5. Then in the template there is the same operator for segments of code that should be displayed for logged in users:
  6. {% if user.is_authenticated %}
    <a href=”/account/”>My Account ({{ user }})</a>
    {% else %}
    <a href=”/login/” >Login or Register</a>
    {% endif %}

TEMPLATES:  Ordering output and Grouping … explained to me by Adam (@adamjt)

For an article-based engine, I needed to group a list of articles in order to show them according to category and then by date within the category.  First I had to order them in the view and then regroup them in the template:

  1. The view is simple enough, generate a variable that stands for all objects in class MyArticle in order by category:
    variable_articles = MyArticle.objects.order_by(“category”)
  2. Pass the variable to the template in the dictionary:
    return render_to_response(‘articles.html’, {‘articles’: variable_articles}, context_instance=RequestContext(request))
  3. Then in the template, I make use of the “regroup” template tag to take the already ordered-by-category articles to order them further by date:
  4. {% regroup articles by category as article_list %}
    {% for article in article_list %}
    <h3>Category: {{article.grouper}}</h3><ul>
    {% regroup article.list by date as datedarticle_list %}
    {% for datedarticle in datedarticle_list %}
    {% ifchanged %}<li>{{datedarticle.grouper.date|date:”F j, Y”}}{% endifchanged %}
    <ul>{% for item in datedarticle.list %}
    <li><a href = “/article/{{item.id}}/”>{{item.title}}</a>, {{item.author}}</li>{% endfor %}
    </ul>

    {% endfor %}</ul><br />{% endfor %}</ul>
    Notice that we had to regroup by category aside from using “order_by” in the view, but that was for the purpose of printing out the attribute by which the variable was grouped.

Finally the

SHELL:  Python shell scripts … figured out through pieces on Google

Using the administration interface is nice since you can see everything neatly represented by menus and drop down fields in a GUI, but there are tasks that are more efficiently accomplished using the command line.  Even that has its limit, in the sense that I could only ever figure out how to give it one command at a time.  A shell script on the other hand will give me the efficiency of the command line with the advantage of being able to write out an automated, saveable, multi-command executable.  You do need to have access to a Linux-type terminal in order to do this (the script starts off with the bash shebang).

  1. Create a file called myscript.sh and chmod it to have execute privileges:
    chmod +x myscript.sh
  2. Create the python environment with the python path and the django environmental setting:
    #!/usr/bin/env python
    import sys, os
    # Add a custom Python path.
    sys.path.insert(0, “/usr/bin/python”)

    # replace myname with your username
    sys.path = [‘/home/myname’] + sys.path

    # Set the DJANGO_SETTINGS_MODULE environment variable.
    os.environ[‘DJANGO_SETTINGS_MODULE’] = “myproject.settings”

    from django.contrib.auth.models import User #for example, this can be any django code

  3. Write in any commands you normally would type into the command line, for example making repetitious code into for loops like so:
    for i in range(1,51,5): # where i is the iterator and range(start,stop,step) – stop is non-inclusive
    article=MyArticle.objects.get(pk=i) #to select all objects with indices 1,6,11 and so forth up to 50
  4. Execute the script from your normal command line:
    ./myscript.sh

And there you have it!

Categories
web development

Teaching Mom PHP

“Strings?? Words are called strings in computer lingo? That’s too jargony for me …”  My mom is a newbie, classic right brainer and kinesthetic learner.  She fidgets when she’s in the chair for too long.  She jumps up and down when something works.  And I’m teaching her to code.

She has listened to me talk about all these technologies for the last two years.  Mom attended the NewBCamp I organized in February, playing a vital role in the event by manning the registration desk.  She knew about these terms like PHP, HTML, CSS, and Javascript, but she referred to them without knowing what they meant.  That is, until a few days ago when she decided she would be thrilled to learn how to do some of what I do.

First I introduced her to the tools she would be using and some of the basic terms she would have to know.  “Browser” she knew already, as well as the fact that there are more browsers than the one Internet Explorer that most people seem to use.  I showed her the text editor Notepad++ and showed her how the regular Windows Notepad doesn’t have all the features that this text editor does (although there are better ones out there, it’s good enough for my purposes and light weight and free).  I then explained how the server (we were using Apache) finds the pages written in text and stored in the “document root” and then sends (serves) them to be interpreted by the browser.  We opened up the browser and typed in http://localhost/ and it showed the index page stored in the file folder.  

Mom started her first HTML document with a strict DTD from W3C and titled it “Opus4Jerri”.  I directed her to close all the html tags she started – an html tag goes first, then head next, then within that the title and the link to the css file.  Writing out the css link was a good place to pause and talk about file locations and directories.  The server can’t find a file unless it’s given the correct “path”, which is like opening one of those Russian nested dolls until you find the last file you were looking for.  The path starts with the drive you are in – in our case the C drive, and then each folder from then on is separated by slashes until you get to the file itself, which has a dot and a “file extension” indicating the type of file.  This is the sort of nuts and bolts information that I take for granted now, but it’s a major barrier to someone who is totally new to how web development works.

None of this was intuitive for Mom.  She worked hard to construct that first html document and was thrilled to see it when it first appeared interpreted by the browser.  We moved on to styling from there, and she played around with the background colors in the css file until she was satisfied she knew how it worked.  Then it was time to add in some dynamic parts with PHP.  The first thing we did was even simpler than a Hello World – she opened with a <?php tag and wrote echo 3-1;  closing with a ?> tag .  This was to illustrate the difference between php and HTML.  When she saw that it rendered as 2, she was surprised but then understood that HTML would have just printed 3-1, while PHP can do the math and to some degree “think” about what we type in. 

I explained that PHP does not show up in the View Source tab in the browser, which disappointed her a little because she had been thinking she could put secret messages in the PHP that only coders would be able to see when they looked at the source.  Only HTML, CSS, and Javascript show up in the browser because they are “client-side”, while PHP (and Python) are “server-side” so they never make it to the browser, whether in the text or in the interpreted (rendered) page.

Mom finally had her Eureka moment when I showed her variables.  In PHP a dollar sign before a word means a variable, which is like a name for a box that you can put a value into and then use the name whenever you need that value.  She said, so that means you can change a value once in that first equals (assignment) statement and it changes all the places where you used that variable.  I agreed that it is a good coding practice to avoid “hard coding”, where instead of using the value itself, you use the variable and then you only have to change what the variable means instead of all the places where the value was used.  Where variables shine, I continued, is in the if – else logic statements that test a variable for how they compare to a value and then do an action based on the outcome of that test. 

We did a simple example that took the current hour using the “date” function in PHP and tested the variable with that hour value against whether it was between 6am and 6pm (or between 6 and 18, as we made it easy and used military time).  According to whether the variable was between the values, it changed an inline style statement to make the background yellow during the day and black at night.  The code looked like this:

<style text=”text/css”>
body {background-color: <?php
$date = date(“H”); // this is the date function that formats the current time by hour in military time
if ($date>=6 && $date<=18) {
echo “yellow;”;
}
else {
echo “black;”;
}
?>
}
</style>

Since it was a little before 8pm when we did this, the background showed up black.  I told her to go back tomorrow and check it and it should be yellow. 

My mom’s response to all this was to decide that she needs to work on it on her own in order to really learn it, which is a great approach.  However she benefited from having someone to help her – for instance at one point she told me she had taken an hour to try to figure out why she couldn’t open a file in Notepad++, and it was because the default text editor was still regular Notepad.  I’ve been through all this, so I can save her time in learning the hard way.  It’s my pleasure, because it helps me rediscover all the nifty little things that make web development so much fun.

Categories
little people

Tweeting as a Life Skill: Customer Service on Social Media

Now this is a first for me – social media network turned lifesaver.  Last Wednesday we had an electrical storm that fried my router.  A word about that storm – intense, lightning every few seconds.

My wireless didn’t work, and since the modem was plugged into the router, I didn’t realize I was online, just my computer couldn’t connect through the router. I was under the impression it was an area service outage – except the outage didn’t end, and no one else seemed to be affected.

A day into the “area outage” I realized I needed to call customer service at Comcast – the ole 800-COMCAST number.  I tried speaking with the random person that came on after navigating the phone menu.  She tried resetting the switch and said it should be working.  Then when I mentioned the service outage she agreed that must be it and told me I could get reimbursed for the time down.  I had a funny feeling that was not the right answer, so the next day I tried calling one of the retail locations near me, found using Comcast’s store locator.  That was quite the dead end, as I was told that unless I needed something installed they wouldn’t be any help.  Keep in mind that my problem was actually not with Comcast, so in a way they were right.  It was faulty equipment, but I was still under the impression that there was something affecting my area, so I wasn’t pulling out wires and figuring it out.

Finally I dared a buddy of mine to dare me to try a post on twitter (or tweet) to the attention of comcastcares, whom I would later affectionately refer to as Frank.  For anyone who might need to know, to tweet to someone’s attention on twitter you post the @ symbol in front of their user name, and the @ plus user name has to be the first word in your update.  Otherwise they probably won’t see it.  This is referred to as “replying” to that person or “atting” that person – yes they call it replying even if it’s not in response to a prior tweet from them.

I tweeted:
@comcastcares alright here goes – I’ve been without the internet since the MA/RI storm & tornado – zip is 02769, called Comcast, no luck “
Within a few minutes I got a reply back:
@saranicole If you DM the phone number on the account I can take a look
For any non-twitter users out there, “DM” means “direct message”, which is Twitter’s private messaging system, accessed using the direct message tab in the sidebar on the home page. Frank proceeded to reset the modem and told me it was online so I should be good to go. However, if I had any further questions I could DM him from home from my mobile phone.

Fast forward to that evening – still not online, so I dm’d him my woe-is-me-still-not-online and within about two minutes the phone was ringing.  It was Frank, and he actually talked me through troubleshooting the equipment.  He cleared up the question I had had about the area-wide service outage – it was actually a cable television outage, which had nothing to do with internet service.  In other words I would have been waiting with no hope in sight under a mistaken impression had I not taken action.  Meanwhile, he concluded the modem was faulty after about ten minutes on the line (this was a mistake, but it was because I didn’t plug in a cable correctly – otherwise he would have undoubtedly figured out it was the router, no problem). I went ahead and bought a new modem on his recommendation and feverishly installed it and called Comcast (the 1-800 number) to activate it.  Still no.  By process of elimination the router was it.  I rushed back to Best Buy (which doesn’t need a customer service twitter patch by the way – I could call their phone number and get a local, knowledgeable person, as opposed to Circuit City which I called first and got nobody, so service really does matter) and bought a fifty dollar router five minutes before they closed.  I hooked up the router and presto – back online, both my desktop and my laptop.

On one hand, companies shouldn’t need a “twitter patch” for their customer service.  When I call I should get a live, local person with the power to help me.  Since I mention Best Buy, their Geek Squad probably could have helped me figure out the problem too.  However for getting in touch with a real live rep from Comcast who could help me, Frank was the man.   I’m going to get a little personal here and challenge Amtrak and Dell to apply the twitter patch to their customer service nightmare.  It may not work for everybody, but it will work for some, and I’m glad not to be a statistic, still waiting for my “area-wide service outage” to clear up.

Additional links:

New York Times article this Friday on Frank and Comcastcares:
http://www.nytimes.com/2008/07/25/technology/25comcast.html?_r=1&scp=1&sq=comcast%20cares&st=cse&oref=slogin

Adele’s blog post on ABC and Twitter users from this Tuesday:
http://www.adelemcalear.com/2008/07/22/abc-sets-up-new-twitter-users-to-be-disappointed/

My conversation with Frank via Twitter:
http://search.twitter.com/search?q=comcastcares+saranicole

Link to my Phreadz post talking about Comcastcares and my customer service experience
http://phreadz.com/p/1R5B4AP7U16/

Categories
tools

Customizable Radio Stations – Rock on

My musical taste has traditionally been pretty limited as I don’t take the time to find artists I like.  Alright, limited is putting it kindly – I’ve been oblivious to just about everything beyond the 80’s soft rock I grew up hearing.  Like, who are the Beatles oblivious – I kid you not.

This weekend I found the tool my sad repertoire has been lacking all these years.  Pandora is the schnizzle – I can now create stations from “seeds” – so I give it an artist or a song that I have somehow discovered despite my lack of awareness of pop culture.  Then the super accurate algorithms kick in and generate other songs that resemble the ones I’ve given it to work off.  As I go along I give certain songs thumbs up and thumbs down which influence the choices.  Basically it gets better and better at predicting my taste so that after about two hours of use it becomes a virtual mind reader.  If I don’t like a song or an artist, I can vote it thumbs down – two thumbs down on the same artist bans the artist from the station.  The only aspect I’ve seen that I don’t like is that there are a limited amount of times that I can skip songs due to license issues.  If I run out of skips I’m forced to listen to something I don’t like even if I give it a thumbs down – I usually end up muting it and letting it run out.  Other than that, great service that will keep me entertained for many hours to come.

How does it compare?  Well I tried Last.fm and I will vouch for the relative poverty of the algorithms they use.  I’ve been using it for several hours and it’s no closer to understanding what I want.  Besides asking me to download a streaming software widget, they keep  insisting that if I want to create basic things like a personal station I have to subscribe to their paid service.  Hey, I just want to stream the music I like – I thought that was the basic service.  I keep trying to get the artists that I want to play on the station and it seems to give me everything but.  Not cool.  The only somewhat decent feature was to let me listen to my friend’s stations.  Even that got poor as I kept going – after several songs it pops up an alert that all the content has been used up.  How does that work – I refreshed the station too and sometimes got more, sometimes got the pop up again.  Whatever.  I won’t be using that again – Pandora’s definitely got my ear, and I’ll be playing my rock and reggaeton happily ever after thanks to them.

Categories
writing

Blogging Passion: Why do I write?

I am so not even a B-lister – and the fact is, I’m not interested in blogging for status among my social media peers.  If I were, I’d have to work harder, for one thing.  Who needs that … so why do I write?

 I write for anyone who takes an interest in me through my other activities and wants to read more about how and what I think. 

There are a few impressions of me that I would like someone to take away once they have read my blog.  True to form, I will make them into bolded subheadings:

Breadth of interest
I am a student, first and foremost.  I like learning and honing new skills.  My posts show a variety of interests and a tendency to challenge myself in different technologies.

Documenting my Activities
I’ve blogged on my projects, such as NewBCamp, in an attempt to maintain a record of what I’m producing with my skills and how I’m participating in the broader social media network.

Showing a Personality
I want anyone who reads my posts to get to know me better as a person.  I have a sense of humor and an interesting take on life in general, so I hope my blog spreads the word about the character that is Sara Streeter.

Passion to Grow
I enjoy writing for its own sake.  Additionally, I find that it sharpens my understanding of myself and my pursuits, giving me a platform for “thinking out loud.”

Success, in blogging as in life, is all relative to the intent.  I hope my blog posts bear witness to the fact that, hey, I’m having fun.

Categories
web development

jQuery, my love …

I have a new fetish (web development fetish, of course) and that would be jQuery.  I had been introduced to it a few weeks back thanks to that most awesome of instructors Hilary Mason (www.hilarymason.com), but now having seen the man himself John Resig present on it at BarCamp Boston 3, I am yet more eager to explore its marvelous functionality.

John Resig’s presentation (to be posted on Youtube before too long, according to kind audience member who thought to record it) was a wonderful overview, going from nuts to bolts in a half an hour.  He explained that jQuery is a Javascript library which, at a minified 15k, provides a way for HTML and Javascript to interact that usually takes server-side scripting to accomplish.  In fact it can act as its own programming language even to the extent of replacing some server-side code. 

Besides enabling cool visual effects such as the toggling of show/hide, accordion drop down menus, and custom animations, it allows manipulation of DOM elements such as your div tags and header tags.  PHP groupies will love the dollar sign syntax, and those who have mastered the CSS #id and .class tags will find learning jQuery an easy transition.

What really perked my ears were two features that I am dying to try out – the AJAX call to load an HTML page and then strip out only those elements that are needed, and the chaining method in which an element is acted upon by multiple events, in a series that looks like this:  div.show().foo().bar() , where show, foo and bar all act on the same element to accomplish their respective functions.

Three books I plan on purchasing in sequence based on Mr. John’s recommendation are Learning jQuery (Packt), jQuery Reference Guide (Packt), and jQuery in Action (Manning) with none other than John Resig writing the foreword.

Interested in learning more about jQuery?  Check it out at jquery.com .  John Resig’s blog is ejohn.org/blog

Categories
unconference

Seesmic, hunh …

Just got back from PodCamp NYC 2, and my new thing is Seesmic.  It’s nifty already, a way to let loose my natural charm and wit on the social media crowd.  I’m impressed with how much more personality one is able to convey through this medium – I follow these people already through twitter, but these video posts have that dimension of fun that isn’t as easy to convey in 140 characters or less.  It is more personal than YouTube, giving the feel of the character behind the content being posted.

So thank you PodCamp for this new time-sink – but it feels so good going down …