The R language is optimized for writing statistical code. It's going to seem a little weird, especially if you have a traditional programming background. Once you spend some serious time writing R code, however, you will probably begin to appreciate many of the things that initially seemed odd.
It allows you to pass function arguments by name and abbreviate the names, which is handy during live sessions when you want to call statistical routines that have lots of arguments (which is common).
During a function call, arguments are bound lazily, which lets you pick apart the expressions behind them and write functions that serve as control-flow constructs. This lets you do things such as pass model expressions as arguments.
Also, function arguments can have default values, which are again evaluated lazily but can also see values within the scope of the function body. This lets you use computed values as defaults and have those values depend on other arguments, which in most programming languages requires extra work on your part.
All of these "oddities" serve to reduce the amount of boilerplate code you need to write when coding up statistics routines. (Click the link above if you want to see examples and take a more in-depth tour of R's fascinating and time-saving function call behavior.)
If you listen to the recording, it suggests that Verizon's reps quote wireless data rates in terms of cents instead of dollars as a matter of routine. I wouldn't be surprised, then, if a large slice of Verizon's wireless-data customers were given bogus, cents-for-dollars quotes. If so, a ton of people -- perhaps even all of Verizon's wireless-data customers -- have been charged 100 times more than they were quoted for data usage.
If cents-for-dollars quoting turns out to be widespread, prepare to see class-action suits.
Google is being tricksy with their examples for this problem in order to make a simple search appear viable. They do, however, provide a hint of the impending combinatorial explosion in the 2x2 example of all "A" letters, which despite being tiny has 108 solutions. Scaling this example up to the maximum grid size of 50 × 50 and the maximum word length of 50 characters reveals the sinister nature of the problem: there are about 50 × 50 × 8^49 (= 4.5e47) legal paths, and a straightforward search must trace all of them, which isn't computationally feasible.
(See my other post in this thread for a link to more information on the problem.)
Thanks for linking to the problem, which turned out to be very fun to solve. If you want to see my solution, which I wrote in Haskell, I posted it here: Solving the Google Code Jam "countPaths" problem in Haskell. Thanks again for the link.
Many Linux users and developers see Conary as the logical successor to RPM for package management. Will the Fedora Project use Conary? If so, how do you see the change to Conary taking place? If not, what reasons do you have for not wanting to use Conary?
Apple switched to Intel's architecture because hardware was the only
place where Apple's computing business was vulnerable to competitors
such as Dell. Now that Apple is using the same architecture that
everybody else is, hardware will diminish as a competitive factor.
Software will increasingly determine which computers the average
consumer wants to purchase.
And when it comes to software, Apple has no peer. Apple
consistently creates great applications that normal people
want to use. Apple's competition, on the other hand, has
demonstrated -- repeatedly -- that they cannot do the same.
So that's the reason for the switch to Intel. Apple has moved what
used to be a two-front war onto a single battlefield where it has
the ability to outmaneuver all opponents.
Smart move. Expect Apple to capture
some market share.
Let me get this straight. This guy is outraged that a high-traffic
site would link to him, chewing up his bandwidth, and his "solution"
is to redirect all of that traffic to some other sites that host
pictures of slaughterhouses, driving those poor guys into ground:
EDIT: Apparently the slaughterhouse sites are getting
hammered... they might take a while to load.
I guess his Golden Rule reads like this: Feel free to do unto others
what has been done to you.
Apparently, his sense of moral outrage is not transitive.
Certification programs exist largely to commoditize platform-specific
labor. They benefit vendors, such as Sun and Microsoft, that sell
infrastructure technologies ("platforms") to large corporate clients.
These vendors want to assure potential clients that their platforms
are supported by legions of inexpensive, largely interchangeable
laborers.
The certification programs are the means by which these assurances
are made real. They define the minimal skill sets necessary to be
considered competent in a particular platform. What makes the
programs effective tools for driving down the cost of programming
labor is that most certifications are easier for unskilled and
offshore laborers to obtain than more traditional means of
qualification, such as four-year degrees and on-the-job experience.
Whether certifications are good or bad depends on where
you stand. If you don't have technical skills or experience and want to get
into a market where certifications are prominent, go for the
certification. On the other hand, if you have excellent skills and a
track record that sets you apart, avoid markets where certification
programs are rife because your abilities probably won't be
appreciated. You should realize, however, that much of the work in
the industry is going the way of commoditization, and it will be
increasingly difficult to find corporate clients willing to pay much more than what the typical certification-holding
employee is paid. For this reason, if you have the ability, you might want to start your
own business or join a startup.
Would someone please tell me WHY these people continue to get elected?
Because people vote for the guy who brings home the pork.
Santorum represents Pennsylvania, and AccuWeather is headquartered in Pennsylvania. If AccuWeather makes more money, Pennsylvania voters have more money in their pockets, and they will naturally be inclined to re-elect the guy who made it happen.
There is nothing wrong with the advertising executives. They are just
scared that they are going to lose the ability to market via the web,
and they are trying to defend their business model. They want to make
sure that we remain as accustomed to seeing annoying ads on
the web as we do on television. That way, they can keep selling ads.
If Firefox and similar browsers were perfectly effective at
eliminating ads, eventually word would spread, and pretty soon
everybody -- not just Johnny Slashdot but everybody
-- would surf the web ad free. Oops. There just
went the web-advertising market.
So the advertisers have a powerful incentive to combat whatever
ad-blocking techniques are developed, even in fringe browsers. They
do not want those browsers to become mainstream, but, even more so,
they absolutely do not want us to lose our tolerance for
their advertisements.
You cannot reliably predict, based on a few short interviews, how a
manager is going to perform weeks and months into the job. Yes, you
can spot outright bozos and reject them, but it's hard to detect
self-servers, backstabbers, politicians, us-vs-them players, and so
on. And that's just on the personality side. What about good
team-building and project-management skills? How can you
measure those during a short interview?
So be careful. The guy who seems fine during the interview may
turn out to have serious flaws as a manager. Unless you do your
homework, you'll never have the opportunity to spot these flaws until
they manifest themselves on the job -- at your company.
The only people who have first-hand, long-term knowledge about the
candidate's on-the-job performance are the people he has worked with
before. Talk to them! Ask your candidate if you may speak
with his references. If you get a No response, that ought
to be a warning sign. If he doesn't trust his own references, why
should you trust him?
But don't stop there. Say that you would like to, if at all
possible, speak with the people he has managed on previous jobs. Say
that you would also like to speak with the people who managed him.
Ask if he can arrange it. Even if he can't because it might
jeopardize his current position, the way the candidate responds can
tell you a lot.
Good managers are worth their weight in gold. Bad managers
can destroy projects and drive away your most talented employees.
Thus when hiring managers, be discriminating. Do your homework.
Check the references.
There are two fundamental problems with the notion that what customers really want are solutions in which hardware is a commoditized good.
First, hardware does cost money. It isn't free, and Sun is not
particularly efficient at making it. Put simply, Sun isn't ever going
to be able to compete with Dell, which will crank out perfectly good
boxes at prices that Sun can't touch. Even if Sun hides these extra
costs in "solution fees," those costs are real and must be passed on
to customers. Therefore, other vendors can undercut Sun's pricing by
offering equivalent solutions in which Sun hardware has been replaced
by Dell hardware.
Second, the price that the market is willing to pay for software is
rapidly decreasing, courtesy of Free software. Ultimately, the price
that Microsoft and Sun can charge for their software, however well
hidden, is not equivalent to the net benefit that their software
provides. Rather, they can charge only for the net
additional benefit that their software provides
beyond what is already available as Free software.
In other words, if the market can have functionality J for
free, and Microsoft and Sun offer functionality J+K
in their solutions, the market will only be willing to pay for
K. As Free software incorporates more functionality,
J gets larger and K gets smaller, and hence
Microsoft and Sun's pricing power diminishes.
Thus, as free software improves other vendors will be able to undercut Microsoft and Sun by
offering equivalent solutions in which the proprietary software has
been replaced by Free software.
The bottom line is that a solution is hardware plus software plus
services. Take any solution which involves Sun, and you can undercut
it by replacing Sun with Dell. Take any solution which involves
Microsoft, and you can undercut it by replacing Microsoft software with
Free software.
I'm going to enjoy watching this play out in the market.
Have you considered that it may be unethical to block ads that you have the option of paying to get rid of?
Yes, I have considered this, and I have concluded that blocking unwanted ads is, in fact, ethical.
Advertisers would argue (and have you believe) that if they place an ad in content, you are somehow ethically obligated to view it. To do otherwise, they suggest, is "stealing" the content because they pay for it with the ads.
However, this argument is rubbish. People are under no obligation, ethical or otherwise, to support a company's chosen business model. Unless a person has legitimately entered into an agreement with the advertisers, under which the advertisers can expect the person to view their advertisements, there can be no ethical argument to the contrary.
Here, advertisers would argue that merely viewing a web site or watching a television program indicates our implicit agreement to watch the associated ads -- i.e., we have entered (legitimately) into an implicit contract with them -- but this argument is also flawed. Merely participating in an event that some interested party has attached a hidden contract to does not enter you into that contract.
In order for a contract to be binding, ethically or legally, its details must be fully disclosed beforehand, both parties must receive something of fair value from entering into the contract, and both parties must enter into the contact of their own free will and not under the influence of coercion. It is clear that the advertisers do not state the terms of their implied contract up front. Likewise, it is questionable whether the annoyance and time sunk into reading or watching advertisements is a fair trade-off for all potential readers or viewers. Finally, it is easy to make the case that there is some coercion at play. Advertisers often slip ads into content unannounced or with increasing frequency over time so that the full annoyance of their ads is revealed only after consumers have made a significant investment or commitment to the content they are already reading or viewing. At this point, consumers are coerced, if mildly, into continuing by the prospect of having wasted their investment thus far or by the prospect of having to find suitable replacement content.
Therefore, after having given much thought to the subject, I must conclude that we are under absolutely no obligation, ethical or otherwise, to view advertisements.
There's always the brute-force option. Buy 10 used computers with built-in sound, install Linux on them, and use the resulting boxes as your stations. For example, on RetroBox.com you can get Dell GXa desktops for less than $40 each. Should be more than enough for your needs -- at less than 1/8th the cost of the proprietary solution. And, you can reconfigure the boxes to do other things in other shows.
Of course, you'll probably want to hide the boxes because they'll look ugly.
I built a simple "VCR" for the radio and set it up to record Car Talk, among my other NPR favorites. Now I can listen to Click and Clack whenever is convenient for me, without having to jump through hoops, download proprietary codes, or bother with streaming. Plus, I get a nice archive of shows that I can take with me on road trips:
Packages and package managers solve a real problem: Keeping track of
software installations, their files, and their interdependencies is
hard, hard work. By packaging software and using good,
"higher-level", package managers (like yum and apt-get) you
can delegate most of this problem to the computer. That's a smart
move.
It's still a smart move if you're building from source. Just
package your source. Then you can build the sources under the control
of a package manager (like RPM), and install the resulting packages.
You get the full benefits of build-from-scratch and the full
benefits of using packages.
This is exactly the approach I use. In fact, I'm a bit more strict
about it: My policy is that I don't install any software that isn't
packaged. If I need to install something that isn't packaged, I'll
package it first. If I don't like the way a packager built an already
existing package, I'll repackage it.
The bottom line is that creating your own packages (or fixing packages you don't like) is
much easier than maintaining a from-scratch, unpackaged installation. Or ten of them.
To get you started, here a couple of RPM-building references:
That's what bothers me about "pure" languages of any form. You're intentionally throwing away some of the available tools to prove a point.
Well, Haskell isn't throwing anything out. You can do both purely functional and imperative programming with Haskell. It's just that Haskell's designers went deep enough into the theory to come up with an elegant way to bring the functional and imperative worlds together (category theory and monads). So you need not give up the benefits of one to have the other.
To use your time- and frequency-domain metaphor, Haskell is the well-educated EE who can use both kinds of analysis -- and slide between the two with ease.
If you're interested, I recently gave a short talk about Haskell for the
local Perl Mongers. The slides and notes are available online here:
Haskell
for Perl Hackers.
If you want to see some Haskell code, I have some more concrete examples here:
As I described on my wiki, I recently made a "VCR" for the radio. I just hooked up an old radio's headphone output to a Linux box's otherwise unused sound card, installed ALSA on the Linux box, wrote a simple shell script to record and compress shows, and set up some cron jobs to run the script. That's it.
Total cost: $0.
It's been working now for about a week, and already I love it. I can listen to Car Talk and Marketplace whenever I please. I'm saving up a bunch of Fresh Air interviews to listen to on a car trip.
Since a modern hard drive can store about 5 years of compressed talk radio, I don't think I'll need to "change the tape" any time soon.;-)
If you, personally, object to terms of a new employer's employment
agreement -- even if you're in the right -- you'll have a difficult
time persuading your employer to change the terms without making
yourself look bad. After all, they'll argue that the terms are
"standard" and that you're being unreasonable. In order to win your
point, you'll have be aggressive, possibly even adversarial, and that
could damage your reputation with your new employer.
One of the most valuable services that lawyers provide, in addition
to sound legal advice, is shielding you from being the bad guy.
Instead of having to argue with your new employer, you can be the nice
guy, while deferring to your lawyer's judgment:
Employer:
Before we get started, there a few documents that we'll need you to
sign. Nothing unusual. This kind of thing is standard for software
work. You understand.
You:
Certainly. [Takes documents.] Gee, there sure is a lot of legalese
here. You know what? I'm just going to have my attorney look these
over for me. I never was much for contracts. I'm sure he'll be fine
with them. After all, there's nothing unusual in here, and he'll
probably give me the OK to sign them in short order.
Then when you return to discuss the we-own-all-your-IP clause, you're
not the bad guy:
You:
Good news! My attorney thought the contract was fine, with the
exception of one small part of the Intellectual Property section. He
said that we should be explicit about where the line drawn is between
the work that the Company is paying me to do and hence owns, and
everything else. He said that this change was no big deal, and even
provided me with the language to use. He said it was pretty
much standard in software agreements.
See? Now you're a great position. You've been nothing but
reasonable. If the company doesn't want to make the change, they're
the bad guys. They will look like they want to lay claim to all of
your work while paying for just a portion of it. You'll be in
a great position to argue for your change or, better yet, have
your attorney do it for you.
Attorneys are essential for this kind of thing. Use them for
their legal advice, and use them to keep yourself above the fray.
The R language is optimized for writing statistical code. It's going to seem a little weird, especially if you have a traditional programming background. Once you spend some serious time writing R code, however, you will probably begin to appreciate many of the things that initially seemed odd.
For example, consider the way R handles function calls:
All of these "oddities" serve to reduce the amount of boilerplate code you need to write when coding up statistics routines. (Click the link above if you want to see examples and take a more in-depth tour of R's fascinating and time-saving function call behavior.)
If you listen to the recording, it suggests that Verizon's reps quote wireless data rates in terms of cents instead of dollars as a matter of routine. I wouldn't be surprised, then, if a large slice of Verizon's wireless-data customers were given bogus, cents-for-dollars quotes. If so, a ton of people -- perhaps even all of Verizon's wireless-data customers -- have been charged 100 times more than they were quoted for data usage.
If cents-for-dollars quoting turns out to be widespread, prepare to see class-action suits.
Google is being tricksy with their examples for this problem in order to make a simple search appear viable. They do, however, provide a hint of the impending combinatorial explosion in the 2x2 example of all "A" letters, which despite being tiny has 108 solutions. Scaling this example up to the maximum grid size of 50 × 50 and the maximum word length of 50 characters reveals the sinister nature of the problem: there are about 50 × 50 × 8^49 (= 4.5e47) legal paths, and a straightforward search must trace all of them, which isn't computationally feasible. (See my other post in this thread for a link to more information on the problem.)
Thanks for linking to the problem, which turned out to be very fun to solve. If you want to see my solution, which I wrote in Haskell, I posted it here: Solving the Google Code Jam "countPaths" problem in Haskell. Thanks again for the link.
Cheers,
Tom
Many Linux users and developers see Conary as the logical successor to RPM for package management. Will the Fedora Project use Conary? If so, how do you see the change to Conary taking place? If not, what reasons do you have for not wanting to use Conary?
Cheers,
Tom
And when it comes to software, Apple has no peer. Apple consistently creates great applications that normal people want to use. Apple's competition, on the other hand, has demonstrated -- repeatedly -- that they cannot do the same.
So that's the reason for the switch to Intel. Apple has moved what used to be a two-front war onto a single battlefield where it has the ability to outmaneuver all opponents.
Smart move. Expect Apple to capture some market share.
Apparently, his sense of moral outrage is not transitive.
Certification programs exist largely to commoditize platform-specific labor. They benefit vendors, such as Sun and Microsoft, that sell infrastructure technologies ("platforms") to large corporate clients. These vendors want to assure potential clients that their platforms are supported by legions of inexpensive, largely interchangeable laborers.
The certification programs are the means by which these assurances are made real. They define the minimal skill sets necessary to be considered competent in a particular platform. What makes the programs effective tools for driving down the cost of programming labor is that most certifications are easier for unskilled and offshore laborers to obtain than more traditional means of qualification, such as four-year degrees and on-the-job experience.
Whether certifications are good or bad depends on where you stand. If you don't have technical skills or experience and want to get into a market where certifications are prominent, go for the certification. On the other hand, if you have excellent skills and a track record that sets you apart, avoid markets where certification programs are rife because your abilities probably won't be appreciated. You should realize, however, that much of the work in the industry is going the way of commoditization, and it will be increasingly difficult to find corporate clients willing to pay much more than what the typical certification-holding employee is paid. For this reason, if you have the ability, you might want to start your own business or join a startup.
Santorum represents Pennsylvania, and AccuWeather is headquartered in Pennsylvania. If AccuWeather makes more money, Pennsylvania voters have more money in their pockets, and they will naturally be inclined to re-elect the guy who made it happen.
Politicians want votes. Voters want pork.
And that's your answer.
If Firefox and similar browsers were perfectly effective at eliminating ads, eventually word would spread, and pretty soon everybody -- not just Johnny Slashdot but everybody -- would surf the web ad free. Oops. There just went the web-advertising market.
So the advertisers have a powerful incentive to combat whatever ad-blocking techniques are developed, even in fringe browsers. They do not want those browsers to become mainstream, but, even more so, they absolutely do not want us to lose our tolerance for their advertisements.
Cheers,
Tom
In other words, it's almost certainly a bogus phone number attached to bogus domain-registration info.
So be careful. The guy who seems fine during the interview may turn out to have serious flaws as a manager. Unless you do your homework, you'll never have the opportunity to spot these flaws until they manifest themselves on the job -- at your company.
The only people who have first-hand, long-term knowledge about the candidate's on-the-job performance are the people he has worked with before. Talk to them! Ask your candidate if you may speak with his references. If you get a No response, that ought to be a warning sign. If he doesn't trust his own references, why should you trust him?
But don't stop there. Say that you would like to, if at all possible, speak with the people he has managed on previous jobs. Say that you would also like to speak with the people who managed him. Ask if he can arrange it. Even if he can't because it might jeopardize his current position, the way the candidate responds can tell you a lot.
Good managers are worth their weight in gold. Bad managers can destroy projects and drive away your most talented employees. Thus when hiring managers, be discriminating. Do your homework. Check the references.
First, hardware does cost money. It isn't free, and Sun is not particularly efficient at making it. Put simply, Sun isn't ever going to be able to compete with Dell, which will crank out perfectly good boxes at prices that Sun can't touch. Even if Sun hides these extra costs in "solution fees," those costs are real and must be passed on to customers. Therefore, other vendors can undercut Sun's pricing by offering equivalent solutions in which Sun hardware has been replaced by Dell hardware.
Second, the price that the market is willing to pay for software is rapidly decreasing, courtesy of Free software. Ultimately, the price that Microsoft and Sun can charge for their software, however well hidden, is not equivalent to the net benefit that their software provides. Rather, they can charge only for the net additional benefit that their software provides beyond what is already available as Free software. In other words, if the market can have functionality J for free, and Microsoft and Sun offer functionality J+K in their solutions, the market will only be willing to pay for K. As Free software incorporates more functionality, J gets larger and K gets smaller, and hence Microsoft and Sun's pricing power diminishes. Thus, as free software improves other vendors will be able to undercut Microsoft and Sun by offering equivalent solutions in which the proprietary software has been replaced by Free software.
The bottom line is that a solution is hardware plus software plus services. Take any solution which involves Sun, and you can undercut it by replacing Sun with Dell. Take any solution which involves Microsoft, and you can undercut it by replacing Microsoft software with Free software.
I'm going to enjoy watching this play out in the market.
Advertisers would argue (and have you believe) that if they place an ad in content, you are somehow ethically obligated to view it. To do otherwise, they suggest, is "stealing" the content because they pay for it with the ads.
However, this argument is rubbish. People are under no obligation, ethical or otherwise, to support a company's chosen business model. Unless a person has legitimately entered into an agreement with the advertisers, under which the advertisers can expect the person to view their advertisements, there can be no ethical argument to the contrary.
Here, advertisers would argue that merely viewing a web site or watching a television program indicates our implicit agreement to watch the associated ads -- i.e., we have entered (legitimately) into an implicit contract with them -- but this argument is also flawed. Merely participating in an event that some interested party has attached a hidden contract to does not enter you into that contract.
In order for a contract to be binding, ethically or legally, its details must be fully disclosed beforehand, both parties must receive something of fair value from entering into the contract, and both parties must enter into the contact of their own free will and not under the influence of coercion. It is clear that the advertisers do not state the terms of their implied contract up front. Likewise, it is questionable whether the annoyance and time sunk into reading or watching advertisements is a fair trade-off for all potential readers or viewers. Finally, it is easy to make the case that there is some coercion at play. Advertisers often slip ads into content unannounced or with increasing frequency over time so that the full annoyance of their ads is revealed only after consumers have made a significant investment or commitment to the content they are already reading or viewing. At this point, consumers are coerced, if mildly, into continuing by the prospect of having wasted their investment thus far or by the prospect of having to find suitable replacement content.
Therefore, after having given much thought to the subject, I must conclude that we are under absolutely no obligation, ethical or otherwise, to view advertisements.
Of course, you'll probably want to hide the boxes because they'll look ugly.
An old radio, a sound card, and a few shell scripts -- that's all it takes.
It's still a smart move if you're building from source. Just package your source. Then you can build the sources under the control of a package manager (like RPM), and install the resulting packages. You get the full benefits of build-from-scratch and the full benefits of using packages.
This is exactly the approach I use. In fact, I'm a bit more strict about it: My policy is that I don't install any software that isn't packaged. If I need to install something that isn't packaged, I'll package it first. If I don't like the way a packager built an already existing package, I'll repackage it.
The bottom line is that creating your own packages (or fixing packages you don't like) is much easier than maintaining a from-scratch, unpackaged installation. Or ten of them.
To get you started, here a couple of RPM-building references:
Don't give up the benefits of source. Don't give up the benefits of packaging. Have them both.
Take a look at this one-page TCP port scanner that I wrote in Haskell. Imperative and functional styles mixed together, with neither sacrificing for the other.
To use your time- and frequency-domain metaphor, Haskell is the well-educated EE who can use both kinds of analysis -- and slide between the two with ease.
If you want to see some Haskell code, I have some more concrete examples here:
I have written a lot of little projects in Haskell. You can find some of them in links from my user info page.
Also, one of the best resources on Haskell is the HaWiki: HaWiki.
Do give Haskell a try. It is an amazing programming language.
If you're interested, the slides and notes from the talk are here: Fun with Asterisk and Perl.
The talk was for the Pittsburgh Perl Mongers and shows a four examples:
- text-to-speech
- dial the weather
- web form that sets up a call
- web form that sets up a conference
Asterisk is fun stuff and worth a look.Cheers,
Tom
Total cost: $0.
It's been working now for about a week, and already I love it. I can listen to Car Talk and Marketplace whenever I please. I'm saving up a bunch of Fresh Air interviews to listen to on a car trip.
Since a modern hard drive can store about 5 years of compressed talk radio, I don't think I'll need to "change the tape" any time soon. ;-)
One of the most valuable services that lawyers provide, in addition to sound legal advice, is shielding you from being the bad guy. Instead of having to argue with your new employer, you can be the nice guy, while deferring to your lawyer's judgment:
Then when you return to discuss the we-own-all-your-IP clause, you're not the bad guy: See? Now you're a great position. You've been nothing but reasonable. If the company doesn't want to make the change, they're the bad guys. They will look like they want to lay claim to all of your work while paying for just a portion of it. You'll be in a great position to argue for your change or, better yet, have your attorney do it for you.Attorneys are essential for this kind of thing. Use them for their legal advice, and use them to keep yourself above the fray.