to read
Mobile Platform Development
- Qt, Python, Android: http://modrana.org/pyconpl2013/python_and_qt_for_android.pdf
Cross-platform Path handling and driver letter
- javascript way: /D/myFolder/myCmd.bat
- to read:
- drive, directory = os.path.splitdrive(clean_path) # 'F:' '\\dir'
Tool Idea
Audio Playback Device switch
- cmd (my preferred method)
-
- nircmd.exe setdefaultsounddevice “Speakers_PC”
- nircmd page: http://nircmd.nirsoft.net/setdefaultsounddevice.html
-
- app solution
- sirWest/AudioSwitch: https://github.com/sirWest/AudioSwitch
- Belphemur/SoundSwitch: https://github.com/Belphemur/SoundSwitch
- System Tray Audio Device Switcher (STADS) : http://www.mp3vcr.com/stads/
-
Research on Code Sync and Version Control
- DIY solution
Research on Writing Tools
2017.02 - a bit catch up and organize
free cross platform combo | bundled IDE (optional to use) | language | GUI framework/library | runtime library |
---|---|---|---|---|
c++, Qt (win,mac,lin,mobile) | QtCreator | c++ | Qt5 (GPL & LGPLv3 ) | |
c#, GTK#, GTK+ (win,mac,lin) | MonoDevelop | C# | GTK+ (LGPLv2.1) by GTK# (LGPL) | Mono(MIT) or .Net(MIT) |
C#, Xamarin Platform (win, mac, mobile) | Xamarin Studio | C# | Xamarin.Forms (community license) | Mono(MIT) |
ActionScript, Javascript (win, mac, mobile) | Adobe Air SDK (free commercial) | ActionScript Javascript | Adobe Flash | Adobe Air (Freeware) |
ActionScript (win,mac,linux, web, mobile) | 3rd party: FlashDevelop (MIT) | ActionScript | Adobe Flash | Adobe Flash Player (Freeware) |
Java (win,mac,linux,web) | JDK (freeware) | Java | Java Virtual Machine (freeware) | |
javascript, html5 and css (win,mac,lin,mobile) | no | javascript | HTML5, CSS3 | Cordova (Apache 2.0) |
python, PySide/PyQt, Qt (win,mac,lin) | no | python | Qt4,5 (GPL & LGPLv3 ) | PySide1-2 with Qt (LGPL) or PyQt4,5 with Qt (GPLv3) |
php, javascript, html5, css (web) | no | php | HTML5, CSS3 | server side: web server with PHP and Zend Framework (new BSD) |
python, javascript, html5, css (web) | no | python | HTML5, CSS3 | server side: python2-3 and Django (BSD) or flask (BSD) or web2py(LGPLv3) |
ruby, javascript, html5, css (web) | no | ruby | HTML5, CSS3 | server side: ruby and Ruby on Rails (MIT) |
- note:
- your own code license is different thing than the license for the framework/library you use
- but the framework/library may or may not affect or limit your own code license choice (pictures example below)
- details on JDK and JVM license: http://softwareengineering.stackexchange.com/questions/52534/can-we-use-java-for-commercial-use
2017.01 - no 3rd party GUI or framework
- C++ base library will mostly work without any extra 3rd party framework,
- the GUI is only part that different, ideally, there are 2 methods
- Windows Visual Studio, Xcode, GTK for each's native UI and library compile
- one common UI and one common compiler
2016.09 - C# is the thing
- since recently I started using visual studio 2015 (community edition), it seems the project supported (C# and .NET stuff, javascript cordova web app, xmarin mobile app, python web and desktop app, database stuff, unity game engine); seems there is nothing you can't do with visual studio
- also, with C#, you can do cross-platform desktop app, mobile app, database app, game app, even web app with ASP.NET, while python, java, javascript can do about same amount thing but the ready-availabel-exisiting-support in each area vary quite much
- also, the MonoDevelop IDE (aka Xamarin Studio on win,mac http://www.monodevelop.com/) is cross-platform IDE version of visual studio's C#+.NET (which use Mono, aka .NET open source version) to create cross-platform C# based .NET desktop app.
- seems the most license free and small portable app creation choice is C# + Mono (.NET) combo, (with GTK as GUI library, optional with GUI library like wxWidget) (100kb for a simple app)
- compare to Python + Qt (binding with PySide or PyQt4/5) + cx_Freeze (22MB for a simple app)
- however, the Python+Qt+PySide+cx_Freeze method doesn't require user to install anything, even no need python library, because each app comes with a copy of required library
- while c#+Mono+GTK method does require end-user to install .NET or Mono (http://www.mono-project.com/) on their computer, however, for most windows user, .NET is pre-installed, only those Mac and Linux user need to install Mono once for all, like Java
- Java+SWING method is like giving you choice of both, there are quite some Java cross-platform app provide you the App-only option or App+JRE(java runtime environment) option. of course, if you like to write app in Java
- of course, javascript+HTML5+CSS is like new options, if you write fast in javascript
- ref:
- language compare:
2016.08 - my shortlist choice of a GUI toolkit
to watch:
- Qt: current what I use
- CppCon 2015: Milian Wolff “Modern User Interfaces for C++”
- Meet Qt 5.7 https://www.youtube.com/watch?v=WiJEdvZSsQk
- License of Qt, License of PyQt or PySide, License of Python difference; + License of pyQTK
- simple line for Qt license: “if you are not editing the QT source, you link dynamically, and aren't developing for mobile, you don't need a commercial license for QT, as it's LGPL. ” (ref)
- and Qt license with C++ : “you can buy a commercial license that allows distribution of your executable without releasing your source code. If source code release doesn't bother you, save the money and distribute according to the LGPL.” (ref to above)
- PySide license: PySide is licensed under the LGPL version 2.1 license, allowing both Free/Open source software and proprietary software development. ; ref: https://wiki.qt.io/About_PySide
- PyQt license: basically free for open source, 1 time ok amount pay for commercial purpose, ref:
- What is LGPL:
- The license allows developers to use and integrate LGPL-licensed-code (like PySide, Qt) into their own (both free and proprietary) software without being required by “the terms of a strong copyleft license”(such as GPL license) to release the source code of their own components. but those LGPL code should be separate from your main software, and use as like a library
- additional reading on other license:
- BSD license and MIT license: compared to lots of “conditional statement” of LGPL and GPL, BSD license is like no comments, and do whatever you like
- BSD license adds: “people can use your code, but can't promote their product with your name without your permission.” like saying I give you for free, and you can use for free as the code, not as a selling point of code author reputation: ref: http://programmers.stackexchange.com/questions/41128/what-is-the-purpose-of-the-non-endorsement-clause-in-the-new-bsd-license
- “For example, if guys from Microsoft use your library in binary distribution of Windows
for BSD-licensed library, they have to include full license text, including your copyright
for MIT-licensed library, they can just include binary code and don't mention that they have used you work. Of couse they have to retain your copyrights and licensing in source code, but most of people won't get access to them” (ref: https://github.com/github/choosealicense.com/issues/257) - “licenses tell you what the license authors were scared of.
If you're scared of having your name dragged through the mud, then the BSD license will seem better. If you're scared of having your software put into a proprietary piece of software, then the GPL will seem better. Whatever the license, the author chooses it because it protects them against what they are afraid of.” ref: http://programmers.stackexchange.com/questions/82321/why-do-people-pick-the-mit-license-over-bsd-if-bsds-non-endorsement-clause-i - apache-2.0 vs BSD license: ref: http://programmers.stackexchange.com/questions/40561/is-bsd-license-compatible-with-apache
- In both of them you must:
- Include copyright
- But in Apache, unlike BSD you must:
- Include License
- State Changes
- Include Notice
- additional license reference: https://tldrlegal.com/
- GTK or GTK+: what sometime I heard is good, but seems people also move from GTK to Qt:
- wxWidget: the first GUI thing I heard when I started to learn python
- Tk: the GUI kit comes with python, but always seems like old day when I studied computer visualization in uni.
- MFC: the smallest and best option for windows only developers
- webkit: html5 and css and javascript, browser based apps
The most importance decision factor is support: “How much examples and Q&A you can find in google search.”
- It is always good to know someone before you had the same problem and how they solve it. since making tool is a process of creating problems and solving them.
The second most importance decision factor is documentation: “You always have a reference to stick to when in doubt, like a law or something fixed”
- when I code Mel or Python in Maya software, the autodesk document is my main key to stick to, they have simple clear function details and example code, unlike python offical doc, I can hardly find the exact answer I needed in their single long page with mixed section and codes, stackoverflow is better than python doc most time.
2016.06
- as I use PyQt method to write tools, I find
- most task I do, is data process, file process, database update.
- most task is not heavily require advanced UI, most maybe drag and drop support
- cross-platform is ok, but it is a huge distribute application file with 30MB for a simple task
- since, most my app is focus on getting simple task faster, a fat app for a simple task is to my taste
- as I read more, if I need network communication method, it will require library, then I require compiles for platforms
- currently, the most hit way of communication is Social Media, web-based apps, since task is mostly simple, and simple data is pushing around with database and http protocol.
- then I realize, maybe I should try Web-based Desktop app development, a better and supported javascript, hopefully as good and fast as python
To read
- keyword: Electron, atom.io, web app
- 201603: The New Desktop: Electron, React, & Pixel-Perfect Native-Feeling Experiences - Forward 4 Web Summit
- c++ is fast, but it need compile and run a big round for each revision, python is as fast in revision and updates
- note on my previous experience on javascript html single page text process tool, I think js depends on how good it deal with list data
201606 Mobile cross-platform
- keyword: Xamarin, telerik, sencha, phonegap, appcelerator titanium, MvvmCross, html5
- youtube channel: