Wednesday, December 9, 2009

Why outsourcing is a bad idea

November 19 (from: Microsoft)

Hello David,



Thank you for contacting Microsoft Online Customer Service.



I understand that you would like to download Expression Suite 2 in English language.

I am currently working with my colleagues to resolve your issue. Typically, we hear from them in 24 to 72 hours, depending on the complexity of the issue. If you have not received a reply within 3 business days please respond back to this email for follow-up.



Thank you,



Sandeep

Microsoft Customer Service Representative


November 24 (from: me)

I have still not heard back regarding this issue. Please advise.

Thank you,
David Pfeffer


November 25 (from: Microsoft)
Hello David,





Thank you for contacting Microsoft Online Customer Service.

I fully understand how anxious and expectant you are right at this moment of time to use the Dreamspark software.

I apologize for the delay in our response to your issue. Due to an alarming increase in requests, our response time is taking longer than usual. I appreciate your patience in this regard.



I am routing your request to our team of specialists for further action.

Thank you for bearing with us.



Meena


November 29 (from: me)
I have been waiting for a response now for 10 days (240 hours), well
past the 48 hours you claim.


November 29 (from: Microsoft)
Hello David,



Thank you for contacting Microsoft Customer Service.



I apologize for the delay in response with reference to your question about downloading Expression Studio 2 in English.



I would like to inform you that Expression Studio 2 English has been upgraded to Expression Studio 3 in English and we have no plans as of yet to keep Expression Studio 2 in English.



If you have any additional customer service questions, please do write back.



Thank you,



Reginald.

Microsoft Customer Service Representative


December 1 (from: me)
As I mentioned, this "upgrade" does not include Expression Media 2.
There was no upgrade to Expression Media 2 -- there is no such thing
as Expression Media 3, so you just removed it from your site in
English. All I need is a DreamSpark product key for Expression Media
2.

Please advise.


December 2 (from: Microsoft)
Hello David,



Thank you for contacting Microsoft Customer Service.



I am sorry your still facing issues in getting Expression 2-product key.



Not to worry, I am currently working with my colleagues to resolve your issue. Typically, we hear from them in 24 to 72 hours, depending on the complexity of the issue. If you have not received a reply within 3 business days please respond back to this email for follow-up.


Thank you,

Lavanya

Microsoft Customer Service Representative


December 4 (from: Microsoft)
Hello David,



Thank you for contacting Microsoft Customer Service.



Please notify that the version of Expression Studio 2 or 3 that we included does not require a key for installation. No key will be required.


If you have any further questions, please do write back to us.

Thank you,



Suhail.

Microsoft Customer Service Representative


December 4 (from: me)
Yes, however you have removed the download for Expression Studio 2. I
was forced to download the trial version from the Studio web site
which does require a key.

I need access to Expression Media 2. It is not included in Expression
Studio 3. Please make available either a key for Expression Media 2 or
Expression Studio 2, or provide a download for either product. These
products are licensed for use by DreamSpark customers.


December 5 (from: Microsoft)
Hello,



Thank you for contacting Microsoft Customer Service.



I understand that you are facing issues with Expression Media 2.



I am currently working with my colleagues to resolve your issue. Typically, we hear from them in 24 to 72 hours, depending on the complexity of the issue. If you have not received a reply within 3 business days please respond back to this email for follow-up.



Sincerely,

Anish

Microsoft Customer Service Representative


December 8 (from: Microsoft)
Hello,



Thank you for taking the time to bring this to our attention.



I would like to inform you that, we have upgraded Expression Studio 2 to Expression Studio 3. Please download the latest version from DreamSpark site. No key will be required to activate it.

If you have any customer service questions, please write back.



Thank you,



Shwetha

Microsoft Customer Service Representative


December 8 (from: me)
Are you even reading my emails? I have acknowledged now three times
that Expression Studio 2 has been upgraded to Expression Studio 3, but
however Expression Studio 3 does not include Expression Media. Please
escalate this issue to a higher level since I have been working with
you for over 2 weeks now.


December 9 (from Microsoft)
Hello,



Thank you for taking the time to bring this to our attention.



I would like to inform you that, we have upgraded Expression Studio 2 to Expression Studio 3. Please download the latest version from DreamSpark site. No key will be required to activate it.

If it prompts to enter the product key please click on Next.

If you have any customer service questions, please write back.



Thank you,



Swati

Microsoft Customer Service Representative


December 9 (from: me)
Please escalate this concern, as you have not answered any of my questions.


December 9 (from: Microsoft)
Hello David,



Thank you for taking the time to bring this to our attention.



I am sorry to inform you that, since it was already mentioned in earlier mails that we have upgraded Expression Studio 2 to Expression Studio 3. Please download the latest version from DreamSpark site. No key will be required to activate it.



Thank you,



Suhail

Microsoft Customer Service Representative


December 9 (from: me)
And as I mentioned in previous emails, I understand this but
Expression Studio 3 does NOT include Expression Media. I need a copy
of Expression Media 2. There is no Expression Media 3. Please READ my emails, and then reply to MY questions, not some other questions that you think I might be asking.

Monday, December 7, 2009

Copyright ridiculousness

I use the photo sharing site Flickr to host my personal photos, portfolio, and professional photographic work I have done. About 6 years ago, I did a photoshoot with a then-friend named Cristina Diaz-Borda. We were both minors, and she posed (with a friend's help) in my parent's swimming pool. I posted the shots online.

Fast forward to a month or so ago, I get an email from her demanding the photos be removed because she is uncomfortable with them. A typical case of buyer's remorse, she agreed to have me take the pictures but has changed her mind after the fact.

U.S. law does not support her request. Since I am not using the photos in a commercial capacity, nor am I using her likeness to advocate a particular issue, I have every right to post the photos where I would like. However, I did agree to remove her name from the pictures so they wouldn't show up in Google searches.

Apparently, she must have then proceeded to lie to Flickr about the location the photographs were taken, because just a few minutes ago I received the following email:

Dear David,

In joining Flickr, our members agree to abide by our
Community Guidelines and their local Yahoo! Terms of
Service:

http://www.flickr.com/guidelines.gne
http://www.flickr.com/terms.gne

In some regions, copyright includes portrait rights -- this
means an individual may request the removal of their
likeness from a Flickr photostream upon receipt of valid ID.

We received such a request from Cristina Diaz Borda and
have removed the following set (and photos therein) from
your photostream:

"Water Photoshoot"

She was a minor at the time the photos were taken; Please
refrain from reposting this content. If you do, your account
could be subject to further action.

Regards,
Omar


I responded with a strongly worded email reminding them of my copyrights to the photograph and that the United States has limited to no concept of portrait rights. I demanded the pictures be reinstated.

If Cristina continues to harass me, I may consider action in civil court against her for fraud in her actions with Flickr (claiming a copyright that one does not own is purjury under the Digital Millenium Copyright Act).

To anyone wondering why I'm not just agreeing to take down the pictures, they constitute the only pool photoshoot I've ever done and are important for my photography portfolio. Removing them would potentially hurt me from being able to attract future interest in my photography.

Additionally, rather than being nice to me and asking me as a former friend to take down the photos, Cristina has a few times over the past years rudely demanded the photographs be removed. If I had been approached kindly and the request had been made nicely, I most likely would have removed the pictures. But, I don't see any reason to give into a bully, especially one who is completely on the wrong side of the law (and in fact committing crimes in the pursuit of her goal.)

Monday, November 2, 2009

Lazy "unloading" in ADO.NET Entity Framework

For a work project called DbSalsa, I parse log files in real-time according to some regular expressions defined in a configuration file and take matches and store them in a database. I've abstracted the database using the Entity Framework. Pretty straightforward, right? Not so much.

Basically, everything that happens in the log file is stored in an Event object (and corresponding table) and events can be aggregated into Job objects. A Job has a start event, intermediate events, and an end event.

Let's say that the log file instantaneously enlarges by 10 megabytes. (This happens when, for testing purposes, I start with no log and dump in a previously created log file.) It sits and churns for a while... longer... longer... and then gives me a no available memory exception.

What did I do wrong? Well, let's pretend that the EF didn't just find a way to bloat 10 MB worth of data into over 2 GB of working RAM. [Edit: Turns out I had an infinite loop generating an infinite number of records, but this is still valid for anyone working with extremely high volumes of data.] What I didn't do is account for the fact that unlike regular database record creation, I'm actually creating objects in memory here. So every time I create an Event object and stick it into the JobInstance.Events collection, I'm using more RAM. The same problem would occur if you lazy-loaded huge amounts of data into these collections using .Load().

Since I never have any expectation of needing the Event object again once it is created, I am simply doing the following three steps after every enumeration through my loop that generates a Event:

SalsaEntities.Instance.SaveChanges();
JobInstance.Events.Clear();
SalsaEntities.Instance.AcceptChanges();

The third line is key -- it marks the clears as unchanged and unbinds the removed objects, removing the last reference to the Event object that my code long forgot about and allows the garbage collector to do its thing.

Thursday, March 26, 2009

Images not allowed to have CSS border in ASP.NET?

As far as I can determine, ASP.NET refuses to allow a border on pictures and image buttons. It inserts inline styles to force the image to ignore the CSS sheet and use a 0px border.

On a thread on forums.asp.net (http://forums.asp.net/t/1208356.aspx), one individual posted a work-around that used VB.net. Since I develop primarily in C#, I have converted this example code for use on bytenik.com. Below you will find the C# equivalent of the classes posted on the thread I mentioned.

public class BorderlessImage
: System.Web.UI.WebControls.Image
{

public override System.Web.UI.WebControls.Unit BorderWidth
{
get
{
if (base.BorderWidth.IsEmpty)
return System.Web.UI.WebControls.Unit.Pixel(0);
else
return base.BorderWidth;
}
set
{
base.BorderWidth = value;
}
}
}

public class BorderlessImageButton
: System.Web.UI.WebControls.ImageButton
{
public override System.Web.UI.WebControls.Unit BorderWidth
{
get
{
if (base.BorderWidth.IsEmpty)
return System.Web.UI.WebControls.Unit.Pixel(0);
else
return base.BorderWidth;
}
set
{
base.BorderWidth = value;
}
}
}
In the Web.config file, under the <Pages> section, insert the following:
<tagMapping>
<add tagType="System.Web.UI.WebControls.Image" mappedTagType="BorderlessImage"/>
<add tagType="System.Web.UI.WebControls.ImageButton" mappedTagType="BorderlessImageButton"/>
</tagMapping>

Tuesday, March 24, 2009

Hoboken Wash and Fold

The new apartment to which I am moving (midtown Hoboken, NJ, on Washington St.) does not have laundry facilities. Given that I know I will be extremely busy when I start my job, I was trying to find the best price for a Wash & Fold laundry. I finally gave up trying to look around online and have been calling every Hoboken and nearby laundromat, getting the price of Wash & Fold and delivery. Here's my results, in case it helps out anyone else.

Monday, March 23, 2009

Connecting OpenFiler 2.3 to Active Directory

After struggling at work to connect OpenFiler 2.3 with an Active Directory domain, and then assisting several others on the FreeNode #openfiler chat with the same issue, I decided to post instructions on how to accomplish a domain join for OpenFiler 2.3.

In OpenFiler's admin console, go into Accounts, then Authentication, and select Expert View. Follow the following configuration settings.
  1. Check "Login SMB server to root DN."
  2. Select "Use Windows domain controller and authentication."
  3. Select "Active Directory" as the Security Model.
  4. Enter the short domain name in Domain / Workgroup.
  5. Enter the IP addresses, or if you have DNS correctly configured, the hostnames, of all domain controllers, separated by commas.
  6. Set the ADS realm to the domain name of the Active Directory.
  7. Check off "Join Openfiler to domain."
  8. Enter an administrator's username and password in the Administrator username and Administrator password fields.
  9. Enable "Use Kerberos 5."
  10. Realm should match ADS realm from step 6.
  11. KDC should be set to the IP of the primary domain controller, port 88. Admin Server should be set to the same IP, port 749. However, if you have DNS correctly configured, you should instead set to the name of the ADS realm with those same port numbers. For example, my ADS realm is test.local, my KDC is test.local:88 and my Admin Server is test.local:749.
  12. Click Submit at the bottom of the page.
I hope this helps someone out avoiding the pitfalls I fell into while trying to set up Active Directory on OpenFiler!


Wednesday, November 12, 2008

LJ's Photomanipulation

My friend, LJ, asked me to do a photoshoot of a drowning woman for her art project. Another friend, Katie, agreed to model for it and my bathtub served as the very small body of water that we used for the shoot.

The end result can be seen larger at LJ's DeviantArt site: http://eljtheelf.deviantart.com/art/drowning-in-my-dreams-103300819
I also posted it in a photo set on Flickr which will eventually contain the source images for the shoot: http://www.flickr.com/photos/bytenik/sets/72157608962848517/