Thursday, June 16, 2016

An easy way of building applications using NoSQL or Graph Databases ....

In 1993 I have been developing and selling  an application that allowed a rapid development of applications with forms , modal popups , menus and much more .
The application was developed using the Smalltalk programming language which could seamlessly call C++ language and vice versa.  Declarative parts of the applications were saved in proprietary files (similar to JSON, but more compact and it allowed circular references) .
Later  I have been distracted by other tasks in my life and I abandoned  further development of this idea.

Now, when I became interested in NoSQL and Graph databases, I discovered that my idea of building applications can be implemented effortlessly using for example Neo4J, which will hold screen definitions (that can be rendered in any language on any platform) and also an application code in any language (kinda language plugins) . It would be nice to hold in the DB executable AST and then generated any language out of it  (but it is a far fetched idea, perhaps later ) .
Since my passion for time being is C# and increasingly F#, I will try to implement it in  .NET but the application should be language agnostic ..
I will post articles as I go and describe different challenges and maybe ask for help and opinions.


Any ideas and help welcomed. The repository is completely empty right now , please allow couple of days to put in some material that makes sense....


Sunday, March 13, 2016

Agile philosophy hoopla hey

  Nowadays the  Agile technology is a fashion whoever does not do it, is considered to be behind times.
  While Agile may be good at the same time it received lot of criticisms . Agile is a concept already  30 years old, and it may be good but if you twist the rules or does not follow them at all then it brings more harm than good. Many incompetent managers are adopting this fuss without any understanding. On the other side the managers, who get it, can deliver amazing results. 
  Lately I saw lot of incompetence and it is really frustrating. On the stand-up meetings people sit and have a cozy time. On these meetings people talk only to the manager and squad leaders take orders from the small dictators called managers. 

  All the theory , however excellent ( I believe Agile is a pretty interesting and perhaps already outdated  approach and  if  you don't understand it, it causes more harm than good) does not help if programmers (developers) are treated like dirt and don't use adequate tools to get the job done. 

  Many times we spend 50% of our productive time on presentations talking about the new silver bullet and listening to nonsense like "we don't need a team of great individuals , rather we need a great team of individuals".   Go and figure .

  Tools...developers are going thru all those seminars and look excited while they know nothing will change. How can you be Agile if you still use donkeys instead of cars to do the job. 
For example :  I know a case where developers are working on a mobile project involving iOS, Android but also a web based part of the app. Besides the fact that "everybody has to know everything, we are Agile" (it means you have to know web based front end , ASP, back end, to be  database expert, master javascript and all existing framework, master Objective-C, Java, C#, C, C++, CSS, HTML, iOS, Android, ASP.net , Linux,  OSX, Windows and you have to be able to rotate quickly, we are Agile!!) .
  
 According to some managers, who only want to appease  their breadgivers, you have to do all the above and still using  elephants  instead of using more modern tools. 

  Here comes an example: some teams are using MacBooks to work on iOS projects. Of course because they have to be  "knew it all" people,  they also need to have a webserver (IIS) running on virtual windows running in the Mac so the company has not to spend money for extra laptops.
 It is actually an excellent idea , I do it myself, but I have a good hardware...
Other less fortunate people are using a Mac with a  crawling 500 GB harddrive which  it is  almost full and thus slow. Some of developer are using 4GB of RAM (or at least 8GB)  and running a iOS debugger, an iOS simulator, IIS on virtual server and watching the Tube.. (work related videos of course..:). As a result the Mac becomes slow, overheated and as a very result it is failing to work... Buy hey, we have some Agile seminars  today so Mac will have time to cool down. 
  Any excellent theory is not good if there is not a sufficient infrastructure to support it.  
Upgrade to 1GB DDS, use at lease 16GB and try to convince managers (who sometimes are detached from reality) to make IT people network run faster, fix proxies that does not allow many time to go to professional websites to do the research etc. etc. 
 Only upgrading Macs can speed up things 4-5 fold. And the bucks to pay is much less than the price of work time otherwise lost.  After upgrading Mac you can take on crawling network ....

 Happy Agile!!!




Tuesday, February 2, 2016

Nativescript and Xamarin should join forces 2

I wrote recently that UI could be developed in Javascript and the business logic in C#.
Well, we can develop the whole app in one language and then the preprocessor will transpile
certain parts (mostly UI) to Javascript..
So, we will have exactly what I wrote in part 1but still be able to write the entire app in one language.
How good is that?

Take a look here . Not sure if it would work with Nativescript but since Websharper has custom translation, it should be possible , Will try  during next holdays ....

Sunday, January 31, 2016

Nativescript and Xamarin should join forces

Sorry for having the coffee break one year .. I am back. Coffee was good.

Xamarin cross-platform tools is good, but I don't understand why we need to develop the entire mobile app in Xamarin. Whatever is not UI code and thus does not need to be using native framework (Cocoa, Android ...) should be written in Xamarin code (C#, F#...you pick). This way the Xamarin is faster than the native framework in most cases.
On the other side UI  should be written either in the "native" language (Obj-C, Java..) or Javascript.

Javascript is a very good candidate, because we already have two good Javascript frameworks that are enabling writing UI natively using Javascript and CSS....It is not using HTML .

By now,  mobile applications are developed as one piece,,,,It is not a very good idea, because the maintainability cost is going thru roof months later.
If we develop an app as 2 applications (one written in Javascript and the other Xamarin C# or F#) , then we can keep the business logic written in C# in one app and the UI , written in Javascript, in another app. The advantage is, that the two apps don't hold any references to each other's objects .
All communication can be done via pipes or sockets.

I am experimenting with this approach as time allows and hopefully soon I will be able to show the "framework" I am putting together.