Reply
Thread Tools
noobmonkey's Avatar
Posts: 3,203 | Thanked: 1,391 times | Joined on Nov 2009 @ Worthing, England
#1
Hi Everyone,

I'm looking for quite a bit of help really.... So please can someone/people who are in the know try to explain and simplify things for me?

I would like to start developing an app / widget .. .and for the un-initiated the Tutorials/wiki/ etc are pretty useless....
(Sorry this is meant politely, i just can't spend a year reading!! - i much prefer looking learning and doing... not the old school book method!)

What i'm trying to say is, where on earth does someone start?
I have vmware up and running, i'm trying to learn linux commands, as even Venomrush's post on setting it up with a few lines of Linux confused me....

I'm used to the laymans programming of, install a gui design it, code it, test it go.... For example, install visiual studio... - the basic package is created for you - and you can insert lines of code and litterally compile and go.

So what steps do i need to go through to get a working widget?

1) Setup the VM environment - done
2) Check the Maemo part loads up in vmware (Yes! - and can get internet)
3) What language? (Ok, dont mind which now, asked that q a few times, but i get stuck at the next bit)

4) What next?

(My guess)
5) Install specific coding api/packages?
6) Code in a notepad?
7) Command line compile?
8)... this goes on and on - as i would not know where to start when it comes to uploading to dev-testing etc....

So as you can probably see i'm soo sooo confused! - and yes i'm probably asking for a noobs guide to doing maemo coding - but i've never had a problem coding in VB/.net/asp, i understand SQL and i can even do some 3d Graphic design... so why am i finding this soooo hard?!

Is there a simple walkthrough for someone like me, step by step and holding my hand to do a Hello World style applciation?

yours sincerely - Confused Maemo-wannabe-developer
 
Posts: 237 | Thanked: 157 times | Joined on Dec 2009 @ San Diego, CA
#2
It sounds like your used to being pampered by a single entity that controls the entire stack (Microsoft)

This is not the case on Maemo given it's Linux heritage, as such you will find the tools in your kit to be more of an ad-hoc collection of utilities than a big monolithic entity (Visual Studio).

I do python development on the device, but come from a linux background so this was simple for me. Maemo is still pretty fresh, and I don't know of any absolute beginner resources.

I'd highly recommend playing with Ubuntu in VMWare for a bit to familiarize yourself with linux as a user before diving headlong into development.

For an IDE, I don't use them myself, but you might like Eclipse, it's the closest analogue to VS in this universe.
 

The Following User Says Thank You to go1dfish For This Useful Post:
Posts: 3 | Thanked: 2 times | Joined on Dec 2009 @ Brisbane
#3
http://maemo4mobile.garage.maemo.org/ has information for developers coming from a .net background. Still non trivial to start developing for Maemo though
 

The Following 2 Users Say Thank You to voxel For This Useful Post:
noobmonkey's Avatar
Posts: 3,203 | Thanked: 1,391 times | Joined on Nov 2009 @ Worthing, England
#4
Originally Posted by go1dfish View Post
It sounds like your used to being pampered by a single entity that controls the entire stack (Microsoft)

This is not the case on Maemo given it's Linux heritage, as such you will find the tools in your kit to be more of an ad-hoc collection of utilities than a big monolithic entity (Visual Studio).

I do python development on the device, but come from a linux background so this was simple for me. Maemo is still pretty fresh, and I don't know of any absolute beginner resources.

I'd highly recommend playing with Ubuntu in VMWare for a bit to familiarize yourself with linux as a user before diving headlong into development.

For an IDE, I don't use them myself, but you might like Eclipse, it's the closest analogue to VS in this universe.
Thanks for the reply go1dfish,
Yes, yes i am hehe, i suppose i'm just struggling piecing everything together
I'm definitley not giving up and will learn Ubuntu before i try further, thanks for the help

I'll also take a look at eclipse Thanks again
 
noobmonkey's Avatar
Posts: 3,203 | Thanked: 1,391 times | Joined on Nov 2009 @ Worthing, England
#5
Originally Posted by voxel View Post
http://maemo4mobile.garage.maemo.org/ has information for developers coming from a .net background. Still non trivial to start developing for Maemo though

Cheers Voxel, will take a look - yeah doesn't look like there is an easy hello world example anywhere to just give me a push into it
 
noobmonkey's Avatar
Posts: 3,203 | Thanked: 1,391 times | Joined on Nov 2009 @ Worthing, England
#6
Well... i am in ubuntu - at least firefox works
Time to go do some reading i feel - and figure out what eclipse is
 
Bundyo's Avatar
Posts: 4,708 | Thanked: 4,649 times | Joined on Oct 2007 @ Bulgaria
#7
If you know your way around C#, you can try Vala, it is very similar:
http://live.gnome.org/Vala/QuickIntr...arpProgrammers

For instance I code in Monodevelop and have several scripts which i've set up to compile the app in scratchbox, then copy the binary to the device through ssh and run it there.

Unfortunately there are no QT bindings currently, only GTK+.
__________________
Technically, there are three determinate states the cat could be in: Alive, Dead, and Bloody Furious.
 
Guest | Posts: n/a | Thanked: 0 times | Joined on
#8
noobmonkey: I haven't used Eclipse much myself, but it's written in Java, and is rather heavyweight - depending on the resources of your computer, you want something lighter. My personal preference is KDevelop4, although it's technically still in beta (due out in March, I believe). If you want to use the Qt toolkit (which is awesome), then you can't do much better than KDevelop. It has lots of nifty code introspection features, and what they call "Semantic Highlighting", which is essentially syntax highlighting hooked into the parser, so that it colors things more intelligently (e.g. local variables each get a different shade, so that you can follow the code more easily when scanning down it quickly). I'm not sure if debugging is fully working in the current beta (and Ubuntu doesn't have the latest beta available anyway), but when it does, it will support reverse-step, so that you can move backwards in the execution of your program.
If you need something in the mean time, Qt Creator, while not nearly as featureful, is decent for C++ coding with Qt. If you want to use Python, I've heard good things about the Eric IDE, but I've never tried it. If you want to do GTK apps, then Anjuta is another IDE you might want to try.
One thing to note is that not all IDE's will automatically set up the build for you like Visual Studio does (see previous comment about "pampering" - no offense, but it's kind of true). The old-school way of doing it was to manually write a Makefile, which then gets parsed by a program called make, which then compiles it in an automated fashion. However, thanks the to the Magic of modern software, you don't have to do things the hard way. I'd recommend you look at qmake (for Qt apps) or cmake (for anything). They make things pretty simple to do, and some IDEs wil work with them nicely. As an example, a simple, single-binary, standalone C++ app can be built using cmake with the following lines in the CMakeLists.txt file
Code:
PROJECT("myfoo")
ADD_EXECUTABLE(myfoo myfoo.cpp mybar.cpp)
That compiles myfoo.cpp and mybar.cpp into a binary called myfoo. That simple. You can, of course, get fancy with it, but both qmake and cmake make things pretty easy, and have a low entry barrier - you can dive in with almost exactly what I wrote above, to get going.

As for languages, C++ is good for speed, but Python is rather easier to learn (case in point, I was able to help friends with basic homework without ever having actually used the language). Python is more memory-intensive, though. C++ is not a pretty language, but it's powerful, universal (well, not quite as universal as C, but close), and not terribly difficult. As I mentioned, though, if you use C++, look into Qt - it makes things oh so much easier. You can also use Qt with Python, for that matter.

Being new to Linux, there's a lot you'll need to learn. If you can, try dual-booting a physical machine with Ubuntu, and use it for day-to-day computing as much as is practical - that's the easiest and quickest way to pick it up, especially since working in a VM is a bit of a bother. If you Google "free Ubuntu books", or some thing like that, you should find some eBooks that will get you started with Ubuntu, and for more technical guides about the kernel, the shell, scripting, etc, try The Linux Documentation Project. If you want to quickly get your feet wet in Ubuntu itself, UbuntuCat has a wealth of good newbie guides and cheatsheets to get you familiar with concepts like package management, and other things that are different from Windows. (His blog is usually an interesting read too, although it's not all about software :P). Once you're comfortable with the pretty GUI, start getting used to the terminal. The terminal is your friend in Linux - there is usually a graphical way to do most common tasks, but if you know what you're doing, the terminal is often faster, and usually more powerful. If you want to poke around in it, here's some things to start you off (Google for tutorials to find out more):
Code:
Check which directory you're in:
pwd
List the contents of the current directory:
ls
or:
ls /path/to/somewhere
(note: absolute paths begin with "/".  "." means the current directory, so "./foo" means "the subdirectory called foo in the current directory")
"ls -l" will give you more info, and appending -h will make the numbers nicer to read

List with hidden files:
ls -A

Change to another directory:
cd /path/to/directory
(note that *nix uses / for a delimiter, not \ like Windows.  \ can be used to escape special character like spaces if they occur in paths that you're typing, as in "\ " or "\"" for a literal quote.  Also note that *nix is case sensitive unless it tells you otherwise.

move files:
mv source dest
what it sounds like - paths are specified the same as before

echo strings:
echo string

print out (and optionally concatenate) files:
cat file1 [file2....fileN]

read the "fine" manual (RTFM):
man commandname

most programs also will give basic usage info if you add a "--help" or "-h" switch, but not all will, so it's best to try man first.
Start there, and work your way up. Learn as you go, find tutorials, and use the OS as much as you can. I'm sure you're a bit impatient to get going, but you're much better off trying to get a good handle on Linux before trying to code on it - it'll save you a lot of frustration. If you've looked and you can't find what you need - ask. Maemo Talk is friendly, and the Ubuntu Forums are as well. Above all, have fun learning

Hope this helps,
 

The Following 6 Users Say Thank You to For This Useful Post:
noobmonkey's Avatar
Posts: 3,203 | Thanked: 1,391 times | Joined on Nov 2009 @ Worthing, England
#9
Originally Posted by jaem View Post
noobmonkey: I haven't used Eclipse much myself, but it's written in Java, and is rather heavyweight - depending on the resources of your computer, you want something lighter. My personal preference is KDevelop4, although it's technically still in beta (due out in March, I believe). If you want to use the Qt toolkit (which is awesome), then you can't do much better than KDevelop. It has lots of nifty code introspection features, and what they call "Semantic Highlighting", which is essentially syntax highlighting hooked into the parser, so that it colors things more intelligently (e.g. local variables each get a different shade, so that you can follow the code more easily when scanning down it quickly). I'm not sure if debugging is fully working in the current beta (and Ubuntu doesn't have the latest beta available anyway), but when it does, it will support reverse-step, so that you can move backwards in the execution of your program.
If you need something in the mean time, Qt Creator, while not nearly as featureful, is decent for C++ coding with Qt. If you want to use Python, I've heard good things about the Eric IDE, but I've never tried it. If you want to do GTK apps, then Anjuta is another IDE you might want to try.
One thing to note is that not all IDE's will automatically set up the build for you like Visual Studio does (see previous comment about "pampering" - no offense, but it's kind of true). The old-school way of doing it was to manually write a Makefile, which then gets parsed by a program called make, which then compiles it in an automated fashion. However, thanks the to the Magic of modern software, you don't have to do things the hard way. I'd recommend you look at qmake (for Qt apps) or cmake (for anything). They make things pretty simple to do, and some IDEs wil work with them nicely. As an example, a simple, single-binary, standalone C++ app can be built using cmake with the following lines in the CMakeLists.txt file
Code:
PROJECT("myfoo")
ADD_EXECUTABLE(myfoo myfoo.cpp mybar.cpp)
That compiles myfoo.cpp and mybar.cpp into a binary called myfoo. That simple. You can, of course, get fancy with it, but both qmake and cmake make things pretty easy, and have a low entry barrier - you can dive in with almost exactly what I wrote above, to get going.

As for languages, C++ is good for speed, but Python is rather easier to learn (case in point, I was able to help friends with basic homework without ever having actually used the language). Python is more memory-intensive, though. C++ is not a pretty language, but it's powerful, universal (well, not quite as universal as C, but close), and not terribly difficult. As I mentioned, though, if you use C++, look into Qt - it makes things oh so much easier. You can also use Qt with Python, for that matter.

Being new to Linux, there's a lot you'll need to learn. If you can, try dual-booting a physical machine with Ubuntu, and use it for day-to-day computing as much as is practical - that's the easiest and quickest way to pick it up, especially since working in a VM is a bit of a bother. If you Google "free Ubuntu books", or some thing like that, you should find some eBooks that will get you started with Ubuntu, and for more technical guides about the kernel, the shell, scripting, etc, try The Linux Documentation Project. If you want to quickly get your feet wet in Ubuntu itself, UbuntuCat has a wealth of good newbie guides and cheatsheets to get you familiar with concepts like package management, and other things that are different from Windows. (His blog is usually an interesting read too, although it's not all about software :P). Once you're comfortable with the pretty GUI, start getting used to the terminal. The terminal is your friend in Linux - there is usually a graphical way to do most common tasks, but if you know what you're doing, the terminal is often faster, and usually more powerful. If you want to poke around in it, here's some things to start you off (Google for tutorials to find out more):
Code:
Check which directory you're in:
pwd
List the contents of the current directory:
ls
or:
ls /path/to/somewhere
(note: absolute paths begin with "/".  "." means the current directory, so "./foo" means "the subdirectory called foo in the current directory")
"ls -l" will give you more info, and appending -h will make the numbers nicer to read

List with hidden files:
ls -A

Change to another directory:
cd /path/to/directory
(note that *nix uses / for a delimiter, not \ like Windows.  \ can be used to escape special character like spaces if they occur in paths that you're typing, as in "\ " or "\"" for a literal quote.  Also note that *nix is case sensitive unless it tells you otherwise.

move files:
mv source dest
what it sounds like - paths are specified the same as before

echo strings:
echo string

print out (and optionally concatenate) files:
cat file1 [file2....fileN]

read the "fine" manual (RTFM):
man commandname

most programs also will give basic usage info if you add a "--help" or "-h" switch, but not all will, so it's best to try man first.
Start there, and work your way up. Learn as you go, find tutorials, and use the OS as much as you can. I'm sure you're a bit impatient to get going, but you're much better off trying to get a good handle on Linux before trying to code on it - it'll save you a lot of frustration. If you've looked and you can't find what you need - ask. Maemo Talk is friendly, and the Ubuntu Forums are as well. Above all, have fun learning

Hope this helps,

Wow, thanks Jaem! That was really really helpful! - I appreciate the time it took you to write that - lets see what i can get working now
 
Guest | Posts: n/a | Thanked: 0 times | Joined on
#10
No problem! It was a bit more verbose than I normally would do, but it sounded like you were a bit overwhelmed, so despite the fact that most of what I told you is a quick search away, I figured that pointing you to Google wouldn't be very helpful. I was just trying to give you a kickstart, so you can start fiddling with things and learning right away. If you have questions about Ubuntu or Linux in general, then ubuntuforums.org or linuxquestions.org are probably more appropriate places to ask them, but if you have anything else to ask in the same vein as your initial questions, post them here and I'll do my best.
Cheers
 

The Following 3 Users Say Thank You to For This Useful Post:
Reply


 
Forum Jump


All times are GMT. The time now is 05:52.