<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I-Am-Bot</title>
	<atom:link href="http://iambot.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://iambot.net</link>
	<description>Code, technology and life</description>
	<lastBuildDate>Tue, 10 Jan 2012 03:40:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Symfony2 form theme for Bootstrap</title>
		<link>http://iambot.net/2011/11/symfony2-form-theme-for-bootstrap/</link>
		<comments>http://iambot.net/2011/11/symfony2-form-theme-for-bootstrap/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 07:25:00 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=523</guid>
		<description><![CDATA[Symfony2 is a flexible, fast and secure PHP 5 framework for developing modern applications. This post assumes you already know the basics of working with Symfony. Symfony2 has a very powerful templating engine in the form of Twig, a simple templating engine much like the popular Mustache. Twig allows non programmers to quickly design HTML [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><a href="http://symfony.com"><em>Symfony2</a> is a flexible, fast and secure PHP 5 framework for developing modern applications. This post assumes you already know the basics of working with Symfony.</em></p></blockquote>
<p>Symfony2 has a very powerful templating engine in the form of <a href="http://symfony.com/doc/current/book/templating.html">Twig</a>, a simple templating engine much like the popular Mustache. Twig allows non programmers to quickly design HTML layouts without the need to write PHP code. It also makes working with forms a breeze, and all that is needed to output a form on a template is</p>
<p><code>form_widget(form)</code></p>
<p>However, styling the form to suit your need takes a bit more effort. Symfony does allow your application to have different <a href="http://symfony.com/doc/2.0/cookbook/form/form_customization.html">form themes</a> which can be then be applied to various forms. It involves overriding various blocks to render different parts of the form. The problem is in finding which blocks to edit, and which to leave alone. This post can serve as a theme to render forms styled like the ones in <a href="http://twitter.github.com/bootstrap/">Bootstrap</a>.</p>
<p>When drawing a form using the <code>form_widget(form)</code> or <code>form_row(form.field)</code>, Symfony uses the default theme that is defined in the file <a href="https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig">form_div_layout.html.twig</a>. This file contains the various block definitions that are called when you use the appropriate twig function. For example, when you simply call <code>form_widget(form)</code>, you can see how it in turn calls <code>field_rows(form)</code>, which then renders the form errors, and for every field in the form, calls the corresponding widget block.</p>
<p>For Bootstrap's theme, we will override 3 blocks, and define one macro to display errors from the form.</p>
<p>We first define the macro hasErrors to check if the current field has an error, in which case the string "error" is returned which is appended to the class of the input div for the field to be rendered as an error field</p>
<p><code>/src/Acme/DemoBundle/Resources/views/Form/macro.html.twig</code></p>
<pre class="brush: xml; title: ; notranslate">
{% macro hasErrors(field) %}
    {% if form_errors(field)|length &gt; 1 %}
        {{ 'error' }}
    {% endif %}
{% endmacro %}
</pre>
<p>Then, we redefine the field_rows block and do not display the error messages at the beginning of the form</p>
<p><code>/src/Acme/DemoBundle/Resources/views/Form/theme.html.twig</code></p>
<pre class="brush: xml; title: ; notranslate">
{% block field_rows %}
{% spaceless %}
    {% for child in form %}
        {{ form_row(child) }}
    {% endfor %}
{% endspaceless %}
{% endblock field_rows %}
</pre>
<p>Next, we define the custom field_row block that actually renders the HTML for each field. We define the container div for each input field, and call the hasErrors macro to check if Symfony has returned an error for that field. If yes, the class "error" will be added to the class attribute, and the entire field will be highlighted in red to indicate an error. We then echo the error after the field, just like in Bootstrap. Notice how we are passing the global _context object to the form_widget block. By default, you can pass custom attributes to the form_widget block and not to the field_row block. This is done so that we can add custom attributes to each input field, as shown in the example at the end.</p>
<p><code>/src/Acme/DemoBundle/Resources/views/Form/theme.html.twig</code></p>
<pre class="brush: xml; title: ; notranslate">
{% block field_row %}
{% spaceless %}
    {% if macro is not defined %}
        {% import 'AcmeDemoBundle:Form:macro.html.twig' as macro %}
    {% endif %}
    &lt;div class=&quot;clearfix {{macro.hasErrors(form)}}&quot;&gt;
        {{ form_label(form) }}
        &lt;div class=&quot;input&quot;&gt;
            {{ form_widget(form, _context) }}
            {{ form_errors(form) }}
        &lt;/div&gt;
    &lt;/div&gt;
{% endspaceless %}
{% endblock field_row %}
</pre>
<p>We have defined the actual macro, but we now have to customize the error display. That is done in the field_errors block</p>
<p><code>/src/Acme/DemoBundle/Resources/views/Form/theme.html.twig</code></p>
<pre class="brush: xml; title: ; notranslate">
{% block field_errors %}
{% spaceless %}
    {% if errors is defined and errors|length &gt; 0 %}
        {% for error in errors %}
        &lt;span class=&quot;help-inline error&quot; style=&quot;float:right;width:170px;margin-top:5px;&quot;&gt;{{ error.messageTemplate|trans(error.messageParameters, 'validators') }}&lt;/span&gt;
        {% endfor %}
    {% endif %}
{% endspaceless %}
{% endblock field_errors %}
</pre>
<p>That's it! We have now created a custom form theme! To use this, just include the following twig block before drawing the theme</p>
<pre class="brush: xml; title: ; notranslate">
{% form_theme form 'AcmeDemoBundle:Form:theme.html.twig' %}
{{ form_row(form.name, { 'attr': {'class':'xlarge','placeholder':'Please enter your name'} }) }}
{{ form_row(form.description, {'attr': {'class':'xlarge'} }) }}
{{ form_rest(form) }}
</pre>
<p>We are using the form_row block to render each field, so that we can also pass along custom attributes to each field, just like the form_widget block <code>{{ form_widget(form.task, { 'attr': {'class': 'task_field'} }) }}</code>. However, if we use <code>form_widget(form)</code>, then custom attributes cannot be passed to individual fields, but the theme will be rendered nevertheless. Passing custom attributes is particularly useful to adjust the width, height, placeholder, etc of the fields.</p>
<p>That's it! You can define various themes for different parts of your application in a similar fashion, and simply set the appropriate theme with the <code>form_theme</code> directive before rendering a form. Have fun theming forms in Symfony2!</p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2011/11/symfony2-form-theme-for-bootstrap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rockstar &#8211; A review</title>
		<link>http://iambot.net/2011/11/rockstar-a-review/</link>
		<comments>http://iambot.net/2011/11/rockstar-a-review/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 10:02:20 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[reviews]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=518</guid>
		<description><![CDATA[Watching a 160 hour movie at 9:30 in the night isn't something I was particularly looking forward towards. But it was "Rockstar", and there is NO WAY a Hindi movie with such a cool title can suck! I wish I can say that after entering the cinema hall one fine night, and leaving it the [...]]]></description>
			<content:encoded><![CDATA[<p>Watching a 160 hour movie at 9:30 in the night isn't something I was particularly looking forward towards. But it was "<a href="http://www.imdb.com/title/tt1839596/">Rockstar</a>", and there is NO WAY a Hindi movie with such a cool title can suck! I wish I can say that after entering the cinema hall one fine night, and leaving it the next day.</p>
<p>Rockstar is <em>that</em> kind of a movie. It could've been much more than what it ended up being. I would love to say "spoilers ahead", but there is not much of a story to spoil. Ranbir Kapoor as Janardan Jakhar is a college guy, passionate about music but clueless as to how to make it big. He lazes around the college canteen, where its owner tells him - how can you be a great artist when you haven't suffered in life? He then goes on to quote a list of great artists, the ones posted in JJ's wall. JJ relents, decides he has to first fall in love, break up, feel the pain in order to become a better musician. Then the age old tale of falling for the girl, but only it isn't real the first time. </p>
<p>The initial 45 minutes are delightful in introducing the characters and how JJ tries to get close to girl just to fall in love. The neat and clean girl turns out to be a "junglee jawani" and they end up having fun watching cheap flicks in shady cinemas, boozing on cheap alcohol and what not, all before the girl's marriage. After the girl is gone, he is thrown out of his house and spends a few years playing and singing in Mosques, parties, Temples and all. Then he is slowly transformed into a bad-ass rocker Jordan - who shouts, screams, and in general is the black swan of JJ.</p>
<p>The second half of the movie is a drag - clichéd dialogs, repetitive scenes, grinding one's patience. Instead of a complete review which you can read on numerous sites online, here is:</p>
<p><strong>What I liked</strong></p>
<p>1) Fun filled 45 minutes at the beginning</p>
<p>2) Shades of Grey in the rockstar's life - having an affair with someone who is married and his sometimes forceful need to get physical</p>
<p>3) Decent performance by Ranbir</p>
<p>4) A mixture of different genres in the soundtrack. The Sufi song is great!</p>
<p><strong>And what I didn't</strong></p>
<p>1) Second half of the movie completely clueless!</p>
<p>2) Last 30 minutes a curse! Too many clichéd dialogs, scenes (including the class "Its a medical miracle!"), generally direction-less story telling</p>
<p>3) Did I say the movie is 160 minutes long? Let me say that again - 2 hours and 40 minutes.</p>
<p>4) Where is the soul of the rockstar? Pain is portrayed, but what about the process of how he writes lyrics, makes music. Even artists need preparation, you know.</p>
<p>5) People love an angry rockstar, but there should be another face too. Ranbir puts up his "I hate everything in the world" face for a better part of the movie, and it gets a bit too monotonous and boring</p>
<p>6) The crowd thronging him everywhere, girls falling heads over heels for him, everyone wanting a piece of him, etc seems a bit overdone. Doesn't happen the way its portrayed in India (and definitely not the way shown in the movie "Boys")</p>
<p>7) And the biggest letdown was that the movie was a letdown! I had high hopes, especially after enjoying the initial half of the movie. Too bad the team couldn't finish it off slickly as well.</p>
<p><strong>Verdict</strong><br />
Rockstar - doesn't rock much. Enjoyable first half, avoidable second half. Great promise, poor execution. 6/10</p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2011/11/rockstar-a-review/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Update on phpUserAuth</title>
		<link>http://iambot.net/2011/08/update-on-phpuserauth/</link>
		<comments>http://iambot.net/2011/08/update-on-phpuserauth/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 07:42:12 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=492</guid>
		<description><![CDATA[My apologies for the lack of activity on phpUserAuth and a couple of other scripts. I have decided to spend sometime each week on my small projects, and to answer comments and questions regularly. As a first step towards that, phpUserAuth is now available on github. The project will be hosted there for better code [...]]]></description>
			<content:encoded><![CDATA[<p>My apologies for the lack of activity on phpUserAuth and a couple of other scripts. I have decided to spend sometime each week on my small projects, and to answer comments and questions regularly. As a first step towards that, phpUserAuth is now available on <a href="https://github.com/Checksum/phpUserAuth">github</a>. The project will be hosted there for better code management and it also makes it easier for other devs to contribute or customize it for their own needs. I realize that the code needs a lot of work, and some parts of it will have to rewritten from scratch. The immediate need is to cleanup some code, and improve the file organization. The commented JS source files will be uploaded and reorganized. </p>
<p>And to anyone who is using/planning to use it, I would like to know the most important feature that is needed immediately. That, along with enhancements to the admin page will be worked on. If anyone has already worked on enhancements, please put in a pull request on github.</p>
<p>Here's hoping for regular activity on the project!</p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2011/08/update-on-phpuserauth/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lessons from Notion Ink&#8217;s Adam</title>
		<link>http://iambot.net/2011/08/lessons-from-notion-ink-adam/</link>
		<comments>http://iambot.net/2011/08/lessons-from-notion-ink-adam/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 07:28:33 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[india]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[adam]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[notionink]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=480</guid>
		<description><![CDATA[The tech world is NOT a friendly place to be in, especially if you are a startup dealing with hardware in India. The guys at Notion Ink dared to do what no one else had attempted in India - make a world class tablet which can rival the best out there. And they called it [...]]]></description>
			<content:encoded><![CDATA[<p>The tech world is NOT a friendly place to be in, especially if you are a startup dealing with hardware in India. The guys at <a href="http://notionink.in">Notion Ink</a> dared to do what no one else had attempted in India - make a world class tablet which can rival the best out there. And they called it <a href="http://www.crunchgear.com/2011/01/25/notion-ink-adam-user-meta-review/">Adam</a>. It wasn't meant to be a cheap "Chinese" tablet, but a worthy competitor to the likes of the iPad, Motorola Xoom, et all. With an active <a href="http://notionink.wordpress.com/">blog</a> with passionate people commenting, discussing, debating almost every aspect of its  design, development, sales and marketing, it seemed that the <a href="http://www.engadget.com/2010/06/08/shocker-notion-ink-adam-likely-delayed/">bad</a> <a href="http://www.engadget.com/2010/08/10/notion-ink-adam-really-delayed-this-time-investors-are-to-blame/">days</a> were well past the folks at NI. Its been a few months since the Adam was launched officially at <a href="http://www.slashgear.com/notion-ink-adam-hands-on-at-ces-2011-05123431/">CES 2011</a>, and it was a very low key launch to say the least. This is my take on what they did right, where they screwed up and where they could've done better.</p>
<p><strong>Hardware</strong></p>
<p>The Adam has been in the works for more than two years (The <a href="http://notionink.wordpress.com/2009/04/26/the-return-of-newton/">first</a> blog post was in April 2009). And right from the beginning, they went with the best hardware platform available - nVidia Tegra with a dual core CPU, irresistible <a href="http://www.pixelqi.com/products">Pixel Qi</a> display, a lot of RAM for a tablet, plenty of connectivity options all in a sleek package(<a href="http://www.notionink.com/techspecs.php">Complete specs</a>). And all this translates into real world advantages - longer battery life due to the Trans-reflective display, a camera that can be used as both front and back facing capture, HDMI output, and a full set of connectivity options including 3G.</p>
<p>When your product is aimed at tech savvy Android users, it better be right on top of the hardware game. Selling all this under $500 seems like a gamble, but NI have probably realized that its the software ecosystem that makes more money in the long run as in the case of App store and the Android Market. Also, they probably needed all this power for their custom UI on top of Android, the <a href="http://notionink.wordpress.com/2010/12/19/eden-and-our-effort/">Eden</a>. Unfortunately, by the time it became available to the consumers, tablets with similar/better hardware and by well known manufacturers have already hit the market. While the Adam's hardware is not aged by any standard, it cannot boast of being the best hardware platform. </p>
<p><strong>Software</strong></p>
<p>Choosing Android as the platform isn't something that would've take a long time to decide on. After the runaway success of the iPad, almost all competitors have adopted Android, partially due to the fact that there aren't many good alternatives for a tablet OS. Also, owing to its "Open source" roots and a wide support by the developer community, it would mean more developer and user love, which translates into more sales. The Adam currently runs Android 2.3 Gingerbread with custom enhancements and applications. Android 3.0 Honeycomb was released this year with major improvements to the UI for tablets. In fact, Honeycomb is specifically targeted at tablet manufacturers and hasn't hit the phone format yet. NI has been fortunate enough to get access to it as Google has started to pick and choose the manufacturers it is giving away the source code to (The source to honeycomb hasn't been made public yet). Customizing Eden for honeycomb will take a while, now that it comes bundled with UI components for tablets. That said, it might not matter a lot as Eden has been a major selling point for NI and they wouldn't want to throw all that hard work away.</p>
<p>NI has been rolling out patches for major issues, as well as performance/feature enhancements. While it might not have been very quick, they have at least shown the inclination to support the device in the long run, which is important for them to build up a reputation in the market.</p>
<p><strong>Marketing</strong></p>
<p>This is where things got real bad. The launch at CES was a bummer. Very few review sites had a hands on and fewer still had a preview on their blogs. The launch didn't even include actual demos of the device and available images were mostly mockups. When you want to be taken seriously, you had better have a few working devices for tech journalists and reviewers at your launch. There was a lot of anger from fans, mostly due to the complete lack of communication and genuine pics/videos from the company. It seemed to be yet another vapourware, and people quickly grew disinterested and started focusing on other upcoming android tablets which had, by then started flooding the market.</p>
<p>With constant delays at every phase of the project, the team should have planned accordingly for the launch. Had they released it a month later with working review pieces, detailed demos and hands on videos, the reaction from the tech world would've been better. Also, there is hardly any online/offline marketing. When you do not provide enough visibility for your new product, don't expect much in return. Word of mouth publicity and social networking can only sell so much. NI should definitely put in some effort and do some advertising, especially in growing economies like India and China, where cost of advertising isn't as high as in the developed world.</p>
<p><strong>Sales &#038; Support</strong></p>
<p>When you screw up your marketing and still have your pre-orders booked out, you are counting your blessings. But then that wasn't smooth either. Constant delays, website and payment gateway issues, lack of communication regarding shipping delays put off many potential buyers. Manufacturing should have been handled better, and support folks should have kept buyers updated on shipping issues. Pleading that you are a startup will earn only so much sympathy and understanding from your customers. Plainly put, the whole buying experience needs to be fixed, and support has to be expanded. An online support forum is always good, but getting knowledgeable staff and a quick response is crucial too.</p>
<p><strong>Applications</strong></p>
<p>One thing NI seems to be doing right, is getting in a lot of applications on their device. They have been constantly adding newer applications and enhancing the existing ones. Android lovers will be kept happy as kernel sources are open sourced (<a href="https://github.com/notionink" title="github" target="_blank">github</a>), and community support at <a href="http://forum.xda-developers.com/forumdisplay.php?f=891">XDA</a> is just getting started. </p>
<p>The Adam still is a decent device, but NI needs to pull itself together very quickly and fix its sales and support issues. The jump to honeycomb is crucial for the future of the platform, even if their custom skin isn't ready. They can always go the Galaxy Tab 10.1 way, and add the UX customization later on top of a default Andriod experience. I do hope they try and expand the market for the Adam before planning on a successor. In India, where the company is based, the tablet market is booming with the iPad2 and Galaxy Tabs, but the Adam isn't even known outside the enthusiast circle. The faster they move, the better it is for the company and for other hardware startups here. </p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2011/08/lessons-from-notion-ink-adam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How well do you know your government?</title>
		<link>http://iambot.net/2011/02/how-well-do-you-know-your-government/</link>
		<comments>http://iambot.net/2011/02/how-well-do-you-know-your-government/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 13:39:21 +0000</pubDate>
		<dc:creator>Srinath</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://iambot.net/?p=482</guid>
		<description><![CDATA["This Government sucks!" "The Prime Minister is a mere puppet!" "Scams in billions of dollars when half the people are still starving" We've said it, heard it, read about it on papers, seen it on news channels. And I am, in particular, one of the leading proponents of spreading such 'political awareness' on Facebook and [...]]]></description>
			<content:encoded><![CDATA[<p>"This Government sucks!"<br />
"The Prime Minister is a mere puppet!"<br />
"Scams in billions of dollars when half the people are still starving"</p>
<p>We've said it, heard it, read about it on papers, seen it on news channels. And I am, in particular, one of the leading proponents of spreading such 'political awareness' on Facebook and Twitter. Yes, its all true. This country is slowly crawling into a hole. As citizens, we have every right to rant about it. But today, I paused and asked myself a single question:</p>
<p>"Do you know the name of the municipal councilor of your area?"</p>
<p>And I was left with no answer. Worse, I realized the actual implications of the question. It isn't just about that single question. Its about knowing what your responsibilities as a citizen are. Its about knowing the backbone of our country. Its about knowing the very ministers and politicians WE, the people, elected. We hire them and pay them to run the country for us. And they suck at it big time! Not just this government, but almost every government that we've had since Independence has been equally bad.</p>
<p>So where does the fault lie? If the politicians are taking the country for granted, isn't it time the tax payers stepped in and do something about it? If a company hires under performing employees all the time for years together, who is to be blamed - the bad employees, or the company itself? Yes, we citizens really don't have many choices - we either get corrupt politicians, or even more corrupt politicians. Unfortunately, we have to make the best with what we have, rather than whine about lack of choice. No matter which government comes to power, we have to remember that we are the ones getting screwed badly! The honest, tax paying citizen is taken for a ride, and the corrupt politician with criminal cases pending against him piles up millions after millions of our money.</p>
<p>As a citizen, we not only have a duty to vote, but also a duty to make sure that people we elect are doing their jobs properly. Election isn't only about going to the booth every 5 years, but to keep track of their performance and to make sure that whey they suck at it, they bloody well know how badly they suck! And what better way to inform your area councilor or the panchayat incharge that something isn't the way it's supposed to be. Yes we will be ignored. Yes, we might even be shouted upon or abused. But look around! The world can't get any worse that it already is. People are turning into animals. Common sense is neither common, nor does it make sense to a whole lot of people! We get the same treatment from people on the roads, in buses, in shopping malls, and in beaches. It really cannot get any worse. If nothing does work, we will actually have the satisfaction that we tried. And if a hundred people keep trying, things might just improve, considering elections are around.</p>
<p>Thankfully, the Tamil Nadu Government sites are pretty informative. So I finally found out that my area comes under the Maduravoyal municipality, found out who the department heads are, and more importantly, got a number and an email address to forward my complains to.  Will it work? Probably not. But should I still go ahead and do it? Absolutely yes! The lesson learnt from this epiphany - Don't rant about how bad things are if you aren't going to try and change it. </p>
]]></content:encoded>
			<wfw:commentRss>http://iambot.net/2011/02/how-well-do-you-know-your-government/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

