Brian McQuay

+menu-


  • Category Archives Research
  • Instead of searching for water on other planets, why not search for space debris?

    I came across this image today and it made me think of how scientists have been searching for water around distant plants. If humans have created this much space debris, its reasonable to assume another developing civilization on a distant planet would also have generated this amount of space debris. Perhaps instead of a quest for water on other planets, a more significant find would actually be the discovery of space debris from a civilization capable of space flight. If there is enough debris and operational satellites, they collectively would likely give off a unique photon signature similar to how scientists are detecting water from the refraction of light through the atmospheres of distant worlds. If we could refine this technique enough we might even be able to detect the presence of synthetic materials orbiting the atmospheres of distant planets. Enough debris would surround the planet and refract light in a way that might be unique to synthetic materials. Someday…


  • New Years Resolution: Build my first robot

    I’ve been all over the place lately on deciding what I should do and commit my time to. For the past 8 or so years, I’ve been building Ruby on Rails applications and though I’m pretty good at it I don’t find it intellectually challenging. I keep coming back to the idea of going back to school for my PhD. I’m also going back and forth on scaling Onomojo back up and focusing on development of Webster’s Classroom. I’ve decided to keep doing what I’m doing right now but start to do my own robotics research in my spare time. I bought a Microsoft Kinect for the visual sensor and I’m working on gathering the rest of the parts I’ll need to put together my first robot. It’ll be crude no doubt but the process will teach me the basics that’ll get me started. Above is a screencast of the Kinect connected to my Mac thanks to the OpenKinect project.


  • Recent developments

    Its been quite some time since I posted anything so I feel a necessity to publish something. I’ve started many posts since the last one but I never really liked how they turned out so I discarded them. I’ve learned plenty of new things which I tried to share but never had enough time to devote towards a solid post about any of it. Considering that time seems to be always something I’m lacking, I will just post a random rant about what I’ve been up to.

    I’ve started working on a Facebook app for a client called Redflag. Its an app that lets parents monitor their child’s Facebook accounts for potential bad friends. Its a fairly complex app written in both node.js and Ruby on Rails. Node.js was something I hadn’t worked with before this project but I really like it. Its a little confusing thinking in terms of asynchronous execution of code in our app because there’s a ton going on behind the scenes and its a little difficult to visualize how thing all tie back together through callbacks. The complexity of our node.js backend makes it extremely difficult to test well but we do have a small but growing suite of jasmine tests for it.

    I’ve been continuing to work with San Francisco Soup Company on their kitchen management application and have hired another developer, Jose, to help out. He’s an excellent developer and writes some really solid code. We’ve migrated the site to Rackspace’s cloud and I’m really liking Rackspace over Amazon’s EC2 these days. Their web interface is much more usable and I can actually get ahold of someone when there’s a support issue. The server seems to run much faster than similar EC2 instances and is cheaper so I’m pretty happy with Rackspace so far. We’ve been working on refactoring the code and building a more comprehensive test suite which is coming along extremely well.

    More interestingly, I’ve started partnering with different businesses to expand my development and design resources. These additional resources will allow me to expand Onomojo in new directions and produce better results than I could just by myself. My focus is on partnering with companies that have solid development processes or are at least adaptable enough to conform to my own methodologies and best practices. By partnering primarily with businesses instead of individual talent, I will be able to provide more consistant results for my clients without the HR headache that comes with managing a team of remote developers. I have an agressive growth goal for 2012 and with the partnerships I’ve been building I believe Onomojo is in a good position to realize those goals.

    I’ve also made great progress towards getting back into graduate school. I am working on a plan that will let me continue being CEO of Onomojo but allow me the flexibility to get my PhD. I’ve retaken the GRE and got a great score. I’m still working on narrowing down my school choices and drafting my applications. I don’t expect to apply anytime soon though. I need to have my ducks in a row before I jump back into academia. I won’t be applying until next year at the soonest with a starting date of 1.5 to 2 years from now.


  • Review of “How to Grow a Mind: Statistics, Structure and Abstraction”

    This was an amazing lecture by Josh Tenenbaum. He presents motivation for determining the type of data structure for representing knowledge without knowing how the knowledge is best organized a priori. He presents the ways children learn and how they organize knowledge at an early age starting at a very simple structure and building up to a more accurate model. He points out that current methods seem to either take pre-existing knowledge about the best data structure to use or they simply make the data fit the predefined data structure. He presents many examples of current research using this general concept and finally takes some questions with regard to the speech. This lecture is extremely upbeat and motivating for me to research more in depth the examples presented in the lecture.

    How to Grow a Mind: Statistics, Structure and Abstraction. Josh Tenenbaum


  • Review of “Latent Factor Models for Relational Arrays and Network Data”

    This was an excellent video lecture on latent factor models by Peter Hoff. The speaker goes over various other models that may fit social network data. He presents a comparison of the models to a sample data set of a highschool. The comparisons show that the latent factor model is able to fit characteristics of real data, such as the total number of triangle relationships in the network or high correlation between connections of students with the same race, better than the other models.

    In the second part of the lecture he gives a few examples and shows the performance of each of the three presented models on the examples. Next he shows mathematically why latent factor models are more flexible and much more general than the other two models. He references some software he’s written to aid in latent factor modeling of relational data on his website. He provides a few more examples and in particular data in relational arrays rather than just social network data. He goes into some depth describing how relational arrays can fit into latent factor models as well.

    This was was an excellent introduction to latent factor models albeit a bit heavy with statistics for most people. It gives a really good coverage of the three other statistical models presented and how they compare to the latent factor model.

    Latent Factor Models for Relational Arrays and Network Data. Peter Hoff


  • Review of “On Three-Layer Architectures”

    The author goes into a detailed history of robotics control systems and in particular how “Subsumption”, or SSS, revolutionized the field which was previously dominated by sense-plan-act control systems (SPA). Next the point out the major flaw in Subsumption was the complexity at higher layers. Higher layers depended on lower layers and therefore were increasingly complex. The evolution from there was the three-layer architecture, or 3T, which take the concept of states and breaks it into three layers: stateless, memories of past state, and predictions of future state. The three layers correlate to the three-layers of the architecture: controller, sequencer, and deliberator. Each component runs independently in a multi-thread environment.

    The author then go into more detail on each component and the specific constraints the three-layers architecture has on each component. They use two specific examples to aid the discussion: RAPs and ATLANTIS.

    Next the author provides a case study of a robot called Alfred and describe the architecture it used for a robotics competition. The paper describes each of Alfred’s the three components in depth and highlights how it conforms to the three-layered architecture it previously described. In conclusion, the author reminds us that three-layered architecture isn’t concocted from theoretical considerations but rather an evolution of robotic architecture over time based on empirical observation.

    Overall this paper was a great overview of the evolution of robotic software architecture. The paper was published in 1998 and it leads me to many questions about the progress made since that time. Given that three-layered architecture was used in the DARPA Grand Challenge contest winner, I’m curious what type of extensions and advancements have been made to the core three-layered constructs presented in this paper.

    Gat, E.; Others, (1998). “On three-layer architectures”. Artificial Intelligence and Mobile Robots: 195–210. Retrieved 2008-04-06.


  • Review of “Winning the DARPA Grand Challenge with an AI Robot”

    This paper was detailing the approach taken by the winning team of the DARPA Grand Challenge, a robotics competition to build an autonomous vehicle to drive over 100 miles across desert terrain.

    The architecture used in was of interest to me. Specifically the “three-layered architecture” which “pipelines data through a series of layers, transforming sensor data into internal models, abstract plans, and concrete robot controls.” I intend to research three-layered architecture in more depth to better understand the specifics and the motivation for this particular architecture.

    The authors make extensive use of something called an unscented Kalman filter (UKF) for determining drivable areas from laser and other data. I’m not familiar with this and need to do more research to better understand it. They use the UKF to build a model of the environment and they utilize a Markov model to model the noise in the UKF model over time. The Markov model degrades over time due to the increased potential of error drift from introduced false positives. To fix the degradation over time they used a “discriminative machine learning algorithm”.

    The lasers used had a limited range and therefore safe operating speeds were limited to 25mph. To extend the range of the model on drivable space, a vision system was incorporated into the existing model by adding in the difference in gradient surface color. This effectively extends the drivable range to a point where the safe drivable mph can be increased to 35mph from 25mph.

    They also created a velocity control system that detected shocks created from the terrain. This allowed for slow acceleration to maximum velocity as well as a reduction in velocity during turns and other scenarios requiring it. They used a human driver to train the acceleration parameters in order to mimic human velocity control during driving. They highlight the adaptive velocity control as essential to their victory over other competitors especially since they were the only team to have such a system.

    Winning the DARPA Grand Challenge with an AI Robot. Michael Montemerlo , Sebastian Thrun , Hendrik Dahlkamp , David Stavens. In Proceedings of the AAAI National Conference on Artificial Intelligence


  • Review of “Matrix Factorization Techniques for Recommender Systems”

    The authors present their research on matrix factorization with respect to their winning entry in the Netflix Prize for a recommender system.

    One point of interest or clarification the authors made on my understanding of matrix factorization was that extrapolating characteristics from patterns within a dataset is called “latent factor modeling”. Latent factor modeling is an approach to infer patterns from a database that define characteristics of the data. Similarly, a human could manually define characteristics of a movie which could be of importance: actors, genre, length, theme, etc. Latent factor modeling is an algorithmic approach that infers those characteristics from patterns in the data without knowing precisely what each characteristic is. In this case, latent factor model builds a matrix of users and items (movies) with each point being a vector of characteristics.

    Matrix factorization allows for a recommendation to be made by taking a sparse matrix of ratings and taking the dot product with the latent factor model. Specifically, matrix factorization is the factorization of the latent factor model of n users and m items with a sparse matrix of ratings each user has made on some items. The authors also present various extensions that helped them win including bias, additional input source, temporal dynamics, and confidence levels.

    The interesting part of this paper at this point for me is the “latent factor modeling”. I intend to research this a bit more to understand how the model is created.

    Matrix Factorization Techniques for Recommender Systems