Search
The Way of the Software Engineer

M300

Posted by admin on July 14th, 2011

So, the new company I’m working for just released this product called the M300. I don’t work on this team, but they’re a very smart group of people. It does some neat network scanning stuff to detect machines, and there’s an agent that lets you keep track of and install software on different assets. The UI is slick, and the unit itself is quite fetching. It doesn’t require a fan so it can sit dead silent under your desk. Some of the smaller companies I’ve worked for could totally have used one of these. These videos say it all.

Application Configuration for Node.js

Posted by admin on April 27th, 2011

I’ve seen a few blog posts on reading in config files to node.js apps. This can be done with an eval() (which is potentially dangerous) or by reading in a file and JSON.parse()-ing it. I wanted a solution that would work on both a node app, and could also be called as JSONP in the client portion of my app, so I added a non-destructive module block to the bottom of the config file. If module.exports isn’t available, we assume we’re not running in node and call a ‘callback’ function that can be handled by like JSONP.
Read the rest of this entry »

Screen

Posted by admin on March 22nd, 2011

If you’re not aware, screen is a fantastic way to extend the usefulness of your terminal windows. I run a screen session on my laptop and one on every machine I SSH in to frequently. I just scp this file to any host I’m going to be working with for an extended time. “How to use screen” is a common enough blog post, so I’ll just skip to my .screenrc :

startup_message off
term screen
defscrollback 10000
escape ^Oo
vbell off
bind h prev
bind C hardcopy
hardstatus off
bell_msg ""
shell -$SHELL

Read the rest of this entry »

Static Sites with Dynamic Content

Posted by admin on March 15th, 2011

In my last post, I was showing how a proxy can be used to circumvent XSS rules and said there are some interesting applications. Well, it’s time I posted one. Take a look at this very simple site (Please ignore the messy CSS, this is just a prototype) : Twitter Search

This is being served statically from Nginx without writing any server-side logic. Read the rest of this entry »

Nginx Bypassing Single-Origin Policy

Posted by admin on March 11th, 2011

Anyone building a web application knows that XmlHttpRequest can only be made to the same domain and port that the page was loaded from. This is known as the ‘single origin’ policy for web browsers. Bypassing this restriction is known as Cross-Site Scripting or XSS. While there are some very real security reasons for only allowing a web page to access resources from its own domain and port, there are some really cool things that can be done when bypassing this restriction.
Read the rest of this entry »

Simulating Bezier Curves with CSS

Posted by admin on November 18th, 2010

I recently had to make a visual editor that included lines between different boxes to define the ‘flow’ of a process (think UML). Rendering something like this in a web page is sometime tricky when you want the line to look fluid between it’s two connecting points. What I wanted was something like Bezier curves. I built a series of prototypes to figure out which one would meet the needs of this project best. I’ll walk though my options and conclusions in the next few paragraphs, but this was the result:


Drag the boxes around to see the effect.

Read the rest of this entry »

Mayor / Celebrity Programming Puzzle

Posted by admin on November 10th, 2010

Also known as the “mayor problem” or “mayor puzzle”, this is a directed graph puzzle where a group of people have single directed relationships. That is person A knows person B, but person B may or may not know person A. The puzzle is to find a person in this group that everyone knows, but he only knows himself. To phrase it differently, this breaks down to two conditions:
1) person C must be known by everyone, and
2) person C must know no one but himself.

The obvious solution is to compare every member to every other member and that would give you a solution that runs in O(n^2). If we’re given a function called ‘Knows’ that accepts two arguments (and returns in O(1)), we can write a PHP function like this:
Read the rest of this entry »

Applying JOONE to Real-World Data

Posted by admin on June 6th, 2009

JOONE is a toolset used to build and run neural networks in Java.  To demonstrate its capability, I’ve built a simple supervised network and trained it on a common data set used for other machine learning projects.  By using a common data set, comparisons can be made between the different approaches.

The data set was published by the Audubon Society Field Guide and describes the characteristics of mushrooms found in North America.  Read the rest of this entry »

AvantGo is AvantGone

Posted by admin on June 2nd, 2009

AvantGo, the once ubiquitous application for all PDAs, is shutting down its web sync service.  Users of the service have just begun to see banners stating, “Starting June 30, Avantgo will no longer offer mobile web content.” With modern wireless networks and browsers built in to new smartphones, the on device browser just couldn’t meet the demands of modern consumers.  While there are no direct competitors to this service (in the consumer market) there are a few companies that meet the needs of some consumers.  AvantGo is suggesting mysnacs.com as an alternative.  Some users have received this message:

After June 30, 2009, AvantGo will no longer be providing mobile Web content for sync or online access, and you will not be able to access or update your AvantGo content or account.  Your account information will continue to be protected by our privacy policy, and we plan to delete any personally identifiable information you’ve provided (e.g., your e-mail address) as soon as reasonably possible.

If you are an 8MB account subscriber you may be entitled to a refund for a portion of your subscription fees that are unused. To request a refund, please click here and submit the refund request form. You will need to reference your AvantGo User ID (included in this email).

To continue receiving news and information from your favorite content providers, you should visit that content provider’s channel before June 30 for details on how to obtain their content other than through AvantGo.  Also, AvantGo recommends the Snac mobile widget application – a new, fun way to get your favorite content on your mobile device. You can find out more about Snac at: http://www.mysnacs.com/landing?token=avantgo0609

Best wishes,
The AvantGo Team

Read the rest of this entry »

Recently I’ve been playing with a tool set called JOONE.  The goal of the JOONE project is to produce a fast prototyping environment for Neural Nets and a series of libraries to training these networks.  I have so far ignored the prototyping environment, but I do find the libraries quite useful.

Two years ago I began building a series of base classes in Java that could be used to create neural networks.  I managed to get it to a somewhat useable state, but it needed a lot of cleaning up before I could release it or expand it to apply to a larger set of problems.  I found JOONE while writing my libraries, but shelved it because my goal was to learn more about machine learning.  Just using an existing toolset hides most the important “educational” bits.  I returned to JOONE a few months ago, and discovered it shared many of the design elements had built into my own library along with a bunch of really great features I hadn’t even thought of.

It comes pre-packaged with useful example codes to get you started, and an extensive PDF manual (which could use some copy-editing).  I ordered a book (that’s also available online) that discusses the basics of neural nets in the context of JOONE.  While I’ve found the book useful, I think the examples are written for a slightly older version of JOONE.  Some of the method calls suggested in the book are listed as @deprecated in the actual JOONE source.  Fortunately, the examples included with the JOONE source code make this easy enough to modify the book’s samples and use the more modern methods.

I like the example based format of the book.  There are a series of problems to solve and the JOONE way of solving them is presented.  The pace is good and they increase in complexity as more advanced topics are covered.  There is an element I dislike about the book: some of the topics covered are not in a JOONE context.  Heaton Research, which published the book, seems to have its own basic NN library and some sections of the book use this library instead of JOONE.  The lack of consistancy could be a problem for someone trying to use JOONE as an engine and apply it to an actual problem.  For simply a learning experience, the subject matter is well described no matter which library is used.

As I continue playing with JOONE, I may post my example codes or describe the process of getting JOONE to play nice with Eclipse.