Skip to content


Multi Screen Hell in Android

This presentation summarizes multiple screen development difficulties, optimizations for different kinds of devices and screen sizes and gives best practices to handle multi screen problems in Android. It is presented in Dev Fest Ankara 2013 event.

You can also access presentation sources in GitHub.

Posted in Android.

Tagged with , , , , .


12 Months of Java in 2012

Duke with Friends

It’s been a busy old year for Java. The rise of several JVM languages and the community as a whole stood out but what else? We flick back through the calendar…

JANUARY

  • Amazon release the scalable DynamoDB, a NoSQL effort underpinning their cloud empire.
  • Jetbrains unveil their own language, Kotlin, which compiles to JVM bytecode and JavaScript.
  • After the acrimonious fallout (which led to Jenkins), CI server Hudson receives its first milestone at the Eclipse Foundation.

FEBRUARY

  • Business intelligence specialists Jaspersoft launch their own Big Data Index to keep tabs on emerging data stores, suggesting a big year for data.
  • Apache Ace gets Top-Level Project status at the ASF, showing OSGi is on their agenda.
  • With Java 7 failing to gain as much traction as hoped, Oracle extend Java 6’s End Of Life to November 2012. This became February 2013 not long after.

MARCH

  • Plans to move Oracle’s JDK bug database to JIRA were pushed back, after the team realised how big the task at hand was.
  • Red Hat become the first open source company to hit $1bn revenue for their financial year.
  • Typesafe, the company behind Scala’s rise, unleash Akka 2.0 – their event-driven middleware framework.

APRIL

  • Citrix bring cloud infrastructure conductor CloudStack to Apache’s incubator door, which they willingly receive.
  • Tomcat’s Webprofile counterpart Apache TomEE hits version 1.0.
  • JBoss’s testing integration project Arquillian gets its first stable version too.

MAY

  • VMware’s sponsored polyglot project vert.x arrives to plenty of acclaim, in a year which would see it go from strength to strength.
  • The drawn out Oracle vs Google trial gets its  rst verdict and the jury  nd that Java patents weren’t infringed in Android.
  • JRuby guy Charlie Nutter moves over to Red Hat – what plans do they have in store for JRuby?

JUNE

  • The biggest Eclipse release train ever arrives – Eclipse Juno, but it isn’t long before performance issues arise with the Eclipse 4.2 platform.
  • Oracle  nally bows to peer pressure and releases their own cloud platform – the imaginatively – titled Oracle Cloud.
  • The second version of Groovy finally arrives, bringing static type features with it.

JULY

AUGUST

  • Oracle look to get extra juice out of Java, by opening an open source venture into whether Java’s GPU could be used for computational power, and not just graphics.
  • Typesafe get $14m funding – could Scala challenge Java’s position with this investment?
  • The REST API project Apache Deltacloud goes GA.

SEPTEMBER

  • JavaOne 2012 focuses on the importance of the community and an embedded future for Java in the coming years.
  • The leading light for data Google publish Spanner, showcasing the possibilities of a truly scalable, global distributed database. The industry salivates.
  • Rackspace hand over the keys to the OpenStack community.

OCTOBER

  • JAX London returns for the fifth time, with Brian Goetz’s Lambda discussion stealing the show.
  • Rod Johnson joins Typesafe, on its board of directors. Could Scala get the Spring enterprise treatment?
  • Eclipse Orion, the foundation’s IDE spinoff into the browser gets a first full release.

NOVEMBER

  • After much secrecy, Project Nashorn, the JavaScript engine for the JVM open sources.
  • JSR 107 – the temporary caching API reaches an early draft review for Java EE 7, after 10 years hard work.
  • Facebook open sources MapReduce job scheduler Corona.

DECEMBER

  • VVMware and EMC spin Cloud Foundry and Spring into a separate company, in the Pivotal Initiative.
  • DataFX 1.0 arrives to solve JavaFX's data source headache.

Source: JAX Magazine / December 2012

Posted in Java.

Tagged with , , .


Cloud Computing: Technical and Business Perspectives

Recently, I give a presentation about "Cloud Computing: Technical and Business Perspectives". You can access this presentation's styles here.

PS: Use arrow keys (up/down/right/left) or mouse wheel for navigation and ESC to see all slides in thumbnail view. ;)

Posted in Cloud Computing, software architecture, Software Engineering.

Tagged with , , , , , .


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.

[sourcecode language="plain"]{
"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": [
]
}[/sourcecode]

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 , , .


GWT Overview and Feature Preview

"GWT Overview and Feature Preview" is a nice presentation about Google Web Toolkit  presented at the SV Web JUG meetup on 16th June by Fred Sauer. It starts with an overview of current GWT features and functionality and covers some of the features expected in GWT 2.0 such as “Developer Guided Code Splitting”, ClintBundle” and much more.

Posted in Google, Open Source.

Tagged with , , .


My Top 5 iPhone 3.0 OS Features

iPhone 3.0 OS, the next generation operating system for the iPhone released to public on June 17th with lots of new features make iPhone lovers smile. My favorites are listed below:

  1. Cut, Copy and Paste
    Quickly and easily cut, copy, and paste text from application to application. Select entire blocks of web text with a tap. Copy and paste images from the web, too.
    Double-tap over text, you will get a "Cut, Copy, and Paste" bubble dialog. Use blue markers to select desired text or hold a word until the magnifying glass appears, “Select” and “Select All” options are shown. Again use small, nice blue markers. Liked it. :)

    iphone30_copy_paste01 iphone30_copy_paste02

  2. Spotlight Search
    Find what you’re looking for across your iPhone, all from one place. Spotlight searches all of your contacts, email, calendars, and notes, as well as everything in your iPod.
    Click “Home” button to start searching. It can be configured from Settings>General>Home for switching double-clicking mode with other options such as “Phone Favorites”, “iPod” etc. 

    iphone30_search01iphone30_search02

  3. MMS
    Send MMS messages and include photos, audio, and contact info. Even tap to snap a picture right inside Messages.
    Use little camera icon in the left side of the message box to attach photos to your SMS.

    iphone30_mms01iphone30_mms02

  4. SMS Forwarding
    Manually select individual messages from a text message conversation, and forward them directly to another person via text message.
    Tap “Edit” in your message details, and check your desired messages to forward and click “Forward”.

    iphone30_message_forward01iphone30_message_forward02

  5. Internet Tethering
    Share your Internet connection with your laptop with Internet tethering via Bluetooth or USB.
    Enable it from General>Network>Internet Tethering. 

    iphone30_internet_tethering

There are many many great features coming with iPhone OS 3.0. Check out following links for more information:

Posted in Apple, iOS.

Tagged with , , .