- aw li vee eh
- aw liver
- dah gue naiz
- dah gue nah
- day je naiz
- day je neh
As a result, I try to go by Oli, but this has proven to be equally as elusive as many people will write down Ali or even Holly! (WTF?)
Behold the power of stupidity on the internet, as I tried to e-mail a university computer science assignment to my professor:
OlivierDagenais-Assignment1.zip contains an executable file. For security reasons, Gmail does not allow you to send this type of file.
I can sort of see how something like this could have come about: logs show users e-mailing executable files of various degrees of maliciousness. Google reacts by deciding one malicious executable file is one too many and refuses to accept executable files as Gmail attachments.
Some clever user then thinks "My nefarious H@xx0Rz.EXE must be e-mailed to my clueless buddies... I know: I'll just zip it!". Google notices again and here we are. Encrypting my ZIP file would probably do nothing as you can list the names of the files without the key and so Google's clever little ZipSecurityPeeker.py only needs to check for the presence of files ending with .exe.
I ended up submitting the assignment using another e-mail account. I bet I could have CCed my GMail account and received the "insecure" attachment no problem.
UPDATE: Whoa! I didn't even have a .exe file in my ZIP archive! I have some .bat, some .cmd and some .pl, as well as one or two shell scripts without an extension. Most of those files, incidentally, shipped as part of Apache Ant, which I included in my assignment's ZIP archive so the professor wouldn't have to go hunt it down, install it, etc.
UPDATE 2: Nope, I can't receive it either because I apparently broke the law:
Your message cannot be delivered to the following recipients:
(...)
Reason: SMTP transmission failure has occurred
Diagnostic code: smtp;552 5.7.0 Illegal Attachment c5si5493294qbc
(...)
Here's a snippet of testing code from a university assignment I did last term where we had to create a model of an alarm clock using finite state machines and then test using the FSM testing techniques we learned in class. This is Java 5 code with some JUnit goodness.
/**
* It's 21:30 and I'm going to bed. I set the alarm time for 06:00 and then
* sleep until the damn thing wakes me up, but I don't want to get up just
* yet and I think 4 more minutes will change my mood today from
* "didn't get enough sleep" to "downright chipper" and so I slam my hand in
* the general direction of the drowse button (it has an 80%, no 70% chance
* of hitting it the first time) and then wake up a new man 4.2 minutes
* later, turning off the alarm functionality until I need it again the
* following night.
*/
@Test
public void SetTickRingDrowseTickRingStop ( ) {
// set clock time from 01:00 to 21:30
super.SwitchTimeSet();
// that is to say add 20 hours
for (int c = 0; c < 20; c++) {
super.HourButtonClick();
}
// and 30 minutes
for (int c = 0; c < 30; c++) {
super.MinuteButtonClick();
}
areEqual(21, 30, super.clockTime);
// set switch to Run
super.SwitchRun();
// set alarm time from 13:00 to 06:00
super.SwitchAlarmSet();
// which is to add 11 + 6 hours
for (int c = 0; c < 11 + 6; c++) {
super.HourButtonClick();
}
areEqual(06, 00, super.alarmTime);
// set switch to Run
super.SwitchRun();
assertTrue(super.IsAlarmOn());
// go to sleep for 8.5 hours
for (int c= 0; c < 8.5 * 60; c++) {
super.TickMinute();
}
areEqual(06, 00, super.clockTime);
// whoa, it's ringing!
assertTrue(super.IsTriggered());
assertTrue(super.IsRinging());
assertFalse(super.IsDrowsing());
// leave me alone for 240 more seconds!
super.DrowseButtonClick();
for ( int c = 0; c < 4; c++ ) {
assertTrue(super.IsTriggered());
assertFalse(super.IsRinging());
assertTrue(super.IsDrowsing());
super.TickMinute();
}
areEqual(06, 04, super.clockTime);
// whoa, it's ringing again!
assertTrue(super.IsTriggered());
assertTrue(super.IsRinging());
assertFalse(super.IsDrowsing());
// that's it, I'm getting up and turning this thing off
super.SwitchAlarmOff();
assertFalse(super.IsAlarmOn());
}
The test depends on some @Before method which resets the model (i.e. makes it just like the alarm clock just had batteries put in for the first time) and thus the the initial clock time is 01:00 and the initial alarm time is 13:00. The model was created from observing the behaviour of an old Westclox travel alarm clock.
| Path type | Windows | *nix |
|---|---|---|
| the subversion repositories are located | d:\svnrepo | /home/svn |
| the backup root folder | d:\backups | /home/backups |
| the subversion CLI | (in the path) | (in the path) |
| Windows | *nix |
|---|---|
BackupAndDump.bat | backupanddump |
| Windows | *nix |
|---|---|
SubversionBackup.bat | svnbackup |
INVALID SYSTEM DISK, INSERT BOOT DISK AND HIT ENTER TO RETRY (or something just like it).| Action | Outlook Express | Outlook 2007 |
|---|---|---|
| Switch from plain text to HTML (while viewing a message and plain text is the default - which is what everybody should do) | Alt+Shift+H | Ctrl+Shift+W, D |
| Focus on the folder tree (while in the main interface) | TAB | Ctrl+1 |
| Insert default signature (while composing) | Alt+I, S | Alt+N, G, ENTER |
| Invoke smart tag (i.e. AutoCorrect Options)'s drop-down menu | not applicable | Alt+Shift+F10 |
Upon the termination of your use of Picasa Web Albums, including upon receipt of a certificate or other legal document confirming your death, Google will close your account and you will no longer be able to retrieve content contained in that account.
"Automatic Updates
Updating your computer is almost complete. You must restart your computer for the updates to take effect.
Do you want to restart your computer now?
[Restart Now]"
Whoa! At least it's better than that "Your computer will restart in 5 minutes no matter what and I don't care if your name is Bill Gates and you're in the middle of a very important demonstration at the moment, so TOUGH LUCK."
For those of you who might be wondering how this could have happened, I run as a non-administrator on that computer and I "Remote Desktoped" back to my own machine as the administrator to install this Patch Tuesday's set of updates. I wasn't quite ready to reboot, but Windows just needed to insist.
Ask your readers to do the same. Beg them. Relate sob stories about poor graduate students in desperate circumstances. Imply I'm one of them. (Do whatever you have to. If that fails, try whatever it takes.)
commands.xml file to enable the use of the "Zoom slider" as a "Scroll slider". Having recently repaved my computer, I found myself installing the latest version of Microsoft IntelliType Pro (version 6.02, a.k.a. 6.02.303.0) and trying to apply the patch I posted earlier:
C:\Program Files\Microsoft IntelliType Pro>patch -p0 < command.patch
patching file `commands.xml'
Hunk #1 FAILED at 1606.
Hunk #2 FAILED at 1694.
Hunk #3 FAILED at 2122.
Hunk #4 FAILED at 2134.
Hunk #5 FAILED at 2152.
Hunk #6 FAILED at 2182.
patch unexpectedly ends in middle of line
Hunk #7 FAILED at 2224.
7 out of 7 hunks FAILED -- saving rejects to commands.xml.rej
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<!-- Pass-through (identity transform) template -->
<xsl:template match="* | @* | node()">
<xsl:copy>
<xsl:apply-templates select="* | @* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="C319">
<C319 Type="6" Activator="ScrollUp" />
</xsl:template>
<xsl:template match="C320">
<C320 Type="6" Activator="ScrollDown" />
</xsl:template>
</xsl:stylesheet>
C:\Program Files\Microsoft IntelliType Pro>xsl commands.old Zoom2Scroll.xsl commands.xml
C:\Program Files\Microsoft IntelliType Pro>
IType.exe process, then re-launching that EXE again... it works! In your face, Larry Wall!
import System.Xml;
import System.Xml.Schema;
var src : String = System.Environment.GetCommandLineArgs()[1];
var transformer : System.Xml.Xsl.XslTransform = new System.Xml.Xsl.XslTransform ( );
var stylesheet : String = System.Environment.GetCommandLineArgs()[2];
transformer.Load ( stylesheet );
transformer.Transform ( src, System.Environment.GetCommandLineArgs()[3], null );
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322>jsc /nologo xsl.jsn
I've spent the past 3 hours trying to figure out freaking classpath issues: something about a ClassCastException from a org.apache.commons.logging.LogFactory. I'm giving up for the day. Stupid freaking classpaths.
I apologize for the recent feed duplications. First, I upgraded to Blogger Beta (gone are the endless refreshes when "publishing"), then I started using Windows Live Writer (Beta). In theory, everything should be good now...
![]()
...until the next round of betas, I suppose. :p
| Note This is a copy of an essay I wrote for an assignment in the Open-Source Software Engineering course I'm taking. The deadline was yesterday, so it's safe to post today. :) I wrote this essay using Confluence, so the HTML is a little weird when I try to copy/paste it here. The assignment was: Compare and contrast (1500-2000 words) the open source licenses MIT, BSD, GPL, LGPL, Creative Commons to the Eclipse Public License. Make sure to include a table (rows heading is feature, column heading is license) that summaries your discussion. Submit the answer to this question as an HTML document. |
| # | Feature name \ License | MIT | BSD | GPL | LGPL | Creative Commons | EPL |
|---|---|---|---|---|---|---|---|
| 1 | Number of paragraphs | 4 | 6 | 56 | 69 | Average of 31 | 20 |
| 2 | Distribute modified/derived work? | Yes | Yes | Yes | Yes | Depends on "nd" option | Yes |
| 3 | Must release source? | Yes | Yes | ||||
| 4 | Must identify all modifications? | Yes | Yes | ||||
| 5 | Is attribution required? | Preserve copyright notice | Preserve copyright notice | Preserve copyright notice | Preserve copyright notice | Yes | Preserve copyright notice |
| 6 | Is endorsement or promotion permitted? | Not without permission | Yes | ||||
| 7 | Is commercial use or distribution authorized? | Yes | Yes | Depends on "nc" option | Yes | ||
| 8 | Allows re-licensing? | Only by special permission | Only to GPL, or by special permission | Depends on "sa" option | Yes | ||
| 9 | Requires patents be licensed to recipients? | Yes | Yes | Yes |
The open source licenses involved in this study have been analyzed and – although similar in the spirit of "no charge but no warranty" copyright licensing – were found to be primarily different in what they are specific or explicit about. It is speculated that this is representative of the values and interests of the license authors and therefore the level of detail surrounding a topic is assumed to reflect the degree to which the interests and values affected by said topic are important to the authors and the amount of effort willing to be exerted in order to ensure said interests and value are protected.
Examples of such interests and values are "equality", "merit", "freedom", "public good", "continuous improvement", "standardization" and "accountability". This analysis will examine these values, how they can be traced back to license features and finally how individual licenses emphasize these values by the use of the features and the requirements or conditions they attach to said features.
The matrix, and correspondingly this analysis, only examines the major differences observed between the licenses. Similarities are outside the scope of this study. It should be noted, also, that the matrix only contains entries for feature-license pairs when such a feature was explicitly mentioned in the license. As identified in the introduction, the licenses aren't always specific on all features and a lawyer may be able to interpret the licenses according to the local laws to make a definitive determination for each feature. That said, even a "Yes" is slightly misleading as there are often conditions or requirements attached to the permissions before they can be implemented.
Although one of the more questionable choice of features, it is actually pretty representative of the level of detail of the licenses. The count was done quickly, by hand.
Since all licenses permit royalty-free redistribution, the distinction here is whether the work can be distributed with modifications or as part of a derived work. This feature is present because the Creative Commons licenses can restrict this activity with the "nd" (No Derivatives) option.
This feature is more accurately the requirement of making available, upon request, the source code of any binary re-distribution, independent of whether the work was modified or not. It may be sufficient to make an offer for the source code or to pass on the same offer to recipients. The GPL and LGPL are explicit about this.
Also known as "delta notification", this is a requirement that modifications be traceable back to contributors, usually in the case of derivative works. Again, strong features of GPL and LGPL.
Another feature that appears to stem out of nit-pick, the Creative Commons licenses stand out in that they require more than simply preserving the copyright notice but to make efforts to link back to the original work. This could be considered a special case of delta notification.
A special case of attribution, in the case of derived works the BSD license makes a point of requiring "specific prior written permission" before using the names of the original project's organization or contributors for promotional or endorsement purposes. The Creative Commons licenses give this permission by default, but section 4.a reserves the right to the Licensor to request credit be removed.
This feature is about the license granting permission to use or distribute the work (or portions thereof) in a trade for something of value between two entities [3]. The MIT and BSD licenses are not specific about this and the Creative Commons licenses offer this permission as the "nc" (Non-Commercial) option.
It may be desirable, during the construction of a derived work, to license said derived work under different terms. The GPL and LGPL offer this possibility as an exception, the EPL offers it under certain conditions and the Creative Commons licenses grant it if the "sa" (Share Alike) option is not used.
Where patents are concerned, the GPL and LGPL, through sections 7 and 11, respectively, state clearly that any patents owned by contributors be licensed royalty-free to all recipients, direct or indirect. The EPL, on the other hand, only requires that patents on contributions be licensed royalty-free when combined with "the Program", although the EPL joins the MIT and Creative Commons licenses in reminding the recipient that there is no guarantee the work does not infringe on patents owned by third parties. The EPL goes furthest by stating it is the responsibility of the recipients to acquire any third-party patent licenses that may be required for the use or distribution of the work.
These values were derived from the perceived intents of the license features identified earlier and form the basis of the respective philosophy behind each license.
Equality is a social state of affairs in which certain different people have the same status in a certain respect.[1]
This form of inclusiveness aims to fairly make available the work to all possible recipients and ensuring this possibility through various conditions, such as ensuring the re-distributed work is licensed "as a whole at no charge" [2]. While this is generally the primary principle behind open-source licensing, half of the Creative Commons licenses stand out here because the "nc" option – identified in feature #7 – prohibits the use of the work in a commercial fashion and thus can be interpreted as introducing inequality. It could also, on the other hand, be argued that such a restriction may be an attempt to restore equality among non-commercial entities relative to their commercial counterparts.
Another factor potentially affecting equality is the Creative Commons licenses' "sa" option – identified in feature #8 – that seeks to ensure recipients have as much freedom with the derived work as with the original, much the same way sections 2b and 6 of the GPL and sections 2c and 10 of the LGPL try to ensure the propagation of the rights and freedom of the original work to all recipients at all levels of distribution.
Lastly, feature #9 ensures that no person or groups of person be excluded from using the work by having the GPL and LGPL require that all patents be licensed royalty free to everybody.
This value can be understood to mean the desire for recognition or acknowledgement, such that a reputation can be earned and preserved. We can especially see the expression of this value through feature #5 but also through feature #6 where the authors of the BSD license imagined the possibility of mis-use or of sub-optimal derivative works that could potentially – albeit unintentionally – reflect badly upon the original authors. We can also see a similar attitude with section 4a of the Creative Commons licenses where endorsement is considered granted in the form of the attribution requirement, but for which the Licensor has veto rights over.
It can also be argued that feature #4 helps support the notion of individual merit and reputation by the GPL and LGPL requiring that all modifications be identified, even though all licenses disclaim any warranties to protect the same individuals from damage claims.
Although all open-source licenses generally try to increase the freedoms of the recipients, the most fervent in its attempts to do so is the GPL, especially through feature #8. This value is highly regarded as it can help avoid vendor lock-in where critical or popular fixes and improvements could otherwise be withheld, delayed or prevented by the original authors. There are obvious similarities to value #1 (Equality).
Feature #3 tries to make sure recipients (direct or indirect) are as able or free to make changes to the work as the original authors, provided some conditions are satisfied. Again, this is the stated spirit of the GPL and LGPL, although the latter trades a few freedoms – hence the "Lesser" in the name – to support value #6 (Standardization). Some Creative Commons licenses are definitely at odds with this value as the "nd" option could be seen as taking away freedom, relatively speaking.
It is seen as an effort to help the development of the greater community and encourage cooperation to emphasize elements of feature #3. Similar to value #1, this value distinguishes itself from Equality by not only providing equal access to the work, but to improvements to the work, such that said improvements are done cooperatively and as a community so as to best reflect the needs of the many. That is not to say that the act of not making available the source code hinders public good per se – although some may argue otherwise – but that the public good is best served when the source code is also made available.
Feature #7 can play a role here, in that allowing commercial use and redistribution may also help accelerate the development of a popular work, as the LGPL. One could also argue the applicability of features #4, #5 and #6 in that they could help identify fraudulent or sub-optimal versions of a popular work.
The permission to re-distribute modified/derived works (feature #2), coupled with the guaranteed freedom to make modifications (feature #3) help support this special case of value #4 (Public Good) where the software is able to be evolved and improved. This is where works licensed under the GPL have the best chance for continuous improvements and No Derivative Creative Commons-licensed content the least chance.
It could also be argued that the ability to make improvements in secret could mean there is less overhead involved and the improvements themselves progress faster, but such modifications may not be for the greater Public good. In those cases the MIT, BSD and EPL licenses offer that opportunity and similar, more "open" projects may be created to emulate the more secretive counterparts.
It may be that it is important a work become popular or widely-used. In such cases, the "lesser" conditions attached to feature #3 by the LGPL (or by other licenses) may allow works such as function libraries to flourish by being used by more recipients than otherwise would be possible if said recipients had to also release their source code, even if it only used the original work. [5]
Feature #5 helps identify the authors and contributors to works and feature #4 enables an order of magnitude better traceability to help establish exactly who did what, generally to help track down problems and/or defects with the work That information could also, in theory, be used to assign blame, although all licenses try to avoid this situation by providing no warranty of any kind and attempting to shield authors and contributors from damage claims.
The GPL, LGPL and EPL, however, have an exception that permits, through feature #7, the exchange of a warranty for a fee, under the condition that the warranty protection can not affect other contributors.
Lastly, although some patents are licensed for use as per feature #9, not all possible patents necessarily are. The EPL and MIT licenses are the only two that specifically point out the fact that third-party patents may need to be licensed, mostly because there is no warranty of non-infringement. The GPL and LGPL, on the other hand, are specific about obtaining royalty-free patent licensing from all involved parties before distributing the work.
As was demonstrated in this study, the licenses vary wildly in what they are specific or explicit about, which helps to emphasize the differences in values and interests shared by the authors of said licenses. It is thus difficult to fully compare the chosen set of open source licenses because they do not generally disagree on many points, but rather delve into different facets of those points at different intensities.
It is thus recommended that the choice of an open-source license for a new work be made according to the compatibility of the author(s)' values with those implied from the licenses. An abstraction at this level is thought to deliver the best suitability and match.
1. Social equality, Wikipedia. http://en.wikipedia.org/wiki/Equality_(law)
2. The GNU General Public License, Free Software Foundation, Inc. http://www.opensource.org/licenses/gpl-license.php
3. Commerce, Wikipedia. http://en.wikipedia.org/wiki/Commercialization
4. The Open Source Definition, Open Source Initiative. http://www.opensource.org/docs/definition.php
5. GNU Lesser General Public License, Free Software Foundation, Inc. http://www.opensource.org/licenses/lgpl-license.php
6. Licensing HOWTO, Raymond, Eric S. & Catherine O. http://www.catb.org/%7Eesr/Licensing%2DHOWTO.html
7. The Power of Personal Values, Posner, Roy. http://gurusoftware.com/Gurunet/Personal/Topics/Values.htm
8. Commerce, Wikipedia. http://en.wikipedia.org/wiki/Commercialization
PIO mode. I tried the usual "switch to DMA" trick, but it didn't work! Fortunately, I ran into this forum posting over at CDRLabs.com where the third post detailed a procedure which seemed less scary than the first one and which worked, to boot!HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}0001 or 0002 (representing the primary and secondary IDE channels, respectively), whichever one represents the channel for which your device isn't getting DMA-enabledMasterIdDataChecksum or SlaveIdDataChecksum, again depending on whether your DMA-deficient device is the master or slave, respectively.Here are 107 software horror stories where making a programming mistake can cost you your job or even your, or even somebody else's life. Many of these listed provide links to stories about the horrific event while others contain book or magazine references where you can read more about them.