August 21, 2010
Jan Alonzo : jan
August 21, 2010 09:50 PM

I recently had a first-hand experience of thrashing while in the middle of a product’s release cycle. As much as I’d like to talk about circumstances, it’s best if I’ll just point out ways on how to get out of it.

  1. Focus, focus, and focus on shipping the product.
  2. Do not listen to goals^dreams that doesn’t help with the product shipping on the target release date.
  3. Wake up and face reality.

Focus, focus, and focus

I could’ve done a lot of things to get out my demotivated state, but I thought that the best thing that I can do is to keep on focusing on shipping the product on the release date. Focus by pushing myself to do emotional work and not worry about other things but to ship the product. Focusing on shipping the product is the only way to actually ship the product.

Be deaf to pipe dreams

There were times when I felt that some of my team members are getting way too ahead of themselves. Don’t listen. Don’t even take note of those futuristic (and sometimes, non-realistic) ideas. Those ideas are not 1.0 material so there’s no point bothering myself, or the team, with them. If those ideas are really awesome, or important, they will come back to remind us after we ship 1.0. Until then, we needed to focus on those 1.0 release goals.

Reality

Lastly, it’s difficult to be perfect when you have tight deadlines and a release date looming. There were times when I thought we could’ve written parts of the code a bit better, refactored a bit better, and tested a bit better. I was demotivated for a while that we had hacks here and there and all I could was to add FIXMEs. Shame. But we’re not going to ship it on the date if we kept it pure, if we kept it clean. We had to ship, and unfortunately, we had to live with those technical debts. And that’s just reality.



Filed under: Uncategorized
August 19, 2010
Calen Legaspi : Hate is a Drug
August 19, 2010 11:43 PM
Hate is a drug. It's addictive - it gives you a rush that you don't want to let go. It's a social drug - enjoying it with friends amplifies the rush and prolongs it. And like many drugs, it will alter your thinking, ruin your health, and damage relationships.



Hate is not anger. One can be angry with someone, and yet still love that person. Anger is fine, and often healthy and productive. Hate is borne of contempt, and contempt is borne of pride. One cannot hate someone if one does not feel that that someone is inferior, and one does not feel that someone is inferior without being proud.



When you're angry, let it out, express it. Make it emphasize your words and put energy to your actions. But once it subsides, let it go. Do not let anger open the door for contempt, and fan contempt into hate. Block the entry of contempt by filling the space with love. Again, you can be angry with a person and love a person at the same time. But you cannot love a person and have contempt for a person at the same time. They are mutually exclusive.



(Why am I writing about anger and hate in a blog about technopreneurship? It's because entrepreneurship will probably be the most stressful thing you'll ever do in your life, and if you go into business with your friends or family, it will take its toll on your relationships. All of you will make tough decisions where there are no clear answers, only huge consequences, and someone will inevitably feel wronged.



But decisions need to be made and made quickly, and only time will tell if these decisions were right or wrong. It's fine to be angry at these decisions and it's fine to argue passionately about them in the proper forum, but one must respect another's right to make those decisions, especially in the areas for which they are accountable.



At the end of the day, if you're angry with a coworker or business partner, let it all out in the conference room. Then leave the conference room, shut the door, and leave your anger behind.)

August 11, 2010
Thousands of companies, from Fortune 500s to SMEs, are now rapidly moving to Cloud Computing services, platforms and infrastructure. Also, it's hard to find a major software vendor nowadays that's not positioning at least some of its products as a Cloud Computing technology. What is Cloud Computing and why is it so important?



Could computing is really just a fancy term for utility computing. In other words, applications, platforms or infrastructure are made available from a central service provider, similar to our utility companies for electricity, water and telecommunication. This simple concept has immense implications.



First, cost goes dramatically down since resources and operating costs are shared across more applications and users. Second, reliability and uptime go up since most cloud computing services provide fail-over and redundancy across thousands of servers and even multiple data-centers. Thirdly, cloud computing can provide better performance since calculations can be spread across the resources of multiple servers, and content can be placed on edge severs that are positioned close to the consumers of the content.



Companies, though, are concerned about security, control and vendor-lock-in issues that come with Cloud Computing. Each Cloud Computing provider needs to address these issues in order to reassure clients of reliable service.
August 10, 2010
Jan Alonzo : jan
August 10, 2010 09:21 AM

Publishing a ClickOnce installer in Visual Studio 2008 is a hit-and-miss, and most of the time it’s a miss. It’s either you get build errors due to missing intermediate files, or if it’s successful, the application won’t launch due to a missing application.xaml file. This shouldn’t happen, and there’s not much you, the developer, can do unless you know how VS 2008’s ClickOnce publishing works.

But, there’s a workaround and that is to use MSBuild to generate your installer. On a single project solution, this should be as easy as typing msbuild.exe /target:publish in the top-level solution folder. If you have other projects within the solution that you want to generate a ClickOnce installer of, just go to that folder and use MSBuild to publish.



Filed under: Uncategorized
August 08, 2010
I am running Lucid Lynx 64 bit OS version on my Asus i3 K52J Series laptop. Like everyone else, I like using Skype video/chat as well as Cheese camera for taking pictures and videos. Not until then when I had a problem using it.


I was so disappointed that my camera display was inverted! I tried reading several blogs and posting comments on Ubuntu forum threads online for days and but none of their solutions helped solved my problem. It could have been easily solved if only there was an option to invert my camera on Video4Linux Device Preference. Sadly, there was not! So, I decided to find a way to flip the camera by looking into export options on gtk-v4l(Video4Linux). 



Below are the 2 things I did to solve my problem.


1. Add software source where libv4l-0 can be downloaded and install it by running the commands below on your terminal.

  • echo -e "\n# libv4l PPA\ndeb http://ppa.launchpad.net/libv4l/ppa/ubuntu `lsb_release -c | awk '{print $2}'` main" | sudo tee -a /etc/apt/sources.list
  • sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com C3FFB4AA
  • sudo apt-get update
  • sudo apt-get install libv4l-0
2. Start cheese or skype from your terminal. (Note: The value of 3 on LIBV4LCONTROL_FLAGS flips the image both vertically and horizontally.)
  • export LIBV4LCONTROL_FLAGS=3 && cheese
  • export LIBV4LCONTROL_FLAGS=3 && LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype
Alternatively, you can create a shortcut(custom application launcher) on your menu or on one of your panels. 
  • Download skype and cheese scripts. 
  • Add custom application launcher on panel and point command to respective bash scripts.
  • Click icon and start using the applications normally!
If your having problem on your sound device on Skype, take a look on my previous article on fixing sound device. Alright then, thats all I did folks! Hope this helps. Have a good one.




I just got a new replacement company laptop for my 2 year acer dual core laptop. I now have Asus i3 K52J Series Laptop. Like everyone else using Lucid Lynx on their Asus. I had a problem with my sound and audio device and drivers.


Some of my problems were:
  • Speakers do not mute when headphones are plugged in.
  • HDMI sound out not working.
  • External microphone not working.
Thanks to this Ubuntu Forums Thread where a fix is posted though incomplete in my case. So, I decided to create one of my own and hope to help someone else looking for a solution online. The steps below are the things I did fixing this problem.

  • Download linuxtant alsa driver at www.linuxant.com. The file you need is alsa-driver-linuxant_1.0.23.0_all.deb.zip.
  • After downloading, extract the file and install by using gdebi-gtk(eg. gdebi-gtk alsa-driver-linuxant_1.0.23.0_all.deb). 
  • Open a terminal and run command "$alsamixer"
  • Unmute S/PDIF (you can do that pressing "m")
  • Below is a screenshot of my alsamixer with a headset attached to audio jacks.


Alright then, your set and ready... Hope this article helps! Have a good one...
August 05, 2010
Jan Alonzo : jan
August 05, 2010 09:57 AM

There were a few times when I wanted to follow a specific tweet in Twitter because I’m interested in what other people will say. For example, if Brad asks if there are restaurants nearby that serve Laksa, I would be interested in what his followers will recommend as well because, I too, like Laksa[0].

This feature has more value to me. It’s like Quora but for tweets.

[0] Yes, you can use geolocation services but I hope you get my point.



Filed under: Uncategorized
July 23, 2010
Dean Berris : deanberris
July 23, 2010 05:44 PM



So one of the cool news items that came about in the Boost mailing list is the news that Boost.Phoenix’s version 3 ported to use Boost.Proto. Just quickly, Boost.Proto is a compile-time expression templates compilation/evaluation engine written in C++ to allow for creating domain-specific embedded languages within C++. Don’t worry if you don’t understand what that means. Boost.Phoenix on the other hand is a functional programming domain-specific embedded language that allows for creating function objects using  as-close-to-C++ syntax to represent them. Don’t worry if you didn’t understand what that means either. Now if you think about it a little, the implications of being able to create function objects (in C++ code) on the fly and a compiler infrastructure for these on the fly structures during the compile phase (a meta-compiler?) means you can then manipulate code like data. Lisp macros much?
What is important though are the following tidbits:
  1. With Boost.Phoenix you can create lazy function objects on the fly in C++ (popularly known as lambda’s and/or closures). This means you can then treat Boost.Phoenix-generated function objects as, well, first class citizens in C++ because they are, well, objects.
  2. With Boost.Proto you have a compiler infrastructure that allows you to convert expression templates into actual executable objects, enforce your DSEL’s grammar/semantics while you’re at it, and then have them evaluated at run-time. The run-time part isn’t very exciting, but the fact that you can actually perform transformations on expression template trees at compile time to, well, transform these trees into different trees or wire up different objects together, is really interesting.
  3. One of the big things that Lisp boasts of is a way to deal with Lisp CODE as DATA and then perform transformations on the code at compile-time using Lisp macros. This means now that Boost.Phoenix is a C++ function object-building DSEL in C++ and Boost.Proto allows you to transform the expression templates into whatever form you like (much like how macros work in Lisp), then C++ has effectively implemented an infrastructure that allows programmers to gain the power of Lisp macros in C++ without having to write a Lisp interpreter — all enforced by the C++ compiler to boot.
This didn’t seem like great news to me until I actually thought about it a little and found that indeed it would really be possible to deal with C++ expression templates in Boost.Proto much like how Lisp programmers would deal with Lisp code in Lisp using macros.
When I get the time I will definitely try to squeeze in an example. But for now let your imagination run wild with the implications of these possibilities.


Filed under: boost, cool stuff, functional, library, templates
July 21, 2010
Jan Alonzo : jan
July 21, 2010 10:57 AM
Facebook Lawyer `Unsure’ Whether Zuckerberg Signed 84% Ownership Contract – Bloomberg

http://www.bloomberg.com/news/2010-07-20/facebook-lawyer-unsure-whether-founder-mark-zuckerberg-signed-contract.html

(Sent from Flipboard)


Filed under: Uncategorized
July 08, 2010
The goal is to use one xml configuration file which is Spring's applicationContext.xml and load it only once for the duration of the application. Using Embedded jetty as my lightweight server to run my Spring MVC application, I must tell my dispatcher servlets to use spring applicationContext.xml which already been loaded as its parent context. That way, dispatcher servlet will be able to  referenced bean configured on springs application context.


To do that, create a class that extends org.mortbay.jetty.Server and implement org.springframework.context.ApplicationContextAware. This is pretty straight forward, we extend jetty server so we can configure its parent context. We implemented spring application context aware so whenever spring successfully loaded applicatContext.xml bean configuration, it gets the current application context. We then configure it as parent context of servlets.



Code on ServerConfigurer.java:
package com.sample.config;



import org.mortbay.jetty.Server;

import org.mortbay.jetty.servlet.ServletHandler;

import org.mortbay.jetty.webapp.WebAppContext;

import org.springframework.beans.BeansException;

import org.springframework.context.ApplicationContext;

import org.springframework.context.ApplicationContextAware;

import org.springframework.web.context.WebApplicationContext;

import org.springframework.web.context.support.GenericWebApplicationContext;



public class ServerConfigurer

    extends Server

    implements ApplicationContextAware

{

    private String _webAppDir = null;

    private String _contextPath = null;

    private ServletHandler _servletHandler = null;

    private static ApplicationContext _applicationContext = null;



    public String getContextPath() {

        return _contextPath;

    }

    public ServletHandler getServletHandler() {

        return _servletHandler;

    }

    public String getWebAppDir() {

        return _webAppDir;

    }

    /**

     * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)

     */

    @Override

    public void setApplicationContext(ApplicationContext applicationContext)

        throws BeansException

    {

        _applicationContext = applicationContext;

    }

    public void setContextPath(String contextPath) {

        _contextPath = contextPath;

    }

    public void setServletHandler(ServletHandler servletHandler) {

        _servletHandler = servletHandler;

    }

    public void setWebAppDir(String webAppDir) {

        _webAppDir = webAppDir;

    }



    @Override

    protected void doStart()

        throws Exception

    {

        final WebAppContext webAppContext = new WebAppContext(getServer(), _webAppDir, _contextPath);

        final GenericWebApplicationContext webApplicationContext = new GenericWebApplicationContext();

        webApplicationContext.setServletContext(webAppContext.getServletContext());

        webApplicationContext.setParent(_applicationContext);

 
webAppContext.getServletContext().setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, webApplicationContext);

        webApplicationContext.refresh();

        webAppContext.setServletHandler(_servletHandler);

        addHandler(webAppContext);

        super.doStart();


    }

}


Text on bold note: Those are the pieces of code that basically are the most important in the server configurer. The setApplicationContext() method is the one that configures that gets the application context loaded by spring. The method doStart() is the one that does the story telling to web app that a current context has been loaded and it is the context should be used. 


Code on applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://www.springframework.org/schema/beans

                http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" >





    <!-- more beans configured -->

    <bean name="webServer" class="point to your server configurer java file" init-method="start">   

        <property name="connectors">

            <list>

                <bean class="org.mortbay.jetty.nio.SelectChannelConnector">

                    <property name="host" value="${jetty.host}"/>

                    <property name="port" value="${jetty.port}"/>

                </bean>

            </list>

        </property>



        <property name="webAppDir" value="${jetty.webApp.dir}"/>

        <property name="contextPath" value="${jetty.context.Path}"/>

       

        <property name="servletHandler">

            <bean class="org.mortbay.jetty.servlet.ServletHandler">

                <property name="servlets">

                    <list>

                        <bean class="org.mortbay.jetty.servlet.ServletHolder">

                            <property name="name" value="dispatcher" />

                            <property name="servlet">

                                <bean class="org.springframework.web.servlet.DispatcherServlet" />

                            </property>

                        </bean>

                    </list>

                </property>

                <property name="servletMappings">

                    <list>

                        <bean class="org.mortbay.jetty.servlet.ServletMapping">

                            <property name="servletName" value="dispatcher" />

                            <property name="pathSpec" value="*.htm" />

                        </bean>

                    </list>

                </property>

            </bean>

        </property>



        <property name="handlers">

            <list>

                <!-- log handler -->

                <bean class="org.mortbay.jetty.handler.RequestLogHandler">

                    <property name="requestLog">

                        <bean class="org.mortbay.jetty.NCSARequestLog">

                            <property name="append" value="true"/>

                            <property name="filename" value="${http.log.dir}/access.log.yyyy_mm_dd"/>

                            <property name="extended" value="true"/>

                            <property name="retainDays" value="999"/>

                            <property name="filenameDateFormat" value="yyyy-MM-dd"/>

                        </bean>

                    </property>

                </bean>

            </list>

        </property>

    </bean>

               

</beans>


That xml file comprise server configuration of your jetty server pointing dispatcher servlet use  Spring's application context. Your next step is run your application the way you want.

 example:

        _applicationContext = new ClassPathXmlApplicationContext(_resourceLocations);

        _applicationContext.start();




I also did another article related to Spring MVC/IOC-DI and Embedded Jetty utilizing applicationContext .xml of Spring. You might be interested running and configuring jetty through java code and not from applicationContext.xml.


Hope this helps! For suggestion, please feel free to leave your comments.
July 05, 2010
We developed a race-management system for Coach Rio, involving RFIDs and iPads. :-) See the article here.



IMG_3586



IMG_3592
June 10, 2010
Jan Alonzo : jan
June 10, 2010 02:38 PM
Watching the WWDC keynote made me think why it’s more interesting than the Android Google I/O keynote: hardware. And this is something I hope Google will introduce in I/O 2011 – showcase handsets or introduce handset vendors to speak about future handsets in the pipeline that will run a future version of Android, and introduce the important features of both hardware and software. It’s hard to imagine how Froyo (Android 2.2) will look like on a future handset (the demos seem to be using N1 most of the time). It’s also difficult to compare iPhone 4 against the handsets used during the I/O keynote, because it’s obvious which handset is sexier/shinier.

Posted via email from metahack



Filed under: Uncategorized
June 04, 2010
Jan Alonzo : jan
June 04, 2010 06:33 AM
“Chuck Norris doesn’t bug hunt as that signifies a probability of failure, he goes bug killing.”

– Hudson – Chuck Norris plugin

Posted via email from metahack



Filed under: Uncategorized
May 30, 2010
The goal on this tutorial is to be able to format a value on a properties file given its parameter or arguments. It is best describe as passing value as a parameter and inserting those values on the string retrieved from the properties file.


To better understand what I'm doing, read and understand my example code below.


Property File Sample
message.welcome= Welcome {0} to {1}!

message.thank= Thank you for you visit {0}.
Java Code using  ResourceBundle and MessageFormat
ResourceBundle resBundle = new ResourceBundle("path to property file");

String welcomeText=resBundle.getString("message.welcome");

MessageFormat msgFormatter = new MessageFormat(welcomeText);



// Create the dynamic args you want to replace

Object[] messageArguments = {"Techie boy","Philippines"}; 



String finalText= msgFormatter.format(messageArguments);


The finalText will result to "Welcome Techie boy to Philippines!"
May 26, 2010


I was trying to configure embedded jetty in a spring application that implements MVC(Model View Controller). I want to utilize single spring applicationContext xml file for IoC(Inversion of Control) and DI(Dependency Injection) on dispatcher servlets.



The goal is to be able to use or reference beans configured/located on already been loaded spring application context. Read and understand my resolution below.



This is what my main method look like:
LOG.info("Application starting");

_applicationContext = new ClassPathXmlApplicationContext(_resourceLocations);



_webServer = new Server();

SelectChannelConnector connector = new SelectChannelConnector();

connector.setHost("localhost");

connector.setPort(8080);

_webServer.addConnector(connector);



WebAppContext webAppContext = new WebAppContext(_webServer, "path to web app folder", "/");



GenericWebApplicationContext webApplicationContext = new GenericWebApplicationContext();

webApplicationContext.setServletContext(webAppContext.getServletContext());

webApplicationContext.setParent(_applicationContext);



webAppContext.getServletContext().setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, webApplicationContext);

webApplicationContext.refresh();



ServletHandler servletHandler = new ServletHandler();



ServletHolder servletHolder = new ServletHolder(new DispatcherServlet());

servletHolder.setName("dispatcher");

servletHandler.addServlet(servletHolder);



ServletMapping servletMapping = new ServletMapping();

servletMapping.setServletName(servletHolder.getName());

servletMapping.setPathSpec("*.htm");

servletHandler.addServletMapping(servletMapping);



webAppContext.setServletHandler(servletHandler);

_webServer.addHandler(webAppContext);



RequestLogHandler logHandler = new RequestLogHandler();

NCSARequestLog ncsaLog = new NCSARequestLog();

ncsaLog.setExtended(true);

ncsaLog.setFilename("logs/jetty-yyyy_mm_dd.log");

logHandler.setRequestLog(ncsaLog);

_webServer.addHandler(logHandler);



LOG.info("Starting main application context");

_applicationContext.start();



LOG.info("Starting Jetty Server");



try {

_webServer.start();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}



LOG.info("Application started");

return null;



 The idea is that DispatcherServlet's context is child context of  GenericWebApplicationContext which in turn is a child of ClassPathXmlApplicationContext. Explicitly invoking setParent() gives you the access to all beans from the web application context.


Hope this helps. Feel free to leave your comment or suggestions.
May 24, 2010
Dean Berris : deanberris
May 24, 2010 05:11 AM



Now I’m back in the Philippines and an update has been long overdue. The week of May 9-14 was spent with much enthusiasm and enjoyment meeting with and getting to know the other names in the Boost C++ Library developers mailing list. The community is alive, well, and growing — lots of first time attendees and veterans of the C++ scene. This post is just about a quick update on the cool things and the goings on about BoostCon 2010.

Day 0

Arriving at Aspen, Colorado in time for the May 9th registration and informal get together marks Day 0 of BoostCon 2010. Lots of familiar names and not so much familiar faces. The good thing about seeing names and associating faces with them is that it makes the statement “I know <insert person’s name here>” more believable. Just sending emails back and forth is one thing, but there is definitely something else that goes on when you get to meet in person.

Day 0 was uneventful except for meeting for the first time the names and the people behind the conversations that happen typically in the mailing lists.

Day 1

There are two tracks and day 1 was filled with very interesting presentations about a myriad of topics. The list of talks I attended is below:

  • Clang: An Open-Source C++ Compiler Library” by Doug Gregor — a high level view on what Clang is and why it’s worth watching and supporting. It’s a very interesting talk about the possible future(s) of C++ programming and language evolution as an alternative to GCC.
  • Generic Programming And the Boost Graph Library” by Jeremy Siek — a high level introduction to the generic programming practice which also led to good discussion around concepts and why they matter; the discussion on Boost.Graph was a bonus with very relevant and interesting applications of the myriad of algorithms available in the library.
  • A Framework for RAD Spirit” by Hartmut Kaiser and Joel De Guzman — a very nice look into the practical (and wacky) applications of Boost.Spirit to do many different things that you otherwise would only dream about doing: Scheme compiler anyone?
  • Is Boost Broken?” by Robert Ramey — a thought provoking and controversial (by design I think) presentation on the problems with the development process from Robert’s personal observations and perspective.

My general impression on the first day of BoostCon is that it’s one of those “this is really happening” moments. I got to meet and talk with people I’ve always wanted to meet, some of whom I already worked with in my own libraries. Day 1 set the tone for the next few days, where the sessions are focused and the questions are very good with answers that prove to be better.

Day 2

This day was marked by the first time I’ve ever encountered snow in my life! So this is definitely one for keeps as far as I am concerned. The list of sessions I attended are below too:

  • Data Structure Visualizers in Visual Studio 2010” by Stephan Lavavej — an interesting hacker’s eye view of how to extend the data structure visualizers in Visual Studio 2010, something that has opened my eyes to giving more value to the IDE’s that people use to get things done in C++.
  • C++ Tool-Builders Workshop” by Doug Gregor — an afternoon-long session on using Clang to do some funky things with a C++ compiler and extending the compiler to add your own diagnostics. It’s a very interesting look into writing tools that deal with C++ programs using a cool set of tools in Clang and Clang itself. This is where I wished I had a Mac that was powerful enough to build Clang so that I can go hack on it too. I’m extending thanks to Marshall Clow for letting me watch him make the changes during the workshop.
  • Ryppl – A New Platform for Boost Development” by Dave Abrahams — a sneak peak into a proposed new way of developing Boost using Git, CMake, and Pip. It’s opened up the discussion again on the Boost C++ Library development process and the tools involved. Much discussion went on around the topic and I think a fresh new look at how to move forward was encouraged in Dave’s presentation.

In this day I got to walk from the Aspen Meadows Resort to the Aspen Center for Physics at night alone while snow was pouring down from the sky. Definitely an experience that I will not soon forget. The main takeaway for me in this day is the importance of tools in the development of C++ applications and libraries. Without the great tools C++ developers have access too, it will be hard to imagine to get anything substantial done with the language.

I am looking forward though to a presentation on having better cross-platform C++ debuggers that understand the idiosyncrasies of the C++ programming language better — like exceptions, static initialization, and non-malloc allocators. Because C debuggers can be very C-centric, tacking on a C++ debugger on top might not be the best approach. Maybe clang would go into that too, but that’s me wishing aloud.

Day 3

This day I got a chance to go swimming at the Aspen Meadows Resort Health Center which had a 25m outdoor heated pool. It was perfect to let me acclimatize to the altitude and to get my blood pumping. The lineup of talks I attended this day is short but definitely worth the wait for me:

  • An Asio Based Flash XML Server” by Michael Caisse — a look at how to use Boost.Asio to make asynchronous servers combined with Boost.Thread and other things.
  • The Meta State Machine Library V2” by Christophe Henry — a presentation on the (excellent) Boost.MSM library that I cannot wait to start using as soon as it gets integrated into the Boost SVN trunk (which I hear should be anytime now).

There was also a picnic at night where the excellent cooking of some of the attendees made for a very nice way to end the night and have a good day the next day.

Day 4

This is the day I gave a presentation titled “Techniques in Flexible Header-Only C++ Network Library Implementations” which went into the details of the internals of cpp-netlib. I also attended other talks in the day which I have listed down below:

  • A MIME library for Boost” by Marshall Clow — a library that is hosted by cpp-netlib too and is being developed to be made part of the Boost C++ Library as well.
  • Practical DSEL Design with Proto” by Eric Niebler — a look at what the new stuff coming in Proto would be and how to take advantage of them. This was a great look at how I can use Boost.Proto to implement some of the libraries I’ve been meaning to do but got turned off with the prospect of having to do expression templates myself. Now that Boost.Proto would make my life easier, I just might make these library ideas into realities soon enough.

Day 4 was really a good day for me because I got a lot of interest from the participants who were looking forward to some of the promised changes coming to cpp-netlib and the eventual submission for Boost inclusion — which I’m targeting to be the end of this year. Hopefully there will be more for me to talk about in BoostCon 2011 about cpp-netlib.

Day 5

The last day of the conference included a talk about “Cross-platform development with Qt and Boost” by Joao Abecasis which I also attended to find out more about GUI programming with Qt. Because of that talk I decided I would take a look at doing some GUI programming with Qt and seeing whether I can expand my horizons to develop useful user-oriented applications too aside from developing developer-oriented tools. The final day also hosted a panel about the future of Boost and I would write another post about what I thought the future of Boost should be like, as well as the discussion that sticks to my mind after that day.

All in all BoostCon 2010 is a success if I may say so myself and I definitely look forward to BoostCon 2011 for more of the cool C++ community talks.

Update: Due to insistent public demand (and some free time) I’ve updated the links to the sessions. Thanks for the patience guys!



Filed under: boost, community, insights, thoughts, updates
May 22, 2010
I met an svn eclipse error while attempting to committing to svn repository. I was thinking I might aswell share how I resolve this problem to everyone.
SVN error on Eclipse: org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir

org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir

svn: Working copy ‘D:\htdocs_svn\sites\all\modules’ locked

org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir

svn: Working copy ‘D:\htdocs_svn\sites\all\modules’ locked
To be able to get rid of it, I did the following:
1. Right click on project folder
2. Goto Team and click Cleanup
3. Try to commit again


In my understanding, it happens when there is a pending session  which already locked the working directory copy. So, to get rid of it.. You'll need to remove the old session by deleting them through svn cleanup.


Good luck!
Paul Labis : I'm still breathing
May 22, 2010 08:11 AM
It's been a while since my last post! I had been very busy lately with my work... I miss writing articles. After weeks of hardcore work, I've learn a lot about spring and jetty and I would say, its worth working hard.


I have this task of setting up a project for development. Its a web application for testing. I've learned embedding jetty in a spring application implementing MVC(Model View Controller) design pattern. Other than that, it builds character. Patience really was important.



Anyway, not good sharing my story. Anyway, I can't wait to share my learnings. Later I'll write about those things I've learned..Just the basics..
We're now an official Google Apps Reseller!  Google approached us last year to represent them for Google Apps Premier Edition here in the Philippines.  We worked out the details with them for a while but since it fits in with our current skills in developing applications in Google App Engine and Android we decided to take this on.

The timing is perfect since Microsoft is currently pushing its 2010 versions of its software like Microsoft Exchange 2010 and Microsoft Sharepoint 2010.  Google Apps Premier provides much cheaper alternative to these Microsoft products, plus a lot more features, and a heck of a lot less administrative headaches.  

If your organization is looking at updating its email, document-management or collaboration systems, talk to us about the option of Google Apps.  

Check out this video to get an Overview of Google Apps for Business. 

May 20, 2010
Jan Alonzo : jan
May 20, 2010 10:16 PM

I use DocProject for automated documentation builds of one of the projects I’m currently involved in. DP takes away much of the manual doc-generation tasks as it provides a VS (Visual Studio) project for the documentation project and is integrated in the project’s solution. This allowed me to incorporate the documentation build as part of project build (using msbuild), which is already integrated in my Hudson deployment

The doc build is not as seamless as it should be and I’ll be highlighting the additional tasks required to build the doc project so you don’t spend half of your day working out the build failures for the last few hours like I did :)

Environment Variables

Before you push your changes, make sure you add the environment variables DocProjectBuildPath and DocProjectPath in your project’s configuration in Hudson. The value of these two variables can be found in Window’s System Properties. It’s strange that this wasn’t already in the doc project’s documentation. Without these two variables, msbuild will look for the target files in your C:\.

Leading dot (.) 

I started Hudson with a default configuration – with HUDSON_HOME pointing to ~/.hudson. That shouldn’t be a problem but one of the build steps (there are 12 steps!) to build the doc project involved generating a .chm file for Help 1.x. Who would’ve thought that you’re not allowed to have dots (.) in front of your folders? Moving my HUDSON_HOME to something more sane fixed it for me. 

Posted via web from .plan



Filed under: Uncategorized