Posted by Chris on Feb 21, 2013 in Development |
I’ve previously posted about my (positive) experience with Titanium. I very quickly knocked out an app that included a REST type call to a server to display data, while utilizing the GPS location functionality. And survived the code signing procedure to even get the app deployed into the app store.
Since then I have been using the Wx range of products and haven’t look at Titanium in a while. So last week I decided to go see what’s new with it, especially since I hadn’t seen it since the Aptana acquisition.
Given that I’ve since played with other technologies, I was quite frankly disappointed that Titanium still doesn’t have a WYSIWYG editor. I’ve become what you could probably term a lazy developer. I enjoy solving algorithms and focusing on the issue, I really don’t have the inclination to sit and map labels on my screen using coordinates. It’s such a core requirement for 99% of apps (um…if you have a UI), and is nothing but tedium and routine, that any dev environment should provide this graphically.
It then occurred to me (perhaps I’m the last one to make the realization) that titanium is really all about cross platform, not about RAD. (That is, I knew its strength was xplatform but I assumed the RAD capabilities made it a top contender).
I then thought maybe I should take a look at Xcode. I had shyed away from it only in that I figured it was a case of needing to write hundreds of lines of code which would only take one in a product like titanium. Plus, if you haven’t looked at objectiveC and Xcode before, some of the directives seem somewhat daunting at first. Nonetheless I got a good book on it and started working my way through it.
I must say I have been pleasantly surprised. The actual Xcode environment clearly shows its maturity as an IDE. Objective-C is no where near as bad as I had been led to believe. And with the WYSIWYG editor and the new storyboard functionality, it’s almost as if Xcode has become a RAD environment. Plus, their are thousands of components out there you can use to make your life easier and your apps richer.
I’m now becoming an Xcode convert. The biggest drawback is of course the loss of cross platform capability, but I can survive without this. I’d be remiss if I didn’t point out that I think Titanium is still a good product, with a lot of potential. It does make life somewhat easier through some of its abstractions and the cross platform capability works well, including the fact that you can develop on a PC or a Mac. I think however I’ll continue on the Xcode path.
If you’ve been putting off looking at Xcode or have been intimidated by Objective-C, you owe it to yourself to take another look at it. Once you learn the proprietary directives and notations, you’ll quickly get the hang of it and even appreciate it’s elegance.
Did you like this? Share it:
Posted by Chris on Feb 5, 2013 in Architecture |
I gotta admit I’m really impressed with Google Real-time analytics. Not so much from a UI perspective (tends to be a little “clicky” to get what I want. For example 4 clicks to see my search traffic: Click Traffic Sources, Click Sources, Click Search, Click Overview). But I am impressed from an engineering point of view.
In terms of web stats, measuring the bounce rate is problematic because given the stateless nature of the conversation, you never know when someone really left your site. So if you have a very long product page and the person reads the entire page but doesn’t go anywhere else, well that’s still considered a bounce.
Not so with real-time analytics. Somehow it detects leaving a page within seconds. Which makes me think there must be some form of asynchronous polling going on. Yet, the regular analytics is incapable of knowing an actual bounce.
I don’t know what magic is happening here. I should probably sniff the traffic and see if there is some ping happening back to google while the page is being displayed.
Did you like this? Share it:
Posted by Chris on Jan 27, 2013 in Development |
Ok, I’m not talking popular like facebook or anything…but, seeing your site grow with users is a great feeling. Early December 2012 I started a forum site for a particular niche and took to social media to start marketing it. Twitter and Tumblr have shown the best return on …er…effort, I guess.
In about 6 weeks, I’ve seen the site grow to:
- Over 1500 registered members
- Over 8000 posts
- Over 1400 images uploaded
- Over 150 blogs created
- Over 330,000 page views per month
- Average time spent: Just over 10 minutes
I still get excited every time I see a new sign-up. The best part of this is the ability to be completely agile (in its truest form). A user makes a post saying “Gee it would be nice to have feature A1″. I quickly go off an implement A1 without any significant market research. Users quickly provide feedback and I refine A1. So much better than once you formalize the process and it becomes: A user requested a feature. Let’s put it in the pipeline of feature requests. Lets do a market sizing and cost analysis. Let’s do a detailed functional requirement document. Let’s create technical specs. Let’s plan the rollout of the feature. Oh, that’s not what the user wanted. Ok,let’s plan another 6 month “agile” cycle…
Anyway, here’s hoping the site continues its growth. What I don’t know if if I’ve reach saturation point on the growth curve. Especially as it relates to monthly page views. It’s quite possible it’s going to take a constant influx of new members to compensate for the member site fatigue (those who naturally stop using the forum) just to keep that level of page views, but we will see.
After I started the forum, I found out there are two large forums already existing in this niche. I guess it shows that sometimes market research kills an idea before it starts. Had I researched this, I wouldn’t have started. As it is, I did, and I’m now the fastest growing forum compared to those two competitors. I am now on a plan for niche domination (insert evil laughter here). I’ve offered to try buy one of the forums and I’ll have to get creative on beating the other one by simply offering a better user experience and more value.
Did you like this? Share it:
Posted by Chris on Jan 27, 2013 in Development |
We (myself and a friend) are busy filing a patent. We think it’s a really cool way of matching buyers of services with the provider of the services and can’t wait to also launch the site.
The site is being built on the WebDev framework (see my other posts) so it’s quickly becoming a good real-world test of the product capabilities.
It took a little bit of playing to get the look and feel but I must say I think it’s coming together quite nicely. First, it is very interesting to note that not only can a page inherit from a template, a template can inherit from a template…and that’s pretty damn cool. So we have a main template which is the basic look and feel. Then an “authenticated” template which inherits from the main template to provide a slightly different look and check for a valid session.
This project has also given us the opportunity to try out the Source Code Manager built into the product and the multi developer environment is working out really nice at the moment. A few minor annoyances…for example, to make a modification to the analysis (their term of the SQL Model), requires checking out a bazillion files….you cannot check out one piece of the model, but I guess this is ok:)
The patent is nearing its final revision…once it is filed we’ll be able to share the site and the idea itself.
Did you like this? Share it:
Posted by Chris on Nov 4, 2012 in Development |
I work at a company with a number of geographic locations: R&D in one country, HQ in another, and a sales team worldwide. Add to that a number of vendors we use from time to time (eg. Graphic designer) and it’d be safe to say we’ve got the world covered! And with this comes its own logistics challenges. It amazes me how we continue to struggle to send large files to each other. Yes, I know there are excellent solutions such as dropbox or egnyte, but sometimes you don’t want to go the hassle of giving a person specific access to one of your files. And space is still a premium and you inevitably end up struggling to clean out older files to make room for the newer ones.
I often run into the same problem just trying to transfer a file from one server to another. I may remote desktop into one box and need to get a file from another computer.
So, enter the solution: I decided to create a very simple file transfer site. The concept is not exactly new, but I wanted to make it extremely quick and convenient to use. The result…a site I call transfer.ly (http://transfer.ly)
Transfer.ly allows you to quickly add files and click Transfer. You get a unique, private link to retrieve your files. Then, the files are destroyed after 5 days…5days being more than enough to either send files to someone or to transfer them from one computer to another. I made sure that you can do all of this without even creating an account. Just click and go! Or should I say, click and transfer!
I’ve gone ahead and provide the technical details of the implementation here on the Project page.
Did you like this? Share it:
Posted by Chris on Sep 26, 2012 in Development |
In most mid to large size organizations who utilize J2EE as the platform, you will have the Architects determine what the standard framework will be. J2EE, by design in part, left some implementation of interfaces to third parties, and by fault in part, opened up a ecosystem of third parties to compliment J2EE deficiencies. The net result being that a “typical” J2EE implementation will have a stack that resembles the following:
UI: Add extjs or Jquery (if needed for RIA)
Middle Tier: Add Struts or Spring for MVC implementation, ehCache for cacheing
DB Tier: Hibernate for OR mapping
While that may seem innocuous, this adds a tremendous burden on the developer. Especially in the context of the average application: You would be amazed at what it takes to simply round-trip a field from the screen to the database, going through all those layers. You’ll spend enough time in the middle tier playing with XML files, and then use JSON to send data to the UI to then render it, JSON back to your middle tier which bundles it into an object, and then expecting Hibernate to map your object to the DB through generation of optimized (haha) SQL queries.
The belief being that this is a) “pure” and b) more easily maintainable under the false perception that perhaps, for example, you want to one day use a different presentation layer than you do today. What it means in reality is that you bear the cost today for implementing something you may or may not do in the future, and surprise, it’s never that easy when you actually do make the transition. Call me a skeptic, but I’ve been around to many large scale J2EE implementations.
So how does WebDev compare for someone coming from the J2EE world? For a start, you really have none of the typical “stack” as described above.
I think the two hardest things to overcome if you’re a hardcore J2EE’er, is to a) forget trying to be so “pure” and accept that there are quicker, more productive ways of doing something that may not be “textbook” computer science pure design principles and b) like religion, it requires a little bit of blind leap of faith since you don’t control every bit or byte and need to accept that the framework can actually do some things on your behalf.
If you can overcome (a) and (b), you may find yourself pleasantly surprised.
Tightly Coupled v Loosely Coupled
With J2EE, the loosely coupled tiers does allow for classic separation of concerns: You can have graphic guys work on slick UI’s and then hand it off to the developer for implementation. This is not easily accomplished in WebDev because you’re working in an integrated editor with a WYSIWYG environment. It does have the ability to import existing HTML so it is possible, but not to the same level of flexibility and especially not if you use template driven development such as Velocity or Smarty (in PHP for example). Winner here goes to J2EE.
Rapid Application Development
Ok this category goes hands down to WebDev and it’s not even a close call. Anytime you may find yourself saying “Feature X is better in J2EE”, you need to balance it with productivity gains. While the J2EE’er is probably still playing around with Struts Config, the WebDev’er is likely putting the finishing touches on their app. This is a broad category but generally speaks to the language productivity, the all in one dev environment, lack of necessity for multiple frameworks and so forth.
Clustering
J2EE wins this round. This because of the maturity of J2EE app servers such as WebLogic. However, I always caution engineers who are hell bent on implementing clustering. For one, session bloat causes poor cluster performance, and two, the overhead is not always a return on the benefit gained. Take for example a Craigslist or Facebook style application. If a node goes down, is it not acceptable to be routed back to the login screen and start again. I think it is an acceptable user experience, and failover through a loadbalancer is a lot simpler to accomplish than true clustering. Of course there are some mission critical scenarios where this would not be acceptable, in which case you may need to opt for J2EE (Even there though I would seriously examine the need or ability to cluster: Even if you cluster the app servers, you have some many dependencies that may not work clustered). I think Webdev can be compared more to a PHP style application or lightweight Java container such as Tomcat.
AJAX implementation
So much easier in WebDev! It is built into the product and framework.
Database Access
WebDev makes this easy. It is cognizant of the fact that so much of your web application consists of collecting and displaying information on the screen, and saving and retrieving it from a database, and it makes all of this a piece of cake. With Java, it’s a pain. Typically you’re righting objects, a DAO layer, using some O/R mapping tool, a bunch of Getter and Setter methods, sending JSON to the front end…blah.
Flexibility
J2EE wins this (even to its detriment). It has hundreds of frameworks and you can probably get it do anything you want. With WebDev, you inevitably sacrifice some flexibility because you are dealing with a more closed-end approach (although you can still extend). All that said, I have not yet found any limitations in WebDev that would make me say its not flexible enough. Everything I’ve wanted to do, I’ve been able to do. If I struggled, it’s only because I didn’t know how to and when someone shows me its always quite simple.
Additional Platforms
J2EE allows me to deploy web apps and Android apps. Wx will allow me to deploy web apps, Android Apps, iOS apps and Windows mobile apps. ’nuff said.
Conclusion
There is no disputing that J2EE (with its frameworks) is a powerful and flexible environment. It comes with a cost, however. Low productivity, complex test cycles and expensive to maintain. Moving to WebDev causes one to sacrifice some flexibility and some purity, but at the gain of far higher productivity and a much lower Total Cost of Ownership. I think it is more accurate to compare WebDev to PHP. By the way, don’t knock PHP…some of the most trafficked websites in the world are PHP: Facebook, Craigslist, WordPress… If I could have my choice, I’d recommend WebDev for small to mid size projects, and PHP for large projects. I stop short of recommending WebDev for large projects only because a) I know it will be little hard with large teams of dedicated resources such as graphic designers and b) I don’t have sufficient information on WebDev scalability. That said, I have no doubt that for 70-90% of your typically IT project or website, WebDev can be a clear win with massive productivity gains.
Did you like this? Share it: