Pages Menu
TwitterRssFacebook
Categories Menu

Posted by on Jan 27, 2013 in Development | 0 comments

On Patents

On Patents

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:
Read More

Posted by on Nov 4, 2012 in Development | 0 comments

My new file transfer site

My new file transfer site

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:
Read More

Posted by on Sep 26, 2012 in Development | 0 comments

WebDev compared to J2EE

WebDev compared to J2EE

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:
Read More

Posted by on Sep 24, 2012 in Development | 8 comments

A quick look at Windev, Windev Mobile and Webdev

A quick look at Windev, Windev Mobile and Webdev

I’ve been heads-down coding using this set of tools and I’ve been meaning to write a really in-depth review on each separately  something I will still do. I must admit there is a part of me that selfishly wants to not write anything about it, because frankly, it’s my secret weapon! I have been absolutely amazed by this trio of products, and even more amazed at the low adoption (especially in the US).

The makers of these products is a French company called PC Soft. I ordered the product from the US distributor. PC Soft have always had intriguing marketing but have been lambasted for the pictures of the woman they use throughout their brochures in shall we say…provocative clothing or poses. Probably not a big deal by European standards  but not really appropriate by conservative ole US standards. In some corporate  environments, reading the PDF brochure would  be borderline inappropriate given the imagery. I believe in the past even the product installers had these images and this caused issues for people attempting to install the app server on a client site. At any rate, I’m also lead to believe the imagery has been toned down somewhat in recent years. I for one must admit I’ve been quite enamored by the PC Soft girls ;) Anyway, some highlights appear below of my experience with these products. I’m not going to repeat everything here that you can find on the vendor website, so you may want to check that out too.

Collectively, these three products are referred to as the Wx products below. They are currently on version 17 and it shows. They are mature, slick, highly powerful and very well thought out environments. I think it puts Visual Studio to shame and I wouldn’t even try compare it to Eclipse which currently ranks high on my suckage list.

 

Windev

I started with Windev as I had an idea for a standard Windows application. In essence, it’s an application for Internet Marketers to run their business, keeping track of projects, clients, expenses, income etc. Somewhat of a crossover between Quickbooks and CRM but specifically for the IM industry.  Taking out the bells and whistles, my application came down to fundamentally being client/server type application with a GUI front-end to a database. As good as Visual Studio may be, it still makes you “work” to create what should be routine tasks. Windev EXCELLED at making this application a reality. For starters, it is one IDE that contains everything you need. From UML modelling to ER DB model/editor, to Unit Testing, to source code management, to web services generation to creating installers etc. It’s all there. I pretty quickly mapped out my ER diagram and created the links and then started building the screens. I would say, INCLUDING learning time, it took me around 5-10 evenings of part-time work to get my basic application together.

Webdev

This is the part of the family for creating web applications. I admit I was a little frustrated at first but as I got more familiar with the product, it started growing on me more and more. Coming from the J2EE world, I kept struggling to make the analogy about how I would do it in that technology versus this technology. Sometimes the best way is to just suspend what you know and embrace a new way of doing things.

Webdev allows you to design your pages using a WYSIWYG editor and then conveniently write your logic in the appropriate events (using the same W-language discussed below). It is pretty slick in terms of how its approached web coding: The editor shows you the events that will be executed on the client side (ie. browser) and those that will be executed server side. For example, a buttonClick event will fire on both, you just add your code where you need it. From a browser side perspective, you can even toggle the language to use Javascript, but you would rarely need to. I used this feature when I incorporated Google maps and it works great. On the server side, again you use W-language but you can use PHP as well. Oh, and AJAX is a snap with this. You basically mark which procedure you want to be able to execute as a AJAX method and you’re done.

You can deploy your site either as a native webdev site or as a php site. If you want to use native webdev, you are required to run the webdev application server. I think it’s well worth it given the benefits it gives you in terms of session management and general webapp administration. You can develop around this but managing your own sessions can be a pain with web development generally.

Webdev will definitely get its own detailed review later on in this blog, as I will give a blow by blow breakdown of my project I developed in it. Right now, I’m really really liking this product. The “problem” is that web development today has become a laborious task. J2EE killed itself with a ridiculous number of frameworks needed in a project (Hibernate, Spring, extjs etc etc). However, this is done (call me a skeptic) because its “pure” and makes code “maintainable”. So you have separation of concerns, MVC models, layers of abstraction, design patterns etc etc. For these hard core idealogists, webdev will be a dissapointment because it hides all (actually most, not all) of this from developers. Other products like Ruby/Rails are trying to address the mess that J2EE has become. Regardless, the current web world seems to have centered around J2EE, PHP, Ruby, Python and .NET as the major players. That makes introducing a new product particularly difficult. However, if a CTO worth his or her mettle would calculate TCO, Webdev would be a slum dunk winner in terms of productivity gains.

Windev Mobile

Next up is their product for creating mobile apps. The IDE, language etc is all similar to the Windev and Webdev products. So when I needed to create my iphone app, it took just a hour or two to get familiar with the differences for mobile. Within a few hours I had my simple app created and deployed to my phone. Windev Mobile can generate code for a number of different devices. Note though that you will still need xcode/Apple to create your final IPA for distribution to an iphone or the app store.

Clearly I need to allocate a complete review to Windev Mobile as I would like to give a detailed run down of the experience with it. I am busy finishing up both my big web site and the mobile app that accompanies that, and that will be a good opportunity to present the review in terms of a case study.

 

W language

These products use their own proprietary language called W-Language. It’s very BASIC’esque. I know in this day and age, to mention a language as being proprietary is enough to scare people away, but it really shouldn’t. For one, this W-language is used across all three products, and the products themeselves offer multiple platform generation. So, with having learned this one language, I can write applications for Windows, Java/Unix, Websites, native iOS app, native Android apps and native Windows 7 apps!

The language itself is also very powerful yet easy to use. It offers both high levels of abstraction to make life easy but it does let you get down to the nitty gritty if you prefer.

As an example of its high level commands, look at “ScreenToFile()”. In an application, you typically have a number of fields on a form that need to be added to a database. Instead of manually grabbing the value of each field in the form and then passing it into a DAO (or similar), you can simply type ScreenToFile() and all the fields on the screen which are DB linked are automatically inserted into the File buffer, which you can then simply follow up with HAdd() to add the record to the DB. Quick, easy, and painless. The way it should be.

 

Data modification

We all know the bane of modifying the DB table structure…you need to modify your code, stored procedures AND, worst of all, create a patch file to modify the production DB. Here, the Wx products shine by automatically picking up your DB modifications, proposing the code changes AND actually modifying the DB structure for you, along with versioning making patch updates quite easy.

SQL Builder

I’ve used graphical SQL builder tools in the past and generally always came away dissapointed and ended up manually coding the SQL. However, the SQL builder tool here to create what they term “Queries” is actually incredibly impressive, and I’ve been able to create sophisticated multi-table joins with calculations, all through point and click.

HyperFile

The products ship with Hyperfile which is a free to distribute database engine. Don’t worry, you can use almost any available database (including MySql, Oracle etc), but using HF makes it very easy. HF itself is remarkably powerful and performance seems impressive so far. HF can be used in a traditional local database manner (think MS Access) or can be used as a full DB server managing multiple databases. It even supports being set up in a clustered environment for failover or loadbalancing requirements. It features many functions you would only come across in larger systems such as replication, frame compression and more.

The products themselves abstract you from the underlying database in that when I call, for example, HAdd() to add a record, the driver determines how to add this to the underlying DB, so switching out databases should be relatively straightforward.

Dongle

This is a controversial item: The dongle! The Wx products are copy protected through the use of a dongle. Very important: This is only the development IDE’s. You can freely distribute the resultant applications you create and your end-users do not need a dongle. I don’t like using a dongle…and if the dongle fails I have to get a replacement from PC Soft which can delay my development. Even worse, if the dongle is lost or stolen, there is no deactivation procedure. PC Soft will require you to pay for an entire new software license, NOT just the cost of replacing the dongle. That, to put it mildly, sucks. I would much rather they had a “phone home” mechanism so that dongles can be deactivated and I just pay for the cost of a new dongle.

Community

One of my biggest gripes with the entire Wx product suite is not related to the product itself but the lack of a developer community. This is a vicious circle: Less adoption means less of a community which means less adoption…and around and around we go. They do offer free technical support which gets mixed reviews. I have not used it enough to really have an opinion. They also offer a forum but they do not contribute to their own forum. So, you will see many questions go completely unanswered on the forums, causing great frustration. I believe PC Soft would be well suited to continue to let the community be developer driven, but step in to help or assist where need be.  There is at least one third party forum which at least for me has been a life saver for when I got stuck a few times. Given that you are in essence using a proprietary product, it can be unnerving not having a big developer community so that you can easily google the issue or ask for help.

Initial Summary

I call this an initial summary only in that I will be following up with more reviews. I can honestly say that at this point I am incredibly impressed by this set of products. I have been phenomenally productive and most of all, coding has become fun again. I’m not configuring 5 different frameworks and modifying xml files just to put up a simple app. Almost every day I used the product, I discover something new that makes me think “wow, awesome”. It’s really that good. I truly am surprised that there is such a lack of adoption, and it is sad that corporations are scared of “proprietary” technology. Yet, they are doing themselves a disservice by not looking at products like this. The productivity gains will be unbelievable.

Did you like this? Share it:
Read More

Posted by on Sep 13, 2012 in Development | 0 comments

Windev, WebDev and Windev Mobile

Windev, WebDev and Windev Mobile

Ok, I’m now the owner of the entire PCSoft suite of development tools. I couldn’t resist to try them out. So disillusioned with the state of J2EE development tools, I like experimenting with new dev environments. I will be writing full in-depth reviews on these tools. Give me some time to play with them and I will report back.

Did you like this? Share it:
Read More

Posted by on Dec 16, 2010 in Development | 2 comments

Using Appcelerator and the Titanium Platform

Using Appcelerator and the Titanium Platform

As you can see from my flurry of postings, I’m on a mobile development kick. As a result, a number of platforms are coming to my attention. A good friend of mine (who in turn is friends with the CEO at appcelerator) sent me the link for this framework.

I took a day of PTO and really decided to get my geek on and downloaded this platform. I have been wanting to build a iPhone application  for some time now, and figure this was a good opportunity to learn the platform with this goal in mind.

Installation was straightforward. In fact, I think I spent more time trying to navigate the documentation section of the website to “get started” as compared to the software installation itself. One of the nice ideas in the distribution is the “Kitchen Sink” application which is an application that includes a demo of all the controls and widgets. This is great for seeing it in run-time and also seeing the corresponding code.

After getting the obligatory Hello World application running, I was ready to start creating the application. The good news here is that, unlike the Corona platform, Titanium has far stronger JSON and XML parseing “built in” to the framework. I was easily able to call the external web service API, parse out the JSON string and then populate a table. The http client connection was also straightforward. Now, ventuing out of any level of expertise, so take this with a grain of salt, but it seemed to me that this http implementation allowed for async http requests, and you provide the callback function for a successful requests and unsuccessful request. All in all, it seemed cleaner to me then Corona’s implementation, plus, I didn’t have to download some seperate JSON parser like I did with Corona. So far so good.

By about 2pm I had more or less finished the application. I think thats pretty good going for someone like me thats been out of development for years now…plus its all in Javascript of which my knowledge is dangerous. My code is ugly…global variables etc, but hey, it worked. I’m sure someone who knows JS a lot better would have done much cleaner code.

So now I’ve looked at three frameworks, so which one is best, you ask. My answer is: It Depends. I have a number of applications I am intending to develop. They range from business applications to games to utilities.  As such, I’ve been playing with a number of these platforms to figure out which one I should adopt. As it turns out, it seems that no one platform is perfect for all application development. It seems that the current state of the market is such that you are better off to select a platform based on the application type you are trying to write. And if that means learning a few different frameworks, I guess thats the price to pay.

Let me give examples based on my limited experience:

Appcelerator/Titanium is great for developing “business” applications. Developing my application was quick and easy. I struggled with Corona due its current lack of native UI controls it provides (and even for the controls it does provide, they don’t work in the simulator).

On the other hand, Corona has great physics and graphics support making it ideal for 2d game development. The Appcelerator forums allude to eventual support for Box2d/physics support but I haven’t seen anything definitive yet. Likewise, Corona alludes to more native UI support but thats also still a roadmap item.

For 3d game development, I think Unity stands out as the winner there, not just for its graphics capability but for the fact that it includes a full game development environment, support for handling assets, 3d views etc. Appcelerator and Corona dont come close, but I dont think they intend to.

The Appcelerator pricing, in my opinion, seems a bit off to me. Don’t get me wrong: The community edition is free and does not appear crippled in any way. Its great. Don’t change that guys. I’m just surprised that the next level up, Professional edition, costs $199 per month per developer. Thats fairly pricey for any dev kit. However, you really only need to spring for this if you need enhanced support and early product access. I do get that they are not doing this out of charity, so charging is perfectly acceptable. I think they need a level for a developer like me that believes in paying for a good product but certainly as an individual am not going to fork out $200 per month forever. Something like a Individual Developer program for $300 a year or something seems more reasonable to me.

Happy coding everybody. I need to go put the finishing touches on my iPhone application and then put the cross compilation to the test and deploy to Android too.

Did you like this? Share it:
Read More