|
|
May 13 I ran into this website not too long ago and I promised myself I would try it out. I am always looking for tutorials and snippets to play around with, so I was really excited to discover the Coding4Fun project.
I picked the Amazon Web Service article, just because it looked more interesting to me and quick. I downloaded the source code, read the article and played around with the application for a bit.
 The most interesting part of the code, for the curious [via GotDotNet]: // Call Amazon search Web service. private void PerformKeyWordSearch() { try { KeywordRequest keywordReq = new KeywordRequest(); keywordReq.locale = "us"; keywordReq.type = "lite"; keywordReq.sort = "reviewrank"; keywordReq.mode = this.SearchMode; keywordReq.keyword = this.searchText.Text; keywordReq.tag = this.SubscriberID; keywordReq.devtag = this.SubscriberID;
AmazonSearchService amazonWS = new AmazonSearchService(); ProductInfo productInfo = amazonWS.KeywordSearchRequest(keywordReq);
if (productInfo.Details.Length > 0) { this.searchResults.Items.AddRange(productInfo.Details); } else MessageBox.Show("No items found."); } catch (SoapException sx) { MessageBox.Show(sx.Message, "SOAP Error"); } } The snippet basically demonstrates how to interact with a Web Service that we added as a Web Reference to the project. This little project gave me the opportunity to play around with Whidbey Beta 2 a bit more. They have added some nice features to this version: separating designer and code for forms (no need to right click "View Code" all the time now), the addition of a "Community" menu, embedded browsers... I have had some compatibility issues (previous C# and C++ projects that were created with Beta 1, not building with Beta2). But nothing major that I could not fix. I haven't played much with the refactoring, source code navigation, presentation support (views, editors, docking...) yet.
But back to the Coding4Fun project. It was useful: nice way to play around with tools, new languages, new APIs.... I just wish it was a bit more like an exercise. It would have been nicer to maybe write some of the code myself. I ended up downloading code, reading the article, but I did not get to write much of my own code. You can blame my laziness I guess: all I have to do is extend it and code something else, I know And reading code is a first step to learning how to use a particular language, API and more.
I have subscribed to the Coding4Fun feed and I am looking forward to trying out more samples and more advanced projects as they are posted . This will be a short post :) I am loving this thread, in regard to Scoble's post, a response to this article: Steve Jobs claims Microsoft is "shamelessly copying". Nothing better than some good old bashing to get you started on a Monday morning... My favorite comments in that post: - "Steve Jobs is 100% correct.": Is ANYBODY ever 100% correct? - "Personally, I find all this Mac vs. PC stuff to be a little lame. It reminds me of high school too much. :-)": Not the most insightful, but one of the SMARTEST comments in that post :-P - "Oh Scobie - you poor poor man": SCOBIE? I didn't know they were that tight! - "Be proud of your sloppy seconds...": Hmm.. - "win fan boy, worse than a mac fan boy": Hmm again... - "I'd sure like to know what you're smoking.": Hmm some more... Now I get the whole " Thick Skin" concept... I stumbled across this CNet article where Stroustrup discusses the future of the language he invented. It made me reminisce, mostly about my College experience.
Before I start my rant, I found the "marketing" comment in the article really interesting. It is really true: people will be tempted to try out products that receive a lot of hype. As a perfect example, the only reason I downloaded and played around with NetBeans is because the whole Eclipse VS NetBeans turmoil was happening. If I had not read those articles, I would have never downloaded that tool. Good job Sun .
Now, back to the reminiscence:
Virginia Tech's Computer Science department made the bold move (like many Colleges it seems) to switch the curriculum from C++ to Java. Thankfully right after I graduated ;) Why did they decide to switch languages? I can only assume: - Job market: Back then (maybe now also?), the demand was stronger for Java developers than C++. Plus, I believe it costs more to hire a C++ programmer.
- Academia: It makes more sense to learn Java as an introductory course than C++. Why? Well, I would like to think that Java is *easier* to learn, even though you do have to jump into OOP right away. After all, you cannot create a simple "Hello World" Java program without creating a class, so you do have to explain what a "class" is, unlike in C++, where you can delay covering OOP concepts until later.
- Tools: There are tons of free and easy to use developer tools for Java development out there (hint: ECLIPSE!). I am not sure the same holds true for C++.
- Platform Independence: Switching to Java ensures some sort of platform independence. Professors can teach independently (mostly) of the platform their students use.
- APIs: It is easier to become more productive with Java, given the wide set of functionality available in the Java API. In College, almost all of our C++ projects consisted of reading from and writing to a file. How exciting
. In my opinion, the BIGGEST unfortunate repercussion of that move: The students know a LOT LESS nowadays. I have spoken to some current CS students who don't even know how memory works, what pointers are, etc...
So Lally and Jerome, if you are both reading this, even though I have argued with you guys over and over again that teaching ASSEMBLY to beginner students was crazy, I now see your point .
Yes, learning C++ was DIFFICULT. In my case, I had never programmed before. I found some C++ classes to be quite challenging, especially for a beginner programmer (back then) like me :) Things like pointers, memory management, ... were hard to conceptualize at first. A lot of my friends quit the curriculum half way through the "Intro to Data Structures" class. At Virginia Tech, it's basically the "weed out" course. Most people (beginners who haven't been following computer science since they were 2 years old) find it challenging and often times abandon. Does that mean we should make the curriculum easier? Let's face it, Java, the language itself (and platform), is not really that complex. Instead of switching languages, I believe they should work on the "teaching methods". Finding ways to make the "complex" topics accessible and understandable to everyone.
My Thoughts?
Keep teaching C/C++ as the PRIMARY language. Work on improving the teaching methods. Making the curriculum easy for everyone is not the solution. It is really easy to move from C++ to Java. But it's definitely not as easy to switch from Java to C++.
I am not claiming that Java is EASY. But I strongly believe that C++ is, inherently, a more complex language than Java, and should be used as the primary language in Computer Science curriculums.
P.S: Maybe Computer Science curriculums should switch to C# I think C# is a nice in-between: it is more complex than Java and it provides additional *nice* features that C++ currently lacks. Jerome is slowly starting to Blog. Who is Jerome? A former Apple Campus Representative at Virginia Tech. Remember System X? Well I am not exaggerating when I say he pretty much convinced the professor to use G5 systems. You don't have to believe me, but I know, because I was there that summer. I witnessed the phone calls, the emails and more. Maybe Jerome will write about it at some point. It was quite a crazy experience  . Now what's happening to Jerome? Well he decided to pass up a job opportunity with Apple to join Microsoft. He interned last summer, loved it and is going back full time in a couple of months. Because of his decision, as you can image, Jerome gets A LOT of trash and bashing, on a daily basis. His Mac " friends" have not completely forgotten that not too long ago, he was preaching to the Mac choir. Now, he is a Microsoft Student Campus Ambassador and soon to be full time MS employee. I feel bad for Jerome. Imagine receiving " bashing comments" on a daily basis about your switch. And if you ever had the opportunity to have a conversation with Mac fans (no offense to anybody here), it is really hard to sit down and have a RATIONAL conversation with a lot of them (not ALL of them, just the few that I have spoken to). To the few I have had the chance to talk to, Apple is more than just a company: it's a religion, with no faults nor weaknesses  I will leave it at that. I am not trying to start a fight here. In the meantime, if you are curious or interested in reading what Jerome has to say, visit his Blog. I am sure he will be posting more of his experiences (maybe a cluster story Jerome?) in the near future. His Blog is not pro/anti MS or pro/anti Apple, it's just pro technology in general  . Thanks to my friend Daniel for giving me the idea for this post. After reading my Blogging 101 - Part 1 post (and NOT commenting on it, thanks Daniel ), he genuinely asked: "So what should I use to create my Blog: Spaces or Blogger?" Plus, today seems to be the MSN Spaces review day! Just check out the Wall Street Journal and Paul Thurott's Supersite for Windows.
UPDATE: Today seems to also be MSN Messenger review day! Check out the CNET and PC Magazine reviews.
I had contemplated moving to my new space once I started my new job. But now, I am debating: do I abandon this *nice* Blogger space I spent months building and move to my new MSN Space Blog? Do I keep using this Blogger Blog only? Or do I keep using both?
This is my "uncensored" answer to Daniel: - MSN Spaces is great for a "beginner" Blogger, or non-techie Bloggers. It comes fully equipped: Song lists, Blog Rolls, Photos, Trackbacks, Themes, Layouts...
- With Blogger, to add photos and trackbacks to this space, I have had to install Flickr and Haloscan. I don't see myself telling my parents to start a Blogger blog, then install Flickr, Haloscan and more third party tools. They would never get it done!
- On the other hand, Blogger provides you with a skeleton Blog, but allows you to customize it and build it as you please (a lot more flexibility than Spaces). I have played around with my template many times (I wish I was a CSS guru
): I have added a time ticker (top right), a search for my blog (top right also), a rating system... That degree of customization does not exist (yet) with Spaces... - MSN Spaces works best with IE, Blogger works best with Firefox/Mozilla.
- Blogger API is public. I am not sure MSN Spaces has a public API.
- MSN Spaces links (posts, pictures, lists...) are a little complicated. If you plan on sending your Blog links around to your friends, you might be happier with Blogger. But I am sure MSN Spaces is working on the link issues
. My Recommendations:
If you are a beginner Blogger or don't have that much time to spend on pimping your Blog, create your Blog with MSN Spaces. It will save you a lot of headaches and provide you with much of the basic (and more) Blogging facilities.
If you are a more advanced Blogger or you just want to spend a lot of time pimping your Blog, I recommend creating your space with Blogger. You will find a lot of third party tools that allow you to nicely customize your Blog. Plus, since the Blogger API is public, you can code your own nifty Blogging tools.
My Conclusion:
I do like the *prettiness* and simplicity of MSN Spaces. Plus, some of the features are really neat (Music List, Blog It, MSN Messenger Integration, Statistics...). However, I have grown attached to this Blog, and I am proud of my little customizations So I will keep using both spaces, even when I start my new job. UPDATE: Turns out I deleted my Blogger Blog and moved to MSN Spaces . I have decided to switch from my Bloglines Blog Roll to NewsGator. The feeds were always out of sync on Bloglines. NewsGator seems to provide a lot more Blogger tools. I particularly like the "rating" feature. As you have probably noticed, I have added it to my Blog .
NewsGator also comes with an Outlook plug in. I had it installed for a while, but I decided I didn't want to clutter my inbox with Blog posts, so I uninstalled it. I just use NewsGator Online for the feeds.
I have updated my Blog Roll by adding some more feeds. If you are curious, you can find the feeds here.
Also, questions for anyone out there reading this: - With Bloglines, I was able to click on a particular feed and determine who was subscribed to it (private and public Bloglines subscribers). Is there something similar with NewsGator?
- How do I "unsubscribe" from Bloglines? :)
- I am trying to grow my feed subscriptions, so if you have a Blog (or know of interesting Blogs) about any of the following topics, feel free to leave link(s) in the comment section:
- IDEs/Platforms: Eclipse, NetBeans, Visual Studio... You get the idea!
- Corporate: IBM (I wish IBM had a general FEED for those Blogs.. UGH!), MS, Yahoo, Google (for some crazy reason, I haven't been able to add the Google Blog feed through NewsGator. Weird...)
- MSN: Spaces, Messenger...
- Sports: Tennis, Hokies, Soccer, NCAA...
- Software Testing
- News
- Individual Blogs: Anything somewhat interesting; Tech stuff, Sports, Canada, Virginia Tech, Life...
 Most of those categories stem from my interests. Either an area I have worked/participated in before (like IDEs, Sports), or simply areas I "use" on a daily basis (MSN...).
Thanks in advance for the links! David Lemphers (as well as other project members) started a project a couple of months ago. As he described it back then: "A set of plug-ins for Eclipse that would allow us to access some of the cool features of Visual Studio 2005 Team System."
I have been following the progression of the project and it looks like they are doing really well . A recent article was published about their work.
If you are curious or interested in participating, visit the project's website! Well, it looks like the turmoil of the past couple of days is slowly dying down. Tim Boudreau has removed his post that generated quite an amount of controversy. I am extremely impressed and I definitely applaud his gesture! It's a little pointless for Eclipse and NetBeans to fight each other... Shouldn't they be joining forces to fight someone else? 
In other news, Mike Milinkovich (the Executive Director of the Eclipse Foundation) has started a Blog and added it to planet-eclipse. Ian Skerrett has also joined the Eclipse blogosphere! Ian is the Director of Marketing of the Eclipse Foundation. I should also mention the Eclipse Committers who have been involved with planet-eclipse: Kim Horne, ... Kim, are you the only Committer blogging? How about Tod, Michael, Stefan, Doug...? 
This is great news! It is nice to see the Eclipse Foundation more involved. Lately, I have been advertising my Blogs to my friends. What can I say, I love receiving comments Plus, often times, I do not have time to send e-mail updates of how I am doing and what I am up to. So I figured the easy way for my friends to stay up to date with my life is to read my Blogs! What I had forgotten is that they are not familiar with BLOGS! This is a perfect opportunity to educate them. I plan on sending this post around to my non-techie friends who are interested in joining the blogosphere.
If you are familiar with Blogs or if you are looking for some highly techie content, definitely skip this post This tutorial is intended for a "Blog beginner" audience.
Before we start, here is a brief introduction of the terms:
- Blog: The term Blog is derived from "web log". In its simplest form, think of a Blog as an online diary, a log of someone's thoughts published onto a website. A Blog usually consists of:
- Date: The date the post is written. Look above this post's title.
- Title: The title of the post. Look at the title of this post.
- Link: The link to the specific post.
- Post: The post itself: text, links... You are reading it right now :-P
- Author: Usually the name/nickname of the author. Look at the bottom left, at the end of this post.
- Category: Something I wish Blogger had ;) The ability to group your posts into categories, for example: Personal, Work, Sports, Games...
- Comments: A feature that allows your Blog readers to leave their comments about your post. Look at the bottom of this post, next to my nickname.
- Trackback: A feature that allows your Blog readers to link their post to your post. Look at the bottom of this post, next to the Comments.
- And more...
- Blog Roll: A Blog roll is basically a list of Blogs that you enjoy reading. There exists a lot of tools that allow you to group your favorite Blogs into categories (kind of like Bookmarks). These tools also provide you with the ability to be notified when a Blog owner updates his/her Blog (let's RSS EVERYTHING
Disregard that comment...). So what's all the hoopla about reading Blogs, posting to your Blog and participating (comments and trackbacks) in your friends' Blogs? Well, starting your own Blog is a great way to express yourself, whether you write about work, politics, personal life and more. I think it's therapeutic sometimes You can also use it to showcase your work: technical knowledge, poems, writings and much more. Reading Blogs is usually amusing, interesting, and it also allows you to keep up with your friends' lives, as well as connect with people with similar interests as yours (for the AOL users out there, it's kind of like reading your friends' away messages and profiles, but it's more fun : ).
This "tutorial" will consist of 2 parts: 1- How to create a Blog 2- How to keep up with your friends' Blogs (a.k.a: Blog Roll)
This post will covert Part 1. In a couple of days, I will post Part 2.
Because I like MSN Spaces and MSN Messenger so much, this "How to create a Blog" section will cover both those tools. Keep in mind that there are TONS of tools out there that allow you to maintain a Blog (Blogger, Xanga, Livejournal...). Why do I like MSN Spaces more than the rest? - It's integrated with MSN Messenger.
- Most of the essential Blogging features (trackbacking, photos, music, lists, categories) are provided. No need to install third party tools.
- It's easy to use.
- It's "pretty"

Caveats: In order to obtain the most out of MSN Spaces, you should use Internet Explorer. Yes, to the techie people out there, this might be a setback. To my friends who think of a browser as something that displays websites, this is perfectly acceptable :) And yes, I know, MSN Spaces links are a little weird and complicated!
Let's get started! As I warned, this "How to create a Blog" post is going to be completely MSN biased. So deal :-P
Step 1: If you haven't done so, go download MSN Messenger 7.0. Step 2: Add yourself as a contact to MSN Messenger (Contacts->Add Contact->Create a new contact from an email address) by entering your own MSN Messenger email address. I know it sounds weird, but if you add yourself to your contact list, you will be able to "directly" interact with your space. Step 3: Once you have added yourself as a contact, click on the display picture on the left of your name:
 Step 4: You will be presented with a pop up dialog inviting you to create a space. Just click on "Get Your Own Space" button at the bottom of the dialog:  Step 5: Clicking on the "Get Your Own Space" button will launch a new website inviting you to create your own space. Just fill in the requested information (try to give your space a "relevant" name :) ).  Step 6: Congratulations, you have just created your first Blog! Your Blog's URL is displayed at the top of the page (save/bookmark the address somewhere).  Step 7: Click on your Blog's URL displayed in the "Congratulations" page. You should now be logged on to your Blog. You will see your Blog's sections: Blog, Pictures, List, Profile...  Step 8: Now, it's your turn to explore! Play around with the "Customize" and "Settings" (top right of your Blog), as well as editing your profile, adding albums, pictures, drag and drop components, change the theme, layout... You get the general idea. Just follow the instructions, they should be fairly straight forward :-P Step 9: Once you are done playing around with your space, click on the image at the left of your name in MSN Messenger. You should see an "updated" contact card, now reflecting the changes you made to your space:  Step 10: As your friends on MSN Messenger update their MSN Spaces, a star will appear by their name. When it appears, just click on it and select any of the links that appear in the contact card. That will take you straight to their MSN Space to check out their updated Blog! You can also directly access your Blog through the "My Space" button, right above your contact list. 
You are DONE! Play around with your space, and send out the link to all your friends! Tip: In order to edit your Blog's content, you have to "Sign In". For example, my MSN Space is located here. If I want to edit its content, I have to "Sign In", by clicking at the top right "Sign In" button and entering my email address and password. If you have used hotmail/msn before, this is nothing new. If I have missed anything, if something is not clear or if you stumble on a step, leave me a comment on this post. Do you wish you were notified when your friends' Blogs were updated? That you did not have to go visit their links everyday, hoping they have added something new? Well stay tuned for the next post :) I will cover NewsGator, a tool designed to help you maintain your Blog Roll. When I tell my friends I work for IBM, I am asked the following two questions (aside from the "Wow, that's so cool!!!"): - Can you pass my resume along? ;)
- How did you end up at IBM? Got any tips on job hunting?
To answer #1, since most of my friends are American and search for jobs at IBM US, I just send them over to the IBM Career Website (sorry, I don't know anyone at IBM in the USA).
I thought writing about #2 would be funny. Funny to me at least! And maybe helpful to some people. I have a few friends graduating soon, asking me for job hunting tips. So here we go:
I graduated from Virginia Tech in May of 2003 with a BS/MS in Computer Science. After spending the summer interning at school, I decided to come back to Canada. I was not sure I really wanted to work in the US, so I came back home to Ottawa. What did I want to do shortly after graduating? Playing professional tennis tournaments of course*** Yes, I have been playing tennis since I was 7 years old. It seemed like the logical step. While I was training, I wanted to work in my field for a bit. In the CS field, unless you keep up to date with what's going on, you will be left behind really quickly. I started following the standard job search protocol: - I created a Resume and a Cover Letter.
- I created a website to *highlight* some of my work, as well as to provide some personal information about myself.
- I started looking around for some tech companies' websites (that were near Ottawa).
- Then I started the grueling process of submitting resumes online: I am scared to even count the number of job submissions I sent out at the time (and it's REALLY time consuming! Filling out all the special information that each company needs. Can't they just agree on a STANDARD career website so we don't have to create a profile a million times
). And submitting online applications led me to my job... I wish! I quickly realized submitting resumes online was like sending a resume to somebody's trash can! Ok, maybe I am exaggerating. But company's career websites are mostly black holes.
My next step was to attend career fairs (college fairs). I remember college fairs at Virginia Tech: tons of companies show up, company recruiters and even employees. It's a great place to network. Now, I don't know if it's a Canadian thing, but boy, their university career fairs were BAD! The companies in attendance (all 3 of them) were not even taking resumes :-P So that didn't work out either..
Finding a job in Ottawa turned out to be harder than I expected. Online submissions weren't working.. Monsters wasn't working... And I was new to the area, so I did not really know anybody around. Well, that's when I decided: "forget this job stuff", and let me concentrate on training and pursuing my tennis dreams . At the same time, a friend of mine (thanks Jerome), pointed me to the Eclipse website. He said: "Wow, Ines, the Eclipse team is in Ottawa. You should try to participate, it will help you keep your skills up to date. Plus, it's a COOL project". I checked it out and found it interesting. I thought to myself: "It would be fun to work on an IDE! Why not give it a shot!".
So what did I do? I applied through the IBM Canada's website and... Not quite ;) Ok, I actually do NOT RECOMMEND this to anyone. I am REALLY EMBARRASSED to post this, but here it goes: I looked up the Director of the IBM Ottawa lab and sent him a personal email What did the email contain? Something along the lines: "Dear Mr X, this who I am... I am interested in VOLUNTEERING on the Eclipse project... Attached: My Resume". Yes, you read right. I emailed the Director of the IBM Ottawa lab and offered to VOLUNTEER! Did I think I was out of line ? Well, I don't really know at this point . I wasn't really asking for a job. I was asking to volunteer, so I figured this would be ok. I figured the worst that would happen is that he would never reply. To my GREAT surprise, he DID REPLY! Not only did I hear back a few days later about an interview from HR, but I also landed the job (*paid*, I should add ;) ) on the Eclipse team!
Not your typical job search story I am sure. Working on the Eclipse team turned out to be the BEST JOB EXPERIENCE ever, with really awesome people! It was definitely an experience I won't forget soon. So I am really happy I emailed the Director of the lab (thank you Mr X) . Do I suggest you do the same? NO! Don't spam people for work. There are other ways to get noticed. Check out my list below (I learned all this in the past couple of months).
My Advice for Job Seekers (beyond the usual resume, cover letter stuff...): - Start a Technology Blog: Starting a technology blog is the BEST thing I could have done. Not only did it allow me to showcase my work (I would like to think I have some *decent* posts in this blog ;) ), but it has become a GREAT learning tool. I have learned a tremendous amount in the past year or so (since graduating really), and expressing it in words has helped me tremendously keep it in my head. Plus, it can't hurt your writing skills. Don't forget to link your blog in your resume and in your personal website. You will be surprised: managers and recruiters might actually venture out to read it. Also, in your blog, be sure to touch on the particular area you are trying to work in. If you wanted to work on Eclipse for example, well try to write interesting and insightful posts about Eclipse. Oh, and I strongly recommend you stay POLITICALLY CORRECT and avoid BASHING of any sort! Don't try to become the next Scoble, or the next Mark Jen. It could be dangerous...
- Make yourself noticeable (I don't recommend doing this if you have a job though):
- Participate in Blogs: More on this in the Watch Corporate Blogs section...
- Make your resume easily available: Clearly post it on your website, and on career tools (Monster, Workopolis...). Just for kicks (I am not looking for a job), I posted my resume on Monster for a day. I received 3 job inquiries! This is good news people, the job market is picking up!
- Attend networking events: Ok, I have never done this. But look up user groups in your area, you could meet interesting people. Also, I have received plenty of networking invitations: LinkedIn, Ryze... I have signed up through my friends' invitations, but I don't really use them. So I don't know how effective that route is.
- Participate participate participate: Let's say you are contemplating working on the Eclipse team. What could you do to help your cause? I can think of about a million things: report bugs, send patches, write test suites... You get the general idea ;)
- Watch Corporate Blogs: Let's say you want to work for IBM, Google, Microsoft or Sun. Well, start reading their corporate blogs. Why?
1- You will gain a deeper understanding of what employees actually do at company X. This will make you a better prepared candidate, plus, the company will appreciate the fact that you took the time to learn about what they do and how they operate. 2- OFTEN TIMES, employees (hiring managers, devs) will ADVERTISE their positions on their corporate blog. Yes, it works. When an employee from company X says: "We are looking for candidates for this position. Feel free to send me your resume.", your chances increase quite a bit! Now, don't SPAM employees. I did EMPHASIZE the "when they ADVERTISE it on their blog and INVITE YOU to send your resume" part. 3- A lot of the companies now have recruiter bloggers. What better way to get noticed than to participate in a corporate recruiter's blog ;) When you do comment on their blogs, link to your blog/website that contains your resume. You might be surprised: they might go read it ;) Don't post DUMB comments though, and don't OVERPOST (become a blog GROUPIE)... I don't know if they like that :-P - NETWORK NETWORK NETWORK: There is no EASIER way to obtain an interview than knowing someone who actually works at company X and can drop off your resume in the hands of a manager. If you have that privilege, consider yourself lucky and skip most of the steps described above ;)
Now, fix up your resume and go get that job!
DISCLAIMER: This will only help you get your resume LOOKED AT. I don't guarantee it will lead to an interview. But if it does, you are headed in the right direction ;)
As always, feel free to leave comments (add more job hunting tips, comment on the ones I posted...). It seems like I have quite a DIVERSE set of readers. If you are SHY, comment ANONYMOUSLY ;)
***P.S: I busted my knee while practicing, so my tennis dreams ended quickly :( I haven't given up though! UPDATE: Since I mentioned Recruiter Blogs, here they go (thanks Tod): - Gretchen: If you are job hunting and you haven't hit her Blog, you must be doing something WRONG!
- Heather: Great Apprentice recaps. I am not much of a marketing whiz, but I hear she has some great marketing and recruiting posts in there too.
FYI: I wrote this post a long time ago and most of its content doesn't really apply anymore. Now, let's see if their Technorati searches catch this post. Just kidding of course . Since I have a bit of time before I start work, I offered to help out a friend and build a music player for the Music Department at Virginia Tech. The requirements:
- The "Music Player" has to run on Mac OS X and Windows.
- Since it is a "school" media player, it should be easily skinnable (Hokie theme of some sort).
- I am not quite sure about the back end yet. I will double check the "spec" : Something about QuickTime music files sitting on a server somewhere...
Given the basic requirements above, there seemed to be one (quick) solution: An Eclipse Rich Client Application (RCP) of course .
In a matter of 1/2 hour (ok, maybe a little more: I am rusty!), I managed to build a simple skeleton: I have 2 perspectives ("Mini-Player" and "Max-Player"). The "Max-Player" perspective contains several views: playlist, controls, song information, current song (that's actually an SWT Browser in a tab-less view). The "Mini-Player" perspective only contains the control view. You can toggle between the "Mini" and "Max" players through the perspective menu (or action set, I might pull out the perspective menu completely. It seems too much for just a toggle action). It is a really simple but practical UI skeleton :) I might post some screenshots for the curious if I find the latest copy of it (I started it a while back). I will have to "port" it over to 3.1M6 (given the latest WorkbenchAdvisor changes and more).
The Facts: - I tried coding up something simple in Swing, but it performed really poorly on Mac OS X.
- I can code this application without worrying (too much) about platform specifics. One version of the application will (in principle) correctly behave on each platform. SWT will take care of ensuring platform look and feel for me :)
- It should be easy to deploy the RCP application on Mac and Windows :)
- The Eclipse Platform provides most of the building blocks I need to create this simple application: perspectives, views, action items, core... I don't need much more than that :)
The Question: I have not been following RCP and its development in quite a bit (the only Eclipse link I visit nowadays is planet-eclipse), so I figured I would post my question here and see if anyone provides useful answers :) Here is my main "concern" in regards to the look and feel of the application: The Media Player looks really "eclipsy". I have been playing around with the views (old/new style, tab/tab-less) to "pretty" up the UI, but I also want to add background images and border-less buttons. Is there a way to "skin" the views (i.e: background images)? How about "border-less" STW buttons with background images? Thanks in advance for the tips . I might have to go visit the "newsgroups" for this. UGH... THE NEWSGROUPS . Can't we just stick everything on planet-eclipse?  I have heard the following numerous times: "I code in Java and C#. The great thing is that I don't have to worry about resources!"
Yeah, well not quite! Yes, managed languages like C# and Java do remove a certain burden from the user by providing a garbage collector. However, this does not mean that the developer has no more responsibilities in terms of efficiently managing resources.
Operating system resources are limited, and even if managed languages un-deterministically clean up resources at times, it is good practice to deterministically dispose of resources that are not needed anymore.
There are several disadvantages to solely relying on the garbage collector to do clean up: - Putting all the clean up code in a finalize method is somewhat of a bad practice. In Java, the VM will disregard any exceptions that occur in the finalize method, meaning that you might be leaking resources if an exception occurs during the clean up.
- Executing code in the finalize method can hinder your application's performance. The VM first marks the objects for clean up, then sweeps through and runs their finalize method.
- It is unclear what thread will run the finalize method, and this could be problematic for a number of reasons. A perfect example would be User Interface components. In most UI designs, only the UI Thread is allowed to modify widgets. This ensures a certain responsiveness of the UI. Since the design does not have to account for thread safety, no synchronized performance hits are needed. If you need to clean up UI components in a finalize method, you will need to wait (through a sync exec) for the UI thread to run that particular code. Again, this could really alter the performance of your application.
- Garbage collection is an un-deterministic process. This means that for memory sensitive applications (i.e.: there is a limited number of images that can be in memory at all times on most Operating Systems), it is primordial to be able to instanteneously dispose of such resources. Waiting for the garbage collector to run (or even worst, waiting for the application to exit to clean up all of the allocated resources) might be too late. You will probably run into Out of Handles or Out of Memory exceptions.
Rule of thumb: Once you are finished with an object, dispose of its resources.
So how does one design a simple disposal pattern? - Provide a dispose method for your objects. The dispose method should clean up the object's allocated resources. It should also invoke its parent's dispose methods.
- Keep a flag around to track the number of times an object's dispose method is invoked. You only want to free the object's resources once.
- Invoke the object's dispose method from the finalize method, as a safety net, in case the users omit to explicitely invoke dispose.
- Once your object's dispose method has been invoked, notify the garbage collector that running the finalize method for that object is unnecessary (in C#, you can use GC.SuppressFinalize()). Is there an equivalent in Java?
- In Java, I have used References (Phantom, Weak and Soft References) to perform clean up. I am not a big fan. When the references are put in the ref queue (when marked for clean up), you cannot retrieve the reference's referent (the object itself) anymore ("get()" will return NULL), since the object has been marked for cleaning. This can be a bit of a hassle at times. You usually need to subclass the Reference and store some extra information about the object to be able to recognize what object has been marked for cleaning.
Managed languages do remove some burden, but not all the burden. You still need to do some work, so don't forget to DISPOSE .
Feel free to leave tips/comments about memory management: Java, C#, C++, whatever floats your boat! To follow up on my previous post, I went ahead and logged a bug to the MSDN Product Feedback Center. Why not, right? First time bug reporter on MSDN.
By the way, I am not sure on this one, but I think that just to be able to view the bug report, or basically anything else in this post that links to the MSDN Product site, you might have to sign in with your .Net passport. Sorry!
My observations: - You need to "Sign In" to browse bugs. From what the FAQ says: "It promotes responsibility". To actively participate, I understand. But what if I just want to browse around?
- They really need to make the input text fields bigger. I could barely see what I was typing. Or maybe that's because I was using Firefox? Maybe I should have used IE...
- The developers use the number of votes a bug receives to triage, and not the bug's severity as set by the bug reporter. They don't trust the bug reporter or what? :) I can sympathize with that approach. I have seen bug reporters WAY TOO INVOLVED with their bugs. Come on, you can't mark a bug as P1 (or stop ship) because you can't resize a dialog :)
- Their bug system supports attachments, which is nice. I called mine "WeirdBug.zip", maybe I should have called it "MySolution.zip", DUH! Oh well...
- The Bug Form:
The reporter can set: Bug title, Problem type, Product, Version, Category, OS, OS Language, Steps, Results, Expected Results, Attachment, Vote... The dev/system can set: Status, MS Status. The Bugzilla bug form is a little less crowded with information. More user friendly :) And the description field is WAY BIGGER, just type away! :) - Their public bug database is separate from their internal bug database. In Eclipse, everything is in the open :) Ever wondered where the Eclipse committers eat? (scroll down to the Curry section). Even food orders are logged as bugs ;) I hate spicy food, but that place grew on me. Thanks to the UI Team :)
- They "force you" to search for your bug before you report it. That's AWESOME! I wonder if that is something that can be set in Bugzilla :) As a dev, there is nothing worst than having to triage 100 bugs and mark them all duplicates of one another because the reporter did not take time to query the bug database.
- Bug rating (or voting or whatever its called :)):
Nothing new here, same old rating system: 1. Trivial/Cosmetic. 2. Minor annoyance that doesn’t cause serious problems. 3. Affects functionality but there’s an acceptable workaround. 4. Significant impact on using the product or my application. 5. Blocker.
In my case, I gave my bug a 3. It does affect the functionality, but there is a work around (in other words, "Duh! Ines, just don't give your destructor the wrong name and remove that template argument you added at the end!"). And again, these ratings are always somewhat relative. - I like this one: "How soon will Microsoft respond to my issue":
"An issue must have 2 votes before Microsoft will respond". Does that mean I need at least 2 people to vote on my bug, or does that mean that I need an average rating/voting value of 2? They seem to use voting/rating/severity interchangeably. Hmm... In other words, no one will get to my bug unless I up the severity and tell all my friends to vote on it ;) In Bugzilla, a distinction is made between a bug's priority, severity and the number of votes it receives. They are not all rolled up into one :) - Promote bug reporting:
The MSDN Product Feedback center has a nice way of promoting user involvement: - They have a blog dedicated to "rewarding" the best weekly bugs/suggestions. Come on, wouldn't you want your bug to be named the "Bug of the week!" :)
- They keep a list of "Top Validators" on the main page. Don't ask me what a "validator" is :) Nice way to promote a little friendly competition amongst the bug reporters.
- Anything else I missed?
- Number Comparisons:
MSDN Products Feedback (includes .Net framework, ASP, Visual *EVERYTHING*, Windows Forms) #Bugs (open, closed, both? No idea): 8275 #Suggestions (we call those enhancements around here): 5013 #Registered users: 21942 #Active Feedback (What does that mean? Active as in "unresolved"? Or Active as in "it received feedback once"?): - Bugs: 1340 - Suggestions: 823
Eclipzilla (Eclipse Platform only): #Unresolved bugs (includes enhancement bugs): 8028 #Bug reporters: No idea how to look that up in Bugzilla Anybody knows where I can find Eclipse Bugzilla statistics for the Eclipse platform? I guess I could spend the next hour playing around with bugzilla queries... And then again, maybe not :) Speaking of numbers, here are the Eclipse 3.0 stats. They are funny, take a look  Ok, enough numbers...
Feel free to leave comments/clarifications on anything I might have missed about Bugzilla, MSDN Product Feedback Center... Life in general! I discovered a * funny* behavior in the C/C++ Compiler (funny to me anyways  ). I was writing a templated Binary Search Tree using the Visual C++ Express IDE, when I decided to implement the tree's destructor. I needed to write a helper method (DestructorHelper) for the destructor, so I blindly copied the destructor's definition, changed it to the appropriate method name and then proceeded to build the project (I have the nasty habit of compiling every 10 seconds when I code :) I miss auto-compile!). And KABOUM! A dialog pops up informing me that the Microsoft C/C++ Optimizing Compiler has encountered a problem. Now that's not the cool part. I was a little curious. I have encountered a lot of bugs using the Beta IDEs, but I have never stopped to closely look at any :) This time around, I looked at my BST code, and realized that it seemed to have a problem with the fact that I had added "<T>" after the method name and "~" (destructor symbol) to the helper method. Blatant syntax error (Or is it? Seems like C++ lets you get away with a whole lot!). That's what I get for copying and pasting code around and relying on the compiler to correct my syntax, but I definitely did not expect it to crash on that! I just wanted the errors list so I could fix things :) Once I had "guess-timated" what had made the compiler crash, I decided to test this on the simplest snippet possible. I closed my project, closed the IDE, re-launched it, created a simple C++ Console Application project, and coded the following 2 files (Main.cpp and TestClass.h): template<class T> class TestClass { public: ~TestClass(); private: void TestClassHelper(); };
template<class T> TestClass<T>::~TestClass() { }
template<class T> void TestClass<T>::~TestClassHelper<T>() { } #include "TestClass.h"
int main() { TestClass<int>* tempClass = new TestClass<int>(); delete tempClass; } I built the project... and KABOUM again! Nice! I was excited, I had just discovered a reproducible "weird" behavior :) Being a good Samaritan, I did report the weird behavior through the "Send us feedback" dialog. The report contained the exception information, system information, product information, stack trace... The usual :) I might also poke around the Compiler's bug database, see if something similar has been reported before. I also decided to run the snippet on Visual Studio 2K5 (I have it installed on a Win2K image). I created the same project, and it also crashed. I was expecting that to happen. Out of curiosity, I decided to run this on Visual Studio 2K3 (I also have that version installed on another Win2K image). It crashed too :) I am assuming the C/C++ Compiler builds are different for Visual Studio 2K5 and Visual Studio 2K3. If they both run the same C/C++ Compiler versions, then yeah, it's expected to crash too! Weirdly enough, "void TestClass<T>::TestClassHelper<T>()" produces a compilation error, "void TestClass<T>::~TestClassHelper()" also produces a compilation error. It is the combination of "<T>" and "~" that kills the compiler. Maybe it's just me accidentally abusing the C++ language with my weird syntax error  . Or maybe it's a bug. Any ideas? I think it's a bug. As " permissive" as C++ is, I don't think you can define a destructor with the wrong name (in this case, another method's name) that ends with a template argument. On a side note, it would be interesting to try this using gcc. Unfortunately, I do not own a Linux machine anymore  . Either way, it was a fun investigation! |  |
Thanks to " eclipsepowered", I discovered this bug about running Eclipse on Longhorn. It looks like the SWT team is working some on ensuring Eclipse's fidelity on that OS. I have seen some Longhorn screenshots, but I have not had the chance to play around with it yet. My only question at this time is: Won't Eclipse look a little outdated on Longhorn, especially from a User Interface standpoint? It will be interesting to see if/when the SWT team adopts "Longhorn" technologies to give SWT and Eclipse a "Longhorn" facelift! SWT on Windows is written in Win32. Most of the code would have to be completely re-written, possibly using WinFX and XAML. XAML would actually be a good fit since Eclipse already broadly uses XML schemas across the Eclipse platform. What do you think? With the emergence of corporate/project Blogs (IBM, Microsoft, Google...), an obvious question comes to mind: "Why doesn't the Eclipse Team have a Blog?".
One simple reason: TIME CONSTRAINTS :)
Eclipse committers have to keep track of and actively participate in: When I was working on the Eclipse project, I had found the juggling act of balancing development, community involvement, as well as keeping track of what the other Eclipse teams were working on to be time consuming. Adding a Blog to this list would kill the Eclipse developers!
The one thing I LOVE about Eclipse is the community involvement. The Eclipse team does a GREAT job to reach out to the community through the mailing lists, news groups, Bugzilla, IRC, conferences, code camps... And more! Adding a Blog to the developer's "TODO" list would be nice and convenient for the community, but I don't believe it is necessary. There are plenty of existing outlets to communicate with the Eclipse team.
It would be nice to maybe replace newsgroups and mailing lists with Blogs. I was not a big fan of newsgroups. I had found it hard to keep up with the new posts (I was using the web interface). A Blog would come in handy for that particular case.
I would love to be able to subscribe to an "Eclipse Newsfeed" where I would get daily updates from mailing lists, newsgroups, bugs... That would be NICE! And guess what, it looks like that could be in the works! Before EclipseCon started, I had written a post about the presentations I was looking forward to "hearing about" at the conference. One of the presentations that caught my eye was the Visual Studio one. The description for that presentation included the following statement: "Extending Visual Studio - Jason Weber: Learn more about Visual Studio integration and how to create products that co-exist in both Visual Studio and Eclipse." I started thinking. Products that co-exist with Visual Studio and Eclipse? How would that work exactly? Could I really write an Eclipse plug-in and easily port it to Visual Studio? Could I extend Visual Studio and port that to Eclipse? That didn't make sense :)
I accidentally ran into this post that discusses the Visual Studio presentation at EclipseCon. From what the author said, the presenter did not answer the "products that co-exist with Eclipse and Visual Studio" part. That's too bad. From the presentation description, it seemed to be the center point of his talk :-P
I also looked for the reviews on the Visual Studio presentation. I found this e-Week article that described how Jason Weber did not bring his "A" game. The main point of that article: The presenter did not touch on how to "Develop Eclipse plug-ins for Visual Studio and vice versa.", and attendees felt it was too much of a "sales pitch". In defense of the presenter, he was going into a SOMEWHAT hostile territory. I would find it hard to be in his shoes, spreading the word about Visual Studio to an Open Source community :) Maybe he should have focused more on talking about the "Express IDE" (which I believe is free), as well as the technical architecture of Visual Studio in more depth.
One funny quote from the article: "In fact, Nackman said the name Eclipse in part came from the notion that "we liked the idea of eclipsing Visual Studio." That's funny. I thought the name Eclipse came from "Eclipsing the Sun" :) I am just joking. I actually have NO IDEA where the name Eclipse came from.
I think the whole Visual Studio VS Eclipse debate is irrelevant. Yes, they are both IDEs, but that's where it ends. I think the debate is more or less .Net VS J2EE platform. In picking a platform, the tools that help you develop for that platform are essential, but are not the only points to consider. That's why I find the Visual Studio VS Eclipse debate a little bit insignificant in the bigger picture of things.
Now I won't go into a rant about the PROs and CONs of each IDE (that would be a fun post to write :) Maybe I will write it at some point!), but you will find plenty of .Net VS J2EE debates here :) I have to admit it, the only news I read nowadays are the ones that have RSS feeds. It makes it so much easier to browse my news. I don't have to keep "polling" websites, I just head over to my Bloglines and only read updated and interesting links. It's pretty sad, I have abandoned all the non RSS websites I used to visit. I wonder how RSS and blogging are doing in the non techie community. I have asked around some of my friends, and none of them (the non CS ones :) ) have blogs or have heard of news feeds. I think it will take off fairly soon. Once they realize how convenient and easy it is to blog, as well as keep up with other people's blogs, they will be hooked! Only time will tell...
The popular social tool nowadays (on College campuses at least) seems to be The Facebook. It's an amazing tool to keep a social network of College friends (alumni as well as current students). Most of my friends are addicted to it. I am just an occasional lurker. If you are curious about the functionality or what it looks like, you can check out my facebook profile.
Speaking of RSS feeds and Bloglines, I have been a little disappointed by that service lately. I loved it at first, but I have noticed that it's rarely up to date with the feeds. I am thinking of moving my Blog Roll elsewhere. I am currently trying out NewsGator. I have downloaded the Outlook "plug-in". All I have to do now is somehow export my Bloglines roll and import it into NewsGator. I hope I don't have to do that manually :)
Any other suggestions as far as GOOD news aggregators I could use?
|