Skip to content


How to Add Your Web App to Google Chrome Web Store

Recently, I developed an online metal music radio called Dj ACC. I wanted to add it to Google Chrome Web Store to access it from my browser's homepage. Here is how it looks like in my homepage. Nice, isn't it? :)

Dj ACC in ChromeLet's get to work now:

Configuration

It's not hard to accomplish this task in fact. There is a file called "manifest.json" that defines all the necessary configuration about your extension/app/theme. The json file below shows my manifest file for Dj ACC.

{
	"name": "Dj ACC - In Metal, I Trust.",
	"description": "New address for free online metal music.",
	"version": "1.1",
	"icons": {
		"128": "djacc_128.png"
	},
	"app": {
		"urls": [
			"http://www.djacc.com/"
		],
		"launch": {
			"web_url": "http://www.djacc.com/"
		}
	},
	"permissions": [
	]
}

It's straightforward i think. "name" and "version" are the only required fields. Put your site description into the "description" field. Icons are important. You should always provide a 128×128 icon. It's used during installation and by the Chrome Web Store. The others (16*16 and 48*48) may be omitted as I did. Beacuse I don't like Paint. :) The "app" part is used to specify the URLs that the application uses. Most important is the launch page for the app that the browser goes to when the user clicks the application's icon. It's opened in "New Tab" page.

You can find all the parameters for the manifest file here.

Submission

We're done for the configuration part. Put your json file and icon file (manifest.json and djacc_128.png for our case) in a directory and create a zip file that includes both files.

Now, open google web store page and select "Developer Dashboard" from the upper right. Login with your Google account if you're not already. Press "Add new item" button to upload our zip file.

Dj ACC - Add New Item

Select your zip file from the file system and click "Upload" button. You'll be presented a web form. Fill the "Detailed description", upload related icons. screenshot and images, add your owner web site, set pricing policy, select a category, region, language and finally connect your google analytics account if you have one. Test drive it using "Preview changes" button and publish it to the world with "Publish changes" button. That's all.

Important Note: Unless you're a Chrome Developer, you have to pay $5 before adding your content to web store.

Dj ACC - Final

Here is the final link for Dj ACC. Don't forget to add it to your browser and give 5 stars. :)

Happy coding. :D

Posted in Google, Social Media, Tips & Tricks.

Tagged with , , .


Grails + Bootstrap + Amazon + Jelastic = djacc.com

I'm a big fan of metal music and recently I created an online metal music radio called djacc.com.

Every day it plays 25 songs from different bands for each genre selected by the user. These songs are played all the day in the loop. Next day, it loads the new tracks and starts playing. First genre is randomly selected when the site is first loaded.

Let's have a look at the technical details of Dj ACC:

APIs

I have used Last.fm API and YouTube APIs for this project. While I'm playing the video, I display metadata information about the track and the band. I'm taking the video URL using YouTube Data API after searching it with track name and display video in chromeless video player. Using YouTube JS API, I control the video operations (play, pause, mute etc.). Last.fm API is used to take metadata about the track and artist such as "artist tags", "artist top albums", "album images" etc. 

Web Framework

Grails is my favorite web framework. I strongly recommend it. It's easy to use and you can be very productive in a very short amount time. I wrote two services for Last.fm and YouTube to take metadata and to get video details respectively. I have only one controller with a few actions to query database for the playlist and return track information as HTML and JSON. My server side controller code is only 84 lines. Thx Grails. :)

CSS & HTML Toolkit

I'm not a designer and I do not understand from design related issues in general. Also, I do not know CSS well. At this point, Bootstrap saved my life. It's an HTML & CSS & JS toolkit for rapid web application development from Twitter. It's a very new project and growing fast. I used basic functionality (layout, buttons, modal box) of it, but it works. I think, you may be more creative than me. Yes, I know. The site needs redesign. Any volunteer? :)  

JS Library

I used jQuery for JS handling. I think, i don't need to say much about it but here, I want to mention about JS template libraries. I have used jsrender for rendering JSON response to HTML in the client side. I request whole playlist data as JSON from the server and render every track info as HTML when the track is changed or completed. Thus, my server is happy, my client is not.

Storage and CDN

For static data (image, css and js files) storage, I selected Amazon's S3 service. It's really cheap and if you have a heavy load it can prevent your server crying. :) I don't think my site has such a load, but the rule is the rule: "always follow the best practices". I created a content delivery service using CloudFront over my S3 bucket and distributed my files all over the world. Ohhh yeahhh. I also defined a CNAME for it called "static.djacc.com" to show I'm big enough like Twitter and Facebook. :D

Deployment & Hosting

Amazon's dedicated servers are a little bit expensive for me, at least for now. I used Amazon Micro Instances for testing purposes. They are working well for small projects like mine. However, for the production, I needed a high performance machine and I found Jelastic (thanks Emrah). It's really fantastic. It has an intuitive web front end, high performance machines, real time scaling and best of all it's free for beta testing period. I put a load balancer front, 4 Tomcat7 application servers behind it and lastly I added my MySQL DB at the end of the stack. Perfect config for now. :)

Now, djacc.com is online. In metal, I trust. :)
@djaccproject

Posted in Java, software architecture, Software Engineering, Web 2.0.

Tagged with , .


Characteristics of a Good Software Requirements Specification (SRS)

Recently, I need to have a look at the IEEE SRS Standard. I think, all of you know very well about it. However, here, I want to reemphasize some basic points about good SRS characteristics briefly.

An SRS should be:

Correct

An SRS is correct if, and only if, every requirement stated therein is one that the software shall meet. Traceability makes this procedure easier and less prone to error.

Unambiguous

An SRS is unambiguous if, and only if, every requirement stated therein has only one interpretation. As a minimum, this requires that each characteristic of the final product be described using a single unique term.

Complete

An SRS is complete if, and only if, it includes the following elements:

  • All significant requirements, whether relating to functionality, performance, design constraints, attributes, or external interfaces. In particular any external requirements imposed by a system specification should be acknowledged and treated.
  • Definition of the responses of the software to all realizable classes of input data in all realizable classes of situations. Note that it is important to specify the responses to both valid and invalid input values.
  • Full labels and references to all figures, tables, and diagrams in the SRS and definition of all terms and units of measure.

Consistent

Consistency refers to internal consistency. If an SRS does not agree with some higher-level document, such as a system requirements specification, then it is not correct. An SRS is internally consistent if, and only if, no subset of individual requirements described in it conflict.

Ranked for importance and/or stability

An SRS is ranked for importance and/or stability if each requirement in it has an identifier to indicate either the importance or stability of that particular requirement. Typically, all of the requirements that relate to a software product are not equally important. Some requirements may be essential, especially for life-critical applications, while others may be desirable. Each requirement in the SRS should be identified to make these differences clear and explicit.

Verifiable

An SRS is verifiable if, and only if, every requirement stated therein is verifiable. A requirement is verifiable if, and only if, there exists some finite cost-effective process with which a person or machine can check that the software product meets the requirement.

Nonverifiable requirements include statements such as "works well", "good human interface", and "shall usually happen". These requirements cannot be verified because it is impossible to define the terms "good", "well", or "usually".

Modifiable

An SRS is modifiable if, and only if, its structure and style are such that any changes to the requirements can be made easily, completely, and consistently while retaining the structure and style. Modifiability generally requires an SRS to

  • Have a coherent and easy-to-use organization with a table of contents, an index, and explicit crossreferencing;
  • Not be redundant (i.e., the same requirement should not appear in more than one place in the SRS);
  • Express each requirement separately, rather than intermixed with other requirements.

Traceable

An SRS is traceable if the origin of each of its requirements is clear and if it facilitates the referencing of each requirement in future development or enhancement documentation. The following two types of traceability are recommended:

  • Backward traceability (i.e., to previous stages of development). This depends upon each requirement explicitly referencing its source in earlier documents.
  • Forward traceability (i.e., to all documents spawned by the SRS). This depends upon each requirement in the SRS having a unique name or reference number.

Posted in Software Engineering.

Tagged with , .


Best Quotes of Steve Jobs

I hereby resign as CEO of Apple. I would like to serve, if the Board sees fit, as Chairman of the Board, director and Apple employee.

These are the sentences from Steve Jobs’ emotional resignation letter. Is this the end of a era or a new beginning. Who knows, but the truth is what he did for the giant company Apple and what he said to the world. Here are my selection of best quotes from Steve Jobs:

  • Design is not just what it looks like and feels like. Design is how it works.
  • I think we’re having fun. I think our customers really like our products. And we’re always trying to do better.
  • A lot of companies have chosen to downsize, and maybe that was the right thing for them. We chose a different path. Our belief was that if we kept putting great products in front of customers, they would continue to open their wallets.
  • Why join the navy if you can be a pirate?
  • Be a yardstick of quality. Some people aren’t used to an environment where excellence is expected.
  • For something this complicated, it’s really hard to design products by focus groups. A lot of times, people don’t know what they want until you show it to them.
  • You can’t just ask customers what they want and then try to give that to them. By the time you get it built, they’ll want something new.
  • Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn’t really do it, they just saw something. It seemed obvious to them after a while. That’s because they were able to connect experiences they’ve had and synthesize new things. And the reason they were able to do that was that they’ve had more experiences or they have thought more about their experiences than other people.
  • We made the buttons on the screen look so good you’ll want to lick them.
  • To turn really interesting ideas and fledgling technologies into a company that can continue to innovate for years, it requires a lot of disciplines.
  • Innovation distinguishes between a leader and a follower.
  • You can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something — your gut, destiny, life, karma, whatever. This approach has never let me down, and it has made all the difference in my life.
  • Innovation has nothing to do with how many R&D dollars you have. When Apple came up with the Mac, IBM was spending at least 100 times more on R&D. It’s not about money. It’s about the people you have, how you’re led, and how much you get it.
  • I think if you do something and it turns out pretty good, then you should go do something else wonderful, not dwell on it for too long. Just figure out what’s next.
  • In most people’s vocabularies, design means veneer. It’s interior decorating. It’s the fabric of the curtains of the sofa. But to me, nothing could be further from the meaning of design. Design is the fundamental soul of a human-made creation that ends up expressing itself in successive outer layers of the product or service.
  • The system is that there is no system. That doesn’t mean we don’t have process. Apple is a very disciplined company, and we have great processes. But that’s not what it’s about. Process makes you more efficient.
  • It is hard to think that a $2 billion company with 4,300-plus people couldn’t compete with six people in blue jeans.
  • Being the richest man in the cemetery doesn’t matter to me … Going to bed at night saying we’ve done something wonderful… That’s what matters to me.
  • I want to put a ding in the universe.
  • I’ve always wanted to own and control the primary technology in everything we do.

And here’s one of his amazing speeches as a bonus.

Please add quotes that you know as comment.

Posted in Apple, Social Media.

Tagged with , , .


What The F**K is Social Media?

Social media is media designed to be disseminated through social interaction, created using highly accessible and scalable publishing techniques. Social media supports the human need for social interaction with technology, transforming broadcast media monologues (one to many) into social media dialogues (many to many). It supports the democratization of knowledge and information, transforming people from content consumers into content producers. Businesses also refer to social media as user-generated content (UGC) or consumer-generated media (CGM).

http://en.wikipedia.org/wiki/Social_media

So, what the f**k is social media? Interesting, enjoyable and informative interpretation of “social media” from Marta Kagan.

Posted in Social Media, Web 2.0.

Tagged with , , .