Wednesday, February 28, 2007

online emulator MIDP 2.0

Here is another web based emulator i found support midp2.0
U can play games here.
http://waprunner.wap3.net/emu_wap3/p/wap3/?mode=JAVA
we can also submit our game here for others to play.

Here is the link of the emulator.
http://kobjects.sourceforge.net/me4se/

online utility for editing an image

http://pixer.us/

this is an online utility to edit an image, may help to change the image format to png and also resize the image , might prove helpful and we might not do this task on our own server.

a flickr spinner

http://www.petitpub.com/blog/

Here i saw a spinner for flickr pics somewhere at the bottom

WEb based demo of j2me applications

Web Based J2me Emulator
http://www.microemu.org/
Alhough our Custum List runs on the micoremulator (with a little problems, rendering is not so well.) This emulator does not support jsr -184 So my rubiks game wont run on this emulaor, also it dies not support svg, we may think of extending the emulaor if it is a simple task.
This micoremulator is being used by opera mini as well.
http://www.operamini.com/demo/



skinning the emulator
http://www.petitpub.com/labs/j2me/me/tutorial/



A web based wap test for any mobile site, can be used to test how a site would look on a mobile phone .....
http://mobilerunner.wap3.net/emu_wap3/p/wap3/

Tuesday, February 27, 2007

Coments on the Google API blog worht to read

#

Greg Linden on December 26, 2005 at 5:39 PM wrote: #

This is pretty cool, Niall. Nice work tracking all this down.

But, is it really true that people can build on this?

This was undocumented by Google and seems to be intended for their own apps. Using this seems risky, I'd think, with high likelihood of getting shut down if you built anything that was available publicly or generated noticeable levels of traffic.
#

[TypeKey Profile Page] mparaz on December 26, 2005 at 6:40 PM wrote: #

My educated guess:

Google will open up the Google Accounts login infrastructure. Once logged in, you can make these calls legitimately.

For non-logged in users, there could be an server-side HTTP equivalent of the Maps API (which is for Javascript rendering)

Nice work, pitting G against Y! in the race for openness!
#

[TypeKey Profile Page] Niall Kennedy on December 26, 2005 at 7:52 PM wrote: #

I think Yahoo! and Google are interested in opening up their feed backend in the same ways they expose maps data and other information. The first step is to expose the data, ask "why not?" and allow other developers to express their interest in using the data.

I sent a note to Scott Gatz, My Yahoo! lead, last week but I have not heard back from anyone at Yahoo! about my previous post. I also sent off an e-mail to Jason Shellen, Google Reader PM, this evening inviting conversation.

Google Maps API came after the JavaScript had been reverse-engineered and posted across the Internet with significant interest. I'd like to start a conversation about feed APIs and generate some interest in the data before a formal program is announced.
#

[TypeKey Profile Page] Chris Wetherell on December 26, 2005 at 10:31 PM wrote: #

Hi, Niall. Nice work on the API analysis! I'm certain Jason would be happy to jump into the conversation - I can as well, if that's all right.

So, to clarify. To date the API has been undocumented by us to date to help prevent those oh-my-gawd-the-url-changed headaches that would've happened if we'd changed something. So developers should note that some of the URLs might still change but that we're getting close to stability and we're happy for anyone to build atop the framework who is interested (and doesn't find managing auth issues daunting) as that's been our goal and intent with the API for Reader.

Other neat stuff I didn't see listed here:

* There's also a way to exclude tags/labels by appending another query to the URL as xt=[tag]. For example, you could exclude read items from some collections of items by appending: ?xt=user/[000...]/state/com.google/read
* Some tags include specific domain information because we've been planning on an approach that's flexible for other people's (read: non-Google) uses.

And I can confirm that you're right about the lens - it's only one of several planned approaches. Based on a series of user studies during early development we've been planning from the start a system that can support several distinct UIs for feed reading that would be developed by us - I actually have two other views on my dev build of Reader - but am more excited that others would be able to build clients that work best for them. One of the most exciting ideas for me for any feed reading API is that we (and perhaps other big companies) could possibly work on the more non-obvious and experimental solutions for syndication transformation since third-party developers are going to be excellent at supplying oft-requested and well-understood modes of interaction.

A short (and incomplete) list of stuff to do includes:
- Passing media enclosure data
- Atom 1.0 compliance (if you notice we're getting close)

Some of the other Reader team might post here, too, as everyone's been directly engaged with the API - it's been a chief part of the discussion, planning, and design for this li'l project. After we finalize the remaining bits we'll definitely post to our blog and document the framework.

- Chris Wetherell
Google Reader Engineer
#

Mark on December 27, 2005 at 5:42 AM wrote: #

For Atom 1.0 compliance, I recommend my own unit tests.
#

ihavenoname on December 28, 2005 at 7:29 AM wrote: #

What happens when you retrieve all unread items? Do they all get marked read? If that's the case then the API is pretty much useless from a synchronization perspective. If I try to sync to my handheld and then only read some of the items (typical usage scenario) and then try to continue reading on the web there will be a problem because items that I have not read in actuality have been marked as read. I don't see any facility for marking individual items read/unread.
#

Laurence Gonsalves on December 28, 2005 at 11:23 PM wrote: #

Items are not marked as read automatically, so it's possible to fetch an item without reading it. You can mark them as read using the same facility that's used for starring. Look for "flag or star a post" above. Just replace "starred" with "read" when passing the "a" parameter.

By the way, the comment "No cookies or session IDs are required to access this member-specific data" is incorrect.
#

[TypeKey Profile Page] Niall Kennedy on December 29, 2005 at 12:07 AM wrote: #

Thanks Laurence. I rerequested all URLs without an SID cookie and Google returned a status code 403 and "permission denied" in the entity.

I updated my original text to reflect this information.
#

jcburns on December 29, 2005 at 8:18 AM wrote: #

The value of my SID cookie from Google.com is a string that is 161 characters long and starts with
DQAAAGgAAABRnt... ...so where is this 20 digit value?
#

[TypeKey Profile Page] Niall Kennedy on December 29, 2005 at 8:37 AM wrote: #

jcburns,
Google assigns each user a 20 digit user ID that would not change over time, and a session ID (SID) you can delete, regenerate, and expire.
#

RichB on January 2, 2006 at 8:56 AM wrote: #

Notice the Google RSS->Atom conversion is recursive. eg:
http://www.google.com/reader/atom/feed/http://www.google.com/reader/atom/feed/http%3A%2F%2Fdel.icio.us%2Frss%2Fpopular%2F
#

Nick Lothian on January 11, 2006 at 10:24 PM wrote: #

You may be interested in some futher reverse-engineering I did, and a Google IG module I build on top of the Reader API:

http://www.mackmo.com/nick/blog/tech/2006/1/5/Google-Reader-Homepage-Module.html
#

[TypeKey Profile Page] Andrei Lopatenko on February 9, 2006 at 2:56 AM wrote: #

2 Chris Wetherell

Hi, Chris
is there any information which kind of Google Reader API is going to be provided by Google?
Will you support a streaming model (event-based)?
I am curious since i like to develop intelligent interfaces and I am RSS-addict. I am quite unhappy about flexibility and search capabilities of many RSS-reader and I want to develop a query interface for Google Reader
#

Steven on February 14, 2006 at 3:42 PM wrote: #

I hope the xt=[tag] functionality makes it into lens soon. The ability to show only things NOT tagged nsfw is a vitally important feature.
#

Mike on February 15, 2006 at 4:56 PM wrote: #

One more comment.... Has anyone figured out how to get a complete list of unread entries for all feeds you are subscribed to?

This
/reader/atom/user[user id]/state/com.google/reading-list

seems to just give me a copy one entry from each feed I am subscribed to. I am looking to get a feed of all entries from all feeds (read or unread).
#

Sérgio Nunes on March 2, 2006 at 3:13 PM wrote: #

Hi,

It seems that URL based authentication works. Try: http://[username]:[password]@[url] Replace [username] and [password] with your Google Reader data and [url] with one of the above urls.

This is great for server side development.

Regards!
#

Kannan on March 8, 2006 at 9:34 PM wrote: #

I am having some problems with google reader, although i must say that the google reader is extremely fast.

1. I want an entire feed to be labelled for example, rugby.com/atom.xml should be labelled as sports and etc. This would mean that I would read my "tech-blogs" labels first and then others.
2. Although it is not very desirable like the above thing, it would be great if we can have rules like gmail to categorize stuff.

Thanks (And as usual Google Rocks)
#

[TypeKey Profile Page] mparaz on March 10, 2006 at 6:54 PM wrote: #

It looks like even retrieval requires a login now. I was hoping to use this backend for an AJAX login-free aggregator.
#

[TypeKey Profile Page] mohan on March 14, 2006 at 11:30 AM wrote: #

Hi,
can you please tell about the user id in the URL
/reader/atom/user/[user id]/pref/com.google/subscriptions

wher can i get it?

thanks
mohan
#

Nitin Nanivadekar on March 31, 2006 at 9:53 PM wrote: #

Thanks a million
i am building an app that user feed reader as an auxiliary function.
This fits my bill perfectly.

-nitin nanivadekar
#

Darren Kulp on June 5, 2006 at 6:13 AM wrote: #

@mohan, jcburns:
View source on your Google Reader page and search for _USER_ID.
#

Jamsi on July 31, 2006 at 1:53 AM wrote: #

I'm looking at creating a feed reader that works with the Google reader API (mainly so I can download a list of items to read on the train ..) but has anyone made such an application?

I can't imagine it to be too hard.
#

Muzaffer Coruh on August 4, 2006 at 4:29 PM wrote: #

Hi,

The number of returned results may be adjusted using the n parameter."

this is really nice but I wonder which parameter is used to call next 20 items...
#

Mark on August 4, 2006 at 5:46 PM wrote: #

This information is great. Thanks so much. I'm having a little trouble understanding how to star or add tags to entries as these links seem to be hidden somewhere deep inside the javascript, css, or otherwise. Can you provide any further information that will help me piece this together?

I'm working on a pre-reader that will filter duplicate news items from different sources as well as other unwanted content, since this doesn't seem to be in lens yet. This page has been a great help. Thanks!
#

Yasha Davidov on November 5, 2006 at 2:39 AM wrote: #

Just few things more:
1. You can access only unread items using ttp://www.google.com/reader/atom/user/[user ID]/state/com.google/unread

2. You can access all items via http://www.google.com/reader/atom/
(i suppose you must be loged in)
#

Yasha Davidov on November 5, 2006 at 12:46 PM wrote: #

It seems that com.google/unread always gives you an empty list.
That was my mistake.

But you can omit user id and replace it with "-". If the user is logged in this will work.
#

Rick on November 22, 2006 at 10:38 AM wrote: #

There is a way to request the number of unread feeds?
#

Venu on November 29, 2006 at 2:43 PM wrote: #

For shared items:

/reader/atom/user/[user id]/state/com.google/broadcast
#

Edwin Khodabakchian on January 22, 2007 at 11:22 PM wrote: #

Hi,
Does anyone know if there is a way to apply multiple tags to a feed as part of a single HTTP request. I have tried the approach of calling multiple times the request which adds a single tag to a feed and I think that I am running into a concurrency bug because I do not get a consistent behavior from the backend.
Thanks,
Edwin

Server Component

We will use PHP on the server. We have not decided on the framework yet, but it will most likely be CakePHP and ImageMagick will be used for image rendering.

Every request to the server will require user email, Google token, and the action. The server will store the email and action into a MySQL database and pass everything onto Google. The resulting data will be processed to resize/convert images and pass back to the reader.

If the token has expired, the server will notify the reader to request a new token from Google.

Storing Images in RMS

One of the reader's capabilities is to store posts for offline reading. This article explains how to utilize RMS for storing images.

Google Account Authentication for Installed Application

We are considering using the unofficial Reader API to interface with Google, effectively using it as the database. In order to accomplish that, we'll need to use Account Authentication for Installed Applications:

"After collecting login information from a user, call ClientLogin to request access to the user's account. Once the login information has been successfully authenticated, Google will return a token, which your application will reference each time it requests access to the user's account, such as to get or post data. The token remains valid for a set length of time, defined by whichever Google service you're working with."

It is unknown how long the token will be valid. The reader will store the email and password, which will be used for authentication as needed. Since we will be using our server for handling data between the reader and Google, the server will notify the reader to request a new token as needed.

There are four steps involved with using ClientLogin (directly from the Google page):

  1. The UI needs to solicit a user name (email address including domain) and password. The UI should also be capable of displaying a CAPTCHA image using the URL received from Google, if one is required, and soliciting a correct answer from the user. Ideally, your UI will include URL links to the Google service to be used, in the event that the user needs to sign up for a new account or do other account maintenance.

  2. Write code to generate a well-formed HTTPS POST ClientLogin request using the login data and transmit it. This code needs to contain logic to handle a CAPTCHA challenge and include both the logintoken and logincaptcha parameters. The application should also be able to detect when the user omits required information--or repeats incorrect data after a login failure--and display an error without sending a superfluous request.


    The basic login request will take the form:

    Email=&Passwd=&service=cl&source=Asterbox-MIDPReader-0.0.1


  3. Handle responses from Google. There are four possible responses to a login request:

    • success (an HTTP 200)

    • failure (an HTTP 403) with an explanatory error code

    • invalid request, generally resulting from a malformed request

    • failure with a CAPTCHA challenge


    A success response contains an authentication token labeled "Auth". This token must be included in all subsequent requests to the Google service for this account. Authentication cookies should be closely guarded and should not be given to any other application, as they represent access to the user's account. The time limit on the token varies depending on which service issued it.

    A failure response includes one or more error codes and a URL with the error message that can be displayed for the user. Please note that ClientLogin does not differentiate between a failure due to an incorrect password or one due to an unrecognized user name (for example, if the user has not yet signed up for an account). Your application will need to handle all possible error message as appropriate.

    A failure response with a CAPTCHA challenge means that Google has decided, for whatever reason, that additional security measures should be taken. This response is accompanied by a CAPTCHA image URL and a token representing the specific CAPTCHA challenge.

  4. Handle a CAPTCHA challenge from Google. To handle the challenge, the application must display the CAPTCHA image and solicit an answer from the user. To display the CAPTCHA image, use the value of CaptchaUrl returned with the failure response, prefixing it with the Google Accounts URL: "http://www.google.com/accounts/". Once the user provides an answer, the application should resend the login request, this time including the CAPTCHA token (logintoken) and the user's answer (logincaptcha). Google will validate the user's answer before authorizing access to the account.

    Note: Google does not validate the login attempt prior to issuing a CAPTCHA challenge. This means a login attempt could fail even after a CAPTCHA challenge.

    There is an alternative for developers who do not want to manage the processs of getting and transmitting a user CAPTCHA response. In response to a CAPTCHA challenge, the application can direct the user to the Google hosted page: https://www.google.com/accounts/DisplayUnlockCaptcha. Once the user has successfully responded to the challenge, the Google server will trust the computer in use. The application can then resend the original login request to obtain the authentication token.



The only time the reader will interact with Google is to authenticate and obtain the token, which is then passed to our server. Our server will act as the middle man between Google and the reader, storing user actions and resizing/converting images. The password will never be passed between the reader and our server, to reduce user security concerns.

about images on real device

Most of the phones only support PNG images (PNG is a patent Free format) other images are not shown and the program execution hangs-up.
We were thinking earlier that hanging is due to improper threading but when we used a spike(a small program written for testing we found out that when the spike is passed the url of png image it shows up, but when the url of a gif image is passed it does not show but hangs, we have not tested with other image formats, but feel that png solves our need for now.
We are going to use IMageMagic for resizing( and converting the images to png ) the images to suit our needs.

Sunday, February 25, 2007

J2ME Blogs

I'll update this as needed:

http://www.fiercedeveloper.com/channel/j2me
http://www.joefission.com/mobile_development/index.html
http://www.paxmodept.com/telesto/index.htm
http://j2me.synclastic.com/

Saturday, February 24, 2007

Mobile Widgets

Here's a good blog on mobile widgets:

http://blog.landspurg.net/?cat=14

Working with J2ME

http://www.theserverside.com/tt/articles/article.tss?l=WorkingwithJ2ME

This article, written in 2005 and dealing with MIDP 1.0, points out several details for working with J2ME. Topics include pros and cons of mobile devices, why J2ME was chosen, J2ME basics, user interface considerations, client/server data format, and server side components. Nice reading to get a good overview of what it takes to build a mobile Java app.

want to display ms-Word and excel spreadsheet on j2me

http://pdf.antennahouse.com/

converts any type of microsoft office document to svg.
so svg can be displayed on mobile.

powerpoint to svg converter (showing ppt on j2me devices)

this is a tool to convert a powerpoint presentation to svg, (its not free).
http://tonicsystems.com/products/transformer/

Since svg graphics are scalble, it would support zooming etc, so people can see their ppt on their phones easily.

so our browser will be able to show ppt files as well.

utilities to convert flash in to SVG movies

this is a free utility
http://www.eprg.org/~sgp/swf2svg.html

http://www.flashdeveloper.nl/g_SVG_conversion.html

http://freesvg.texterity.com/freesvg.html

we can even convert flash-lite movies in to svg movies.
flash lite is supported in fewer phones than j2me. so ecards written for flash-lite can be easily converted to svg movie and displayed on our browser.

http://www.svgopen.org/2004/paperAbstracts/template-1.htm

tricast mail attachment viewer

Tricast mail already has the functionality to veiw pdf and ppt files , i think they are doing this by converting it to svg format.
i think if this capability is attached to the browser it is a good thing.
http://www.tricastmedia.com/v1/tricastmail.php
almost any kind of multimedia content can be converted in to svg.
like flash,pdf, ppt.
we can also have flash e-cards converted to svg files, and then these svg movies streamed to mobile phones. This is also an attractive thing for a browser, the ability to run a flash movie. This is also an added advantage over the opera mini.
If we can render flash cards on j2me , many e-card companies can be ready to fund us for this.

displayng pdf and ppt on j2me browser

How to display Pdf files on our browser.
PDF files can be converted to svg format.
there are certain tools to do this.
1) http://www.mattercast.com/prod_pdftosvgsdk.aspx
2) http://www.pdftron.com/pdf2svg/index.html

these sites provide command line as well as SDK's to convert pdf content to svg.

SVG format is more compact than pdf and can display retain all the quality and features of a pdf document.
we can also re-render the svg document to fit on the small screen of the j2me device.

how is our browser better than opera mini ?
The ability to display pdf and power point presentation could be one of the things that distinguished our application and makes it a cutting edge tool.

Thursday, February 22, 2007

J2ME Benchmark Tools

Links to source files and apps for benchmarking and testing phone J2ME capabilities.

http://ngphone.com/j2me/opensource/


J2ME UI:

http://ngphone.com/j2me/opensource/ui.htm


Lots of other good J2ME resources at the site.

a sure read for any mobile developer

this is a blog that any mobile application developer should read for sure.
this explains the tricast ideal for creating rich user interface components for the mass market and not only for the expensive handsets.

http://www.tricastmedia.com/blog/

twuik tutorial

this is a tutorial on twuik

http://www.tricastmedia.com/v1/twuik/tutorial/part1.html

Twuik home page

http://www.tricastmedia.com/v1/twuik.php

Here is Iphone using Tricast media twuik

sony ericsson phone using tricast media




this is a video of a sony ericsson phone that is using the TWUIK by tricast media to make the user interface companents.

Wednesday, February 21, 2007

Google Reader API

From http://www.niallkennedy.com/blog/archives/2005/12/google_reader_a.html

Google Reader users are assigned a 20-digit user ID used throughout Google's feed system. User-specifc data is accessible using the google.com cookie named "SID."...Google assigns each user a 20 digit user ID that would not change over time, and a session ID (SID) you can delete, regenerate, and expire.

Google converts all feed data to Atom regardless of its original publication format. All RSS feed post content appears in the summary element and...I found no additional metadata about the feed containing full posts but Google does publish content data where available.

You may request any feed from the Google Reader system using the following URL structure:

  • http://www.google.com/reader/atom/feed/ + [Feed URL]



You may specify the total number of feed entries to retrieve using the n parameter. The default number of feed items returned is 20 (n=20).

Google strips off all the data it does not render in Reader. Stripped data includes namespaced data such as Apple iTunes podcast data and Yahoo! Media RSS, additional author data such as e-mail and home URL, and even copyright data.

Subscription list



/reader/atom/user/[user id]/pref/com.google/subscriptions

Google Reader's feed subscription list contains a user's current feed subscriptions as well as past deleted subscriptions. Each feed is contained in an entry complete with feed URL, published and updated dates, and user-specific tags, if present. Current subscriptions are categorized as a reading list state. You may request the full list of feeds by setting the complete to true.

Reading list



/reader/atom/user[user id]/state/com.google/reading-list

My favorite feature of the Google Reader backend is direct access to a stream of unread entries across all subscribed feeds. Google will output the latest in a "river of news" style data view...You may specify the total number of entries you would like Google to return using the n parameter -- the default is 20 (n=20).

Read items only



http://www.google.com/reader/atom/user/[user ID]/state/com.google/read

You can retrieve a listing of read items from Google Reader. You might want to analyze the last 100 items a user has read to pull out trends or enable complete search and this function may therefore be useful. You may adjust the number of items retrieved using the n parameter -- the default is 20 (n=20).

Reading list by tag



/reader/atom/user/[user id]/label/[tag]

You may also view a list of recently published entries limited to feeds of a certain tag. If you have tagged multiple feeds as "marketing" you might want to request just the latest river of news for those marketing feeds. The returned feed contains both read and unread items. Read items are categorized as read (state/com.google/read) if you would like to hide them from view. The number of returned results may be adjusted using the n parameter.

Starred items only



/reader/atom/user[user id]/state/com.google/starred

Google Reader users can flag an item with a star. These flagged items are exposed as a list of entries with feed URL, tags, and published/updated times included. You may specify the total number of tagged entries to return using the n parameter -- the default value is 20 (n=20). Google treats starred items as a special type of tag and the output therefore matches the tag reading list.

Add or delete subscriptions



/reader/api/0/edit-subscription

You may add any feed to your Google Reader list using the Google Reader API via a HTTP post.

  • /reader/api/0/edit-subscription -- base URL

  • ac=["subscribe" or "unsubscribe"] -- requested action

  • s=feed%2F[feed URL] -- your requested subscription

  • T=[command token] -- expiring token issued by Google. Obtain your token at /reader/api/0/token.



Add tags



/reader/api/0/edit-tag

You may also add tags to any feed or individual item via a HTTP post.

  • /reader/api/0/edit-tag -- base URL

  • s=feed%2F[feed URL] -- the feed URL you would like to tag

  • i=[item id] -- the item ID presented in the feed. Optional and used to tag individual items.

  • a=user%2F[user ID]%2Flabel%2F[tag] -- requested action. add a tag to the feed, item, or both.

  • a=user%2F[user ID]%2Fstate%2Fcom.google%2Fstarred -- flag or star a post.

  • T=[special scramble] -- three pieces of information about the user to associate with the new tag. Security unknown and therefore unpublished.



Conclusion



It is possible to build a your own feed reader on top of Google's data with targeted server calls. You can power an application both online and offline using Google as your backend and focus on building new experiences on top of the data. Advanced functionality is available with a numeric Google ID and some variable tweaks.

Google has built the first application on top of this data API, the Google Reader lens, and judging from their choice of URLs the lens may not be Google's last application built on this data set. I like the openness of the data calls and think the Google Reader APIs are simple enough to bootstrap a few new applications within Google or created by third-party developers.

Sunday, February 11, 2007

image problem

the image problem has been solved in the rss reader, the image was not getting completely downloaded , now this problem is solved by opening an inputStream from the httpCoonector provided by sun,s j2me and then creating a Image using
Image.createImage(InputStream) ;
the previous method that was being used was to first download the bytes of the image , store the
byte in an array and then create an image using the ByteArray
Image.createImage(ByteArray);

the above code is not perfect in syntax but just displays the concept of what was done to treat the image problem.

the other problem was that when an image is encountered the program used to hang.
This problem was solved by downloading the image in the background using a seperate thread.

J2ME Resources

This post will be updated to provide links to articles and resources related to J2ME.

http://community.java.net/mobileandembedded/

Tuesday, February 6, 2007

Image problem in RSS reader

we found that larger images are not displayed properly in the browser, It seems that the browser tries to render the image prior to it is completely downloaded , the supossed solution could be to first download the binary data of the image using a seperate thread and then call the render function to render that data over the screen. The programmer of the orignal appliation seems not to be caring abt threads as the thread mechanism in the GetUrl() function was added by me , because it was not using threads at all in the beggining and therefore was not able to fetch any url when a link was clicked , threading could make the clicking of link possible, and now i think that the image problem will be solved if we put a sleep(10) function in the rendering thread .
or by making two concurrent threads to run , one to render and the other to fetch the data.

J2ME RSS Reader Development

The purpose of this blog is to document the development of the J2ME RSS Reader. The most important purpose for maintaining this blog is for collaboration. Any time an idea strikes, you can enter it into the blog for discussion later. Management can view developers' progress and offer advice and guidance. Future developers can use this as reference to get a better understanding of the app. This blog also serves as a roadmap for the development of the app. It can be used to help remember why decisions were made, debugging results, and any other event encountered during the course of the app's development.