I had a lot of fun when Warren Yu and I presented a rare dual-session in the showdown between VB and C# developers - whilst showing them the newest language features in the upcoming versions of the languages Visual Basic 10 and C# 4.0. The heated discussion (aided by some San Miguel Beer) afterwards was the most passionate we've heard from members of the audience, and their lively participation only means that we're going to do this again!
Here are some of the pictures from the event:
The speakers squaring off...
The VB camp...
The C# camp...
Ladies of VB
JL Tolentino with his passionate defense of C#
Jad with his views on VB
We want to thank new Microsoft DPE Dale Jose for all that booze (and the idea for the event, actually :P)
I again thank all the awesome audience who came, spoke their mind and helped us make this event truly awesome! Thanks!
BASIC was my first love. Notice the all caps -- that was how it was written back in the 80s. I discovered BASIC via a GW-BASIC manual I had found in my grandfather's boarding house, where a former tenant left it after graduation. From that lost book I was introduced to programming, and I moved from GW to QBASIC then to Visual Basic 4, jumping to VB 6 and finally, VB.NET. Visual Basic was my first foray into .NET, and with my skills back then, it was really, really good.
Along the way I met a bunch of other languages, though. In highschool we were also taught a data-oriented language called Clipper, and a weird semicolon-laden language called Pascal. It was the first time I saw line-terminators in a programming language. In college I finally got to meet C. Quite different a beast from BASIC, I nonetheless got the hang of C very quickly. It was terse, requiring fewer keystrokes to write in (there was no Intellisense back then) and I immediately kept all the keywords I needed in my head. It was great, but I didn't get to use it at once when I started working.
In the early years of .NET I was ambivalent between the choice of languages. I learned both Visual Basic and C# and said to myself -- what's the big deal between the two? Nothing much. So I just studied and learned and switched from one language to another, until one day I got introduced to object-oriented programming. OOP was a difficult, disciplined programming concept -- much harder to internalize than structured programming was. But that's where I saw what C# was good at: it was naturally geared towards OOP. I compared writing applications in both languages, and noticed that if I was doing OOP, it would be much faster if I wrote it in C#.
I had one last foray using VB.NET on a full-blown object-oriented designed application, and it just convinced me further that C# was the way to go. What nailed it further for me was when .NET 2.0, and then .NET 3.5 arrived. It was much easier to use and write generics, I could use anonymous methods (which wasn't possible in VB early on), LINQ was without hassles of unsightly underscores, and lambda expressions were just much more intuitively beautiful in C#. Likewise, with the ability to introduce unmanaged code, developers could also introduce more advanced tweaks that are impossible to include with VB.
C# empowers a .NET developer to realize the full potential of the .NET framework, aside from the language. This power becomes even bigger with the introduction of the dynamic keyword in C# 4.0, giving it the best of both worlds between static-typed and dynamic-typed languages. It is this power that convinced me that C# is the way to go.
So, why do you love C#? Why don't you like/love it? I'd love to hear your thoughts too. :)
I did a talk introducing students to Test Driven Development last Saturday, October 17, 2009. This is basically same as the TDD Revisited slides, refined slightly taking into account the student audience.
Last Saturday's talk was part of the IT Probe 2009 event held at Adamson University in Manila, by the Junior Philippine Computer Society.
An Introduction to Test Driven Development
Here's some pics from the event:
I'd like to thank the officers and members of the Junior Philippine Computer Society of Adamson University for inviting me over./p>
I reduxed my talk on Social Network APIs for UST students last August 29. Just wanna share the pics on this one:
There were over a hundred (something like 130) students that attended this talk. Hopefully I didn't bore all of them to sleep :P
Thanks to the UST ICS Dept. Section A of the College of Engineering for inviting me. :)

I recently got a strange error in Visual Studio 2008 which prevents Visual Studio 2008 from starting: "The application data folder for Visual Studio could not be created.", with only a Close button on the message box. What makes this weird is that it happens only when I use my Administrator account, and not my regular user account -- counterintuitive, because at first it appears to be a permissions problem.
After searching the net for a solution I've found a plethora of blog posts encountering the same problem, with various solutions, but Quantboy's "Visual Studio 2.0 startup error" pointed me at the right direction:
I googled the message- and found that the key to this problem is by changing the following registry key entry (like some everyday user’s going to be able to find this)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
I checked the value for this entry in my Admin account and this is what I found:
I compared this with my user account, and this is the correct value, which I applied to the Admin account. I was then able to run Visual Studio 2008 normally:
Consequently I found out that it also prevents Firefox from starting up; during the time I was having these errors I can't open FF either, but after the fix FF starts normally. I don't know what hotfix or what not causes this error, however.
I'd like to thank the nice people who came over and saw last Thursday's MSDN Session!
The slides used for the presentation is provided below, via Scribd, downloadable in PPT format:
An Introduction to IronRuby and the Dynamic Language An Introduction to IronRuby and the Dynamic Language LaTtEX Presentation given during the MSDN Session of the same title, last May 27, 2009, at the Microsoft Philippines Offices. These slides discuss about the merits of learning a dynamic language, a brief history of Ruby, and its main language features The Ruby sample code is provided here: RubySampleCode.zip
The sample code for Ruby integration with C# (taken from cruizer here) is here: IronRubyTest.zip
Do check out Andre Cruz's IronRuby presentation slides and demo code -- which was my source for several key points in my presentation. While Andre lamented that he had an audience of 10, I shared his ideas to my audience of 100, as my way of thanking him. Salamat bushing! :)
During the presentation, Philip Laureano asked a rather difficult question regarding the DLR's integration with C# 4.0's "dynamic" keyword. He came up with the answer himself: click here for the sample code on how C# 4.0's dynamic keyword demonstrate the capabilities of the DLR. You the man, Philip!
I'm cooking up a follow up session on ASP.NET MVC working with IronRuby, but don't hold your breath just yet; will keep you posted. Thanks again to everyone who was there!
Time to speak up again! :)
I'm going to have an MSDN Session at the Microsoft Philippines HQ in Makati to discuss about IronRuby, its awesome potential, how far its progress has gone, and the basics of the Ruby language on Wednesday, May 27, 2009, 6PM.
You'll need to register for this event, so please visit the MS Events Philippines page for this MSDN Session on IronRuby.
Hope to see you there!
I recently did a small presentation for my officemates as a refresher for Test Driven Development:
TDD Revisited TDD Revisited LaTtEX A guide to test driven development both for people who need an introduction to it, as well as software developers who wish to review its core concepts. This presentation is based heavily on Ben Hall's Red, Green, Refactor! presentation, - in fact you could get the code for this presentation from there as well. :)
I put off studying ASP.NET MVC during pre-release, and now that it's out, it's really really time to catch up.
There are a bunch of nice tutorials out there, and I'd like to compile them here:
I'm also checking out IronRuby, especially with respect to integration with ASP.NET MVC:
I will try to conjure a talk out of these in a little over a month's time, wish me luck. :)
I'm very happy to announce that I've been awarded the Microsoft Most Valuable Professional Award for Visual C#.
Oh wait, I'm not just happy. I feel so freaking awesome I can't even sleep! :P
With this award I'm looking forward to working with and serving the local MS user community even more. Thanks for those who have supported me in my community participation all these years. :)
In the latest episode of Pinoy Tech Podcast, the crew and I went nostalgic as we reminisce the first time the Philippines was connected to the internet, and our experiences surrounding that event and what had unfolded afterwards. We also talked about the state of computer science education in the Philippines.
Check out Pinoy Tech Podcast Episode 4.
Before we hit Skype for Pinoy Tech Podcast Episode 4, I'd just like to post the link (pahabol lang) to Pinoy Tech Podcast Episode 03: The 40 day social network abstinence, which I wasn't able to join since I was at the hotel in Cebu chilling with the great people from Microsoft after the very successful Web Ramp Up event there. To all our friends and attendees in Cebu, daghang salamat!
We're going to discuss a little about the history of the internet in the Philippines (something we've been doing in tidbits the past 3 episodes anyway) and then go on to discuss about the state of computer science education in the country, so do watch out for the next episode, which would most likely come out this Saturday.
Do you remember Barron's Book Notes? Back in high school and even in college, these little booklets were indispensable resources when a student needed to study and review whatever classic English literature was assigned for reading. It was so effective, however, that many times you never read, say, "Don Quixote" in its entirety -- you just read Barron's Booknotes and you're all set for your exam. While I didn't use Barron's Booknotes for English lit, I did use a local equivalent for "reading" Rizal's Noli Me Tangere and El Filibusterismo.
The result -- I can't really say that I've read Noli and Fili. Not only that, I can't remember anything about those books -- fiction that are integral to the history of the Philippines -- because all of whatever faux knowledge I held in my head was quickly disposed of after their required shelf life: the final exams. Even worse, I don't have any genuine and original opinion about two books that started a revolution in my country.
Edu Lorenzo's rant on his blog "Dangerous Passivity" reminds me of this predicament:
There are a lot of questions there that are asked, but have been asked before, and have already been answered completely in the same forums. It’s not that I don’t like helping out but the thing is, the forum has this searchbox where you can search for the answers you need.
Then there are times when someone asks a questions, then another guy answers with a link. As a moderator, I feel I need to check the link too and see if the correct answer is there. Lo and behold.. the answer really is there; of course. But then, the thread starter, asks yet another question, whose answer is also in the link given! It’s really disconcerting.
Then there are companies with IT departments populated by what they call their brightest minds. I give them a demo on how to use a certain technology.. then.. a few days later, they email me with a question that was included in the demo.
This attitude of passivity.. what can I account it to? School? Training? Culture? tell me.. please..[eduardo's blog]
One of the really dangerous attitudes a person could acquire in school is forgetting about education -- and choosing academics over it. Instead of trying to really learn and understand the subject matter, students tend to prioritize subject matter which are the coverage of the exam, or finding out what the answers are to the most common possible questions.
This is what happened to me when I studied Noli and Fili because I took the shortcut and studied the books through a reviewer instead of reading the whole book and grokking its substance, I never really understood what it was all about. What was more important was that possible questions in the exams are covered, and my score was high enough to pass the course.
Unfortunately, some people bring this attitude outside of school, and into their professions. They seek answers, but either don't want to or don't know how to do it the long way: they don't know how to research, they don't know how to ask intelligent questions, hell, some of them even don't know how to go use Google. And many software developers are guilty of this: many of them seek answers on the net, asking for "teh codez", and end up copy-pasting badly written samples. Some of them refuse to read through articles, and will ask people who gave them that link to point out the answers explicitly.
It's not so much in that they aren't intelligent, or they're lazy -- it's the attitudes instilled in school that prevail. "Getting the wrong answer" is a bad thing. "Failing" is a bad thing. Such attitudes impede individuals of the ability to proactively seek knowledge and wisdom; they would rather get the "correct" answer from another individual (which sounds so much like cheating with seatmates), than accept the responsibility of coming up with an answer themselves.
In a knowledge-intensive profession such as software development, this attitude becomes a liability. Actively learning new technologies is so crucial in a developer's professional standing that they can't afford to wait for someone else to tell them the right answers for each and every question. It is imperative that software developers accept the fact that there are no right answers; that it's okay to get it wrong, and that it's fine to let go of the need for getting things right the first time.
Once a software developer masters this, that is -- accepting the possibility that they can get wrong, and make mistakes -- that is the only time they can start being creative, and create wonderful things out of the lessons learned from those mistakes.
With the Web Ramp Up held last February 26 coming up fast, and with work piling up the pressure, not to mention a job performance appraisal I'm not happy about (totally my fault, but busted my morale nonetheless),I totally missed out on my podcasts the whole month of February. So on the morning of the 27th I fired up iTunes, synced my iPod, and totally found the one Twitter WPF client that I should have talked about during Web Ramp Up!
Scott Hanselman of Hanselminutes talked with the creators of blu, a WPF Twitter client made by a design company called thirteen23. And boy was I blown away.
It was one of those Homer Simpson "doh!" moments where I reminded myself that even if I'm uber-busy, I should stop and look at my RSS feeds and updates, which might yield something both new and relevant to whatever I am doing at the moment.
Oh, and the feature that I was trying to add to Witty, wherein I was retrieving the "source" tweet of a certain reply tweet? Blu actually has that feature. I'm totally impressed!
You can download blu here.
Of course, those attending the Cebu edition of Web Ramp Up will get to see blu integrated in my presentation. See you guys in Cebu on Friday!
The guys of Pinoy Tech Podcast (including me) came out with our second episode of our podcast. In this episode we discussed Google Maps, Google Latitude, and the ubiquity of the internet in the Philippines, with side stories of my trip to Coron, Busuanga Island, Palawan, the other weekend.
Hope you enjoy this episode! :)
More Posts
Next page »