That little banner is how you're supposed to click through to find out more about the product you were just told about. I'd bet that, despite the fact that barely anyone clicks it, that button is a big part of how Hulu sells advertising as being more valuable than TV advertising.
The other thing they do that Boxee didn't "see" is the full-page branding on certain ads. While the ad's playing, the rest of the Hulu page suddenly becomes rebranded to whatever's being advertised for the duration of the ad, thus making the ad take up more of the screen.
Of course, neither of these things show up if you view the Hulu video full screen, so it's a difficult argumnt to make.
I gather from Google engineers that this issue is caused by the abuse throttling features of GMail. If there's a botnet hitting Google on your subnet, or if your access patterns seem suspicious (which for me seems to include accessing my account from home, work and phone all by IMAP, but as usual the Googler's couldn't be specific about what triggers it) then they'll block you out until you pass a CAPTCHA.
It's pretty annoying since you can't exactly send spam over IMAP. I guess the underlying service is what does the checking, and it can't tell the difference between SMTP, IMAP, and calls from the Web UI.
I think you misunderstood the sentence about it not being a port. It's saying that the phone's architecture is ARM EABI and that Debian has an existing port for ARM EABI; Android itself is not built on Debian, as far as I'm aware.
Unfortunately, due to the way Netscape designed JavaScript it often is necessary to block the parsing of a page on a script even when you're multithreaded since the script can do document.write of fragments that need to be fed into the HTML parser while it's in the same state it was at the opening SCRIPT tag. Modern browsers are starting to work around this by speculatively parsing ahead and resetting if a script writes out anything, but unfortunately writing out stuff is often exactly what these ad and stat-counter scripts are for.
Novell's build of Moonlight ships with licenced Windows Media support in the form of binary blobs, which was intended to allow DRMed video content to be used on Linux via Silverlight. I don't know whether it does in practice because I've never actually encountered a site that uses Silverlight for streaming video other than the handful of demos on the Silverlight site.
I agree that these issues do matter, but I don't agree that the way to address this is to put design in the hands of your average office worker. I know I don't have the skills necessary to produce an attractive document, so I write the content and then one of two things happen. If it's only a transient internal document, I'll use software (designed by folks who know how to make things attractive) to format it; this gets an acceptable but not exceptional result. If it's a document that needs more than that, I hand my copy to folks who actually have a clue about graphic design and let them go at it.
Either way, all of the formatting features in Word and other such software are a distraction. I write my stuff in a text editor, usually in something resembling wiki markup, and then convert it to something sensible after I'm done.
Ahh. That does make things more interesting. My company always wrote the contracts so that we owned the resulting code, which is of course a lock-in mechanism but does allow for progressive improvement too.
Obviously a lot of this depends on the culture of your workplace, but I got away with doing this as skunkworks at a former employer by padding my estimates a little and slowly evolving the framework with each successive project. You've obviously done this enough times to know what's common to all of the projects and where the articulation points are. If you start with an existing framework it'd probably get you much of the way there before you write any code.
What I ended up with was an xforms-like forms engine, a data mangling engine (which I guess is what you're calling "business rules") and a data layer that could be backed by any database or database-like API I wrote a driver for. I did end up reinventing the wheel in a lot of ways because I didn't really go into it planning to write a framework, but I'm sure with a little research you could find components that can help you build these pieces.
After I was finished and my estimates started to become shorter and I was able to turn around projects much more reliably I told my boss what I'd done, using the improved workflow as justification, and he was pleased. Some managers don't like to think long-term, but I think this is one of those "ask forgiveness rather than permission" situations.
While you are of course correct, it's also true that the prison inmates probably won't understand or care about the difference, and even if they did they've only got your word that you pissed on a tree rather than molesting a child.
Your example about messages prefixed with "error" is something I can identify with.
In a former job we developed a piece of software which produced error messages of the form "Fatal Error: Widget is not flummoxed". So many times I'd get support tickets escalated to me that said things like "Customer reports a fatal error". (In some cases, it turned out that the support folks that were doing this, having been given a good error report over the phone that they were too lazy to write down.)
In the end I took the initiative and simply altered the message to not have the "Fatal Error" prefix. Now the customers do tend to actually try to read the message, though of course sometimes they read it wrong or struggle with the technical terms.
Sadly, the support folks -- who deal with far more error messages than individual customers do, of course -- soon started simply saying "customer reports that it failed". You can't win 'em all, I guess.
In practice, I think there's no substitute for having the software report its own errors. This is something I made some headway towards, but I left the company before I finished it. (It was a skunkworks project, of course.)
Actually, it is Ubuntu's fault: they switched to PulseAudio without ensuring that all of the apps would work with it. It's a shame, since I was able to get Flash working through PulseAudio with just a little tweak to my ALSA configuration... why couldn't Ubuntu ship it this way by default?
An explanation I've had some success with in the past is that I contribute my work to the commons and others contribute their work to the commons, so I get to benefit from their work in return for them benefiting from mine. This can be applied either at the single-project level (i.e. I contributed to OpenOffice.org rather than writing my own office suite from scratch) or on the level of the whole ecosystem: I'm an expert in web apps, but I'm not an expert in movie players; I share my blog application with the world and Fred shares his movie player with the world and we both benefit.
The other one I've used, which is successful when talking to a different sort of person, is "I make free software because I like to show off to my friends". If they don't get it, you can draw comparisons to other hobbies that produce products that someone might like to show off to folks with the same hobby.
I think the best place to start is a language that is close to how the machine "thinks" without creating lots of unnecessary detail early on. I think I'd probably start with C for that reason. It has enough expressive power that you can introduce some basic stuff without needing to go into full detail right away, but as you introduce the lower-level bits (probably in assembler, as you say) you can easily identify how the C constructs map onto the underlying machine language, so the details are introduced in terms of the abstractions that the student has already learned.
This also works well in the other direction. Having taught C, you can show how it makes solving some common problems quite fiddly, and thus introduce the concept of an abstraction and the concrete examples of object oriented and functional programming as abstractions for solving certain classes of problems. At this point it's easy to draw the parallel that C is in fact an abstraction over assembler which is itself an abstraction over the machine language.
Microsoft has stated a number of times (I don't have any citations to hand; sorry) that their priority for IE8 is good support for CSS2 and other "current" standards; they've explicitly declared CSS3 (where most if not all of the things you listed are from) as being out of scope for this release.
I realise that this is jumping off on a tangent from your comment, but there was (still is?) a bug whereby if you use Ubuntu with Compiz Fusion then Java Swing will mis-calculate the position of clicks by an amount approximately the size of the window decorations. I vaugely remember that there was some way you could fix this in Java itself, but I just disabled Compiz Fusion and I've been happy ever since.
Also, you should make sure that you have the sun-java6-runtime package installed and selected as the default JVM.
It's worth noting that Steam can also support games shipped on optical media. Roughly speaking, the bits that you would otherwise have downloaded from the Steam servers are on the CD so you can skip the download step and just do the authentication step to prove that you have the right to play the game.
While that's true for IEnumerable<T>, I think your parent was referring to the method used to translate LINQ calls into SQL, etc. In this case, the result is more like: (beware: I'm making these classes up; can't remember what they are and too lazy to look them up.)
IEnumerable(of Bar) foo = thing.Where(of Bar)( new Expression(new EqualityTestExpression(new PropertyAccessExpression(x, "i"), new ValueExpression(0))) );
The "Linq to SQL" backend then takes that Expression object and creates an SQL expression from it which it throws over to ADO. This language feature is called "Expression Trees" and is triggered in preference to simply creating a delegate when an argument is of a particular type.
This is still syntactic sugar, of course, but it's much more readable with the syntactic sugar than it is spelled out as a tree of object instantiations.
My signature is basically just a pair of wavy horizontal lines. To start with, the bumps were in the right places to vaugely resemble the letters of my name, but over time it's just become an indecipherable wavy line. I can't say I've ever been called on it. A signature should be able to be whatever you want it to be.
WANTED: MDI-capable window manager
on
GIMP 2.6 Released
·
· Score: 1
A bunch of times I've tried to find a window manager that'll let me group several windows together into one MDI container, ideally with the toolboxes from the inner windows docked or at least floated on top. This would be superior to single-app MDI as things could be grouped by task rather than application. I've not found a single window manager that works like this. The best I could find were window managers that implement tabs at the top level, but that sucks for the toolboxes.
Maybe I'm just searching for the wrong thing. Do you have any window managers to recommend?
I think this isset($something) ? $something : NULL idiom is probably the only thing I ever really used ?: for, in PHP. I'm told that they've now added an operator or something else that can do this idiom a lot more tersely, which is nice. I don't really write much PHP anymore.
Agreed wholeheartedly. I really only ever write two types of comments. The first type is the sort of comment that gets fed into javadoc, doxygen, etc: API documentation. Even then, you generally don't need to say too much if you've designed your library well. The second is comments admitting that something sucks and explaining why it sucks.
Sometimes, though ideally not very often, something prevents you from doing it the way you would have liked to do it: lack of time, design flaw in a library, deployment constraints, bugs in other components, etc. That's the sort of thing I like to see in comments. Tell me why it's not done the "obvious" way, otherwise I'm liable to waste time trying to change it to the obvious way.
Generally this latter sort of comment will start with something like FIXME:, HACK: or TEMP:. At a previous employer we had a tool that would grep the entire codebase for this sort of comment and produce a report of all of the craziness so that it'd stay on our radar and eventually be fixed one way or another. Even though I don't have that tool at my current employer, I still make a point of writing the comments in this way so that in theory such a tool can be used.
Do you also rewrite all DNS requests so that hostnames for systems on the other network resolve to your translated IP addresses? This was the thing that wrote off my attempts to do what you're describing as a solution. In the end I just bit the bullet and renumbered one of the networks.
That little banner is how you're supposed to click through to find out more about the product you were just told about. I'd bet that, despite the fact that barely anyone clicks it, that button is a big part of how Hulu sells advertising as being more valuable than TV advertising.
The other thing they do that Boxee didn't "see" is the full-page branding on certain ads. While the ad's playing, the rest of the Hulu page suddenly becomes rebranded to whatever's being advertised for the duration of the ad, thus making the ad take up more of the screen.
Of course, neither of these things show up if you view the Hulu video full screen, so it's a difficult argumnt to make.
I gather from Google engineers that this issue is caused by the abuse throttling features of GMail. If there's a botnet hitting Google on your subnet, or if your access patterns seem suspicious (which for me seems to include accessing my account from home, work and phone all by IMAP, but as usual the Googler's couldn't be specific about what triggers it) then they'll block you out until you pass a CAPTCHA.
It's pretty annoying since you can't exactly send spam over IMAP. I guess the underlying service is what does the checking, and it can't tell the difference between SMTP, IMAP, and calls from the Web UI.
I think you misunderstood the sentence about it not being a port. It's saying that the phone's architecture is ARM EABI and that Debian has an existing port for ARM EABI; Android itself is not built on Debian, as far as I'm aware.
Unfortunately, due to the way Netscape designed JavaScript it often is necessary to block the parsing of a page on a script even when you're multithreaded since the script can do document.write of fragments that need to be fed into the HTML parser while it's in the same state it was at the opening SCRIPT tag. Modern browsers are starting to work around this by speculatively parsing ahead and resetting if a script writes out anything, but unfortunately writing out stuff is often exactly what these ad and stat-counter scripts are for.
Novell's build of Moonlight ships with licenced Windows Media support in the form of binary blobs, which was intended to allow DRMed video content to be used on Linux via Silverlight. I don't know whether it does in practice because I've never actually encountered a site that uses Silverlight for streaming video other than the handful of demos on the Silverlight site.
What do they do when they need to target the Playstation 3? (Not trolling. Genuinely interested.)
I agree that these issues do matter, but I don't agree that the way to address this is to put design in the hands of your average office worker. I know I don't have the skills necessary to produce an attractive document, so I write the content and then one of two things happen. If it's only a transient internal document, I'll use software (designed by folks who know how to make things attractive) to format it; this gets an acceptable but not exceptional result. If it's a document that needs more than that, I hand my copy to folks who actually have a clue about graphic design and let them go at it.
Either way, all of the formatting features in Word and other such software are a distraction. I write my stuff in a text editor, usually in something resembling wiki markup, and then convert it to something sensible after I'm done.
Ahh. That does make things more interesting. My company always wrote the contracts so that we owned the resulting code, which is of course a lock-in mechanism but does allow for progressive improvement too.
Obviously a lot of this depends on the culture of your workplace, but I got away with doing this as skunkworks at a former employer by padding my estimates a little and slowly evolving the framework with each successive project. You've obviously done this enough times to know what's common to all of the projects and where the articulation points are. If you start with an existing framework it'd probably get you much of the way there before you write any code.
What I ended up with was an xforms-like forms engine, a data mangling engine (which I guess is what you're calling "business rules") and a data layer that could be backed by any database or database-like API I wrote a driver for. I did end up reinventing the wheel in a lot of ways because I didn't really go into it planning to write a framework, but I'm sure with a little research you could find components that can help you build these pieces.
After I was finished and my estimates started to become shorter and I was able to turn around projects much more reliably I told my boss what I'd done, using the improved workflow as justification, and he was pleased. Some managers don't like to think long-term, but I think this is one of those "ask forgiveness rather than permission" situations.
While you are of course correct, it's also true that the prison inmates probably won't understand or care about the difference, and even if they did they've only got your word that you pissed on a tree rather than molesting a child.
Your example about messages prefixed with "error" is something I can identify with.
In a former job we developed a piece of software which produced error messages of the form "Fatal Error: Widget is not flummoxed". So many times I'd get support tickets escalated to me that said things like "Customer reports a fatal error". (In some cases, it turned out that the support folks that were doing this, having been given a good error report over the phone that they were too lazy to write down.)
In the end I took the initiative and simply altered the message to not have the "Fatal Error" prefix. Now the customers do tend to actually try to read the message, though of course sometimes they read it wrong or struggle with the technical terms.
Sadly, the support folks -- who deal with far more error messages than individual customers do, of course -- soon started simply saying "customer reports that it failed". You can't win 'em all, I guess.
In practice, I think there's no substitute for having the software report its own errors. This is something I made some headway towards, but I left the company before I finished it. (It was a skunkworks project, of course.)
Historical design flaw.
Actually, it is Ubuntu's fault: they switched to PulseAudio without ensuring that all of the apps would work with it. It's a shame, since I was able to get Flash working through PulseAudio with just a little tweak to my ALSA configuration... why couldn't Ubuntu ship it this way by default?
An explanation I've had some success with in the past is that I contribute my work to the commons and others contribute their work to the commons, so I get to benefit from their work in return for them benefiting from mine. This can be applied either at the single-project level (i.e. I contributed to OpenOffice.org rather than writing my own office suite from scratch) or on the level of the whole ecosystem: I'm an expert in web apps, but I'm not an expert in movie players; I share my blog application with the world and Fred shares his movie player with the world and we both benefit.
The other one I've used, which is successful when talking to a different sort of person, is "I make free software because I like to show off to my friends". If they don't get it, you can draw comparisons to other hobbies that produce products that someone might like to show off to folks with the same hobby.
I think the best place to start is a language that is close to how the machine "thinks" without creating lots of unnecessary detail early on. I think I'd probably start with C for that reason. It has enough expressive power that you can introduce some basic stuff without needing to go into full detail right away, but as you introduce the lower-level bits (probably in assembler, as you say) you can easily identify how the C constructs map onto the underlying machine language, so the details are introduced in terms of the abstractions that the student has already learned.
This also works well in the other direction. Having taught C, you can show how it makes solving some common problems quite fiddly, and thus introduce the concept of an abstraction and the concrete examples of object oriented and functional programming as abstractions for solving certain classes of problems. At this point it's easy to draw the parallel that C is in fact an abstraction over assembler which is itself an abstraction over the machine language.
Microsoft has stated a number of times (I don't have any citations to hand; sorry) that their priority for IE8 is good support for CSS2 and other "current" standards; they've explicitly declared CSS3 (where most if not all of the things you listed are from) as being out of scope for this release.
I sure hope so.
I realise that this is jumping off on a tangent from your comment, but there was (still is?) a bug whereby if you use Ubuntu with Compiz Fusion then Java Swing will mis-calculate the position of clicks by an amount approximately the size of the window decorations. I vaugely remember that there was some way you could fix this in Java itself, but I just disabled Compiz Fusion and I've been happy ever since.
Also, you should make sure that you have the sun-java6-runtime package installed and selected as the default JVM.
It's worth noting that Steam can also support games shipped on optical media. Roughly speaking, the bits that you would otherwise have downloaded from the Steam servers are on the CD so you can skip the download step and just do the authentication step to prove that you have the right to play the game.
While that's true for IEnumerable<T>, I think your parent was referring to the method used to translate LINQ calls into SQL, etc. In this case, the result is more like: (beware: I'm making these classes up; can't remember what they are and too lazy to look them up.)
The "Linq to SQL" backend then takes that Expression object and creates an SQL expression from it which it throws over to ADO. This language feature is called "Expression Trees" and is triggered in preference to simply creating a delegate when an argument is of a particular type.
This is still syntactic sugar, of course, but it's much more readable with the syntactic sugar than it is spelled out as a tree of object instantiations.
My signature is basically just a pair of wavy horizontal lines. To start with, the bumps were in the right places to vaugely resemble the letters of my name, but over time it's just become an indecipherable wavy line. I can't say I've ever been called on it. A signature should be able to be whatever you want it to be.
A bunch of times I've tried to find a window manager that'll let me group several windows together into one MDI container, ideally with the toolboxes from the inner windows docked or at least floated on top. This would be superior to single-app MDI as things could be grouped by task rather than application. I've not found a single window manager that works like this. The best I could find were window managers that implement tabs at the top level, but that sucks for the toolboxes.
Maybe I'm just searching for the wrong thing. Do you have any window managers to recommend?
I think this isset($something) ? $something : NULL idiom is probably the only thing I ever really used ? : for, in PHP. I'm told that they've now added an operator or something else that can do this idiom a lot more tersely, which is nice. I don't really write much PHP anymore.
Agreed wholeheartedly. I really only ever write two types of comments. The first type is the sort of comment that gets fed into javadoc, doxygen, etc: API documentation. Even then, you generally don't need to say too much if you've designed your library well. The second is comments admitting that something sucks and explaining why it sucks.
Sometimes, though ideally not very often, something prevents you from doing it the way you would have liked to do it: lack of time, design flaw in a library, deployment constraints, bugs in other components, etc. That's the sort of thing I like to see in comments. Tell me why it's not done the "obvious" way, otherwise I'm liable to waste time trying to change it to the obvious way.
Generally this latter sort of comment will start with something like FIXME:, HACK: or TEMP:. At a previous employer we had a tool that would grep the entire codebase for this sort of comment and produce a report of all of the craziness so that it'd stay on our radar and eventually be fixed one way or another. Even though I don't have that tool at my current employer, I still make a point of writing the comments in this way so that in theory such a tool can be used.
Do you also rewrite all DNS requests so that hostnames for systems on the other network resolve to your translated IP addresses? This was the thing that wrote off my attempts to do what you're describing as a solution. In the end I just bit the bullet and renumbered one of the networks.