- Created a project and artifact called Log4Flex which contains the flex logging code / UI to start separating out FGMFlexUtils
- Started on the google-services library
- Created a general authenticator that will get a token to make authenticated http requests to any of the gdata services (tokens are service specific)
- Added some test cases for the authenticator
- Created a GoogleSpreadsheetService class which will handle executing queries on spreadsheets
- While testing it, I couldn’t get it to work like the prototype code until I realized it worked within an air app but not inside a browser. The HTTP Requests from within the browser were getting messed with and I kept getting not authenticated error messages. So apparently the authentication method I am using will only work for AIR / Mobile apps.
- Got the simulation working with the midi controller
- Changed the output to show the instrument, note, and simulation position.
- Debugging the amp class so I can use it for a multiple finger simulation
8:00 – 4:00 VISIBILITY
- Continuing with the wireframes
- Got the charts in a ViewStack. It turns out that you need to explicitly include the mx.swc and the sparkskins.swc.
- Making sure that all this runs on the phone still – and it does! Dropdown menus don’t work though. They don’t seem to fire events.
- I think it should be possible to make a popup rollover dialog using lists. Will try that tomorrow.
- Had a chat with Bill D. He’s going to try to get us a couple of desks at NBP 324.
- adding monthly PM Actuals to Financial Status
- PM Actual Outlay tooltip added to FinancialStatusDataForm
- query – long and +gly, grabs whole year’s data
- SELECT * FROM (SELECT r.funding_amount as statusAmount, r.*, c.uid as contractUid, c.contract_number as contractNumber, c.name as contractorName, c.location as contractorLocation, c.amount as contractAmount, d.uid as directCiteUid, d.obligation_amount as dObligationAmount, d.outlay_amount as dOutlayAmount, NULL as rObligationAmount, NULL as rOutlayAmount, b.center_number, a.amount, r.uid as fundingRequestId, a.uid as budgetAmountsId, o.month_1, o.month_2, o.month_3, o.month_4, o.month_5, o.month_6, o.month_7, o.month_8, o.month_9, o.month_10, o.month_11, o.month_12 FROM funding_requests r LEFT JOIN direct_cites d ON r.uid = d.funding_request_id LEFT JOIN contracts c ON d.contract_id = c.uid LEFT JOIN budget_centers b on r.project_id = b.project_id LEFT JOIN budget_amounts a on b.uid = a.budget_center_id, obligations_outlays o WHERE b.project_id = 100 AND a.uid = 1395 AND NOT ISNULL(d.funding_request_id) AND r.fiscal_year = 2011 AND o.year = 2011 AND o.project_id = 100 AND o.funding_id = 213 AND o.type LIKE ‘PM Actuals Outlay%’ AND o.year_count = 1 UNION SELECT r.funding_amount as statusAmount, r.*, NULL as contractUid, NULL as contractNumber, NULL as contractorName, NULL as contractorLocation, NULL as contractAmount, NULL as directCiteUid, NULL as dObligationAmount, NULL as dOutlayAmount, r.reimbursable_amount as rObligationAmount, r.outlay_amount as rOutlayAmount, b.center_number, a.amount, r.uid as fundingRequestId, a.uid as budgetAmountsId, o.month_1, o.month_2, o.month_3, o.month_4, o.month_5, o.month_6, o.month_7, o.month_8, o.month_9, o.month_10, o.month_11, o.month_12 FROM funding_requests r LEFT JOIN budget_centers b on r.project_id = b.project_id LEFT JOIN budget_amounts a on b.uid = a.budget_center_id, obligations_outlays o WHERE b.project_id = 100 AND a.uid = 1395 AND r.fiscal_year = 2011 AND r.uid NOT IN (SELECT funding_request_id FROM direct_cites) AND o.year = 2011 AND o.project_id = 100 AND o.funding_id = 213 AND o.type LIKE ‘PM Actuals Outlay%’ AND o.year_count = 1) AS T1 ORDER BY uid, contractUid, statusAmount DESC
Looking in to some difficulties we may encounter when trying to remotely access google data services with URL requests only:
- Authentication – http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html details how we may request a service token which can be used for further data requests. Each token is service specific so here’s a list of services and their (not obvious) names http://code.google.com/apis/gdata/faq.html#clientlogin
- List Spreadsheets? – once we know a spreadsheet’s name / key we can make queries against it, but how do we get a list of spreadsheets?
- column name resolution? – google identifies all their columns using ‘A’, ‘B’, ‘C’… from left to right. What we refer to as the column name they call the label. Queries are made using the identifiers and not the labels so changing column order changes the query results. We may not care though…
7:30 – 5:00 VISIBILITY
- Starting on VisMob
- Java API for Google Spreadsheets: http://code.google.com/apis/spreadsheets/data/2.0/developers_guide_java.html
- It also looks like data can be accessed using sql-like (Google Visualization) commands: http://blog.ouseful.info/2009/05/18/using-google-spreadsheets-as-a-databace-with-the-google-visualisation-api-query-language/
- Went over the VisMob concept with Mike and Dong. Putting together a wireframe
- Nothing new on site. Sent around a few emails
- Started a class for the midi controller to make commanding it easier.
- Trying to figure out how to time the start and stop of different notes running simultaneously
- Spent a long time looking at the documentation for the midi chip but it didn’t have midi commands in it.
- http://hummer.stanford.edu/museinfo/doc/formats/midi/ as lots of good info on midi
- It seems that the least significant four bytes of a command determine the channel
- Pitch bend might be useful for adding to the contact effects
- http://blog.tangrs.id.au/?p=551 is an example of playing an midi sequence on an arduino
- Created a few applications that use the phone’s accelerometers using the Flint particle system. The accelerometer API is pretty simple: there’s a constantly updated variable for for the acceleration along each axis and it is normalized (1.0 = 1 G).
- Looking in to ESRI ArcGIS library for making a flex mobile map. It’s this simple
8:00 – 4:30 VISIBILITY
- We have power!
- Found out why the map app isn’t working. The Google maps flex swf tries to download another swf which iOS doesn’t allow. Here’s the workaround: http://cookbooks.adobe.com/post_Display_Map_in_iPhone_App-18959.html
- Got the workaround behaving. Also found a new book on iOS/Flex development – http://oreilly.com/catalog/0636920021117. I have the PDF, if anyone’s interested.
- Walked through the creation of VISIBILITY MOBILE. It will get its data from a remote object that talks to our DB or Google Spreadsheets. Should be very cool
- Experimented with different instruments. Most hold the note til you tell it to stop but some have set stop timings.
- Experimented with increasing the attack. More subtle then I hoped. Will have to use the volume control for the impact effect.
- Added the ability cycle through instruments
- Added the ability to cycle through notes
7:30 – 4:00 VISIBILITY
- More Google Maps
- Downloaded the SDK, which contains the relevant SWCs from here: http://code.google.com/apis/maps/documentation/flash/
- Uploaded map_1_20.swc and map_flex_1_20.swc to the fgmdev repo
- The SDK includes two
SWCfiles: a Flex version for use within FlexBuilder (or with the free Flex SDK), and a non-Flex version for use within Flash CS3. The Flex
*.swcis denoted with a
_flexsuffix in the filename.
- The SDK includes two
- Can’s get the map to load in the phone as it does on the emulator. Stripping out as much as possible. Going to install the debugger components next, I think.
- Went over with Brian to talk to Bill D. about funding. I laid out who has what skillset to get what they want done, which is more than they want to fund, but I think they’ll go back and re-examine.
- My computer was still having an issue this morning. I think I found the problem. Asus has an auto driver update which seems to run whenever windows updates and mess up the processor by running too many threads at the same time. I disabled this and a couple other things and restarted the computer. Seems to be running good as new again.
- Set up the Arduino mega for testing.installed the drivers found in the IDEs root directory.
- Had to select the firmware type from the list in the IDE. Selected the old mega first and was getting a sync error whenever i tried to upload a sketch. I eventually realized there were two versions of the mega
- The mega uses com port 5 instead of 3.
- The mega has its own port for i2c instead of using analog ports 0 and 1 like the uno does. Still am not sure if you can have multiple i2c channels. I know the way the Wire.h library works, it is actually hard wired to these ports and cannot be changed or expanded. I don’t think we will need more then 4 rheostats and we might not need any at all if the midi volume control is sufficient.
- Tried upping the voltage on the 30Watt amp to its upper range as opposed to the lowest functional which is what I usually do. There was no change in the amplification but the heat sink got hotter. Decided to just stick with 12 volts.
- Continued incorporating the midi into the simulation.
Investigating Flex mobile devlopment:
- Read through the adobe mobile devlopment pdf and several other basic guides
- Tested out Charts and scrolling
- Tested out Large Datagrids and data paging (1000 rows and 10 columns seems to respond just fine with paging)
- Looks like we’ll be writing lots of custom queries based on user interaction so I was looking for some kind object based query API instead of lots of string manipulation, not much luck yet
8:00 – 3:30 VISIBILITY
- Working on mobile Flex tutorial
- Brought Mike up to speed on the credentials issue.
- Displaying a Google map on an iPhone is more complex than you would think.
- Tour de Flex on iPhone!
- Got icons and splash screens working
- Just got a Google Maps key for fgmdev.com: ABQIAAAAdkcfcB4jtnPTDXu5jXoWURT49yoAjtLw-aX5iZ148rGTLLpumxTUDsWa-68C21ivHw9UTcIejRKXAw
- Here’s the basic google tutorial: http://code.google.com/apis/maps/documentation/flash/tutorial-flex.html#DeclaringMaps
- Here’s something from Adobe that explicitly addresses mobile: http://184.108.40.206/post_Google_Maps___Flex_Mobile-19132.html
- Finishing up e-Quip
- Trying to figure out what to do with the signed forms
- Nothing new on site. Tried to get a hold of Jeff, but he was out.
- Tried to solve the buzzing problem but nothing worked. Tried changing the wire to a thicker one and various type of capictors to try to filter the signal. I also tried taking the amp out of the picture by using my headphones instead. The buzz was still there. There was some weird black dot on the ground trace that went all the way down to the trace. The copper seems intact though so I don’t think this is the cause.
- Eventually got on the phone with sparkfun about it. They said either I messed it up when I hooked it to the amplifier the first time with no decoupling capacitors or the board is defective. The sales person was leaning towards it being defective since the board was still functional. He said he had one in the office which they were using for a project that did not make the white noise.
- We can send it back to them or keep it. The buzz is annoying, but it will slow down development if I don’t have one of these on hand, so its up to you.
- Removed the finger from the vice and found that the sound was actually mostly resonating through my desk. Putting it directly on the desk made it sound louder then when it was in the vice.
- Saved the current test sketch and started editing it for use with the pressure sensor.
- Writing this I am realizing there are many functions I haven’t experimented with. First and foremost, I need to make a list of which instruments will best serve our purpose. Second I need to see how to make notes hold out. Third have to play with the attack to see how that effects the sound(how hard the sound starts before going steady). Third look in the documentation for other things which may not be in the demo code(possibly effects). I will look into these tomorrow.