Technology

Tech firms conspire to drive down wages

From How Silicon Valley’s most celebrated CEOs conspired to drive down 100,000 tech engineers’ wages:

In early 2005, as demand for Silicon Valley engineers began booming, Apple’s Steve Jobs sealed a secret and illegal pact with Google’s Eric Schmidt to artificially push their workers wages lower by agreeing not to recruit each other’s employees, sharing wage scale information, and punishing violators.


The secret wage-theft agreements between Apple, Google, Intel, Adobe, Intuit, and Pixar (now owned by Disney) are described in court papers obtained by PandoDaily as “an overarching conspiracy” in violation of the Sherman Antitrust Act and the Clayton Antitrust Act, and at times it reads like something lifted straight out of the robber baron era that produced those laws.

And don’t forget how H1B visa’s essentially limit immigrants ability to change jobs for a better salary and drive down non-immigrant wages with a lower salary employees.

Technology

Solar System

Here is a table if you wanted to make a scale version of the solar system. It’s based on making the Earth a 1in sphere and then gives how far from the Sun each planet should be and how big of a ball to use for each planet.
This is from frink a programming language based on accurate representation of units. If you are into really nerding-out take a look at the unit data which describes lots of possible unit conversions.

Name Distance from Sun Diameter
Sun 9 feet, 1.3 in
Mercury 378 feet, 8.8 in 0.383 in
Venus 707 feet, 7.6 in 0.95 in
Earth 978 feet, 4.5 in 1.0 in
Mars 1490 feet, 8.8 in 0.533 in
Jupiter 5090 feet, 3.7 in 11.221 in
Saturn 1 miles, 4068 feet 9.46 in
Uranus 3 miles, 2936 feet 4.012 in
Neptune 5 miles, 3011 feet 3.887 in
Pluto 7 miles, 1715 feet 0.178 in

Scaled speed of light: 1.337 mph

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 */