Online Flashcards

May 29th, 2010 by admin 1 comment »

I’ve stared a new side project – an online flashcard site.  This has stemmed from three reasons:

1. There are currently (that I could find) no smart flashcard sites.  When I use flashcards I don’t just look at the front and back from start to finish.  This is how all existing sites online work.  I want to remove cards I know as I go, swap the front & back (starting with definitions), shuffle them, and much more.  This site will do all that.

2. There are no multi-platform flashcard sites.  I want to create the cards on my desktop computer, and be able to browse them later on my smartphone.  This site will have an iPhone and Android compatible web version, making it truly convienient.

3. I (personally) like to use flashcards to learn things, and I need a better system to do it.

There is currently an pre-alpha version of the site available, it’s basically more of a proof-of-concept at this stage.  Most features are not yet implemented, it’s just the basics. Feel free to check it out, and leave some feedback as a comment.

Online Flashcards

Cheers
-Peter

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Book Review – Code

April 18th, 2010 by Peter Anselmo 2 comments »

I just finished reading Code by Charles Petzold.  This book is like no other I’ve ever read.  This book explains how computers work.   Think about that for a second.  Do you know how a computer actually works?  Really?  This isn’t about double clicking on the blue “E” to access the internet.  This book explains how a machine can take electrical 1’s and 0’s and use them to do math, save files, display graphics, and everything else a computer does.

I love the way the book progresses.  It starts with the most basic of electrical circuits.  Simple light bulb and battery type stuff.  It spends a few chapters building your circuit board chops and BAM!  - he shows you how you can wire a circuit to add binary numbers.  Wow, you can now build a very simple computer.  He continues to add to what you already know piece by piece.   Components are added to the circuit board so that it can now perform subtraction, multiplication, and division.  You learn how a circuit can remember data, the basis of memory.  You learn the issues surrounding floating point math and how they are resolved.  He explains machine code, and how it can be simplified by assembly language, and in turn, high-level languages.

Mixed in with the technical chapters, he adds sections on lighter topics such as Morse code, Braile, alternate (non-base 10) number systems, and more.  He covers how letters can be stored as a series of bits, and why there are 8 bits to a byte.

This book changed the way I think about computers.  I highly recommend it to anyone who wants to understand them better.  Although it assumes no prior knowledge, this book is not for the faint of heart; some of the chapters require tenacity to stay focused and comprehend.  However, I guarantee it will be well worth it.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Book Review – jQuery in Action

April 9th, 2010 by Peter Anselmo 1 comment »

jQuery in ActionI just recently finished reading  jQuery in Action by Bear Bibeaut and Yehuda Katz.  I had used very little jQuery before reading it, and even less AJAX.  I can’t recommend this book highly enough.  Five Stars.  To be fair, I may be biased largely because jQuery is so awesome, anything about jQuery will inherit it’s awesomeness.  But either way, if you want to get into jQuery, this is a good place to start.

I’ve heard it pointed out that all of the information in this book is already online, on the jQuery website.  But that’s missing the point.  The book presents the information at a well-thought out pace and order, minimizing confusion.  For example, early on it spends a good amount of time introducing and explaining the various CSS3 selectors and getting your “Wrapped Set” of elements before it jumps into how to manipulate those elements.

The book process to move through all of the awesomeness that jQuery offers with DOM & Content manipulation, Event Handling, Animations, Plugins, and Finally AJAX.  My First attempt trying to implement AJAX was without a framework, using the WROX “Beginning AJAX” book.  I’ve decided that book isn’t worth it’s weight in lead, and that it should be pulled from the shelves.  jQuery makes it ridiculously easy to make POST and GET requests to the server, and handle the results.  I was using AJAX in production code within a week of reading this.

I don’t know what else to say.  The level of Awesome that jQuery exudes is matched only by other epic wins such as Dropbox and Vim.  If you haven’t tried jQuery, you need to. Now.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

My Groups widget for BuddyPress

March 19th, 2010 by Peter Anselmo No comments »

I had a client request a modification of the “Groups” widget for BuddyPress.  Instead, it should be limited to the groups for the logged in user.  And so, I give you the “My Groups” widget.  It will display all the groups for the user alphabetially sorted.  Cheers.

Download:
bp-my-groups-widget.php (zip)

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Buddypress Group Invite by Email

March 17th, 2010 by Peter Anselmo 2 comments »

Here’s another small plugin I wrote: Group Invite By Email.  Basically, it adds an email field to the bottom of the usual “send-invites” screen.  Then, when you click “send invites” it sends the person a nice little email explaining they’ve been invited to your group, and giving them a link to register on your site.

Once they complete the registration, it automatically adds them to the group.  It does this by checking their email address against a list of outstanding invites.  This removes the extra hassle of needing to invite them to the group after you’ve gotten them to sign up, and them needing to approve your group invitation.

In the future, this functionality will likely be bundled with another plugin already existing: Invite Anyone. That plugin allows you to invite non-friends to your group; this one allows you to invite non-members.

Here it is:
buddypress-group-invite-email (.zip)

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Buddypress Default Forum Topic

March 14th, 2010 by Peter Anselmo No comments »

This plugin I wrote that creates a default topic for each group forum in BuddyPress.  Please note, you have to open up the PHP file, and replace the values for the default title and text with what you would like to use.  Even if you are unfamiliar with PHP, this should be very straightforward.

To Install:
-Extract and upload the files to your wp-content/plugins/ folder.
-Go to the “Plugins” screen on the admin dashboard, and activate the plugin
-Enjoy.

Here it is:
default-forum-topic (.zip)

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Buddypress Group Document Store

December 24th, 2009 by Peter Anselmo No comments »

I just uploaded my largest wordpress plugin yet: Buddypress Group Documents!

Group Documents creates a page within each BuddyPress group to upload and store documents.  Documents can be edited and deleted either by the owner or by the group administrator.  Document activity is logged in the main activity stream, and is also tied to the user and group activity streams.  The site administrator can set filters on file extensions, and soon (in the next update) users can set email notification preferences.  There is also a “Recent Uploads” widget than can be used to show any number of uploaded documents.

Get it while it’s hot!
Wordpress.org Plugin Download Page

Installation
Make sure WPMU and BuddyPress are installed and active.
Copy the plugin folder buddypress-group-documents/ into /wp-content/plugins/

Browse to the plugin administration screen and activate the plugin.

There will now be a “Group Documents” menu item under the “BuddyPress” menu.  Here you will find a list of all file extensions allowed for uploaded files.  Please check and make sure the list suits you.

Please don’t hesitate to contact me, especially if you run into trouble.  I will respond promptly.  email hidden; JavaScript is required

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Buddypress jQuery is not defined error

December 16th, 2009 by Peter Anselmo 3 comments »

While developing a Buddypress plugin, I was running into a problem where none of my Javascript was working. Instead, Firebug was telling me: “jQuery is not defined”.  This was quite frustrating, as I could verify that the jQuery file was indeed, being loaded.  While a few other people received the same error for different reasons (corrupt files, etc.) I did not quickly find the solution for my problem.  Here it is:

Problem: Buddypress calls your plugin’s JS files BEFORE jQuery files.
This applies when you use the function wp_enqueue_script() – as you should.

Solution: Tell wp_enqueue_script your file depends on jQuery.
It turns out, wp_enqueue_script() takes a few optional parameters – the third being an array of other js files yours is dependent on.

Here’s how the call looks after the change:
wp_enqueue_script(‘my-js-file’,'my-file-path.js’,array(‘jquery’));

Viola!  Your js file is now loaded after jQuery and you’re good to go.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Syncing Filezilla Sites across Computers with Dropbox

November 22nd, 2009 by Peter Anselmo 6 comments »

I often find myself editing websites on several different computers.  One of the more tedious things is keeping all my FTP settings updated across them.  I’d start development on a new site at work, then try to continue from home, only to find I’d forgotten to write down the connection credentials.  Alternately, even if I did have them on hand, entering them for each FTP client is a waste of time.  Dropbox to the rescue!  Here’s how:

1. Find your site manager file
Filezilla keeps all of your sites and access credentials in an XML file called “sitemanager.xml” Here are the most likely locations:
Windows 7 & Vista – C:\Users\Yourname\AppData\Roaming\FileZilla\sitemanager.xml
Mac OS X – /users/Yourname/.filezilla/sitemanager.xml
Linux – /home/Yourname/.filezilla/sitemanager.xml

2. Back it up
Just in case something goes wrong in the next few steps.  Copy the file and name it something else, perhaps “sitemanager.xml.backup”

3. Move sitemanager.xml to Dropbox
I keep a folder in dropbox called “Settings” which I use for program files that I sync.  Place it where it makes sense to you, just remember that location for the next step.  Note, you want to move the file, not copy it.  It cannot still exist in the filezilla folder, or the next step may not work.

4. Make a soft link from Dropbox back to your Filezilla folder
Filezilla will still look in it’s default place for the sitemanger file.  You’re going to trick it and point it to the file you have snyc’d on Dropbox.  You’ll need to open up a Command Prompt (Windows) or a terminal (OS X/Linux) for this step.  This is what the commands looked like for me, you’ll need to adjust the file paths as necessary.  Note, on Windows, you enter the new link first, then the existing target, and on OS X & Linux, it is the opposite order.

Windows:
mklink “C:\Users\peter\AppData\Roaming\FileZilla\sitemanager.xml” “C:\Users\peter\My Dropbox\Settings\sitemanager.xml”

OS X:
ln -s /users/peter/Dropbox/Settings/sitemanager.xml /users/peter/.filezilla/sitemanager.xml

Linux:
ln -s /home/peter/Dropbox/Settings/sitemanager.xml /home/peter/.filezilla/sitemanager.xml

That’s it!  Fire up Filezilla, and you should see the same site settings now on all of your computers.  Note, if you use “Synchronized Browsing”, you’ll need to create separate bookmarks under each site for each computer, as the local path to your files will be different depending on your computer.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Using Custom Profile Field Data in Buddypress Templates

November 18th, 2009 by Peter Anselmo No comments »

I ran into what I thought would be fairly common need for Buddypress theme development, the ability to pull data from a custom user profile field and display it. After searching a bit, I could only find way to pull either random fields, or all of the fields together. So after digging around in the core files, I found the pieces to put together my own function for the task.

1. Create the file “bp-custom.php” and place it directly in the plugins folder. Note, do not place it in the “buddypress” folder, otherwise it will be overwritten when upgrading. If the file exists, simply append to it rather than creating a new one.

2. Paste the following function in:

function bp_the_site_member_profile_data($field_name = '', $echo = 1) {
  if( !$field_name ) {
    return false;
  }
  global $site_members_template;
  if( function_exists( 'xprofile_get_field_data' ) ) {
    $data = xprofile_get_field_data( $field_name,
                                     $site_members_template->member->id);
    if( $echo ) {
      echo "$data";
      return true;
    } else {
      return $data;
    }
  }
}

3. You can now use the function ‘bp_the_site_member_profile_data(‘MyField’) in your templates (of course, substituting ‘MyField’ with the one you’d like to use). Note, this must be place inside a ‘Members Loop’ so that the $site_members_template variable is populated.  Odds are, you’re inserting this near other profile data already in the loop, so there should be no problems.

UPDATE:
As of BuddyPress 1.2, this functionality has been included. While in the members loop, you can use the included function: ‘bp_member_profile_data( ‘field=the field name’ )’ to much the same effect.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)