June 30, 2009
Arthur Tyde III, long-time Silicon Valley serial entrepreneur and investor, agrees to join the Orange & Bronze board of directors. The senior partners of Orange & Bronze believe Art Tyde can lend an experienced and global perspective to O&B's business, as well as provide significant access to the Silicon Valley market.



Arthur Tyde is an executive with 20 years of IT engineering, management and investment experience, 15 of those as a professional in the Linux & Open Source space. He is credited by The Economist as the founder of the enterprise Linux services and support industry.



In 1996 Arthur established the Bay Area (San Francisco & Silicon Valley) Linux Users Group; the first Linux LUG in the USA. Later, in 1998 he raised funding from top tier Silicon Valley venture capitalists (Kleiner Perkins), recruited the most strategically interesting players in Open Source and launched LinuxCare, the first company to offer commercial / enterprise class support (21 distributions, 9 hardware architectures), independent certification (LinuxCare Labs), professional services and training (LinuxCare University). LinuxCare also contributed significantly to the Linux Kernel, SAMBA, PHP, and many other Open Source projects.



In addition, Tyde is credited as the founding sponsor of the Linux Professional Institute (training) and the Free Standards Group, now the Linux Foundation (where he served as CTO from 2004 through 2005).



Prior to Linuxcare, Arthur was an enterprise IT architect for Gap Inc., California State Automobile Association, and a software engineer at IBM. He is a board member or advisor to numerous high profile Linux and Open Source startups, a California licensed Private Investigator and a private pilot.



Recently, Arthur co-founded a successful embedded Linux startup (Sputnik Inc.), consulted for a large software client in the US Pacific Northwest (building their Competitive Enterprise Linux Lab), in China (launching startup companies) and later, as APAC General Manager ran the sales and engineering business for Levanta Inc. Focused on enterprise customers in Japan and Korea; Arthur created sales relationships, partner programs, and designed enterprise infrastructures for such marquee customers as NTT Telecommunications and Hitachi.



Arthur has been a computer enthusiast since 1979, graduated from Michigan State University, and is based with his family in Manila, Philippines.
June 24, 2009

I got this from the Philippine Linux Users Group (PLUG) mailing list today. Apparently the New Zealand government is thinking of allowing the unlimited patents of software. If this pushes through, it can be a big blow to the future of open source development. But we can do something about it despite the fact that we don't live in New Zealand. In fact, we SHOULD do something about it.

read more

June 21, 2009

Google, along with Globe and Ayala Foundation, recently hosted a developer event last June 20, 2009. Not wanting to miss any new stuff that might be discussed during the event, I headed on over there with a box of brownies in hand as well.

read more

Why did I start this company? And what are my current motivations?



I can trace my motivations for starting this company continuing to work for this company to two experiences in college. The first was wanting to be an engineer involved in R&D, but being frustrated at the near-complete lack of opportunities to do that in the Philippines. As an engineer, you had two unattractive choices - join the academe and live on a very meager income, or join a company as a "glorified technician", and hope to move to either management or sales someday.



The second was being a mission volunteer for CFC Youth for Christ. Among my many experiences and learnings there, I witnessed the beginnings of the Gawad Kalinga program, and I basically saw how the idea of one man, Tony Meloto was able to massively change many lives in such a short period of time, through the organization that he led. Upon leaving CFC-YFC, I wanted my work to continue to massively affect people's lives.



So I left college with two goals in mind - to build an organization that would massively affect people's lives, and to be involved in innovative engineering. Orange & Bronze is the implementation of those goals. Orange & Bronze's two-fold purpose is to provide innovative careers for engineers and other knowledge workers, and to affect the society it belongs to in a massive way.



In the "affect society", the area where I think Orange & Bronze can help the most is education. I'd like the profits of Orange & Bronze to be directed towards programs that would improve education, especially for those who have the potential to either be great engineers and scientists of our country, or great leaders (or both).



I'd like to start programs to improve the level of science and mathematics education in the primary and secondary level; programs for teach training, and the retention and recognition of competent teachers, and encouraging young people to choose teaching as a profession. I'd like us to build educational software that will allow the scarce number of teachers we have to be able to multiply their efforts. I'd like us to provide leadership training talented people in the secondary level, to provide our country with a crop of future leaders. At some point, I'd even like to build and run our own schools.



This is what has motivated me to start Orange & Bronze, and what continues to motivate me to take it to its fullest potential.
June 18, 2009
O&B is now at about 75 people. It's come as a violent shock to me several times that a lot of people, even those closest to me in the management team, didn't know or understand what direction I wanted the company to go. It's led to a lot of very bad arguments within the management team, since many felt that I've made unilateral decisions that affect them greatly, without consulting them or preparing them.



I've been in the mindset where there were just so few of us, all in the same room, and we'd see each other so often (too often), that we knew what each other was thinking most of the time. There wasn't any effort needed to inform each other of our plans. In just a couple of years, this is no longer the case, and it's only lately that I've realized so.



So now making decisions involves more preparation. It used to feel like just a steady hike up a solid trail. Now it feels like I'm walking through a knee-deep muddy marsh - and I need a staff to poke where I plan to take the next step, to make sure I have sure footing when I land my foot there. Decision-making has become more slow-going, but then again the organization as a whole is doing so much more. So even if I personally feel that it now takes more effort for me to get things done, more is being done by the entire organization.



It's important for an entrepreneur to watch for that point when communication shifts from being effortless to having more effort. That's the time when you have to start designing structures and protocols to make sure people continue to know what's on your mind and are with you in your decisions.

June 16, 2009
  • 14:03 Experiencing major orgasm moment right now. First local Android phone (HTC Magic) to be available to Smart Gold subscriptions in June 2009! #
  • 17:30 W00T!!! The olympus pen has turned digital! Oh my gosh! It's so bee-yoo-tee-full! ow.ly/em2b #
  • 17:34 As usual, Olympus comes out with a 2-lens kit for their newest baby. You know, this would actually be a perfect on-the-go camera! #
  • 18:08 The Olympus E-P1 two-lens kit is $899. Hmm... How much can I sell my E-500 + 1lens? #
  • 19:09 Interview with Akira Watanabe, product planning manager of Olympus's SLR division at the E-P1 launc h event in Berlin. ow.ly/emAo #
June 13, 2009
June 11, 2009
  • 12:56 Heinz introduces World's Smallest Microwave, and it's USB-powered! is.gd/YzMu #
June 08, 2009
Dean Berris : Bloom Filters
June 08, 2009 12:55 PM



During the weekend I was fascinated by a simple utility called a Bloom Filter. From the Wikipedia entry:

The Bloom filter, conceived by Burton H. Bloom in 1970, is a space-efficient probabilistic data structure that is used to test whether an element is a member of a set. False positives are possible, but false negatives are not. Elements can be added to the set, but not removed (though this can be addressed with a counting filter). The more elements that are added to the set, the larger the probability of false positives.
So I tried implementing my own generic Bloom Filter in C++ and submitted it to the Boost C++ Libraries. My email went a little something like this:



During the weekend, I got acquainted with and excited about Bloom

Filters and the utility of such a data structure. I then proceeded to

look at generic implementations of a bloom filter and I thought about

implementing one myself instead as a simple exercise.



Attached is what I came up with which I'm submitting as a library for

review (and uploading to the vault). Also attached is a sample program

which uses the bloom_filter.



This then led to a few responses, and now I'm proud to say that my implementation can now be checked out and tracked from Boost Sandbox! The URL to the subversion repository is:

https://svn.boost.org/svn/boost/sandbox/bloom_filter/trunk/
Have fun with the library, and I would definitely like to know what you think about it!
June 04, 2009

It's been raining hard lately. Power has been cutting out on us and a freak tornado in one of the nearby cities made things worse. So I decided to pull up this post from my old blog. Every now and then I'll be putting up some old (yet timely) posts from the former TGS website. Thanks to the Wayback Machine for giving me a way to dredge them all up again.

Today's blast from the past sets its eyes on Palm. Thoughts on the imminent death of Palm OS were looming about some three years ago. This month, Palm put forth on the US shelves their newest baby sporting the WebOS. I wonder now how the early adopters are liking the new operating system on the brand new Palm Pre.

read more

June 03, 2009
  • 15:11 fixed the dates on my blog's comments. Had to fix the recent comments module so it orders by timestamp instead of the id. #
  • 15:12 Now that that's done, I can finally eat merienda! They brought home pancit malabon! #
  • 15:30 Project Natal + WrestleMania video game = (your guess is as good as mine!) #
  • 15:40 Strange. I can't seem to access Box.Net to see how it's doing. #
  • 15:43 This, my friends, is what you call hot chocolate and cuddles weather. :) #
  • 17:57 Now then. Which web conferencing app should I write about first? #
  • 18:43 I really have this urge for cinnamon-cayenne ice cream. #

I decided it's high time I take my Java certifications. Seriously. Sure I could study by myself, but I figured that a group study session would make me even more determined to actually study. Plus I could gather more information from the experiences of others rather than just come across them during my self-review. There's just one thing: the rainy season has started over my patch of the world. The idea of braving the rain to travel all the way to another city to be able to attend a study group wasn't what I had in mind at all. And I'm sure a lot of people would say the same. I'm also sure that a lot would be disappointed at not being able to attend such sessions.

The solution was obvious: Set up a cyber-study group. Most of those who will be attending would surely have some sort of broadband connection either in the office or at home. The first part of this plan is to figure out what would be the best web conference app to use.

read more

May 30, 2009
  • 09:29 I just found out that MIT also has free online course materials for high school. #
  • 09:50 Using WebNotes. Where were you when I needed you during my courseware development?! #
  • 10:23 Reading about open access textbooks. Must look back on the progress of Bayanihan books. #
  • 10:27 Acknowledging the budget constraints that can let students have open access material, then make it available to the well-trained teacher. #
  • 10:36 Reading about Connexions. "Create, rip, mix, and burn" textbooks, courses, and learning materials. cnx.org/ #
May 29, 2009

Today I have a new 4096 bit RSA key replacing my old 583BD8F1 1024 bit DSA key.

pub 4096R/DE6E322E 2009-05-29

Key fingerprint = C53E F378 9E71 773E 2FB1 451D E71E BCB6 DE6E 322E

uid Jan Michael Alonzo (http://twitter.com/jmalonzo)

uid Jan Michael Alonzo (http://unpluggable.com)

uid Jan Michael Alonzo

uid [jpeg image of size 3717]

uid Jan Michael Alonzo

Here’s the complete transition statement:

—–BEGIN PGP SIGNED MESSAGE—–

Hash: SHA256

29 May 2009

For a number of reasons, i’ve recently set up a new OpenPGP key, and will be transitioning away from my old one.

The old key will continue to be valid for some time, but i prefer all future correspondence to come to the new one. I would also like this new key to be re-integrated into the web of trust. This message is signed by both keys to certify the transition.

the old key was:

pub 1024D/583BD8F1 2004/01/27 Jan Alonzo jmalonzo@unpluggable.com

Key fingerprint = 7972 C9B3 30B8 504F AB5D E4E9 4300 1CEE 583B D8F1

And the new key is:

pub 4096R/DE6E322E 2009/05/29 Jan Michael Alonzo (http://unpluggable.com) jan.alonzo@gmail.com

Key fingerprint = C53E F378 9E71 773E 2FB1 451D E71E BCB6 DE6E 322E

To fetch my new key from a public key server, you can simply do:

gpg –keyserver pgp.mit.edu –recv-key DE6E322E

If you already know my old key, you can now verify that the new key is signed by the old one:

gpg –check-sigs DE6E322E

If you don’t already know my old key, or you just want to be double extra paranoid, you can check the fingerprint against the one above:

gpg –fingerprint DE6E322E

If you are satisfied that you’ve got the right key, and the UIDs match what you expect, I’d appreciate it if you would sign my key:

gpg –sign-key DE6E322E

Lastly, if you could upload these signatures, i would appreciate it. You can upload the signatures to a public keyserver directly:

gpg –keyserver pgp.mit.edu –send-key DE6E322E

Please let me know if there is any trouble, and sorry for the inconvenience.

Regards,

Jan Alonzo

—–BEGIN PGP SIGNATURE—–

Version: GnuPG v2.0.11 (GNU/Linux)

iQIcBAEBCAAGBQJKH4+ZAAoJEOcevLbebjIuzFMQANB6k3IEYMe0zxuK+OVdnnCU h7JYpR8ErMBt2vDzgkXMvE6WRmR+yj3U5X47Yb3Gh2FN99WtFJm/ZPE2f0nEKDLb xuhZnLsPfQ/5yxRBBGgCxy4jhL8XSG7cNekIkApr/vXAGVc2SlxUorhm1JVdy4yN 4LG5Iw/4eiUZSwnTdmCOz/vyhoIYJOBG5q7DSqENfdHpEDtEajkfIBqeR4EmLZlJ SQnFD/Bv9eYxTiskiDl9P8t5R52wDVg9oLY+otMNCvwzOwg25QGDP9OdvOEAUqXq vWy0B3To/H679b2maZ4nIwmG/NHn+vH4kulETETAUbRxnRlE4KncoVPSIW5RP7Cb 259zVwVynkzlfAaY2/1YjgFlkbgAd6cMqDxpv0LfLKjWDrTiPMOu1jnboYvKnd9a 2sUe70tWp1vd1moqfGQTY6QO+wSEhFaFivzVSmZDR+offiveVrQo5L9y4UVPUiqJ bgPQKI7WT4G+1y27M1U6V9SvDF2zalaQ7N830+5qhku9kpjA6ci/GfonWoixKoPn 8l/4j59lv3P8DAL78dhdB4ws0+ru8ZJHyI95AN5K4yKoZsEdM2jKrI/A+pKiuDsA AMnusqJSWZJD1/gMIK/GvgaXyJhQZp95Hti9me2uxtimw/6YOW2NzoWVRLvtTuLU QixY/vvn1XtDLHjR/+6I =2PET

—–END PGP SIGNATURE—–

May 28, 2009

PyWebKitGtk 1.1.5 is out! This release covers WebKitGtk 1.1.5 up to 1.1.8.

Grab it from the downloads list.

Summary of pywebkitgtk 1.1.5 and WebKitGtk changes from 1.1.5 - 1.1.8:

  • New Printing API added to WebFrame.
  • Covers improvements and changes from WebKitGtk 1.1.5 up to 1.1.8
    • Accessibility improvements
    • Support for caret browsing
    • Support for spell-checking
    • WebKitGtk now displays an error page for load errors
    • JIT support for X86_64
    • Arbitrary widget embedding as if it was a plugin
    • HTML5 database and localStorage Settings API See WebKitGtk NEWS for more info.

Enjoy!



I have two web cameras. One is a Logitech Quickcam Messenger which I bought a few years back. I had lost the drivers to this webcam and I was never able to use it again. So when the time came when I needed to use a webcam, I ended up buying a cheap webcam from a local low-cost gadget store. Take note, these events happened when I was still using MS Windows.

Fast forward to today. I'm planning to join a website for technology freelancers and realized I needed a webcam. I unearth my two webcams and begin my attempt to get either of them to work under Linux.

read more

May 27, 2009



Recently I had the chance to work on a few distributed parallel computing solutions for data analytics. One of the interesting choices I've had to make is whether to use the MapReduce computing model (using Hadoop) or whether to come up with an adhoc way of doing it.



At first it wasn't a very easy decision to make the forces I was facing were:

  1. I haven't had experience working with Hadoop before, and the last thing I did with it is the sample program that comes with it. Although I can understand that it is easy to use, there are other operational issues to consider.

  2. Hadoop requires that you put the data into the DFS and while this is convenient to deal with in a program, operationally that's usually not an option. Imagine dumping data from a huge (production) database and then massaging it into a format that you can deal with through Hadoop.
  3. The MapReduce model works as a parallel computing model and is simple enough for the kinds of analytics I intend to do. However, implementing a framework from scratch seemed like a daunting challenge especially since there was already an existing solution in Hadoop.
Given the above thought process, I started looking elsewhere. One of the first things I turned to was the Boost C++ Library and remembered that Boost.MPI is available to be used. Since I was already using Boost in my projects, it seemed a logical choice to stick with it.



I then proceeded to install OpenMPI which Boost.MPI had been tested against. At first I was skeptical whether it would be possible to use it in a data-parallel solution granted that it is a message passing implementation. Then I wrote the code and found out that it was definitely possible to do MapReduce with MPI.



The MapReduce Pattern



Basically there is a simple pattern behind the MapReduce computing model. There are two steps: the Map step and the Reduce step. In between you have shuffles, etc. but the gist is that you need a way to map computation to data, and the results of the individual computations are then reduced to yield the answer. It's basically a divide-and-conquer approach to dealing with data in parallel.



If you were doing this with MPI, you'd start with the 'scatter' function call. In Boost.MPI, you'd have some code like this:



vector<int,int> ranges;

// populate ranges

pair<int,int> range;

scatter(world, ranges, range, 0);



Once you have your ranges scattered, you then deal with the data you get in the individual nodes. Your ranges may represent bounds in the database, maybe a part of a file shared accross the cluster, or just a range of numbers. This is the easy part, now the challenge becomes the reduce part.



With that you need to think a little bit about what kind of data structure you're going to be transmitting from the worker nodes to the root node -- and how to actually "merge" the results to yield what you need in the end. Once you're settled with that, you can then implement the merge (or the reduction step) as a function object. In the following example I implement a merge of maps of counts as a functor:

struct merge_maps {

map operator() (map<int,int> l, map<int,int> const & r) {

l.insert(r.begin(), r.end());

return l;

}

};



namespace boost { namespace mpi {

template <>

struct is_commutative<merge_maps,map<int,int> > : true_ {};

}}

We then use it with the Boost.MPI 'reduce' implementation:

map<int,int> partial_map; // partial from the nodes

map<int,int> final_map; // the "merged" map

reduce(world, partial_map, final_map, merge_maps(), 0);

After this step, you basically have the final results in the 'final_map'.



And that's it! You have an adhoc MapReduce implementation using Boost.MPI!



Of Course...



This isn't really MapReduce, but with all this talk about parallel computing and massively parallel distributed computing you can say that there are many ways of addressing the issue using alternative technologies.



It'd be nice to know how you deal with your parallel distributed computing needs.
May 26, 2009

The problem with my current laptop is most likely the fan. Recently, when the weather here gets really hot the laptop would just suddenly shutdown. On MS Windows, this "sudden death" happens under 3 minutes. In Ubuntu, it happens in 30 minutes. Still, it doesn't leave me happy.

I decided that if it ever shuts down again on me, I'd continue my writing using my netbook. Eventually, the laptop overheats and I take out the netbook. I then find out that even my netbook had a slight problem.

read more

May 25, 2009
  • I removed the Daily Twitter module because it doesn't seem to update on the production site.
  • The reason why I can't configure Scribefire to log in to my blog was because I forgot to SET my blog to show itself to Scribefire.
  • The daily twitter posts remind me to write about other posts. Like how I got my Microdia webcam working on Ubuntu 8.04 LTS.
  • The daily twitter posts also remind me that I should write about the new changes available to the newly Google-acquired FeedBurner.
  • I am LIKING reCaptcha.
08:14:00 AM Trying to get my 0C45:6270 Microdia webcam to work on my laptop.
08:15:00 AM Currently downloading the requirements before I start compiling the webcam driver http://digg.com/u141xB
08:17:00 AM Actually, the other Logitech webcam already works. Just that I like the microdia webcam better because it has lights!
01:01:00 PM Finally got the microdia webcam working. Love it! Will write in a bit.

read more