Technology

rdio.com: Using rdio and collections

How to use rdio.com?

Collection

The collection is like your record/cd collection. It’s nice for browsing. You can use it to impress people with its size, or variety, or depth of your 80’s music. Whatever you like. Rdio’s algorithms use it to help suggest other music.
It’s nothing like your physical record/cd collection because nothing has to be in your collection for you to listen to it. You can listen to an album by searching for it, or see someone else is listening to an album, or that it’s popular. Just click to play to listen as easily as as if it was in your collection.
You can add individual songs to your collection, entire albums, or every album by Duran Duran. It doesn’t take up any disk space; it doesn’t cost you anything more; you don’t run into some limit on the number of songs. Adding to your collection has zero cost and similar worth.
The Collection is a traditional way of organizing your music.

Technology

rdio.com: Using rdio and playlists

More on how to use Rdio

Playlists

Playlists offer the ultimate flexibility — it’s the modern version of a mix-tape. You can make your own Duran Duran “Greatest Hits” album — it’s just called a playlist instead of an album. You can have as many songs on your playlist as you want: “My favorite 50 Duran Duran songs” or “My favorite 500 songs”.

Screenshot 11 21 13 11 02 PM 5

A song can be on as many different playlists as needed.
I have a couple standard playlists. The one I listen to the most:

  • “Dark”: Whenever I find something new (or old) that I like a lot I put it here. I usually keep it around 20 songs. After I get tired of something I move it to one of the following playlists for old favorites.

When I run into an old favorite I’ll put it onto a playlist organized by decade. That’s because it tends to be a “objective” way for me to organize songs. The answer to “is this rock or alternative” seems to change day-to-day for me.

  • “60’s”
  • “70’s”
  • “80’s”
  • “90’s”
  • “naughts” (2000’s)
  • “10’s”

I have a few playlists for occasions:

  • “Pre-Dinner” for before a dinner party
  • “At Dinner” while eating
  • “Post Dinner” for some louder, funner music.
  • “Sunday Morning” some classical music

I have a playlist that I just dump stuff on to listen to later:

  • “Try This”

You can also just add music to your “Up Next” list. More about that later.
Then I have some silly project playlists:

  • “Sidereal Days” I was collecting songs from a book about the early days of Rock&Roll
  • “NYC” Songs about New York City.

Feel free to create playlists however you like to think about music. You are no longer bound by the constraints of the album.

Technology

rdio.com: Intro and Pricing

I’ve used Rdio for the past half-year and thought I’d explain how it works. I also had Spotify for a similar amount of time before switching to Rdio. They are very similar; I liked Rdio more.

You rent music from Rdio for about $10/month (I’m paying $18 for my wife and me plus another $5 for my son). We each get unlimited music and downloads. We each have separate accounts. Really! You can download thousands of songs to your iPhone, iTouch, or other smart phones. Obviously, you can only download limited by storage capacity. I do that for music I listen to regularly so it keeps working while I’m on the subway. If music is not already stored on my device it is streamed so you can always listen to more music.
When you stop paying you lose access to the music.
You can download an app for you Mac — for some reason I tend to prefer desktop apps. Probably some outdated notion that desktop apps are more capable then a web based interface — not so true given the number of people that use web based interfaces.

Screenshot 5 16 13 11 22 PM

The web interface is pretty similar to the app. It’s nice because you can use it without installing any software so it’s much easier to use a work.

Screenshot 5 19 13 9 26 PM

Technology

Passing extra arguments to output operator

I usually implement the output operator for a class, operator<<().
I find it useful for debugging and regression testing purposes.
Occasionally when defining a class hierarchy with polymorphism in mind
I’ll instead define a virtual print() method.

Base  base;
std::cout << "base = " << base << std::endl;

Here’s the typical implementation:

class Base {
// ...
public:
    /// print Base with flags indicating hw much extra to include
    virtual void print (std::ostream &out, int flags);
};
std::ostream &
operator<< (std::ostream &out, const Base &base)
{
    base.print (out, 0);
}

So everything is great except… I now want to pass that extra
argument. I could write the following ugly code:

std::cout << "base = ";
base.print (std::cout, 1);
std::cout << std::endl;

Instead, I’m going to follow the example from <iomanip> and define a struct
that saves the arguments and then define an output operator for that
struct. The following code makes it so you can write the above as:

std::cout << "base = " << printstream (base, 1) << std::endl;

Here is the implementation of that. This expects the class to implement a method print() that takes a std::ostream and a second argument. It’s pretty easy to extend this to a print() that takes a third argument.

#ifndef INCLUDED_PRINTSTREAM_H
#define INCLUDED_PRINTSTREAM_H
#include 
namespace printstream_impl {
template
struct PrintStream1
{
    const ObjectType &  m_object;
    const Arg1Type &    m_arg1;
    PrintStream1 (const ObjectType &object, const Arg1Type &arg1)
        : m_object (object),
          m_arg1 (arg1)
    {
    }
    std::ostream &print (std::ostream &out) const
    {
        m_object.print (out, m_arg1);
        return out;
    }
};
template
std::ostream &operator<<(std::ostream &out, const PrintStream1 &ps)
{
    ps.print (out);
    return out;
}
} // End namespace printstream
template
printstream_impl::PrintStream1
printstream (const ObjectType &object,
             const Arg1Type &arg1)
{
    return printstream_impl::PrintStream1 (object, arg1);
}
#endif /*  INCLUDED_PRINTSTREAM_H */
News · Technology

Iranian Hackers Suspected in Recent Security Breach

Looks like Iranian Hackers Suspected in Recent Security Breach are either trying to get back for Stuxnet and more on Stuxnet. More likely it was for a man-in-the-middle attack to install viruses or trojan horse by posing as the actual company and uploading a compromised version of the software. The compromised software could make it easier to monitor social networking sites, etc.

Comodo, a digital certificate authority and security software maker, said on Wednesday that it unwittingly issued fraudulent digital certificates for Web sites operated by Google, Yahoo, Microsoft, Skype and Mozilla. Digital certificates are used to vouch for the authenticity of a site owner and facilitate encrypted communications between sites and their users. Comodo revoked all of the certificates immediately upon discovery of the incident and notified the site owners, the major browser makers and relevant government authorities, it said.

Politics · Technology

More on Stuxnet Worm and Iran’s Nuclear Research

Last month there was an article about a virus that targetted Iran’s Nuclear Research. There’s a little more on Stuxnet worm in the NY Times.
From Stuxnet Worm Used Against Iran Was Tested in Israel:

The computer program also secretly recorded what normal operations at the nuclear plant looked like, then played those readings back to plant operators, like a pre-recorded security tape in a bank heist, so that it would appear that everything was operating normally while the centrifuges were actually tearing themselves apart.

Technology

Mac OS X Server: iChat Service Re-inititialization

If there’s ever trouble with iChat server and ServerAdmin doesn’t let you do anything, you can fix things up based on this Apple Support article:

This can occur if the /Library/Preferences/ichatserver.plist file has been deleted or is problematic. If the com.apple.ichatserver.plist file is deleted a new default version of this plist will be created.

$ sudo /usr/libexec/PlistBuddy -c "Set :initialized true" /Library/Preferences/com.apple.ichatserver.plist

Refresh the Server Admin view for the iChat service. The Start button should now appear and the service should be configurable.

You can reset the iChat database with (you should make sure you have a backup!):

$ sudo rm -rf /private/var/jabberd/sqlite
$ sudo /usr/libexec/ichatserver_init_tool -i
Politics · Technology

Virus that targeted Iranian nuclear sites

Based on [this](http://www.foxnews.com/scitech/2010/11/26/secret-agent-crippled-irans-nuclear-ambitions/) article it sounds like some really talented developers (NSA) wrote a virus that targetted specific computers in Iran and had enough knowledge to target specific computer controlled equipment.

At Natanz, for almost 17 months, Stuxnet quietly worked its way into the system and targeted a specific component — the frequency converters made by the German equipment manufacturer Siemens that regulated the speed of the spinning centrifuges used to create nuclear fuel. The worm then took control of the speed at which the centrifuges spun, making them turn so fast in a quick burst that they would be damaged but not destroyed. And at the same time, the worm masked that change in speed from being discovered at the centrifuges’ control panel.