Images in Hotmail Junk Mail

Hotmail has finally deactivated outside images by default on junk email. This is important because spammers can use outside images – and by outside I mean requested from a web site and not included with the email – to track who is reading their spam emails. This gives them a list of “active” email addresses to spam further. Here’s a trivial example:

<img src=”http://www.spammer.net/[email protected]”>

When Joe views the spam, this image will be requested and the querystring on the end of the picture filename will be processed by the web server. The web server will then know that [email protected] is a valid email address and store this information for later.

Most spammers obfuscate this a bit. For example, they may use a code number in place of the email address and IP numbers instead of a domain name. So an image tag can end up looking like:

<img src=”http://66.32.221.223/GJASKWE.GIF?ZZZ=EKDs314KL239kjwm23234″>

Which of course makes it harder to track exactly what’s going on there and who it’s coming from if the spammer changes IPs a lot. Most people don’t even realise its happening or the fact that the images are not contained in the email. Email written in HTML definitely has its share of problems.

I already block outside images from automatically downloading and appearing in the Mac Mail client. Kudos to Microsoft for implementing this in a free service! Though reducing spam to hotmail.com accounts – which lessens excess load on their servers – is probably the central motivation, it’s good either way. Is it in Outlook yet? I don’t use it regularly.

 

xNote

I’ve been helping out Phillip and Matt the past few days with xNote, an open source C# OPML browser. Here’s a screenshot of what we have so far:
I just recently added:
saving the OPML document to disk
editing text attributes
editing comments
So now it’s less a browser and more like an editor. You can only edit the top-most document, not documents loaded by inclusion links (blue folders).

Still on the TODO list:
edit link/inclusion URL (modal dialog?)
add new nodes
delete nodes
from the spec: “By convention if an outline is commented, all subordinate outlines are considered to be commented as well”
Here’s a question that wasn’t answered by the spec: can links have comments? In the implementation of xNote so far, they can. Here’s what that looks like in OPML markup:

<outline text=”This is a demo directory”>
<outline text=”This directory …” type=”link” url=”http://www.opml.org”>
<outline isComment=”true” text=”make a comment on a link” />
</outline>
</outline>

Ouch!

A burn from Robert Scoble, who will start working for Microsoft May 12th: “How did Microsoft get to where it is today? They had incompetent competitors.”

Some would argue it’s because they have a lot of technologically ignorant/apathetic customers.

Strange Googling

Those looking for proof that Google is far from perfect need only look as far as my hit counter.

Apparently I’m the best source of information for “java swt” (rather than Eclipse’s SWT page) and “kim jong Il livejournal” (rather than the actual site). I’m also second link for “nih syndrome”. Strangeness.

My guess is that Google must have some sort of temporal variable it takes into account (along with “site scores” and other stuff) and I just happened to be the last person to write about those subjects. Does that necessarily make me the best source of information? Of course not … but I’m flattered Google thinks so. I must have some kickass Google karma.

 

Administering A and B

I realised that test suites are the best way to administer A and B tests. You keep the tests where they always were but move them between Test Suite A and Test Suite B. No complicated software necessary — and Test Suite A always stays green.

 

More on Unit Tests

I was talking to Jim today about this problem with JUnit and came up with a solution. Give unit your test methods classifications.

For example, the team wants to ensure that the project is “always green”. Tests that work should stay working. These tests would be called A tests methods. However if a bug is found in the code good practise dictates you want to write a test for it right away, exposing the defect. This new defect test is a B test method.

So you don’t want to break the “always green” A methods, but you still allow for the other B tests to exist so they reveal bugs.

We also want to store the results of the unit test for each and every checkin we do, or at least at major intervals (maybe only daily builds) so that we can compare them and notice changes in the B test methods (ie. new passes). For these we shouldn’t have to worry about A methods because developers aren’t allowed to check in code if it breaks any existing A test method – don’t break the build!

 

Comments: Ouch!

I believe it’s incompetent competition from a business standpoint and not necessarily a technical one… until word 2000 and windows xp … windows apps were awful (i was a full force wordperfect advocate until word 2000) including their so-called operating system….

The competition didn’t realize that people do not care too much about realibility (or least they do now that they don’t) – they wanted things to at least appear simple to use… and well the competition missed the boat on that one… (and the apple stigma of being different as well as the price issues will keep it in a niche league for some time)

regardless how much people hate M$ … they never forced you give them money – so they did enough right to make billions over the years
If anyone one else has tried to walk their mom / family member through how to send email, play games, or surf the web, they will understand how “ease of use” has been the most important part of computer use.

And I think that the “ease of use” thing also goes toward what everyone else is using… the blind can lead the blind when they are all using the same sw.
Didn’t read the article, but in my opinion, the greater majority of software is not easy to use, and is not intuitive to non-technical people. I have tried teaching my mom to use the “Internet” and it has proven a challenge due to the fact that to her, it is a tool.
Hmm, I should explain what I mean more in depth. I’m not talking about technically, although that certainly played a part.

Do you remember how Gates got DOS? He didn’t want the operating system business. He wanted the tools business. He thought there was more money in that.

So, he sent IBM down to DRI Research to get the OS there. They screwed it up. IBM went back to Gates and said “DRI Research didn’t deal so we still need an OS.” Gates didn’t let that slide a second time. He bought DOS from a guy named Tim Patterson at a Seattle computer store for about $65,000. The rest is history.

Incompetent competitors. Microsoft has had more than its fair share. I’ll enumerate more, if you want, but why? Especially when folks think there were technically superior products out there. There weren’t. Oh, I guess you think Beta is technically superior to VHS too, right? Guess what, it wasn’t — at least not in the area that people cared about, which was tape length.

Disruptive Interviews

There’s a good reason why some technology/thinking is called “disruptive”. Disruptiveness screws with the status quo; the nice comfortable bed a company has made for themselves. The bigger the company, the harder it is to deal with disruptiveness. But disruptive people and technology can have real impact. So sure, being disruptive is risky but the rewards are also great.

Knocking the exuberance out of employees is a great post on the Creating Passionate Users blog about this kind of thing. While it never mentions the word “disruptive”, I think that’s exactly what it’s about.

I just wanted to point to that blog post and say I agree with it 100%. I absolutely fall into this camp and I want every prospective interviewer and client to know it. Yes, responsible disruptive people can be used to your advantage! Having said that, I take my Software Engineering degree very seriously and I balance the disruptiveness with my education and experience.

I also wanted to extend the blog post into the interview realm. If you really want to screw up an interview with most big companies, don’t be a “robot” (a term used in the linked blog post). That’s a great way to not get the job.

I’m torn on it though. People expect technical interviews to be a certain way. I’ve had enough of them between co-op and post-graduation to recognize the established protocol. Most interviewers are looking for pre-prepared answers to the non-technical questions and perfect answers to the technical ones.

Interviewees are supposed to be glad for the opportunity and interviewers are supposed to do their best to find the interviewee’s weaknesses that (unlike the interviewee’s supposed strengths) aren’t laid out explicitly in 12 point Times New Roman on the freshly printed resumé in front of them.

Have you ever tried to dig for the interviewing company’s weaknesses in an interview? Ever asked about their process? That’s kind of disruptive — to put it lightly — and not looked well upon.

So what am I torn about? Well, if a company can’t handle me being a little curious and disruptive in an interview, how well can they handle it when I’m an employee?

I don’t want to be beaten into a “robot”. I have a natural interest in and excitement about technology — a PASSION for it — and I will NOT let it get beaten out of me for a paycheque. On the contrary, I want to cultivate my passion into an asset for my employer and/or clients.

I don’t want to have to leave a company after less than a year because they expected me to be a “robot”, I want to find a good fit. So I interview the interviewer(s). Why give the impression that I’m a “robot” when I’m obviously — have you read my blog? — not one?

Will it be harder for me to find a job doing this? Yes. It’s hard for any non-“robot” to find a good job. But who said life was going to be a cakewalk?

Blogging Might Get You Fired

It’s dead easy to start a blog these days, and so we see more people doing it. Once they have a blog, people will talk about anything online — it’s almost as if they don’t realise that anyone in the world with an Internet connection could read what they’re writing.

Some bloggers might think that most people won’t care about their insignificant little blog. This may be true until someone searches for a person, place or thing in a search engine and comes across your remarks on the subject. Google might put your blog front and center on a topic and there’s not much you can do about other than deleting the blog post.

The global reach and the searchability of blogs is what gets people in trouble with their employers. Even though you might be blogging on your own time, what you say reflects on you as a person and ultimately reflects on your employer. If you talk about the details of your job expecting that no one will read them, that’s taking a big risk. If you express an opinion that looks bad as an employee, you run the same risk.

It’s not just blogging this applies to, it’s just that everyday people aren’t used to having a truly worldwide publishing medium like the Internet at their fingertips. They don’t take the same care speaking publicly that, let’s say, a Canadian Member of Parliament might use while speaking to the press each day. An MP is familiar with their publishing power, most bloggers don’t seem to be aware of it.

If an employee wrote an editorial in a newspaper criticising their employer, they could very well be fired for it. Same for TV or radio. Why would blogs be treated any differently? It’s not as simple as “blogging is something I do on my own time, so I can say whatever I want.”

A recent example was a woman in Nunavut that was fired for candidly discussing the city on her blog. Normally this wouldn’t raise eyebrows, right? But she was a tourism marketing officer for the city.

Rather than showing Nunavut as a squeeky clean tourist haven, she told it like it really was — like posting pictures of a piles of rusted junk and criticising the bus service. The inside look at the city was pretty cool and she did this outside of her job, true … but is this good marketing? Does it reflect well on the city?

A contract employee of Microsoft was fired for posting pictures of Macs sitting in a loading dock. An employee of Friendster was apparrently fired for blogging about their recent migration from Java to PHP server technologies.

The interesting thing about all three examples is that apparently none of them were warned — they were just terminated. Surely there are bloggers that have been warned and removed offending posts, but the ones we hear about in the blogosphere are the ones with no warning at all.

The Internet is not a permanent medium necessarily; the posts can be removed and all of the attention in the blogging community avoided. There are things like the Wayback Machine that permanently record websites at a certain time, but it’s possible a post can be removed before it does a lot of reputation damage.

Maybe this is a better road to take for employers, rather than seeming like bullies and drawing attention to the offending posts, which are often left up on the Internet after the firing anyway. Or maybe not. Maybe once the post is up the damage has been done. I’d be interested in a lawyer’s opinion on that.

These firings aren’t going to let up I don’t think — they’ll be a regular occurrence. As the number of people with blogs increases exponentially, less bloggers will know about these firing precedents and the care they should take while blogging.

Some people don’t know what’s appropriate to blog about and what isn’t. Maybe their managers should tell them, yeah, or maybe it should be explicitly in their contracts. Maybe employers should get employees to sign NDAs all of the time. That will make it nice and explicit and save employers a lot of trouble while saving employees from being fired. Unfortunately, all of that paper and legalese costs money.

But for employees of companies who don’t make a blogging policy explicit, I suggest you tread lightly. Google, the Wayback Machine and others are watching you, even if your boss isn’t.

What’s Going On Here?

OK, so if you don’t know me (or even if you do) you might be asking yourself that question. Why do I talk about Eclipse in one post and then Microsoft in another? Well I’m trying my best to be objective and most of all, learn something.

I’m reading a lot about Microsoft these days because they are doing some truly extraordinary (for them, anyway) things. They are letting their developers loose on their blogs, describing key technology that is going into Microsoft’s next operating system, Longhorn. Some of it is bleeding edge software engineering. Other stuff is embrace and extend. It doesn’t really matter … in two years it will be out there in production and even if I’m primarily using Java I’ll have to deal with it in some capacity. How can I defend my choice of language/platform when I know nothing about the competition? So I’m learning about it now … and it looks like pretty cool stuff.

Eclipse I like from a technical standpoint but I also admire the coordination involved to get to the end product. There’s some good software engineering lessons in there — and it’s easy to learn them: the project is wide open. So from a curious future software engineer’s perspective, Eclipse is a gold mine of information.

It’s the same reason I got a Mac. It’s no secret why Mac’s are the new geek toy: they have a strong Unix core with a candy-coated usable shell. What a great mix — a lot can be learned there too.

So I’m not rushing to hitch my wagon to one train. It’s good to get your fingers into everything and experiment. See what works and what doesn’t and learn why. Recognize what people will pay for. Learn to compromise and critique. This is what will make us successful software engineers.