Sunday, March 16, 2014

9 reasons to use Genexus for cross-platform development

I recently came across an article talking about the best 5 reasons to use some particular product for cross-platform development, but when I read the article all I saw was smart devices development. I know we’re using the word platform for many things nowadays, but if you ask me, smart device technology is just one platform. Desktop apps and web apps are two more platforms that need to be added to the mix.

So, I thought I would write a post, from my own point of view and list the reasons why anyone considering writing cross-platform apps, should take a look at Genexus.

Disclaimer: I currently work for Genexus, but prior to joining them, I used their toolset in my previous job. And even though it will be difficult for me to be objective, I’ll try to stick to facts and leave my subjective opinions aside. These are my own thoughts.

If you’re not familiar with Genexus, let me give you a little background. Genexus is a 4GL development tool which represents your entities (or classes) in a a structure called Transaction. You define your structures (Transactions) and do not have to worry about the physical representation of the data, because Genexus is smart enough to create a 3NF normalization of your data in the database engine of your choice.

With that knowledge, Genexus will create the necessary programs to access the data, but you always have complete control of the program. You can define rules and access control. It’s everything you’re used to, but easier.

With that introduction, here’s my list of reasons why Genexus is THE TOOL to start paying attention to.

1. One Language to rule them all

If you’re a Genexus developer you can skip this one. If not, I know what you’re probably thinking: “do I have to learn another programming language?”. I’ll be honest with you.. yes, you do! But there are two primary benefits of learning the Genexus programming language.

  1. If you know English, you’re 50% closer. The Genexus language is really simple. Of course you have control flow statements, variable assignations, and basic native functions to perform every task you do, as with every other programming language.
  2. The Genexus programming language has been around for more than 25 years. It has evolved and improved over time. Can you imagine yourself using one single programming language for more than 25 years? Can you imagine your level of expertise in that language? You don’t have to move on, Genexus does it for you.

2. Real cross-platform

As I mentioned earlier, Genexus has been around for over 25 years. We didn’t generate native iOS apps back in 1989, we had COBOL and XBase. Then RPG came along. Then there was FoxPro for Windows, Visual Basic and Visual FoxPro, then Java, C# and Ruby for the web, plus HTML and Javascript, and recently Objective-C, Java (for Android and BlackBerry) and Javascript for WinJS and the new Microsoft stack.

So, we know what cross-platform is all about.

3. Native apps

We always thought of Genexus as a platform agnostic tool, so no matter what your target is, your same Genexus programs will execute in every platform. But that does not mean “platform ignorant”. We know where you what to run your programs. And we know what the best practices, or ways to execute programs, depends on the specific target platform. For that reason, we generate native target platform code. Take our Android-generated apps, for instance: you could open the generated sources with Eclipse, or use XCode for our Objective-C iOS generated code.

Let me be clear. You don’t have to -- there’s actually no need to do that -- I’m just saying you could if you wanted to.

4. Faster development

Well, of course is faster. But I’m not going to give you some marketing/sales pitch – but I can share my personal experience with you. I created Find My Plane for Android, iOS (iPhone) and Windows 8 (Modern UI) in a month using Genexus Smart Device toolset.

Do you think you can do better than that? Let me remind you that every app has specific layouts for its platform. I did reuse some of them, but most of them are exclusive for its target platform.

5. Practically no bugs

Of course we have bugs. But when you generate your code, most of the time you will generate the bug over and over again, so it’s easier to find. You could write an event and, if there’s a bug, it will depend on our event-firing mechanism or on our generated version of your code. What I’m saying is, our event-firing mechanism is the same for every event no matter what the developer wrote, so it’s really well tested (and used).

6. Model based

Since I started talking about architecture, let me tell you that Genexus is model based, which is a great feature.I won’t take up space to here to explain why that’s a great thing. Gaston created a list 8 reasons supporting the superiority of model driven development and you can find it here: 8 reasons why Model Driven Development is great.

7. Real world scenarios

We have all seen a cool demo about a new development tool, language, or technology where, with just a few key strokes you get a “Hello World!” kind of example up & running. Genexus is more robust than that. Of course, I could show you the “Hello World!” text on an iPhone in less than 5 minutes, but that’s not what Genexus is all about. Genexus is about real world stuff… from a little flight tracker app, to a huge world class ERP, and believe me, there are tons of great examples in between.  

8. Future Proof

There’s no much to say here. We told our RPG/Cobol users we were future proof; we also told that to our VB/Visual FoxPro users -- so now we are telling you we are future proof. But what does that mean? It means that no matter what the big players are going and no matter they are doing, we will take you there. And what if new players show up? We will be there too. In fact, right now we are working on our Windows Phone generator, and adding iBeacon support to our apps.

9. Free DB reorganizations

This item should get a whole post by itself. If you know Entity Framework, think of Genexus as Entity Framework on steroids. What happens when you need to move an attribute from a table to another or remove a whole table because you managed to merge its data into other tables? Genexus takes care of that. I know it sounds like black magic, but don’t just take my word for it -- give it a try yourself.

I didn’t want to write a marketing post, but I know I failed. The thing is I do believe Genexus is a great tool for agile software development. I know what some people is thinking because I’ve been there too: “I like to program my own code”, “I don’t want a generator” (and yet you use a compiler). I thought the same way. It’s a whole new world, and a whole new way of approaching a software development problem. It requires you to get out of your comfort zone, learn something new. But I guaranteed, you will never look back once you create your first app in half the time you would have using traditional tools.

Read Full Post

Sunday, May 05, 2013

Privacy Statement for Windows Store Applications

 

We are committed to maintaining your confidence and trust, and recognize your right to keep your personal information private. We maintain the following privacy policy to protect personal information you provide:

Basic Privacy Policy
The application does not store any personal information at any time. If you share personal information, such as your username, Live ID, IP or email address, we will keep this information private and confidential. We will use this information only to save the application settings and progress across multiple platforms or installations.
Information collected during the use of the application
All remotely stored information will only be used for the purpose of determining the most popular features, and to determine what to develop later.
We do Not share information with third parties
Personal information and usage statistics of the application will not be given to third parties, except as necessary to fulfill the purpose for which you provide your information, or legally required, as in the case of an investigation of an offense criminal serving a search warrant.

Read Full Post

Thursday, February 07, 2013

My very own Microsoft Surface RT experience

I’ve been trying to write this post for a long time now, but I’m glad I didn’t do it right after a month or so of use. I’m glad I waited all this time because there a few things that now look a lot different. Although there are some things that I have not change my mind of, some of them good, some of them bad.

I started using the Surface a little skeptical, I was looking for apps that would make me use the device. It was not easy at the beginning. Just a few apps in the Windows Store and some of them you could tell just from the icon that were pieces of crap. And that was Microsoft’s fault, they let people upload apps with the default icon Visual Studio would add to your test app (a black cross). They did change that and the store started to look better.

When talking about the Surface I guess you need to separate 3 different aspects of it. Its hardware, its Metro side (yeah I said Metro, deal with it), and the Desktop side.

Hardware: Great! I love the hardware, I love the resolution and the fact that the screen is 16:9. It’s great when reading plain text to use it portrait. It is super responsive, the first time you grab a Surface you want to swing around the start screen (I guess that’s all you can do) and it is very responsive or as Microsoft says it, fast and fluid.

The gestures are not that intuitive, you have to learn them, but once you do they feel pretty natural.

The Metro side. It’s ok. I like the fact that every app looks the same, so you know where to go look for stuff. Whenever I come across an app that does not follows Microsoft UI guidelines (*) it takes me a while (30 secs?) to understand how to use it. I also like the Semantic Zoom and the ability to have a big picture view of my apps.

The Desktop side. What a piece of crap!. Why is it even there? I don’t want it!, but unfortunately I need it :(

The first time I got and email with an attachment in my Surface it was a log file (plain text), so how do I open those? with good old notepad, which runs of course as a desktop app. Calculator? desktop app. I have found Metro style replacement apps for these.

Why is the desktop side there? because of Office. Is it easy to use? hell no! Why do you think Microsoft’s previous tablets (with XP) never took off? Precisely because they had the same XP you would found on a desktop PC. Why didn’t Windows CE for phones wasn’t that big of a deal… because you had to be a friking genius with that little stylus in order to move around the OS. And now they add the same OS they had before in a 10.6 inches screen? Do you know how hard it is to hit the X on the top right to close Power Point? try selecting a word and make its font bold, it’ll drive you nuts!

Having that said, I had used Power Point with SkyDrive to prepare a presentation. I love the way SkyDrive integrates everywhere but I know you’d get that with DropBox also, although I have 25GB of free space on SkyDrive :)

As a developer there are a couple of reasons I use the desktop side. First of all, it comes with PowerShell which is needed to locally deploy apps. And second, there’s a cool feature of remote debugging your apps thru the Visual Studio remote debugger which is a desktop app. This app allows you to run your app in a Surface while debugging it with Visual Studio in your PC, and that’s a killer feature (for developer only of course)

So, to wrap thing up. I love the Surface RT, I love the way it feels and I love the fact that there are cool apps coming everyday (have you heard of Find My Plane? :) .Will I get a Surface Pro? Hell no! I have a notebook for that! Yes, it’s a huge 17inches heavy ass Vaio, I like the big screen, the Surface Pro is a netbook, and netbooks are just not for me. Everywhere I read about the Surface Pro they talk about how to hook it to an external monitor so I don’t think even Microsoft knows where is the Surface Pro targeting. (I really hope I’m wrong)

*: If you create your app with Genexus you don’t have to worry about this.

Read Full Post

Tuesday, October 30, 2012

The Windows Store apps ecosystem

It’s been pretty exciting lately with all the announcements from Microsoft. Windows 8 finally came out, we saw the Surface tablet and other some really cool devices, and today Windows Phone 8 was announced to hit the stores in a few days.

I’ve been using Windows 8 since the developer preview and of course it takes some time to get used to it, but if you think about it, and you actually DON’T think too hard about it, Windows 7 keyboard shortcuts work as expected on Windows 8. So if you’re a keyboard wiz, you will have no trouble to find your way around.

What I like about all this new wave is the concept of one app in many devices. I don’t have an Xbox (yet) but being able to take a photo with my phone and have sent over my my notebook, tablet or favorite social network, is (for me) a big step forward. I know people with iPhone and Android devices will say “hey, I can do that with my phone already”, I know. I know it’s not rocket science, I’m just saying it’s a time saver to have it now with Windows, the OS my whole family uses… so now my mom won’t be calling me to help her hook the camera with the computer (that’s not a good example since she’s got an iPad, but you get the idea).

What I don’t like for what I’ve seen so far? The Windows Store. I guess Microsoft didn’t think it would grow-up so fast… the Windows Store as we know will NOT scale up. It’s already difficult to find an app. I don’t know what others have done, but it’s almost impossible to find a game I would like with such an awful layout. At this moment the games category has 1033 apps (games) laid out awfully, so unless you’re looking for Angry Birds or Cut the Rope, it’s frustrating to go in there in pursuit of a cool game. I’ve shut the window store app many times without a single download.

Another weird thing is how many apps have the default Visual Studio 2012 templates images. Either from previous preview versions as for the official released version, I’m talking about the little cross in a box or the star. What’s up with that? Why is Microsoft allowing those crappy looking apps into the store?… there’s no way in hell I’ll even pay attention to an app that’s was not paid attention in the first place from its own developers. That not only increases the amount of apps, which in this case is not good, but it also gives the impression of “beta”… and I’m not talking about the apps, I’m talking about the store.

I know what’s going on. There are a bunch of Microsoft developers who saw how others got rich with apps for iOS and/or Android. Nobody thought that could be possible. Even so, five years ago there were 0 (zero) iOS developers, today they say there more than a quarter million. While those “developers” made millions of apps, some Microsoft developers waited for Microsoft to come up with something, and now it did. And I bet those developers thought, “ok, now is my turn. I know this shit, I’ll get a Windows Store app in no time”. Well my friend, you don’t know shit about Windows Store apps. Actually nobody knows, we’re all learning about it, and if you take a look at the official Microsoft made apps, you’ll see they are also learning. So don’t give me that “I know Silverlight and Xaml, I know what I’m doing” cause your app will look like crap if you don’t sit down and read the tons of guidelines out there about Windows Store apps.

I’ve heard a lot lately that the Surface is great; great hardware but no good apps. I can’t believe there’s no facebook app, aren’t you guys friends anymore? and no official twitter app either? I just hope it’s not attempt from Microsoft to “make us” use IE10 instead, like they’re doing with Xbox.

The good news is, we’re making a Windows Store apps generator. I wrote before about it and showed some of the cool features you can take advantage of with our generator. You might be wondering what kind of apps can we build with this generator. Is it final consumer apps or is it enterprise level apps? Yes to both o them. There’s a big showcase of apps we have built with Genexus for iOS and Android, so expect the same apps for Windows 8 soon.

So, is there an app that you wish Windows 8 had but it is not there? Don’t wait for someone else to build something close to what you need. Download Genexus Tilo now, and start creating the next Windows 8 killer app.

Read Full Post

Tuesday, October 02, 2012

Building a code generator, and running a marathon

485778_4347864811580_1796142993_nMany have been told about how writing code resembles to exhaust training. The long hours, the dedication, the exclusion of what others think of fun, and specially how others can’t understand what you do or why you do it. (assuming you also code for fun)

In the latest months I’ve been doing both of them, training for a marathon and writing the Genexus “Tilo” Windows 8 generator… but unlike the Win8 generator, I can say I finished the marathon (in one piece).

Of course I can’t say the generator is finished, the guys from Android and iOS have been working on them for over a year now so there’s a ton of work to be done. But just like while running the marathon(*), I’m not going to think about what’s missing but what we have achieved instead.

In Genexus we care about letting you model your solution, your needs, and don’t worry about what platform you’re targeting. We call it “platform-independent” or “platform-agnostic” but what I think is most important is our “non platform-ignorant” philosophy. And what does that mean for our Win8 generator? That you as a customer will want your app to use all the “cool features”  Windows 8 has as you would if you develop the app from scratch (meaning writing all the code yourself). So the cool thing is we already wrote all that code so it’s dead simple for you to use. Here I’ll show you what we have and what you need to do in order to have it running on your next Genexus Win8 app.

Lives Tiles

tiles

Lives Tiles is probably the first feature that will call your attention. This feature allows the “icon” (tile) of you app to show different info about your app. A news app for instances shows the latest news, a weather app shows the current conditions and so forth.

With Genexus all you need is a DataProvider that exposes the data you want to show in your tiles. That DataProvider must populate a known structure (SDT) so the app “knows” what to use for the image and what to use for the description. You have to keep in mind that only the latest 5 tiles will be displayed so you might want to limit that on the server side, on the dataprovider itself.

Genexus will provide the SDT (called ‘TileSDT’) and an example of the DataProvider, so all you need to do is modify the DataProvider to populate the SDT as you wish. Remember the [Count = 5] so you don’t send unused data to your app.

Full Device Integration

This was something simple to implement but it is very useful for apps. If you declare an attribute as an Image and you want your users to edit it they will want to use all the features they already have on the device. So that picture could be a file from the local hard drive, or a photo taken with the device’s camera or use any of the images that image providers apps provide. For instance, Windows 8 comes with a Photos apps that connects with your facebook account, flickr, skydrive and other computers, so you can choose an image from your facebook wall album to upload into your app. Cool uh? 

This comes “out of the box”.

Semantic Zoom

SemanticZoom

Semantic zoom lets you see a grid with a bigger picture view. So let’s say you’re showing contacts in your app and you have a grid where every item is of course a contact. You might want to reach to someone you know his name starts with an ‘S’ (like me). So you can scroll all the way to the S and then try to find me, or you can ‘pinch’ the grid and you will see a different view of the same grid, now grouped by the first name letter, doing it easier to go straight to the ‘S’ letter.

With Genexus you already have the “break by” feature of a grid, and you can now define different layouts for the same grid. So with that info you can have semantic zoom in your app.

Heterogeneous layouts

You probably had seen this but didn’t know the name of it. Heterogeneous layouts is the feature that allows you to see specific items of a grid with a different layout.

In Genexus you can define different layouts for your grids and pick on runtime the one you one for a specific pattern. Let’s say you want the item of the grid to be a big 2x2 square, or you want every 5 item to show one as a 2x1 ‘column’. Trust me, it sounds hardar than it is.

Search Charm

Charms is another cool feature of Windows 8. With the search charm you can search your apps, files, settings or in the context of an app. So you can search for ‘Angry Birds’ in the context of the Windows Store (which is an app) of course.

Windows 8 Genexus generated apps comply the search contract so once you call it swiping your finger from the right, your app will be there as a search provider.

Search

In Genexus, select the object where you want to display your results by setting the property “Search Result Object”. This object must have a grid with an attribute set as ‘Search’. That attribute will be the one your app will query for.

Share Charm

The share charm allows you share something from you app with someone else. Depending on the sharing apps you have, and the content you’re trying to share, some apps will appear as sharing target. Some of those apps will allow you to twit, send over email, send to skydrive, or maybe publish to your facebook wall.

Share is not an app wide feature, meaning that you must choose for every panel, that suits sharing of course, the attribute/variable you want to share.

Panels in Genexus have now a Share property where you can set the Attribute or Variable you want to share. Another way of sharing is by calling the Interop.SendMessage function.

Everything else

Of course there are tons of features that work as you would expect. Keep in mind we’re not even in beta yet but if you put a Date attribute the Date picker will be display, or an Enum domain will show you a combo or even the dynamic combos (Country – City) work as expected.

As mentioned before, there are some missing features… maps, notifications, audio, and more.

That’s a wrap!

So as you can see, there are quite a few cool Windows 8 features that your Genexus app can take advantage of. I encourage you to join the Genexus betatester program that will be available in a few weeks, download the Genexus Tilo night builds and give this generator a try. Right now there’s a alpha test program (at www.genexus.com/tilo) that you could apply if you have a project for Windows 8 (right now), if you just want to play around with it you’ll have to wait.

Also, just in case you just arrived earth from outer space, there’s this big (22nd) Genexus International Meeting in Montevideo from Oct 1 to Oct 3. There are a few sessions you might be interested in (if you found this post interesting), but there are tons of sessions, keynotes, labs and activities you’ll find amusing and educational. I’ll be there so come down and say hello and I’ll be happy to show you all this features live! It’s easy to locate me, I’ll be the guy in the suit.

works-on-my-machine] 

As I always say, this is “works on my machine” certified, but this time it’ll be soon ready for your machine :) stay tuned!

* When I reached the km 33 I hit “The Wall”… from that point on it was all will. I knew I had 9 km ahead of me, and by that time that seemed a lot, by I had already ran 33km, so giving up was not in my plans.

Read Full Post