This has plagued me from the start. After messing around a times at it, I figured out how to get things moved around.

Problem:  If using the multi-friend-selector in an iframe, the dialog that pops up, will sometimes be cut off on the right.

the example code they provide is something like:

<fb:serverFbml style="width: 755px;">
 <script type="text/fbml">
 <fb:fbml>
 <fb:request-form....

Solution: To squeeze the popup, so that its over the selector itself do

<fb:serverFbml width="600px">
<script type="text/fbml">
<fb:fbml>
<fb:request-form....

Voila!

This post is for my own purposes. If you try any of these steps you may BRICK YOUR WII MAKING IT UNUSABLE!!

I’ll outline here the steps I took. I don’t know exactly what made this work, but it does.

I have System Menu 4.3u.  The guides recommended the different exploits. So I downloaded the latest Smash Stack to be used with the Super Smash Bros Brawl.

I followed the instructions and it worked great.

I also grabbed the latest BootMii installer which then allowed me to install the Homebrew channel and the bootmii system under boot2.

This next step is VERY IMPORTANT.  I then did a NAND backup. You need to do this in case somethign bad happens. your NAND is unique to your hardware.. so looking for a copy later is NOT AN OPTION.

once your NAND is backed up..

then you can move on to what I think is the most difficult part. I think what makes it confusing is that they need to be done in a particular order. 1 cIOS will unlock the next one and so on and so forth to get to the goodies which are cIOS 222 and 249.

You will now access your IOS blocks in your Wii. This is what allows your wii to play backup games and load from USB, load WiiFlow etc.

Here is a good description of what IOS is about

I used a tool called Multi-mod Manager.  This allowed me to look at IOS, WAD, and boot2.

Under IOS, you can see each block, what is supposed to be there, and what you currently have installed.

I tried an option called “Remove all stubs”  the stubbed IOS blocks are nintendo’s updates to block your changes here and some other things that is needs to work.

Remove all stubs is supposed remove IOS 202,222,236,249,250 and the other ones needs to load USB loader wiiflow and other custom software.

This tool did not work for me.

Now this is where my path split.. Iwould like to try this again.. and would appreciate some feedback on this.

So What I think should happen here is, you should manually uninstall the IOS blocks that you want to load you own version into.

Trucha bug slot 236

Hermes 202,222,223

Waninkoko’s 249,250

In all cases I used the NUS online loaders.

So the most important step is getting the right IOS 236 installed. This is gatekeeper so to speak. IT allows you to use the other cIOS tools to load the hermes and waninkoko. You must complete this step first.

I used IOS236 v5.

During the install it asks if you will be using this update for

1. legitatimate backups

2. pirated games… DO NOT choose 2.     , it will lock you out.

Select legitate backups and the IOS will get loaded…. at each step if you like you load the bootmii and look at your IOS to see what blocks are loaded. now you should see an “unknown” IOS in block 236. Awesome.. now you can use the Hermes and waninkoko tools. IF you cannot use this method to get 236 working.. the next steps will not work.

now load up the cIOS installer 222 by Hermes.

Follow the steps here , again you can use the bootmii > IOS manager to view your blocks and verify 202,222 and 223 have your versions in them.

now load up the waninkoko’s cIOS

Follow the steps and verify you have 249 and 250 loaded.

Once you are satisfied your versions work.  Download WiiFlow and load it from the homebrew channel

Wiiflow, allows you to backup your original disc and run image files you copy from other locations directly from your USB drive.

This guide is rough, send me some feedback and i’ll detail it further. Make sure you backup your NAND!

I work online all day. I spend quite a bit of that time looking up music that I am hearing either on streaming radio stations or things that pop up in my memory.  A lot of the time the only place I can find a full version of the song I am looking for is on youtube.com, which is ok, cause I might see a video I’ve never seen before.

I recently came across something that has changed my life. a web site called http://www.Dirpy.com, here is a quote from their site:

"New to Dirpy? Dirpy is an advanced DVR for your
favorite online media. For example, use Dirpy to
record your favorite YouTube videos to mp3s!"

This site is awesome, because when you

  1. search for a song
  2. it shows results from youtube.com
  3. you can then preview the  video
  4. and then of course download it as an mp3 or other video format.

The mp3 is decent quality 256Kps and 44Khz. I am very impressed 🙂

Run

Top 10 memory consumers
ps auxf | sort -nr -k 4 | head -10

Top 10 CPU consumers
ps auxf | sort -nr -k 3 | head -10

I have recently setup a master and slave in MySQL.

the main reason I did this is so I could do some queries and light data mining looking for patterns in our datasets. The issue is that the Live database is optimized for inserts and updates, not for views or summaries.

in creating a replicated database, I was able to index my slave differently, and allow it to be better suited for pulling this report views.

I am NO MySQL database expert, but was able to follow the simple directions on the mysql.com website and have this up and running relatively quickly and painlessly.

This is how I did it:

  • I configured my master by adding the following to my.cnf and restarting the mysql instance:
  • server-id=1276024641
    log-bin=mysql-bin
    log-error=mysql-bin.err
    binlog_do_db=<my_target_db_name>
  • the db_name restricts only 1 db to be replicated. I think omitting this line will replicate all the databases on the master to the slave
  • I added a unique, random number as my server-id to my slave machine’s my.cnf file. the line I added looked like this : server-id=1281421047
  • I then restarted the slave mysql instance
  • I then setup the replication user on the master. I used the phpMyAdmin scripts, by clicking on the “Replication” tab, then the “add slave replication user” link. I saved this info
  • because I am running a live database, I needed to locate the master’s bin log coordinates. To do this, you need to ensure no one is changing the data, the manual recommends locking the tables, but on our transaction heavy system, I just closed the db for the next step.
  • I then proceeeded to output a mysqldump: mysqldump -p my_database_name > db_script.sql
  • while this was saving to file, I went into phpmyadmin under replication and clicked “show master status”, which displayed
  • Variable     Value
    File                mysql-bin.000120
    Position       83336594
    Binlog_Do_DB    my_databaswe_name
    Binlog_Ignore_DB
  • Once the data dump was complete, I re-enabled traffic back into the master db.
  • I then copied the .sql file to the slave machine and imported it using: mysql -p my_database_name < db_script.sql
  • Once the db snapshot was imported, I needed to tell the slave to start running the slave process thread, by running the query:
  • CHANGE MASTER TO
    MASTER_HOST=’master_host_name’,
    MASTER_USER=’replication_user_name’,
    MASTER_PASSWORD=’replication_password’,
    MASTER_LOG_FILE=’recorded_log_file_name’,
    MASTER_LOG_POS=recorded_log_position;
  • from there, the slave should keep in sync with the master

We recently started to look into working with the Trial Pay system
TrialPay Referral Program

There is a movement away from the the typical offerwalls into networks that provide “quality” offers. Trial Pay specializes in Shopping and some survey offers. There isn’t any app install, or toolbar download offers.

What really opened our eyes to this provider is that Facebook exclusively ( so far ) uses them for their Facebook Credits system. We are in the early stages of testing. more to come.

I’ve done this a few times setting up MRTG and always get stuck when trying to use custom scripts.

The caveat is when you target a custom script the notation is:

Target[localhost.mem]: `/etc/mrtg/scripts/mem.pl`

or something along those lines, the caveat is that the quotes are not a ‘ but a ` ( the character at the top left of the keyboard)   this took me a little while to figure it out.

The perl script I am using is:

#!/usr/bin/perl

$machine = `/bin/hostname`;
chomp($machine);
$mem = `/usr/bin/free | grep Mem`;
$uptime = `/usr/bin/uptime`;

if ($mem =~ /^Mem:\s*(\d*)\s*(\d*)\s*(\d*)/) {
 $tot = $1;
 $used = $2;
 $free = $3;
}

if ($uptime =~ /up (.*),  \d* users?,/) {
 $up = $1;
}
print "$used\n";
print "$free\n";
print "$up\n";
print "$machine\n";

I took this from another site.. I will probablly write my shell scripts in PHP, they are just as easy , and powerful

Case : I need to loop over an array in PHP and remove elements based on some condition.

Solution:

print_r($arr);
foreach($arr as $key => $val)
{
  if($val == 'xyz')
  {
    unset($arr[$key]);
  }
}
print_r($arr);

Works great!

So after the f8 2010, Facebook opened up it’s new Apis. I started to tinker with the new Facebook Social Graph API.

Every object in the social graph has a unique ID. You can fetch the data associated with an object by fetching https://graph.facebook.com/ID.

Facebook also updated their policies to allow caching of their data to reduce API hits to their system. Kind of makes sense as people were probably storing data anyways, and reduces their server loads. A new service they now offer are Real-time Graph subscriptions. This service allows you to subscribe to graph objects and in near real-time ( approx 1 min or less ) your calllbacks get pinged when data changes in their graph. It’s pretty cool and I have setup a basic prototype for testing.

To make this work I had to do a few things.

  1. I turned on error_log in my php.ini, so I had a place to capture the callback and follow the real-time updates
  2. I also had to install the pecl_http extension.
  3. pecl install pecl_http
  4. on Ubuntu I needed to do sudo apt-get install libcurl4-openssl-dev first
  5. add extension=http.so to /etc/php5/apache2/php.ini
  6. restart apache
  7. checked phpinfo()

My basic proto is working :), next I will be integrating for use in our game

I remember not too long ago thinking about what the web may look like in a few years. I was currently looking at containers of information. Most things block arranged on a webpage, some rich content, some images, and plenty of text.

What I would start to imagine while I was staring at the pages with monotonous pumping house from Exposure NYC is your home page, and like pages in a book, you can flip pages, but each page is a block arranged assortment of information. These pages weren’t static scroll loading, they had components that would update the content and state.  Transitions and easing to assist the viewer when information changes were occurring.  Sound and contrast to really enforce the experience.  And do all this with robots (scripts) or state driven management systems.

So, I’ve had to do this on a few occasions now, and I have found the most efficient ( well in terms of lines of code ) to do this in Actionscript 3.

Before you can use this, you must have the x,y positions of the the 2 objects you want to calculate the distance between ( of course ).

The line of code I ended up using looks like this

var distance:Number = Point.distance(new Point(objectA.x, objectA.y),
                                     new Point(objectB.x, objectB.y));

There may be ways to extract the point object right out of an objects, if so , let me know. But this definately works.. now I can move on  to finishing my app : )

This is an issue I have been wrestling with for a few months now.

It’s come to a point now where I have to figure out. The issue is, when I create a custom event so I can transport data between my loosly coupled components, the eventListener never picks it up.

I found this pretty straightforward easy to understand article here, that explains that the event never travel across from component to component ( up and down the container stacks ) but in fact only travel 1w ay, up the stack to the parent.

Ok so that is great to know..  now the only way I can trap these events is always attach my listeners inside my custom components to the systemManager.  Do I always have to do that ? seems weird.

Anyways I discover more, I will comment on this post

N-way tile based worlds

November 6, 2009

This is an excellent tutorial and introduction to AS3 Flex Tile-based world design and fundamental concepts.

The Author Jeff Fulton summarizes :

In this tutorial we will discuss the theory and practice behind 360 degree n-way blit fine scrolling in AS3. What does that mean? N-way scrolling is a means by which you can scroll the screen in any direction based on the angle the main character of the game is facing. In this example we will talk about simulating an overhead 2-d car driving game, but this technique can be used for any game where the player can rotate to an angle before walking / moving.

Thanks Jeff, this article is great.

The title of this post sounds exciting, and it’s something I’ve been wanting to try for awhile. I’ll put a link in here to show you the sample code running.

I pretty downloaded and ran the code from Tremani, who have made an advanced artificial neural network in PHP. And it’s pretty easy to use so far.  The interface is simple.

Tell it how how big you want the network to be

Feed it your input data

Tell it your expected output for each testset, and hit the go button.

of course this is in PHP but and not literally a button.

but with very little work it could be setup with a button.

So these guys have done an awesome job of  making the setup and usage of an ANN this simple.. there is no reason why anyone can’t just start making little AI’s running around the net.

ok so I would like to try that. So now next steps.

  1. figure out a problem to solve
  2. figure out how to map that problem into inputs and outputs.
  3. then run it and figure out a way to test if it’s working

Sounds pretty good… so that is something I am going to try to play with.

Pretty excited about this

now I just need a genetic algorithm class that is this easy to use 🙂

Man I don’t know how many times I’ve had to do this. I get a list , I want to clean dupes before I import, or after.

and I’d like to do this with a query ( it’s gotta be possible right ? )

so I hunt I test, i break stuff… it sucks, I undo.. I redo.. I blah and I blah.. then it’s done..

waste of time.. so here it is.

First make sure I find what I am looking for :

SELECT *
FROM email_db, email_db AS vtable
WHERE vtable.id > email_db.id
AND vtable.email = email_db.email

very simple and elegant right ?

This is the one I actually ended up using.. to remove the dupes

  1. CREATE TABLE temp_table AS SELECT * FROM foo WHERE 1 GROUP BY bar;
  2. DROP TABLE foo;
  3. RENAME TABLE temp_table TO foo;

Adobe Air library

August 17, 2009

I recently came across a very good library called everythingflexairlib.

This library includes :

Components

  • NativeAlertWindow
  • AlertWindow
  • ContextWindow
  • SuperWindow

Managers

  • ConnectionManager
  • UpdateManager
  • IconManager

You can download the swc and source code hosted at Google code

CSS centering

August 13, 2009

It seems I like to do alot of centering in my CSS. I always end up searching for ways to do this, and there are a few tricks that work very well in both browsers.

For now here is a link to a W3 article explaining some simple and effective ways to do this

Recently had to install wordpress and Drupal on our shared server.

I wasn’t seeing any errors, just a status 500 Server Error.

So after poking around and trying some things. I had to make a .htaccess file with the following settings :

php_flag display_startup_errors on
php_flag display_errors on
php_flag register_globals off
php_value memory_limit 16M
php_value zend.ze1_compatibility_mode Off

This allowed me to see the errors and also to avoid a brutal compatibility bug our provider has setup in their version of PHP5 install. After these were set… no problems 🙂

Everytime we launch a new application in a social network, after a few weeks it’s important to know if we have upward growth.

The only thing I can think that demonstrates this is more installs per day. In our databases we capture full timestamps of the new installed user.

To turn this into something I can look at and understand, I have to run this query.

SELECT date_format( date_added, ‘%Y-%m-%d’ ) , count( * )
FROM fb_user
GROUP BY date_format( date_added, ‘%Y-%m-%d’ )
ORDER BY date_format( date_added, ‘%Y-%m-%d’ ) ASC

I am going to try to make a graph to view this in flex… first time Flex graphing 🙂 I’ll post an update when it works..

I’ve had to do this task a good many times, soI figured I should note it here for easy access.

Problem: How do I format an external USB drive for access in the linux filesytem.

First plug in the drive and power it up.
To ensure the Linux OS recognizes the new device, you can run the command

dmesg

It should output something like:

 I/O error: dev 08:10, sector 0
 unable to read partition table
 I/O error: dev 08:10, sector 0
Device 08:20 not ready.
 I/O error: dev 08:20, sector 0
SCSI device sda: 625142447 512-byte hdwr sectors (320073 MB)
 /dev/scsi/host2/bus0/target0/lun0: p1

What you are looking for now is the device the OS has mapped it to.. in this case it’s sda ( it may also be sdb or sdc, depending on what other devices you have connected )

You will now be able to access this device through /dev/sda
Next I ran

cfdisk /dev/sda

This allows me to view the partition table on this device. It should show you the type of filesystem if any ( ntfs,fat or unformatted, etc )

In my case I want to make it a linux partition.
I created a [new partition], and set the type to 83 – Linux

I then chose [write] and [quit], this will create the new partition ( and WARNING!! :permanently erase everything on the device)
I could then format the device. I use ReiserFS, which I find great for devices that get jostled around and may get slight corruption, Reiser is awesome at recovering and fixing itself, even better than Ext3
I ran

mkreiserfs /dev/sda1

The 1 on sda1 now signifies the first partition on the device sda.
This will format the device and let you know the result.

At this point I did a quick check to see the health of the device with the command

fsck.reiserfs –check /dev/sda1

Which output:

Do you want to run this program?[N/Yes] (note need to type Yes if you do):Yes
###########
reiserfsck --check started at Tue Feb 10 09:57:44 2009
###########
Replaying journal..
Reiserfs journal '/dev/sda1' in blocks [18..8211]: 0 transactions replayed
Checking internal tree..finished
Comparing bitmaps..finished
Checking Semantic tree:
finished
No corruptions found
There are on the filesystem:
        Leaves 1
        Internal nodes 0
        Directories 1
        Other files 0
        Data block pointers 0 (0 of them are zero)
        Safe links 0
###########
reiserfsck finished at Tue Feb 10 09:58:06 2009
###########

the key info there is the line : No corruptions found
Which means there are no Bad blocks on the device.
So now I proceed to mount the device and then access it like any other folder on the system
mount -t auto /dev/sda1 /mnt/BACKUP-DRIVE/
in this case I had already made a folder called BACKUP-DRIVE in my /mnt directory.
now If I run:


df

I get

/dev/sda1            312559096     32840 312526256   1% /mnt/BACKUP-DRIVE

That tells me the drive is ready to go, I can cd /mnt//BACKUP-DRIVE and start writing files.
it my case I was to rsync my work files into the backup device I use this command


rsync -vbruz /work /mnt/BACKUP-DRIVE

This will check any only update the files that have changed since the last backup, and go recursively.. in this case, it will copy everything over and may take awhile.
When this is complete.. I run
umount /dev/sda1

and I can safely unplug the device until the next backup.
For the next backup I simply

  1. Plug device in and turn on
  2. mount -auto /dev/sda1 /mnt/BACKUP-DRIVE
  3. rsync -vbruz /work  /mnt/BACKUP-DRIVE ( where /work is the source of the files I want to backup )

ReiserFs comes with a whole bunch of great tools, in case the drive does become corrupted.. or it’s starts to age and gets bad blocks.

You can also automate alot of this ( I have yet to do this ) so that when you plugin the device it automatically calls your backup scripts or something.

I recently came across this ad network that is designed for Flash and Flex game developers to monetize and promote their online games.

The network is called Mochiads and will allow you to embed a couple of lines of code , that will show ads in your game. Optionally you can upload an ad, and depending on how many impressions you send them, they will show your ad. Click to check them out, you can sign up for free.

multi-user flash games

January 6, 2009

I just come across a network that will power a flash game with:

  • real-time multi-user capability
  • data storage api
  • payment api
  • acheivements
  • high score

the service is called Nonoba

Flex Facebook app in beta

December 22, 2008

We have finally released our first social gaming Flex application on Facebook.  The application is called Presidents & Assholes, it based on the popular card game Asshole. The application is real-time, and requires 4 live players to activate a game table. We have added a betting component, so users have a sense of reward.

Presidents and Assholes The application has a Spectator mode that will allow users to “preview” the game without forcing them to install. This same preview is available to the global internet without logging into Facebook. You can preview the game by clicking http://apps.facebook.com/play_president/.

The game has an easy to use chat window that will broadcast your message to the room. Users can enter and leave any number of game table rooms, and optionally sit down if they have installed the Facebook app.

The Social web of trust

November 29, 2008

Today I found a “friend” connected to me in Facebook amongst the 220 people.

In my account, there is only about 5 people I’ve never met, and “met” through Facebook.

I was looking through this guys profile and he’s got about 300 friends, and about 15 in the last month of so.

Most of his friends look like commercials.

I was thinking, is this a robot account ?

It could be, couldn’t it ?

All my personal details are being splashed into this account’s feed, all the data could be getting dumped and sifted.

Am I being paranoid ?

Development marathon

November 26, 2008

So we are on week 6 now of developing our first multi-user Flex based facebook game.

3 of us are working on it, it seems like a 2 steps forward, 1 step back cycle. Sometimes 1 step forward, 2 back.

Either way we are seeing progress. The main application file is at it’s 115th iteration, and I think we are approaching about 10,000 lines of code.

All the major functions work, but still appear buggy. We have successfully integrated into the Facebook platform and speed looks good in our tests.

Over the next fews I hope to iron out the last of the bugs, make some final design decisions, and move towards a beta testing phase with live people.

Flash to Facebook bridge

November 19, 2008

I recently got working a Flash to Facebook bridge. I downloaded the as3 classes and example files from Zerofractal.com.

I spent a good couple of hours setting up my code and finding it not working. 

So back to square one, I loaded ZF’s example code and it worked. So I knew the issue remained with my setup

I first tested the calls with my barebones swf placed in an FB:iframe.

It worked!

So next  I started adding the flashvars I was trying to pass into the swf inside the frame.

It still worked !

next I added back the POST variables I was passing from the main page into the iframe.

BROKEN !!

It turns out I was not url-encoding my POST vars.

Lesson learned : urlencode() my vars !..   and of course the JS code and such did not alert me to any problems, it just didn’t work.

First time for everything

November 5, 2008

I am still getting familiar with the wordpress blogging system. I am testing my first post. My posts should get more interesting as time goes along.

November 1, 2012

WordPress is a great blogging system with tools for posting stories, adding photos, accepting comments, and feedback.

This is what an image would like like

whos' awesome

Ahh yeah, who’s awesome ?

3 tools I used:

ok so the usual kind of get your hands dirty approach kind of had me going in circles with Corona. Although pretty easy to download the SDK for windows and run the examples I was ready to make my first test apps.

The first struggle was trying to get Orientation correct.

I wanted a landscape app.  So after digging around and testing. I found this page

Creating a config.lua and build.settings file solved what I was after.

build.settings has this in it:

settings =
{
        orientation =
        {
                default = "landscapeRight",
                supported =
                {
                        "landscapeLeft", "landscapeRight"
                },
        },
}

to be continued...

Mobile development 101

March 2, 2011

ok so I am trying to jump into the mobile market game.

I recently purchased a iPod Touch4 and an Android 2.2 device.

I have been kind of jumping around looking at the best languages and environments to develop with. I was pretty set on using Adobe CS5 with iphone packager, but after some testing, I found the performance not really useful for the type of apps I would like to make.

I think the adobe products for iphone packager will be ok if you make puzzle games or non-performance intensive apps. Simple tap, orientation change and accelerometer driven apps  are very easy assuming you have a good grasp of Actionscript 3. I really wanted to stick with AS3 and the adobe products on this, but I have finally accepted that as of today I don’t think the iphone packager is ready for high performance apps. Again it could just be me, as I have seen some demos of super optimized code that perform very well and have tested flash packaged games from the Apple app store on the itouch that run very well.

But yesterday I started to play with the Corona SDK.  So far I am very impressed and excited that the dev->test cycle is going to be extremely rapid. Save my update and reload the Corona simulator to test my code.

There are some gotchas for newbs getttin off the ground. I aim to keep adding posts mostly for my own historical progression as I dive deeper into Corona and Lua.