I was thinking recently about changing my main profile as a developer and I want some opinions and insights about this.
I don’t live in Silicon Valley, I’m in an eastern European country where the valley’s buzz arrives about 5 years later, if it does at all. Python, Rails, node.js is not as mainstream or “hip” at all, everything revolves around PHP, Java, .NET.
I’m not saying that we produce crappy code, there are many great developers, I’m just saying that technology-wise, we’re a little behind.
My experience is with C# desktop mainly, but I worked with PHP and Java as well, 2/3 part desktop applications. As of recently, I’m digging deep in JavaScript technologies and Python — and I really like it!
I decided that I want to shift towards web technologies primarily, involving technologies which can be transmitted to desktop area as well.
For example:
Recently I got a project which involved a desktop app. The customer doesn’t really care what technology I use, but I choose C# WinForms as I have most experience from it. However, this could be done easily with anything else and I was thinking that maybe there’s a solution for a JavaScript-based app, or something else, I don’t know.
My question is what languages do you guys suggest which can be applied to both desktop and web.
I was playing around with node.js and Python but not very familiar with the possibilities to be honest. I see the future in cloud applications and mobile development, so my decision is a strategical one.
Please omit the “if you like desktop development, stick with it”, because I like web development as well, I just want to shift to it primarily.
If you are doing app that can be done as web app, but you just want it to sit on user desktop and work without Internet connection, then you should go web development IMHO
The main challenge will be packing web server application in a way that is easy for desktop user.
There are 2 solutions I know:
Package your web application with all dependencies into single Java EE .war file, and put it on desktop with simple Tomcat web server (this can be done with JRuby/warbler).
Alternative could be to create VMware Image with web server (web server will start in server start scripts, so user needs just to start the VMware instance).
Related
I was given the following to consider:
Develop desktop application using Nodeweb kit.
Also develop web application using the same code base.
Applications should look identical.
Both apps must use the same code base. The reason for this is to cut down development expenses.
If it was up to me I would not even consider using node-webkit for desktop. There are far better desktop solutions for Win platforms. For web application using Node is certanly viable.
But people who plan the project somehow think Node is a way to go for both apps.
After lots of thinking, I came to the conclusion that doing what they want will only increase dev and maintenance costs.
I consider using express (maybe even Sails.js) for web application. I made some tests where I used express on node-webkit and it run just fine.
Certanly NW is powerfull platform (popcorn). Just in my case I fail to see how can it cut down the dev expense
Am I right to be against this solution? Is this a plausible decision and I am not seeing another solution?
Any opinion is very welcome
I have actually done exactly this, and it worked very well. The trick was to write some Node Webkit code that will "detect" that it's running as a desktop application, instead of a web app, and thus integrate with desktop notifications etc.
Yes, it was more work than just writing a web app, but it was also less work (and maintenance) than developing separate applications. You get to use a lot of common code, because of the fact that you are running in a browser already, that I feel the project saved a lot of time.
In fact, I am currently working on another application that requires some desktop features (file access, notifications) but the same functionality as the web application, and I'm proposing that the development happens in Node Webkit.
The important criteria here for me is that both applications are 90% the same, the desktop just adds things you don't normally have on the web. So the core of the application is exactly the same AngularJS application, with some JavaScript injected by the Node Webkit startup page to add the required desktop behaviour.
You haven't presented reasons why you think node-webkit is not a suitable option for desktop application.
On the other hand I think client's opinion that development in node and node-webkit will be able to cut down costs is not ungrounded.
nw.js (formerly node-webkit) is basically a Chromium browser with intergrated node.js engine. So if you develop a web-application using node.js (and any of its frameworks) then you will be able to reuse it in nw.js fairly easy.
I'm assigned to develop web-based GIS, but I'm new with web programming. So, Where I can get an insight to start develop web-based GIS?
thank you before
regards!
You have to know about the 2 main components for web programming: front-end and back-end.
Front-end, is how the results/graphics are going to be displayed in the client (pad, monitor).
The most common tools are the javascript libraries like ArcGIS API for JavaScript, or OpenLayers.
For front-end you need to learn about html, css and javascript.
Back-end, is how you will manage the architecture (models-databases) of your project. There are many technologies to choose, for example, Java (J2EE) or .NET. For geodatabases there are systems like SQL server or PostGIS. Back-end is normally placed in the server.
In GIS you would also need a web mapping server (for sharing data, for instance), you can use GeoServer or ArcGIS for Server (commercial).
In my experience, I like to use django as back-end, this is a framework for web development using python (There are also many libraries for GIS using python which you can integrate). With django you can use a model-view-template controller to manage data to the web pages in a simple and fast way. Django has also a module called geodjango, to manage geodatabases, but not strong as GeoServer.
Start with "Requirements". To understand what requirements is, please start with a book on software engineering.
Once you have the requirements, you need to "Design" - what tools/technologies/languages to use. If you are just beginning programming, you typically get a senior to do the design
Then you get to a task, such as rendering google maps on a web page, that can be answered in something like stackoverflow.
I would like to develop an AngularJS app with Breeze. I usually use NodeJS with Express but I hear it wont work with Breeze. All the example on breezejs.com use ASP.Net but i am on a mac and you can't run visual studio... What are my options ?
We are releasing a sample later today (in breeze v1.3.0) that shows Breeze talking to an arbitrary web service that could have been written on any platform using any technology.
Obviously, we need more of these examples and as importantly we need to show server side implementations of how one might write these web servivces to best leverage Breeze. But... this is all definitely on our roadmap, and we are actively looking for partners in this process.
I originally got into programming by learning some javascript while trying to set up a website. I took to programming better than html and CSS and have since been learning more of it. Part of the problem was that I just wanted to do everything myself, all the javascript, CSS, HTML, everything. No external libraries or help. I wanted to understand and do all of it. The general hostility towards WYSIWYG programs from the development community didn't help either.
The amount of work required to do everything completely on my own is what deterred me, though I didn't want to have everything handed to me. A bit down the line from learning programming I decided I wanted to make some simple programs like I kept seeing everyone else make in Visual Studio. With programs, I knew it wouldn't only be difficult, but near impossible for me to do anything but use Visual Studio. As amateur as it feels dragging and dropping buttons and controls and having all the code generated, it's allowed me to work on the more personal aspects of the program and not the nitty gritty and has been a lot more fun.
I've decided that I want to give web development another shot, but this time with a little less ego. Is there any way I can have something like Visual C# for websites?
edit: As of yet, I can't fund my website experiments, so I'm using freehosting. The x10 hosting I use doesn't support asp.net, so I can't use VS for it :(.
You won't be using Visual C# for website design, but you'll use Visual Web Developer. You can download VWD here.
Edit: As per your edit, I would be a bit more concerned with using a technology that you find passion in and feel comfortable with (or at least the foresight to know it's something you want to pursue and dedicate yourself to learning and mastering). Just because you can't host a website application on the internet doesn't mean you should throw the towel in on ASP.NET. Some of the most fun applications are intranet applications. Just get IIS Express up and running and you'll have a blast.
You'd also be surprised at how cheap a webhosting "rental" can be that supports ASP.NET.
I am pondering on building a CRM for consulting business and am looking for best technology to build on. It will be web based with maybe a plugin that integrates with Outlook. What I don't want is to spend a lot of time doing HTML-fu and CSS-fu just to get basic grids, data entries and so on up. I don't mind picking up a new language. Preference goes to FLOSS projects. If it works with Python + 50 points :)
Projects on my mind:
Google's GWT - great ecosystem. Pity that it is in old-fashioned Java, but there's Pyjamas too!
Django - has all the nice widgets for web, but requires maintaining essentially a dual code base - backend language and front-end. Does not work with JS challenged browsers :(
Any suggestions how to quickly build and maintain web based business app are welcome.
My vote is with Adobe Flex. Some high-level advantages of flex:
Browser compatibility: any browser with a flash player will run the site (currently over 90% I believe). No need to fudge with html/css.
Data binding: the flex framework's strongest suit is dynamic scalable data binding.
Server-side technology: Flex can couple with any server-side technology for back-end operations (Java, PHP, RESTful web services, and Coldfusion to name a few)
Open source: flex is open source (however, buying the eclipse-based Flash Builder is usually a good idea)
Customization: every flex component is completely customizable and skinnable. Nice for business apps that do not want to simply look the same as everyone else.
Desktop: Using Adobe AIR Desktop Environment users can interact with the OS.