Comments closed

This blog has been under a severe spam attack that has managed to crash my Akismet plugin for about a week now. Good thing WordPress is holding up to it -- that's a testament to its resilience, but the attack is so severe I can see the comment moderation queue climb every few seconds.

Given that, I've decided to close comments on my blog until Aksimet can be fixed and set back up again. Which probably means comments won't be available anytime in the next foreseeable future.

Aside from that, Merry Christmas everyone! :)

Posted in Uncategorized | Leave a comment

Thanksgiving

The date came and went, and I didn't notice it last week but it's been a year and six days since I left a previous employer in haste, feeling like a failure, and added some more. Here are some:

  • I lost a job
  • I blew a consulting project
  • A job opportunity fell through
  • I missed a lot of deadlines
  • I faced a lot of financial challenges

But those don't bother me, because in the same span of time, I got a few wins:

  • I got a consulting project with a good old employer
  • I found a new job working with colleagues and mentors I enjoy working with
  • I got to see London
  • I finished two iPhone development projects, one an internal prototype and the other app pushed to the Apple App Store
  • I started teaching part-time at a prestigious university

While last year I was sulking about everything happening to me a mere six days before my birthday, this year I celebrate being thankful for all those trials which have made me a much stronger, better person. For all the drama that began this journey, I'm really thankful for all the friends, family, and my very loving wife, for having supported and inspired me through all of this.

Finally I praise God, to whom I offer everything that I am and do.

Posted in Personal | Leave a comment

What’s your excuse?

Among the most profound quotes I found when the world mourned the passing of Steve Jobs is a tweet by Jonathan Moss:

Steve Jobs was born out of wedlock, put up for adoption at birth, dropped out of college, then changed the world. What's your excuse?

Not mentioned in the tweet is the fact that Steve was also fired from his own company.

In the midst of a society that is now embroiled in huge resentment vs. the economic elite, the promise of "go to school so you would have a nicely paying secure job and lofty retirement" is being broken across the western world.

The sad thing is, people don't even believe there is any other way of doing it. This is particularly pronounced in societies where people want to introduce graduates to the workforce as fast as possible, completely sold to the broken system, completely disregarding the lack of value such an "education" holds.

Yet we expect kids to succeed that way.

Following what you are told to do doesn't work anymore: you should think different, you should work different, you should make yourself indispensable.

And then you would understand why everyone is giving so much attention to the passing of the man from Cupertino.

Posted in Tech Musings | Leave a comment

Resilience is not for software developers

Last week, a devastating typhoon arrived in the country, which found itself in the middle of yet-another-calamity. As the typhoon went on its onslaught, towns were inundated by storm surges. These floods were later exacerbated by the necessity to release water from upriver dams filled to the brim, which in turn were made more urgent by the approach of a second typhoon. Amidst these scenes of chaos and despair, the locals found reason to pat themselves in the back for their "resilience". They believe that their ability to withstand one calamity after the other without losing neither hope nor faith is a testament to the strength of their will to live, as well as their faith and character.

I disagree.

When The Netherlands suffered the devastating North Sea flood of 1953, they devised what is probably the largest water management project in the world called the Delta Works. The project was so massive, while parts of the project were started prior to the great flood, as early as 1950 (note that at that time the Netherlands was in economic shambles recovering from World War II) its final components were finished only in 2010. Sixty years of effort to end the scourge of a seemingly uncontrollable foe. If the Dutch were as "resilient", they probably wouldn't have felt the need for such an enormous project.

Resilience is also a problem if you're a software developer withstanding and tolerating these conditions:

  • Substandard development and build machines
  • No source control
  • Manual builds
  • Absence of continuous integration
  • Absence/decay of automated unit tests
  • Severe scope creep
  • Enforced/continuous/arbitrary/rewarded overtime
  • Enforced/arbitrary shifting schedules for no better reason than "standard company practice"
  • Nonsensical/arbitrary rules
  • Etcetera etcetera...

When resilience has come to mean tolerance of bad practices (or tolerance to calamity and disaster), it immensely loses its value.

It's okay to be a little resilient, you'll need that for when you absolutely need to pull all nighters to finally ship your product on a product launch. But don't be resilient enough to tolerate having to build manually, or develop on a netbook, or treat arbitrary overtime as normal. The alternative hopefully doesn't take 60 years to put up, but even if it does it will all be worth it.

Posted in Tech Musings | 2 Comments

Evolving social contracts in software development

Seth Godin's book Linchpin talks about the collapse of the "two hundred year old promise" that as long as we go to the school, pass our marks, get a good stable job, do as we are told, and pay our dues diligently, society will take care of us in retirement. With the financial crises of the early 21st century, it is clear that this promise -- or contract -- is being broken, and thus the need for us to rethink the way we go about our careers.

The 2010-2011 revolutions in the Middle East are also an example of evolving social contracts: the old promise of "one man to rule all tribes" have been shattered in Egypt, Tunisia and Libya, and is continually being challenged elsewhere in the Arab world. Despots are being told: your promises are not enough; diversity cannot be undermined by dictatorship; the people's voices have to be heard.

Microsoft: Change the world or go home

Microsoft has taken up this challenge so many times, with varying mileage

Software development has recently faced its own evolution of social contracts. The old notion that "no one ever got fired for buying Microsoft/IBM" has steadily been challenged in recent years by the rise of open source alternatives, as well as newer players such as Google and Amazon. While in the past it was commonplace to hear about software developers signing Non Disclosure Agreements specifying that they cannot use open source software (I have), or encountered dinosaurs who frown upon learning that their key systems use open source libraries to power it (been there too), more software engineering departments and companies are shunning such obsolete attitudes.

I'm not here to pontificate on the superiority of open source software as some FOSS fanatics tend to do. I'm not saying products from Microsoft or IBM are not good, not at all, a lot of them are awesome, and a lot of them are the best for certain jobs. However that isn't always the case, and IT dinosaurs must recognize that there are open source software out there that constantly challenge the quality and relevance of the offerings from Big Blue, Redmond, Cupertino, or even Mountain View. There are also a lot of offerings out there that are not matched by the big corps at all.

There are various licenses that cover scenarios of business use for open source software -- not all of them are GPL or copy left, which terrifies the suits in the legal department and gives them nightmares. All it takes is due diligence, these are what those lawyers are paid for.

The social contracts are changing again. Time to face the new ones.

Posted in Career in Tech, Personal, Tech Musings | Tagged | Leave a comment

Co-sourcing – outsourcing impedance

When people get used to the outsourcing paradigm of software development, certain assumptions take hold, and become difficult to remove. Some of these assumptions include management being the sole responsibility of the outsourcer; innovation as mainly the outsourcer's decision; code being "owned" by the outsourcer; and unfortunately, the inferiority of the off-shore team.

This is unfortunate because when they are put in co-sourcing setups, wherein any such assumptions are misguided, they start failing to own the project. Responsibility, innovation, ownership and, ultimately, love, are usurped to the "more superior" team at the other side of the pond.

Unfortunately the outsourcing culture seems to have taken hold of many budding IT professionals. Instead of researching for answers they "outsource" it by asking for the final answer even before they start exploring the correct question. Very few seem to be interested in innovation, everyone just wants to find the quickest way to earn a buck. And the blokes who were taught to rely on themselves have to bear the brunt.

How do we undermine this impedance? How do we inculcate innovation and love for one's work?

Posted in Career in Tech, Industry Talk, Tech Musings | Tagged | 2 Comments

Slight change of blog name

I changed the blog name a bit, primarily because my content isn't just .NET anymore, so just to clarify, "Coding @ Kape ni LaTtEX" is made up of:

"Kape ni LaTtEX" - LaTtEX's coffee. LaTtEX is a chat name I had since the late 90s, and is a play at LaTeX and lattes -- I like my coffee with milk.

"Coding @" - While "at" in English implies something being somewhere, "at" in Filipino is literally translated as "and". So in English it's "Coding at LaTtEX's Coffee" or "Coding at LaTtEX's Cafe". In Filipino it's "LaTtEX's Coding and Coffee".

I love the recursive play at the blog name and am writing this just in case someone asks me what the name is all about. I know it's five years after the fact but, better late than never, I guess.

Posted in Uncategorized | Tagged | 1 Comment

Busy May!

May was a busy month for me with 3 different events.

On May 7, I conducted the "Cras#ing into C#: A guide to the C# language for students already familiar to Java" talk for Adamson University students

C# crash course!

With students after the talk

And then on May 18, I conducted the 3rd installment of the MSDN Ramp-Up series at Microsoft Philippines, which tackles converting apps from Visual Basic 6 to current versions of .NET. Complete videos of this talk can be seen here.

The slides are available below:

Finally on May 21 I went back to Microsoft Philippines to conduct a talk on N-Tier and OOP: Moving across technologies at Microsoft Philippines' Career Booster event for students:

Students listening at the Career Booster event

The slides are available below:

All in all a great month, thanks for the organizers of these events. :)

Posted in Talks and Conferences | Tagged , , | Leave a comment

MSPinoy event – April 2, 2011

Even if I'm mostly doing iPhone development right now, I still do .NET and C# related speaking topics once in a while. One of them was the MSPinoy meet-up last April 2, 2011.

Jon presenting on some C# interview questions

Coding triangles. Photo by Jef Encomienda

I conducted a presentation called "A hitchhiker's guide to C# interviews", wherein I talked about some common interview questions asked software developer candidates who are expected to be experienced in C#.

Thanks to MSPinoy for inviting me to this event. :)

Posted in Talks and Conferences | Tagged , | 2 Comments

Rolling your own iPhone treeview control: Summary, conclusion, and download links

It was a long drawn series, but I'm happy that we're finally done with "Rolling your own iPhone treeview control". To summarize the posts:
MyTreeViewPrototype

Apologies to those who had to wait a long time since this series was started last March 8th -- it was hard to juggle writing about this control *and* writing the app that I was using it in. I hope the wait was worth it.

For those who wish to download the code for this series you can get it here:

MyTreeViewPrototype on GitHub

If you have any questions about the tree view control, or improvements you wish to apply to it, feel free to contact me by commenting on any of the posts in this blog.

Posted in Technical Articles | Tagged , , | 10 Comments