Ever wanted to access files on your home computer from work? Wish you could host a online game with your buddies, but hate the hassle of dealing with routers and firewalls? Desire a little more security in your web-browsing?
LogMeIn Hamachi is a robust tool for establishing VPNs on the go. It provides a simple interface for intermediate and advanced users to build fully encrypted VPNs across the Internet. Available in both free and professional versions, it is easy to use and it looks good too.
The installation was a snap. After following the 5-minute walk through, I had a VPN up and running, allowing me to access my Windows File Sharing and RDP connections immediately.
I have been recruited to work on a new Sourceforge.net project called Slipstream. We are still in the design and layout phase, but we have some hard-hitting experts in on the project and there are great ideas kicking around.
Character generation, and rendering engines are slated, the UI is going through some heavy construction, and I am tackling an AI path-finding engine which is approximately 35% complete.
Stay tuned for more on this project as we get our modules up in the repository.
I completed the path-finding algorithm today. At its simplest level it is merely a Breadth-First Search on an undirected graph. This has a number of benefits:
The code is short: The entire traversal algorithm takes up no more than 20 lines of code.
The code is fast: Due to the method in which parental assignment occurs, the traversal takes place in O(n) time. Another benefit of the BFS algorithm is that the time to find one path is based on the number of vertexes, not the complexity of the graph itself; therefore, a difficult maze will be solved in the same amount of time as a wide open field.
Vertex adjacency can be arbitrarily assigned: The system has no concept of dimensional space, only vertex adjacency. Further, there are no limitations on the number of adjacent vertexes any particular vertex can have. Additionally, these vertexes could conceivably be in an entirely different section of a map (i.e. a teleporter) or in the exact same position allowing two entities to occupy the same location in space at the same time. The path-finding engine will correctly handle these situations.
Mapping is not limited to a set number of dimensions, nor is it restricted to the Cartesian coordinate system: The path-finding system and the logical representation of the nodes are not reliant on each other. The path-finding algorithm works as well in a Cartesian coordinate system as it does in a Polar system. It can be as easily applied to an Isometric tile set as it can to the 4 dimensions of a hyper-cube; the concept of space, as well as its relationship to paths, are up to the programmer's design.
One traversal of the graph finds the shortest path from any location in the map: My implementation of the BFS algorithm will traverse all vertexes in a map, assigning pointers to parent nodes to denote how any particular vertex was reached. At the end of a traversal, the graph is left in such a state that from any given node you can follow the parent path back through the graph and arrive at the origin. The benefit of this feature is that for any given target on any given graph, the traversal needs only to happen once. The immediate benefit of this is that if I were making a number of entities move to the same position, I would need only to give them the path map, and by looking up their position on the map, a parent traversal for each entity would land them at their destination.
With all that said, I am now in the process of rewriting the code. The major pitfall of the engine as it is right now is the lack of support for weighted graphs. To add to the robustness of the path-finding procedure, I am going to implement Dijkstra's Shortest Path Algorithm. This will allow the engine to take into account the difficulties of passing through certain terrains.
Ilfak Guilfanov of DataRescue Inc (the people behind IDA Pro) has posted an entry on his titled Decompilation Gets Real. In it he announces the beta testing of a tool which, when given a binary file, produces accurate and well formatted C code. The immediate consequence of such a tool is the further reduction of the level of knowledge which a would-be hacker must have. Since compilers and assemblers have a distinct optimization fingerprint, it should not be long before automated tools, build from this code regeneration tool, will provide reverse-engineers and crackers with the ability to quickly and efficiently scrub through code for security weaknesses; buffer overflow, format string attacks, and any number of other exploits will be trivial to discover.
The speed and easy in which Guilfanov is able to go through code is what scares me. Take a look at the Decompilation Demo.
The goal of this tutorial is to design a Data Abstraction Layer (DAL) in PHP, that will allow us to ignore the intricacies of MySQL and focus our attention on our Application Layer and Business Logic. Hopefully, by the end of this guide, you will have a working DAL and learn a little about PHP, MySQL, and Object-Oriented design in the process.
Soon after buying my Video iPod, I wanted to put my massive library of videos onto it, so I could watch them on long trips without carrying along my entire laptop. I wrote a small shell script to perform the mundane task of converting for me, using the free, open-source tool ffmpeg (http://ffmpeg.org).
Back when I first bought my iPod, I needed a way to convert my Audiobook MP3s to M4Bs, the format iPods recognize as Audiobooks. I used ffmpeg (http://ffmpeg.org) to accomplish this task.
I decided to buy a new toy for myself this weekend. The product: iriver's H10 20GB MP3 Player. I arrived at home and charged it up only to turn it on and realize that the blasted thing would not work out of the box. I struggled for three hours searching online, upgrading firmware, and sitting on the phone with tech support, all with the same outcome: a brick which would could not get past a screen which says "BOOT 1.01 MTP Initialize." In frustration I cried out, but unfortunately for me, Staples was closed by the time I decided to return it. In one last-ditch effort, I scoured the interweb and found instructions for getting my $200 paperweight to play music.