I did not use SMS free service from web before. I just came across from hongkiat blog posted about Chawt, a free SMS sending service from online that let you sent 80 characters message to any number. It requires signup and you need to activate your account with the activation code that they sent to your mobile number. Once you activate, you can sent SMS to any number over 160 countries. Message comes from your mobile number when you sent from Chawt so that they can reply to you back. Try Chawt!
We get better design when we understand our medium. Yet even at this late cultural hour, many people don’t understand web design. Among them can be found some of our most distinguished business and cultural leaders, including a few who possess a profound grasp of design—except as it relates to the web.
Some who don’t understand web design nevertheless have the job of creating websites or supervising web designers and developers. Others who don’t understand web design are nevertheless professionally charged with evaluating it on behalf of the rest of us. Those who understand the least make the most noise. They are the ones leading charges, slamming doors, and throwing money—at all the wrong people and things.
If we want better sites, better work, and better-informed clients, the need to educate begins with us.
Read more here
#1: Be Narrow
Focus on the smallest possible problem you could solve that would potentially be useful. Most companies start out trying to do too many things, which makes life difficult and turns you into a me-too. Focusing on a small niche has so many advantages: With much less work, you can be the best at what you do. Small things, like a microscopic world, almost always turn out to be bigger than you think when you zoom in. You can much more easily position and market yourself when more focused. And when it comes to partnering, or being acquired, there’s less chance for conflict. This is all so logical and, yet, there’s a resistance to focusing. I think it comes from a fear of being trivial. Just remember: If you get to be #1 in your category, but your category is too small, then you can broaden your scope—and you can do so with leverage.
#2: Be Different
Ideas are in the air. There are lots of people thinking about—and probably working on—the same thing you are. And one of them is Google. Deal with it. How? First of all, realize that no sufficiently interesting space will be limited to one player. In a sense, competition actually is good—especially to legitimize new markets. Second, see #1—the specialist will almost always kick the generalist’s ass. Third, consider doing something that’s not so cutting edge. Many highly successful companies—the aforementioned big G being one—have thrived by taking on areas that everyone thought were done and redoing them right. Also? Get a good, non-generic name. Easier said than done, granted. But the most common mistake in naming is trying to be too descriptive, which leads to lots of hard-to-distinguish names. How many blogging companies have “blog” in their name, RSS companies “feed,” or podcasting companies “pod” or “cast”? Rarely are they the ones that stand out.
#3: Be Casual
We’re moving into what I call the era of the “Casual Web” (and casual content creation). This is much bigger than the hobbyist web or the professional web. Why? Because people have lives. And now, people with lives also have broadband. If you want to hit the really big home runs, create services that fit in with—and, indeed, help—people’s everyday lives without requiring lots of commitment or identity change. Flickr enables personal publishing among millions of folks who would never consider themselves personal publishers—they’re just sharing pictures with friends and family, a casual activity. Casual games are huge. Skype enables casual conversations.
#4: Be Picky
Another perennial business rule, and it applies to everything you do: features, employees, investors, partners, press opportunities. Startups are often too eager to accept people or ideas into their world. You can almost always afford to wait if something doesn’t feel just right, and false negatives are usually better than false positives. One of Google’s biggest strengths—and sources of frustration for outsiders—was their willingness to say no to opportunities, easy money, potential employees, and deals.
#5: Be User-Centric
User experience is everything. It always has been, but it’s still undervalued and under-invested in. If you don’t know user-centered design, study it. Hire people who know it. Obsess over it. Live and breathe it. Get your whole company on board. Better to iterate a hundred times to get the right feature right than to add a hundred more. The point of Ajax is that it can make a site more responsive, not that it’s sexy. Tags can make things easier to find and classify, but maybe not in your application. The point of an API is so developers can add value for users, not to impress the geeks. Don’t get sidetracked by technologies or the blog-worthiness of your next feature. Always focus on the user and all will be well.
#6: Be Self-Centered
Great products almost always come from someone scratching their own itch. Create something you want to exist in the world. Be a user of your own product. Hire people who are users of your product. Make it better based on your own desires. (But don’t trick yourself into thinking you are your user, when it comes to usability.) Another aspect of this is to not get seduced into doing deals with big companies at the expense or your users or at the expense of making your product better. When you’re small and they’re big, it’s hard to say no, but see #4.
#7: Be Greedy
It’s always good to have options. One of the best ways to do that is to have income. While it’s true that traffic is now again actually worth something, the give-everything-away-and-make-it-up-on-volume strategy stamps an expiration date on your company’s ass. In other words, design something to charge for into your product and start taking money within 6 months (and do it with PayPal). Done right, charging money can actually accelerate growth, not impede it, because then you have something to fuel marketing costs with. More importantly, having money coming in the door puts you in a much more powerful position when it comes to your next round of funding or acquisition talks. In fact, consider whether you need to have a free version at all. The TypePad approach—taking the high-end position in the market—makes for a great business model in the right market. Less support. Less scalability concerns. Less abuse. And much higher margins.
#8: Be Tiny
It’s standard web startup wisdom by now that with the substantially lower costs to starting something on the web, the difficulty of IPOs, and the willingness of the big guys to shell out for small teams doing innovative stuff, the most likely end game if you’re successful is acquisition. Acquisitions are much easier if they’re small. And small acquisitions are possible if valuations are kept low from the get go. And keeping valuations low is possible because it doesn’t cost much to start something anymore (especially if you keep the scope narrow). Besides the obvious techniques, one way to do this is to use turnkey services to lower your overhead—Administaff, ServerBeach, web apps, maybe even Elance.
#9: Be Agile
You know that old saw about a plane flying from California to Hawaii being off course 99% of the time—but constantly correcting? The same is true of successful startups—except they may start out heading toward Alaska. Many dot-com bubble companies that died could have eventually been successful had they been able to adjust and change their plans instead of running as fast as they could until they burned out, based on their initial assumptions. Pyra was started to build a project-management app, not Blogger. Flickr’s company was building a game. Ebay was going to sell auction software. Initial assumptions are almost always wrong. That’s why the waterfall approach to building software is obsolete in favor agile techniques. The same philosophy should be applied to building a company.
#10: Be Balanced
What is a startup without bleary-eyed, junk-food-fueled, balls-to-the-wall days and sleepless, caffeine-fueled, relationship-stressing nights? Answer?: A lot more enjoyable place to work. Yes, high levels of commitment are crucial. And yes, crunch times come and sometimes require an inordinate, painful, apologies-to-the-SO amount of work. But it can’t be all the time. Nature requires balance for health—as do the bodies and minds who work for you and, without which, your company will be worthless. There is no better way to maintain balance and lower your stress that I’ve found than David Allen’s GTD process. Learn it. Live it. Make it a part of your company, and you’ll have a secret weapon.
#11 (bonus!): Be Wary
Overgeneralized lists of business “rules” are not to be taken too literally. There are exceptions to everything.(written by evhead)
Instant messenging users who don’t like the overhead of downloading an IM client should checkout a new beta download called Yahoo Messenger for Web. The new service from Yahoo lets users partake in the text chat features of standard Yahoo IM but lacks file transfer, voice calls and web cam capabilities.
The web-based IM service is built using Adobe Flash technology and, like the download version, is interoperable with Windows Live Messenger and can be accessed from any of the four most popular browsers – Internet Explorer, Firefox, Safari and Opera.
The browser-based Yahoo IM service, the first to hit the market from one of the major IM providers, frees users to acccess their IM accounts from any computer with Internet access and a browser installed.
Yahoo is touting the service as particularly applicable to users who don’t own a computer and for workers at companies that disallow downloads. The implication is that the service opens up the possibility for people in lower income brackets to partake in IM.
According to Yahoo, it intends to rollout Yahoo Messenger for Web initially to South East Asia, a region with high Internet penetration but low PC ownership. Cyber cafes are especially popular in places like the Philippines, Vietnam and Thailand and Yahoo stands to gain a significant new audience from clientele without access to the net in their homes.
WASHINGTON–With the Internet poised to be the “epicenter” of the 2008 elections, Google is contemplating how best to keep candidate information readily accessible without allowing the Web to transform into a giant tabloid.
One major question the company faces is how to “provide a platform for free expression without exacerbating the ugliness,” Elliot Schrage, the company’s vice president of global communications, said at the annual Politics Online Conference here Thursday afternoon.
Schrage pointed to what he called a “disturbing” video posted by a YouTube user that featured the late son of presidential hopeful John Edwards. He said the company, after much contemplation, ultimately decided it was not in a position to remove it.
“We are redefining boundaries when it comes to the personal lives of candidates and their families,” Schrage said in his conference keynote speech at George Washington University. “We all have to be more vigilant about protecting the truth.”
As more and more candidates and voters use the Web as a soapbox, the public-relations chief acknowledged that the search giant is left in an awkward place. He said he believes that “self-policing” is the best way to prevent online mudslinging.
“We’re not in the business of assessing truth or falsity,” he said in response to an audience member’s follow-up question. “That’s not a path we want to take, or we think is appropriate, or our users would expect.”
Schrage was also quick to point out the unprecedented democratizing benefits he believes the Web has brought to candidates and voters. He said the Internet has led to easier interaction between politicians and constituents, greater accountability for politicians who make missteps and a broader fundraising base.
Google hopes to promote that exchange by creating a special sales team to handle ad requests from political campaigns. It has also invited all of the 2008 presidential candidates to journey to the Googleplex to “talk tech and policy and maybe even grab lunch,” Schrage said.
If the candidates agree to it, Google hopes to film some of the visit and put the videos they produce online, he added. YouTube recently launched a site called YouChoose ’08 that provides an official platform for the presidential candidates to post videos.
For the company that likes to say its mission is organizing the world’s information, it will remain a challenge to give voters the information they need without overwhelming them, Schrage said.
“I defy anyone here to search for ‘Hillary 2008′ and read all the results without passing out,” he quipped, adding: “not because of the content, mind you, but because of the volume.”
by Matt Raible
One of the hardest parts about J2EE development is getting started. There is an immense amount of open source tools for web app development. Making a decision on which technologies to use can be tough — actually beginning to use them can be even more difficult. Once you’ve decided to use Struts and Hibernate, how do you go about implementing them? If you look on the Hibernate site or the Struts site, you’ll probably have a hard time finding any information on integrating the two. What if you want to throw Spring into the mix? As a developer, the best way for me to learn is by viewing sample apps and tutorials that explain how to extend those applications. In order for me to learn (and remember) how to integrate open source technologies such as Hibernate, Spring, Struts, and Ant/XDoclet, I created AppFuse. The beauty of AppFuse is you can actually get started with Hibernate, Spring, and Struts without even knowing much about them. Using test-driven development, AppFuse and its tutorials will show you how to develop a J2EE web application quickly and efficiently.
The Birth of AppFuse
In early 2002, I managed to land a contract where I was the lone developer. I was responsible for everything, from gathering requirements to database creation to DHTML on the web front end. While I’d done a lot of front-end work (Struts, HTML, etc.) over the years, the business layer and persistence layer were mostly new to me. So I searched and searched for J2EE patterns to do things the “right way” for my new client. I ended up implementing Business Delegates, DAOs, and ServiceLocators — many of them modeled after J2EE Blueprints. Towards the end of that contract, I was contracted to help write a book on JSP 2.0. The publisher was Wrox Press and the book was Professional JSP 2.0. I volunteered to write two chapters — one on Struts and one on web security. Note: in March 2003, Wrox went out of business and this book eventually became Pro JSP, Third Edition, published by Apress.
When you write a technical book, it’s helpful to use a sample app to demonstrate concepts. I was tired of reading books that had a throwaway sample app, so I wanted to develop something meaningful; something I could use after I was done writing. My initial thoughts were to write an application that would help you get started with Struts, and would use XDoclet to do a lot of the heavy lifting. It also had to have a lot of security features so I could use it for my chapter on web application security. I came up with the name
struts-xdoclet and began developing my application.
After a couple of weeks, I decided that “
struts-xdoclet” was too hard to say and renamed the project AppFuse. I developed the sample app for my Struts chapter using AppFuse and released it as Struts Resume. After publishing Struts Resume, I needed to extract the resume-specific stuff out of it to revert back to the generic “jumpstart” application I wanted AppFuse to be. It took me almost three months, but I finally released the first official version of AppFuse in April 2003.
Since its initial release, AppFuse has gone through many changes and improvements. Most of the technology decisions were made from experience. It was a pain to keep my ValueObjects (VOs) and ActionForms in sync, so ActionsForms are generated using XDoclet. I found it tedious to write JDBC and more tedious to update SQL and VOs when adding new table columns. To solve this, I chose to use Hibernate for persistence and use Ant/XDoclet to dynamically create my database tables. Rather than lose my tables’ data each time, I integrated DBUnit, which also came in handy when running unit tests. I decided to use Tomcat/MySQL as the default server/database setup because I was most familiar with them. I integrated a plethora of unit/integration tests so I could make sweeping changes and verify that everything still worked (including the JSPs) by running
In March of 2004, I moved the AppFuse project from the Struts project on SourceForge to java.net. I had a couple of reasons for doing this. First of all, it was a sub-project on SourceForge, and its user base was growing quickly. It needed dedicated mailing lists and forums. Secondly, java.net seemed to do a better job of marketing projects and I’d heard their CVS system was much more stable. My experience at java.net has been quite nice: it’s a very stable system, and the administrators are very supportive of the project and have even helped with marketing it.
What is AppFuse?
So after all that history, what is AppFuse? At its very core, AppFuse is a web application that you can package into a .war and deploy to a J2EE 1.3-compliant app server. It’s designed to help you create new web applications using a
new target in its build.xml file. The
new target allows you to specify a name for your project and a name for the database it will talk to. Once you’ve created a project, you can instantly create a MySQL database and deploy it to Tomcat using
ant setup. Furthermore, you can verify that the basic functionality of your new application works by running
ant test-all. At this point, you might sneer and say, “What’s the big deal? Anyone can create a .war file and deploy it to Tomcat.” I agree, but do you have a
setup-tomcat target that will configure Tomcat with JNDI resources for connections pooling and mail services? Most of what AppFuse does is not rocket science. In reality, it’s nothing more than a directory structure, a build file, and a bunch of base classes — with a few features thrown in. However, it has vastly accelerated my ability to start projects and develop high-quality, well-tested web applications.
AppFuse tries to make it as simple as possible to build, test, and deploy your application. It virtually eliminates setup and configuration, which are often the hard parts. Tools like Ant, JUnit, XDoclet, Hibernate, and Spring can be difficult to get started with. Furthermore, features like authentication, password hints, “remember me,” user registration, and user management are things that most web apps need. AppFuse ships with tutorials for developing DAOs, business delegates, Struts actions (or Spring controllers), integrating tiles and validation, and uses an Ant-based XDoclet task (written by Erik Hatcher) to generate master/detail JSPs from model objects. It uses slick open source tag libraries like Struts Menu (for navigation) and the Display Tag (for paging and sorting lists).
One of the best parts, in my opinion, is that it embraces the Java community’s ideas and suggestions. The directory structure and build file are largely based on Erik Hatcher and Steve Loughran’s excellent Java Development with Ant book. In this book, Erik built a sample application that inspired me to learn more about Ant and XDoclet — and use it in my Struts development.
When I first started learning and using Hibernate in AppFuse, I made many mistakes — and the community let me know. At first, I opened and closed its Session object for each DAO method. When Gavin told me this was a bad idea, I made modifications to use an OpenSessionInView pattern, with my own ServletFilter to do the work. I passed the session object into each method signature, for which the community repeatedly questioned my logic. My answer was, “I wanted to get it working more than anything — do you have a better idea?” The better idea turned out to be using the Session as a constructor argument, which worked pretty well.
Then, late last year, I discovered the Spring framework and found the beautiful solution I’d been looking for. Using its ORM support, I was able to eliminate any Session handling in AppFuse; now Spring elegantly handles it all. AppFuse now uses Spring’s
OpenSessionInViewFilter. All I needed to do was configure it in web.xml and it manages opening and closing the session for me. When I integrated Spring in AppFuse’s persistence layer, I deleted two or three classes and reduced my LOC count by around 75 percent. All of the Hibernate issues I’d had before disappeared! In addition, I was quickly able to add a DAO implementation using iBATIS, which I worked with on a project last year. On that project, I discovered that iBATIS was easy to use and worked very well for interacting with complex database schemas.
AppFuse is not only a jumpstart kit for your web apps; it’s also a showcase for integrating technologies like Hibernate, Spring, and Struts. Tutorials exist for integrating these different open source components, but rarely do they give you an application you can walk away with and use to develop your next application. In a sense, AppFuse is a glue that binds open source projects together. When I found Spring, it was a perfect fit, since it was the glue to configure components and loosely couple the different layers of an application. Erik’s book might have been the match that lit AppFuse, but Spring is the gasoline that really got it roaring. Spring has vastly simplified how I develop with AppFuse and forced me to follow best practices in J2EE. In short, it’s the best tool I’ve ever used with J2EE. I realize Spring is not the be-all-end-all for J2EE applications — AppFuse worked fine before I integrated it. However, it helped answer all of my “How should I do …” questions — which was a nice relief.
What Does the Future Hold?
AppFuse 1.5 was released at the end of May. Its major feature is the option to use Spring MVC instead of Struts. All of the tutorials have been updated to educate users how to use Spring (or Struts) for their web layers. For AppFuse 1.6, I plan to add support for using WebWork and SiteMesh, as well as make it easier to run unit tests from Eclipse and IDEA. By the end of the year, I hope to add Tapestry and JSF as MVC options. The middle tier and back end (Spring plus Hibernate) probably won’t change much. It’s a well-oiled machine at this point. This isn’t to say that I think AppFuse is perfect. I hope I continue to receive valuable feedback and suggestions. After all, this is the driving force behind improving its quality.
When I find innovative and easier ways to develop web apps, it ends up in AppFuse. People ask me why AppFuse doesn’t support Middlegen. The reason is simple: I’ve never used or needed Middlegen on a project, so I don’t see any reason to add it. If I end up on a project where I use Middlegen, you can bet I’ll end up adding support for it. Recently, I started using Spring’s MVC framework instead of Struts. At first, I found it a bit difficult to understand, so I implemented the web layer with Spring MVC. Since the web layer contains many features that I use in web apps (i.e., templating, validation, file upload, and exception handling), I learned the ins and outs of Spring MVC by integrating it.
Using and learning AppFuse is a good way to keep up to date with the latest releases of its dependent projects. I try to keep as up to date as possible with new releases — and due to AppFuse’s unit test coverage, I can easily test new releases by dropping them in and running
ant test-all. This even works for dependent resources such as Tomcat and MySQL, in which I’ve found bugs via AppFuse. For me, it acts as a testing tool to verify the functionality of new open source releases.
Equinox is a lightweight version of AppFuse; hence its pseudonym “AppFuse Light.” I was inspired to create it when looking at the
webapp-minimal applications that ship with Struts and Spring, respectively. These “starter” apps were not robust enough for me, and I wanted something like AppFuse, only simpler — with no build-time dependencies.
It’s designed to show web app developers how to start a bare-bones Struts/Spring/Hibernate app using the QuickStart Chapter in Spring Live. More functionality may be added in the future, but the main goal is to provide a better implementation of a bare-bones web app.
Equinox should mostly be used for writing tutorials and rapid prototyping. I don’t recommend using it for starting a full-fledged production application. That’s what AppFuse is for.
How Do I Start Using It?
The best way to get started using AppFuse is to download it and read the QuickStart Guide. AppFuse is a part of the Java Enterprise Community on java.net. Its project homepage is at appfuse.dev.java.net.
If you’re interested in Equinox, you can read the QuickStart Chapter from Spring Live to build a quick and easy application using Struts, Spring, and Hibernate. If you like, you can view a demo of the MyUsers application that this chapter helps you build. Equinox is a sub-project of AppFuse on java.net. Its project homepage is at equinox.dev.java.net.
- AppFuse Project: appfuse.dev.java.net, Wiki Page and Demo
- Support: FAQ and Mailing List
- How-Tos: Tutorials, Using Resin, Using OracleAS, Using DB2, and Using Velocity instead of JSPs.
- Similar Projects: Java Application Generator and Megg
This is where I try to sum up the current state-of-the-art in graphic design for web pages, and identify the distinctive features that make a web page look fresh, appealing and easy to use.
I’ll update this article over time as new features stick out.
I’m glad to say that web design in 2006 is better than ever. And it’s not just because there are more web sites out there, so more good stuff to look at. There’s still an awful lot of crud too. I just think that more web designers know more about how to design than ever before.
The examples below (which I’ll roll over time) show excellent modern graphic design technique. They all look good, and are clear and easy to use.
I’m not saying these are the very best sites out there, just that they’re typical of today’s best design.