/srv/irclogs.ubuntu.com/2010/09/27/#ubuntu-classroom.txt

=== nigelbabu is now known as nigelb
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu App Developer Week - Current Session: From mockup to bling - Instructors: MacSlow
akgranerWelcome to Ubuntu App Developer week! (Formally known as Ubuntu Opportunistic Developer Week).16:01
akgranerUbuntu App Developer Week is a week of sessions aimed at enabling and inspiring developers to write applications that scratch their itches. Our goal is to give all attendees a taste of the wide variety of tools on the Ubuntu platform that can be used to create awesome applications, and to showcase some applications that have been created and explain how they were put together.16:01
akgranerto ask questions please ask in ubuntu-classroom-chat16:01
akgranerand form the questions using QUESTION: in front of your questions16:02
akgranerSo lets start scratching some itches, sharing some tools, creating awesome applications and showcasing others.16:02
akgranerWelcome - Mirco "MacSlow" Müller who will be opening Ubuntu App Developer Week with a session on "From mockup to bling.16:02
akgranerMicro if you are ready the floor is yours!16:02
MacSlowah ok... thanks akgraner16:02
MacSlowSo in this session I will talk about general principles, common practises, helpful workflows and tips/tricks to go "from mockup to bling"16:03
MacSlowmeaning pretty designer drawn images to working apps/code16:04
MacSlowas akgraner said questions can come in anytime, right?16:05
MacSlowAs an example for "from mockup to bling" I'll use unity's quicklist16:05
MacSlowI hope by everybody knows what unity is :)16:05
MacSlowtake a look at this image http://macslow.net/images/quicklist-mockup.png16:06
MacSlowThat's a mock of of the designers idea of what quicklists should look like16:06
MacSlowbut for the person meant to make that into working code it's not really the full story16:07
MacSlowbecasue it needs to be a bit more "systematic"16:07
MacSlowto implement this one needs hard facts (numbers for radii, widths, lenghts, etc)16:09
MacSlowwhich much easier flow into code16:09
MacSlowwhat you need to create (or ask from the designers) is a more schematic drawing like this...16:11
MacSlowhttp://macslow.net/images/quicklist-schematic.png16:11
MacSlowThat looks less shiny but is a lot simpler to put into code (what up with "em" I'll get to after this)16:12
MacSlowin this drawing you see what's important and one can almost right away start codeing that as it easily maps to drawing-calls from e.g. cairo or QPainter16:13
MacSlowWith colors, gradients, patterns and opacity you need to deal in the same way.16:14
=== MSK61 is now known as MAfifi
MacSlowEverything clear up to know?16:15
MacSlowSo what's with EM stuff in the schematic you ask.16:16
MacSlowThat's the measurement for making all your UI-elements resolution-independent.16:16
MacSlowMost of the time one gets only discrete pixel-values (by measureing that in gimp in the mockup-graphic)16:17
MacSlowan implemented UI-element based on that will only work as the end-user will not have a dramatically different screen (with super high DPI) and/or a different font-size set16:18
MacSlowUIs implemented in a resolution-independent fashion will automatically adapt to new conditions like those. If only based on hard-coded pixel-sizes it can break in a nasty (visual) way.16:19
MacSlowSo what is an EM now?16:20
MacSlowIt's the unity-size of the set system-font (height)16:20
=== parth is now known as Guest41067
MacSlowusually 10 points16:20
MacSlowI will bore you with the formular for this now... :)16:21
MacSlowpixels_per_em = font_point_size * screen_dpi / 72.0f;16:21
MacSlowWhere all those are floats... but pixels_per_em should be rounded to int of course16:22
MacSlowfont_point_size and screen_dpi you can query via you toolkit api of choice (gtk+ and Qt have means for that)16:23
MacSlowA good way to provide artwork for the real app and stay resolution-indepdented is to use SVGs.16:24
MacSlowFor static parts that perfectly ok. If animated elements are needed this will not fully fit the bill.16:25
MacSlowAnimated SVG, while spec'ed out, are still a dream for day-to-day use in UI-development16:26
MacSlowLet's move to some common practises.16:27
MacSlowI mentioned cairo and QPainter earlier.16:27
MacSlowThose are currently the best choices on the Linux desktop of doing custom UI/widget development...16:28
MacSlowto fill in the "rects"16:28
MacSlowIf you look at any application they are 2D and made up of rectangular regions.16:28
MacSlowWhat you need to do is fill them with "meat"16:29
MacSlowThis meat is either an image, text, gradient, some sort of line-drawing16:29
MacSlowfor this nothing beats cairo (or QPainter)16:29
MacSlowSome interesting things to do with you "rects" then before they land on the screen is to "post-process" them16:33
MacSlowOf course depending what the initial design ask for.16:33
MacSlowCommong are fade-out masks...16:33
MacSlowhttp://macslow.net/clips/animated-text.ogv16:33
MacSlowblurs, glows, drop-shadows16:34
MacSlowthat screencast example shows fade-out masks (see top and bottom of scrolling text), drop-shadows and glows (very subtle in the text)16:35
MacSlowfor those you'll need to deal with offscreen-rendering16:35
=== Rusty is now known as Guest21431
ClassBotjledbetter_ asked: Which is better: Cairo or QPainter?16:42
MacSlowOk, let's continue16:42
MacSlowso offscreen-rendering...16:44
MacSlowThis "draws" into an non-visible memory area where you can perform any kind of manipulation before finally blitting the end-result to the screen for the user to see.16:45
MacSlowWith the scrolling-text example from the last screencast, the text is drawn offscreen (with a transparent background) and then the upper and lower edges are earased using a gradient mask (about 10 pixels high) going from full to 0 opacity16:47
MacSlowafter that's done it is then put on screen with the visual result of the text dissolving at the top and bottom edge16:47
MacSlowThis approach is also used for doing the "glow" behind the text there. The glow is actually dark (almost) black to make the white text appear crisper.16:50
MacSlowIn that case the text is initially rendered offscreen as a mask...16:50
MacSlowThat mask is used to draw (offscreen again) the text in dark-grey...16:51
MacSlowThis is blurred to give it the "glow"...16:51
MacSlowthen the same text-mask is used to paint in white over it...16:51
MacSlowonly now the assembled result is them blit on screen16:52
MacSlowOk, so much for this short glimpse into the world of UI/bling hacking.16:54
MacSlowNow is hte time to ask any sort of UI/graphics related questions you didn't see fitting before.16:55
MacSlowAlanBell_ asked: does the bling slow things down? all that double rendering and blurring sounds like a lot of work16:58
MacSlowOf course there is a burden for doing this.16:58
MacSlowBut with clever caching you can eliminate some of the CPU/GPU-load16:58
MacSlowFirst of all if you on a CPU try to restrict the area to blur as much as you can... and cache the result, if you can/need to reuse it later.16:59
MacSlownext thing is to be clever about the algorithm to blur17:00
MacSlowit's easier on the CPU to do a box-blur than a full gaussian-blur17:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu App Developer Week - Current Session: Hello World in Python (and maybe a bit more) - Instructors: AlanBell
AlanBellHello and welcome to this Application Developer week session on Python.17:03
AlanBellThis session is an introduction to Python from the very very beginning, I going to do my best to assume no prior knowledge at all.17:03
AlanBelljust so I can see who is here say hi in the #ubuntu-classroom-chat channel o/17:03
AlanBellgreat, good to see you all17:04
AlanBellPython is a programming language, but not a scary hard one.17:04
ClassBotnitrat_gray asked: hello17:04
AlanBelloh, clever nitrat_gray, and yes, that is a good demo of how to ask a question!17:05
AlanBellPython is kind of like BASIC, except you don't have to be embarrassed about saying you are a Python programmer!17:05
AlanBellOK, so lets get started.17:05
AlanBellSo we are going to write a computer program, which is a set of instructions to the computer to tell it to do some interesting stuff for us.17:05
AlanBellLets get set up first, we are going to need a text editor to write the instructions in and a terminal to tell the computer to do the instructions.17:06
AlanBellYou will find the text editor and the terminal next to each other in the Applications-Accessories menu17:06
AlanBellgo open both now and arrange the screen so you can see the IRC classroom and the editor and the terminal all at once17:06
AlanBellare we sitting comfortably with three windows on screen?17:07
AlanBellplain old text editor is perfect, none of your fancy IDEs for this session17:07
AlanBellTraditionally the first program you should write in any language is one to get the computer to say hello to the world! so lets do that.17:08
AlanBellin the text editor type the following:17:08
AlanBellprint "Hello, World!"17:08
AlanBellthat is it, your first program, now lets save it and run it (I did tell you it looked like BASIC)17:09
AlanBellfile-save as and call it hello.py17:09
AlanBellthis will save it into your home directory by default, fine for now, but you would probably want to be a bit more organised when doing something serious17:09
ClassBotjledbetter_ asked: Does it have to be in a certain dir?17:10
AlanBellno, not particularly17:10
AlanBellok, now in the terminal lets run the program17:10
AlanBellpython hello.py17:10
AlanBelldoesn't matter so much where you save the program, but always save your python programs with a name ending in .py17:11
AlanBellIt should respond by greeting the world in a friendly fashion17:11
AlanBellso at the $ prompt in the terminal you just type "python hello.py"17:11
AlanBellas we saved the hello.py in the home directory and the termial opens by default to the home directory it should just kinda work17:12
AlanBellif you save it somewhere else you would use the cd command in the terminal to go to the right place17:12
=== harry is now known as Guest9592
AlanBellok, so that was running the program by running python then the name of our application, but we can do it a different way, by telling Ubuntu that our program is executable17:13
AlanBellWhat we are going to do now is try to make our program directly executable, in the terminal we are going to CHange the MODe of the program to tell Ubuntu that it is eXecutable17:14
AlanBellso at the $ prompt of the terminal type:17:14
AlanBellchmod +x hello.py17:14
=== Mrokii_ is now known as Mrokii
AlanBellnow we can try to run it17:14
AlanBellagain at the $ prompt17:14
AlanBell./hello.py17:14
AlanBelloh noes!!!17:15
AlanBellWarning: unknown mime-type for "Hello, World!" -- using "application/octet-stream"17:15
AlanBellubuntu doesn't know how to run this application yet, we need to add some extra magic at the top of our program to help it understand what to do with it.17:15
AlanBellback in the editor, above the print "Hello, World!" add the following line17:16
AlanBell#!/usr/bin/env python17:16
AlanBellso the /usr/bin/env bit is some magic that helps it find stuff, and the thing it needs to run this application is python17:17
AlanBellnow you should be able to save that and flip back to the terminal and run your program17:17
AlanBell./hello.py17:17
AlanBellok, so the magic line at the top you don't need to worry about  too much, it just has to be there or you might end up seeing that error message17:18
ClassBotAbhiJit asked: i remember that '#' is used to comment something. but here why we have commented? and if we commented then how ubuntu knows what to do?17:19
AlanBellexcellent question17:19
AlanBellfrom the point of view of python that is indeed a comment that it ignores17:19
AlanBellso when you run python hello.py it will ignore the first line, it doesn't care17:19
AlanBellthe #!something bit is read by bash (I think)17:20
AlanBellit checks the first two bytes for #! then looks at the rest of the line for instructions on what to do with it17:20
AlanBellquite a lot of different file types start with #!17:20
AlanBellok, everyone have a running program now?17:21
AlanBellOK, lets go on to the next concept, giving our program some structure17:22
AlanBellback to the editor, and between the two lines we have already add a new line17:22
AlanBellwhile 2+2==4:17:22
AlanBelland on the next line put four spaces before the print "Hello, World!"17:22
AlanBellsave that17:23
AlanBellso the while statement starts a loop, in this instance it will carry on until 2+2 is equal to something other than 417:23
AlanBellthe double equals means "is equal to" a single equals is used to assign a value to something (more on that later)17:23
AlanBellthe colon at the end is an important part of the while statement.17:24
AlanBellThere is no "until" "wend" "end while" type statement at the end, as you might expect to find in lesser languages :)17:24
AlanBellthe indentation of the print statement is not just cosmetic and for our benefit17:24
AlanBellthe indentation level is part of the language, when the indentation stops that is the end of the loop (or other structure that you might expect to have an end)17:25
AlanBellthis means that python always looks neat and tidy (or it doesn't work)17:25
AlanBellAlways use four spaces to indent, not three, not five and certainly not a tab.17:26
AlanBellOther indentations will work, but if you ever have to work with anyone else you must always be using the same indentation, so we all get in the habit of using four spaces.17:26
AlanBellLets run our new program, just save it in the editor and run it again in the terminal with ./hello.py17:26
ClassBotjledbetter_ asked: 4 always? So if nesting, 8 spaces?17:26
AlanBellyes, 4 spaces per level of indentation17:27
AlanBellso if you have a for loop inside a while loop the inner code would be 8 spaces deep17:27
ClassBotskkeeper asked: not using a TAB is a matter guaranteeing the code works on multiple platforms right?17:27
AlanBellno, not so much, tabs are portable. In fact I kinda wish the convention was tabs.17:28
AlanBellthe issue is portability amongst humans17:28
AlanBellif you have two humans working on some code, one likes 4 spaces the other likes tabs you are going to get a ton of errors17:28
AlanBellin gedit if you go to the preferences window, editor tab17:29
AlanBellyou can set the tab width to 4 and check the box Insert spaces instead of tabs17:29
AlanBellok, so you have the program running now?17:29
AlanBellnow we can wait for 2+2 to be something other than 4.17:30
AlanBellor, if you are in a hurry, you can press ctrl+c17:30
AlanBellok, so ctrl+c is handy for breaking in to an out-of-control python program17:31
AlanBellyou can do other fun stuff with the print statement, if you change it to read:17:31
=== david is now known as Guest1580
AlanBell    print "Ubuntu totally rocks!   ",17:31
AlanBelland run it again (note the comma at the end)17:32
AlanBellyou will see it doesn't do a newline and fills your terminal with stuff17:32
AlanBellctrl+c again to break out of it17:32
AlanBellOK, that was fun wasn't it!17:32
AlanBelllets do something different now17:33
AlanBellin the terminal, type python at the $ prompt and hit return17:33
AlanBellyou should have a >>> prompt and a cursor17:33
AlanBellthis is the interactive python console17:33
AlanBellyou can type print "hello" here if you want17:34
AlanBellor do some maths like:17:34
AlanBellprint 2**100017:34
AlanBellwhich will show you the result of 2 multiplied by itself a thousand times17:34
AlanBellpython is kinda good at maths17:34
AlanBellyou could even try "print 2**100000" it won't take long, and you can always stop it with ctrl+c17:35
ClassBotAbhiJit asked: what does ** means in 2**1000?17:35
AlanBell2 to the power of 100017:35
AlanBellor 2*2*2*2 . . . .17:35
AlanBellas mhall119 points out, in the console you don't really need the print statement (but I like it)17:36
AlanBellwhile we are on the subject of maths, lets get the value of pi17:37
AlanBellprint pi won't do anything useful (but feel free to try it)17:37
AlanBellwe need more maths ability than the python language has built in17:37
AlanBellso we need to get a library of specialist maths stuff, so type17:37
AlanBellimport math17:37
AlanBellit will look like it did nothing, but don't worry17:38
AlanBellprint math.pi17:38
AlanBellthat should return 3.1415926535917:38
AlanBellSo we have seen here how to import a library of functions to do something, and called one of the functions from the library17:38
ClassBotresno asked: How do you know where packages are and which to import?17:38
AlanBellthere are stacks of python packages in Ubuntu, have a look in synaptic at everything starting "python-" as to what is in them, just getting to that . . .17:39
AlanBellok, so what is in the math package, apart from pi?17:40
AlanBelltry typing dir(math) at the python console17:40
AlanBell['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'hypot', 'isinf', 'isnan', 'ldexp', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']17:40
AlanBellyou can also look at http://docs.python.org/library/math.html17:41
ClassBotskkeeper asked: How can I ask for a more precise value of pi?17:42
AlanBellskkeeper: I have no idea! I am sure there is a library for that17:42
AlanBelldir() is a good way to find out what something can do for you17:43
AlanBellthere is also a help() command which is useful17:43
AlanBellAll this command line stuff is all very well, but we want to do applications that have pretty windows and stuff!17:45
AlanBellIn the interactive console type or paste the following17:45
AlanBellimport gtk17:45
AlanBellwhich will load a library full of stuff to do with the gtk toolkit that powers the gnome desktop17:45
AlanBellfoo=gtk.Window(gtk.WINDOW_TOPLEVEL)17:45
AlanBellthat assigns a window object to a variable called foo17:46
AlanBell(the name doesn't matter, the single equals does)17:46
AlanBellbut nothing  much seems to have happened yet, so type:17:46
AlanBellfoo.show()17:46
AlanBellyay, a real live little window should be on screen now!17:46
AlanBelllets see what we can do to it with dir(foo)17:47
AlanBellquite a lot! lets try:17:47
AlanBellfoo.set_title("my little window")17:47
AlanBellI think you have to click on your window for the title to update17:47
AlanBellgo ahead and change the title a few times17:48
ClassBotnitrat_gray asked: are all the class references case-sensitive?17:48
ClassBotbas89 asked: is it with Qt as easy as with gtk?17:48
AlanBellthere is a certain amount of case sensitivity, but there are conventions on how to use case17:49
AlanBellhttp://www.python.org/dev/peps/pep-0008/17:49
AlanBellthe style guide has more detail on case conventions17:49
AlanBellyes, I believe QT is just as easy as GTK17:50
AlanBellwhen developing applications you would generally use an IDE and a user interface builder like Glade, what I want to show today is the relationship between command line code and windowing code and the lack of special magic required!17:50
ClassBotresno asked: What is the best source to learn more python? python.net?17:51
AlanBellthere are a number of books that are good17:51
AlanBellI like Snake Wrangling for kids17:51
AlanBellalso there is a book in the repos called dive into python17:52
AlanBellas to the snake questions, python is indeed a snake, but it was named after the Monty Python comedy series17:52
AlanBellI should really have used spam as my window variable name rather than foo17:53
AlanBelloh yeah, the oreilly learning python book with a rat on the cover is on my desk17:53
AlanBellok, so now lets recap on what we have covered17:53
AlanBell#!/usr/bin/env python goes at the top of your file17:53
AlanBellloops don't have end statements, the indentation is part of the syntax and makes end statements redundant17:54
AlanBellindentation is 4 spaces17:54
AlanBellnot 3, not 517:54
AlanBellnot tabs17:54
AlanBell417:54
AlanBelllibraries are collections of useful stuff, loaded with the import statement17:54
AlanBellPython is easy and fun!17:54
AlanBelloh yeah, and as mentioned in the -chat to get out of the interactive python console do ctrl+d or exit()17:55
AlanBellor quit()17:55
AlanBellgreat, 5 minutes or so for questions, and keep them easy because I am not that good a programmer :)17:55
AlanBellrecommended IDE, well I like gedit, it does python syntax highlighting which is awesome (does it automatically on files ending in .py)17:56
AlanBellthere is also SPE which used to be my favorite17:56
AlanBellstani's python editor17:57
AlanBelland stani is the person who designed an awesome bit of dutch currency17:57
AlanBell!info spe17:57
AlanBelloh, no bot to do that :(17:57
ClassBotAbhiJit asked: is for(i=0;i<=10;i++): is right?17:58
ClassBotlmh74 asked: best IDE for python in my opinion is Geany with the VTE, very light weight but effective17:58
ClassBotAbhiJit asked: i actually wanted for,while,do while syntax. please?17:58
ClassBotbas89 asked: What software is good for designing GUIs?17:58
AlanBellAbhiJit: nope, not quite17:58
AlanBelltry this17:59
AlanBellfor i in range(10):17:59
AlanBellthe for statement itterates over arrays and collections, range makes an array of the numbers 0 to 1018:00
AlanBellgeany sounds good18:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu App Developer Week - Current Session: Contributing without the Command Line - Instructors: doctormo - Slides: http://divajutta.com/doctormo/foo/slides/
AlanBelloh I am done!18:00
ClassBotSlides for Contributing without the Command Line: http://divajutta.com/doctormo/foo/slides/18:00
Pendulumthanks AlanBell!18:02
PendulumNext up is doctormo with Contributing without the Command Line18:02
doctormoHello everyone18:02
doctormoOnce you have something to contribute to a project, or a project of your own to get busy with. You need to be able to store your files and share them with outs.18:03
doctormoothers*18:03
doctormoTraditionally in programming this is done with a repository system. This is a system which logs your files and the changes you make to them.18:03
doctormoThe system used in Ubuntu is bazaar (bzr) but it's quite possible to do development with git or mecural. there does exist other repositories cvs and svn but use is discouraged now that we have good distributed repositories.18:04
doctormoThe problem with all of these systems for storing files18:05
doctormoIs that they all use the command line18:05
doctormoAnd many programmers like the command line18:05
doctormoWith is fine18:05
doctormoWhich is fine*18:05
doctormoBut there are plenty of contributions, developing an application which are not programming and could quite reasonably be done by someone who has never used the command line.18:05
doctormowhich is why I'll be talking about how you can contribute to a project and use these repositories without ever touching the command line.18:06
doctormohttp://divajutta.com/doctormo/foo/slides/slide-00.png18:07
doctormoOK so first, show of hands who's listening in on chat?18:07
doctormoOK so for this exercise we have some requirements18:09
doctormohttp://divajutta.com/doctormo/foo/slides/slide-01.png18:09
doctormoYou'll need Ubuntu or Design with gnome and we'll be using you launchpad account.18:09
doctormoOK so the first thing to do is to install groundcontrol, you can install this package via the command line or via the Software Center.18:11
doctormoGround control was designed to let users interact with launchpad and bazaar in a way that made it fun and easy to code, design and do other things.18:12
doctormohttp://divajutta.com/doctormo/foo/slides/slide-02.png18:12
doctormoIf you've got groundcontrol installed, then let's begin18:13
doctormohttp://divajutta.com/doctormo/foo/slides/slide-03.png18:13
doctormoGo to System > Preferences > Ground Control Configuration18:13
doctormoIn here you will press the button to log onto your language account, enter your email address and password and wait for launchpad to give your keys.18:14
doctormoNow for those who have not done development on launchpad before, you will be asked to create some ssh keys. These are keys that allow you to securely interact with launchpad bzr branches.18:15
doctormoOnce complete, you should have a fully set up development environment. Congratulations!18:16
doctormoNow all you have to do is go to Places > Home Folder. You will get a nautilus window and in there you should have a new Projects folder18:17
doctormothis folder will be used to hold projects downloaded from launchpad (you can rename it and move it anywhere you like)18:17
doctormoOnce inside the Projects folder you will find a bar on the top, in that bar will be two buttons.18:20
doctormoSomething like this: http://doctormo.ubuntu-ma.us/wp-content/uploads/2010/01/screenshot1.png18:21
doctormoThe Get Project button will pop up a window to search for a launchpad project. We're going to do a search for groundcontrol it's self.18:21
doctormoFetch Project*18:22
doctormoIf you don't see that bar then it's because nautilus needs to restart, you could do this with a computer restart, but we'll just do this: Alt+F2 and type in nautilus --quit18:23
doctormoIt'll automatically reload.18:23
doctormoNormally the groundcontrol packagaing restarts nautilus for you, but restarting nautilus is a known hazard.18:23
doctormoOK so I'll let those people catch up http://divajutta.com/doctormo/foo/slides/Screenshot.png18:26
doctormoNow once you've pressed ok on the project search/select window, ground control will download the project from launchpad and make a new groundcontrol folder.18:27
doctormoNavigating into that directory will give you a new set of buttons, one of which is "Fetch Branch"18:28
doctormoClick on that18:28
doctormoWhen it loads, click on the Trunk branch, give it a name or put your name in the "local branch name:" field.18:28
doctormoWhen you press ok it's download the branch18:29
doctormohttp://divajutta.com/doctormo/foo/slides/Screenshot-1.png18:29
doctormoyou will have  new folder18:30
doctormoWhat will will do is go into this folder and edit the README file18:30
=== pedro__ is now known as pedro3005
doctormothis is a very important point about ground control and the "Desktop as your IDE" theme.18:31
doctormoGC and projects like her do not reinvent the IDE wheel by trying to manage your code, or giving you editors. There are far too many types of files to make an IDE with all kinds of editors possible.18:31
doctormoSo use what you like to edit the files you want to.18:31
doctormowhen you save the file, you should notice that the buttons in this bar have changed to "Commit Files"18:32
doctormoCommit Changes*18:32
doctormoI just discovered there is an error here, but it's new and never been seen before. So it'll have to be reported after this session ends.18:34
doctormoYou should still have downloaded a branch however.18:34
doctormoIf you see a "Read Only Branch" message, this is because the error causes the configuration to be wrong, it never sets a push location so you can't commit code.18:36
doctormoSo you can show hidden files, go into a directory called .bzr then into brach and edit a file called branch.conf18:39
doctormoIn here there should have been set the push_location = bzr+ssh://bazaar.launchpad.net/~[username]/groundcontrol/[your-banch-name]/18:40
doctormoIf you do manage to set that and tell natulus to browse the branch directory again, you should have a commit button instead of a read only warning.18:41
doctormoPressing the commit button will allow you to specify what you changed: http://divajutta.com/doctormo/foo/slides/Screenshot-2.png18:42
doctormoOnce that's done we'll need to upload, it's a simple matter of pressing the Upload Branch button that appears.18:42
=== linux is now known as azubit
doctormoOK I tried this with another project and it worked fine... something about ground control's lp project perhaps. If you are having dificulty then please download the ubuntu-learning-materials project using the method above.18:48
doctormoAnd download the website branch and modify that and continue on from there...18:48
doctormoOnce you've uploaded your changes you'll be presented with a Request Merge button, this part is not in bzr.18:49
doctormohttp://divajutta.com/doctormo/foo/slides/Screenshot-3.png18:50
doctormoThis will let the project owners know that you've completed some work and you'd like it to be reviewed and merged in.18:50
doctormoCongratulations, if you've managed to dodge the trip wires in this session, you'll have contributed to ubuntu and it's projects.18:51
doctormoThere is more functionality to groundcontrol that allows project maintainers to merge-in, and you can specify bugs and so on when doing commits. play with it.18:51
doctormoNow I will answer some questions.18:51
doctormoQuestion: Can I erase the groundcontrol folder whit nautilus? or I have to use another method?18:53
doctormoI don't understand this question18:53
doctormoQUESTION: can name contain spaces? do they need to be escaped or quoted or can they just be typed normally?18:53
doctormoBranch names should probably not contain spaces.18:53
doctormoQUESTION: So once I download a project and modify its source (lets say fix a big, implement a feature, etc), all I have to do is commit it for review? The file I modified will be uploaded for review?18:54
doctormoYes, you've made a branch of the original code and the project owners can see the changes you've made.18:54
doctormoQuestion: Is there a way to views diffs from within nautilus (right-click/diffs with previous version...)?18:54
doctormoUse the commit window, clicking on any file will show you a diff18:54
doctormoQUESTION: What does GC do when it say "Loading Launchpad"? Why does it take so long and why is there a need for GC to do that just to search for a project on launchpad?18:54
doctormoIt's getting a brand new OAuth token each time, it takes time and isn't very good.18:55
doctormoMAfifi asked: How's that different from the explorer plugin in bzr for example?18:55
doctormothe bzr explorer and gtk-bazaar plugins are designed around the idea of providing ALL of bazaar functionality into nautilus with very little workflow design. It's the command line for your browser.18:56
doctormoGC on the otherhand is more a tool for the launchpad/bazaar development workflow rather than just being a bzr tool.18:56
doctormoIt has all the social rules built in and best practices.18:57
ClassBotMAfifi asked: How's that different from the explorer plugin in bzr for example?18:57
ClassBotMAfifi asked: Does it work with nautilus only? Can it work with dolphin in KDE as well?18:57
doctormothe version in lucid and maverick only work in gnome/nautilus. There is no reason it couldn't work in kde/dolphin. Just needs a developer to do the work.18:58
=== sdonatas is now known as donatas-lt
ClassBotCajunTechie asked: Can I create a new project using GC? I notice that was scheduled for inclusion but don't see it anywhere19:00
doctormoThe current version in lucid can not create projects.19:00
ClassBotsinisterstuf asked: Can I delete my local branch just by selecting the folder in nautilus and moving it to the deleted items folder?19:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu App Developer Week - Current Session: Writing a dataprovider for Zeitgeist - Instructors: thekorn
thekornOkidoki, I guess it's my turn now....19:03
thekornHi, everybody, my name is Markus Korn, I'm one of the Maintainers of zeitgeist, and I would like to talk to you about ways to get your apps data into zeitgeist19:04
thekornso, first of all, What's zeitgeist?19:04
thekornzeitgeist started as one result of the 2008 Boston user experience hackfest19:05
thekornit started with a full featured UI, which was call gnome-journal19:05
thekornand it's basic idea ist to track 'events' on your desktop19:05
thekornso, first of all, what's an event19:05
thekorn.19:05
thekornAn event is something you do on your computer,19:06
thekornlike opening files, visting web pages, swithing the focus of your application, and so on19:06
thekornGNOME (and I'm sure other systems like KDE have one too) has something called "recently used documents"19:07
thekornyou can see them in the places menu19:07
thekornbut zeitgeist is more than that19:07
thekornit tries to provide a unified way for ALL your events19:07
thekornso yo don't have the history of all your browsers, the history of played songs, etc.19:08
thekorn.19:08
thekornAnd zeitgeist needs the applications to feed their events into the zeitgeist system,19:08
thekornand that's what this talk is baout19:09
thekornany question so far?19:09
thekornor can we start with some coding ;)19:09
thekornaugdawg> what webrowsers use zeitgeist?19:10
thekornright now we support firefox, chromium, epiphany, and support for opera is in developemnt19:10
thekorn.19:11
thekornso that's the plan for this Session: we all know this beautiful app called software-center19:11
thekornand how cool would it be if we can track the applications you visit in the app by zeitgeist19:12
thekornso whenever you open an app page there, track a zeitgeist event19:12
thekorn.19:12
thekornto follow this example, you have to option,19:12
thekorn+s19:12
thekorn1.) try to follow the steps I do here on this channel locally,19:13
thekornor19:13
thekorn2.) just read, and I will try to paste as much code as possible on the internet, I'll give you links19:14
thekorn.19:14
thekornfirst of all, we need some software installed, so please run19:14
thekornsudo apt-get install intltool raptor-utils python-sphinx bzr19:14
thekorn.19:14
thekornbtw, please tell me when I'm too fast/slow19:14
thekorn.19:14
ClassBotaugdawg asked: what language will we be using?19:15
thekornin this example we will use python,19:15
thekornbut as you find out soon, you talk to zeitgeist using dbus,19:16
thekornso you can basically try to reproduce the examples in any language which has dbus support19:16
thekorn.19:16
thekornjust a small note to the users using unity, or which have zeitgeist already installed and running on their system,19:17
thekornyou might want to backup your activity log, so just incase we insert some garbage, you can restore your old database after this session,19:17
thekornto do so please run19:17
thekorncp ~/.local/share/zeitgeist/activity.sqlite ~/Desktop19:18
thekorn.19:18
thekornI think everybody should now have the app installed, let's get started19:18
thekorncd ~19:19
thekorn(so we are all in the same dir, please use any other dir if you like)19:19
thekornnow we get the zeitgeist source19:19
thekornwget http://edge.launchpad.net/zeitgeist/0.5/0.5.2/+download/zeitgeist-0.5.2.tar.gz19:19
thekorntar xzf zeitgeist-0.5.2.tar.gz19:19
thekorncd zeitgeist-0.5.219:19
thekorn...and unpack it19:19
thekorn...and now we just build zeitgeist19:20
thekorn./configure19:20
thekornmake19:20
thekornthis might take a while19:20
thekornok, next step is to run zeitgeist19:23
thekornupps, I'm too fast :(19:24
thekornloet's have some questions first19:24
ClassBotsinisterstuf asked: What is dbus?19:24
thekorndbus is a way for applications to communicate to each other using a socket19:24
thekornQUESTION : so zeitgeist is written in python?19:26
thekornyes it is19:26
thekornto run zeitgeist, we need a clean environment19:27
thekornmkdir /tmp/zeitgeist-data19:27
thekornexport ZEITGEIST_DATA_PATH=/tmp/zeitgeist-data19:27
thekornthis tells zeitgeist where to write the data19:27
thekornand now we can run the daemon19:28
thekorn./zeitgeist-daemon --no-datahub --replace19:28
thekorn--replace should kill any running zeitgeist instances19:28
thekornso far so good, we now have a running zeitgeist instace, which we can feed data into19:28
thekornlet's open a new terminal, and start writing a plugin to software-center which does the job19:29
thekorn.19:29
thekorn.19:30
thekornok, let's say the deamon is running, open a new terminal, and run19:31
thekornexport PYTHONPATH=~/zeitgeist-0.5.219:31
thekornthis will tell software-center where to find the zeitgeist modul19:32
thekornand now we can start writing the software-center plugin....19:33
thekornlet's get a first version19:33
thekornbzr cat -r 1 http://bazaar.launchpad.net/~thekorn/+junk/softwarecenter-zeitgeist-plugin/softwarecenter-zeitgeist-plugin.py > ~/zeitgeist-plugin.py19:33
thekorn(or for the people who just want to see the code  http://bazaar.launchpad.net/~thekorn/%2Bjunk/softwarecenter-zeitgeist-plugin/annotate/1/softwarecenter-zeitgeist-plugin.py)19:34
thekornthis is a *very* minimal plugin for software-center19:34
thekorn.19:34
thekornunfortunatly s-c has no other way to load the plugin then loading it from some system dir19:35
thekornso, let's symlink this file to the right place19:35
thekornsudo mkdir -p /usr/share/software-center/plugins19:36
thekorncd /usr/share/software-center/plugins19:36
thekornsudo ln -s ~/zeitgeist-plugin.py .19:36
thekorncd ~19:36
thekorn.19:37
thekornhas everybody done this successfully?19:37
thekorn.19:37
thekornif you now run  software-center --debug   from the terminal you should see the loading message somewhere19:38
thekorn.19:38
thekornbut anyway, this plugin does nothing so far19:39
thekornlet's pimp it19:39
thekornbzr cat -r 2 http://bazaar.launchpad.net/~thekorn/+junk/softwarecenter-zeitgeist-plugin/softwarecenter-zeitgeist-plugin.py > ~/zeitgeist-plugin.py19:39
thekornor19:39
thekornhttp://bazaar.launchpad.net/~thekorn/%2Bjunk/softwarecenter-zeitgeist-plugin/annotate/2/softwarecenter-zeitgeist-plugin.py19:39
thekornfor the reader out there ;)19:39
thekornthis code does two things19:40
thekorn1.) it creates a connection to the zeitgeist daemon,19:40
thekornby running   ZeitgeistClient()19:40
thekorn2.) it connects to the signal of software-center which indicates a user switching the view19:41
thekornnow run   software-center  --debug   again,   and you should see some logging when you swith between applications19:42
thekornby switching I mean  "clicking the "read more" button19:42
thekorn.19:42
thekornis it working so far for everybody?19:43
thekorngreat19:43
ClassBotaseem24 asked: it's working but i get this on my terminal..DEBUG:root:run_thumb_missing_js19:45
thekornthis just sounds like a debugging message from s-c, nothing to care about19:45
thekornlet's just ignore it for now19:46
ClassBotiamlouis asked: when I change view should I see anything in the zeitgeist terminal output? Using rev 2 of the plugin19:46
thekornnothing yet, we come to it NOW!19:46
thekornbzr cat -r 3 http://bazaar.launchpad.net/~thekorn/+junk/softwarecenter-zeitgeist-plugin/softwarecenter-zeitgeist-plugin.py > ~/zeitgeist-plugin.py19:47
thekorn(or, again: http://bazaar.launchpad.net/~thekorn/%2Bjunk/softwarecenter-zeitgeist-plugin/annotate/3/softwarecenter-zeitgeist-plugin.py)19:47
thekornnow, this change actually tells s-c which event to insert into zeitgeist19:48
=== harry is now known as Guest47664
thekornI'll paste it here, because it's important ;)19:48
thekornevent = Event.new_for_values(19:48
thekorn            interpretation=Interpretation.ACCESS_EVENT,19:48
thekorn            manifestation=Manifestation.USER_ACTIVITY,19:48
thekorn            actor="application://software-center.desktop",19:48
thekorn            subject_uri="application://%s" %app.pkgname,19:48
thekorn            subject_interpretation=Interpretation.SOFTWARE,19:48
thekorn            subject_manifestation=Manifestation.SOFTWARE_ITEM,19:48
thekorn        )19:48
thekornas you can see, Events do have a certain structure19:48
faganthekorn is after losing connection so he cant type in here :/19:52
=== thekorn_ is now known as thekorn
* thekorn checks the mic...19:53
thekornlet's continue with the structure of Events19:53
thekornevent = Event.new_for_values(19:54
thekorn            interpretation=Interpretation.ACCESS_EVENT,19:54
thekorn            manifestation=Manifestation.USER_ACTIVITY,19:54
thekorn            actor="application://software-center.desktop",19:54
thekorn            subject_uri="application://%s" %app.pkgname,19:54
thekorn            subject_interpretation=Interpretation.SOFTWARE,19:54
thekorn            subject_manifestation=Manifestation.SOFTWARE_ITEM,19:54
thekorn        )19:54
thekornevents have na interpretation,19:54
thekornwhich means: what is the event about19:54
thekorna manifestation, which is: who does something19:54
thekornand it has an actor19:54
thekornwhich is, who does something19:55
thekornso in this case, the s-c app visits an application page on behalf of the user19:55
ClassBottesttest asked: ?:Thoughts on privacy, user opt-out?19:56
thekornyes, we have ways to blacklist certain events19:56
thekornand there are already UIs implementing this19:56
thekornit is call Backlist in our terms19:56
thekornokidoki, I've only four minutes left19:57
thekornand I'm a bit running out of time19:57
thekornthe last revision (revno 3) is basically a working dataprovider for s-c19:57
thekornso whenever you start s-c now, and visit an application's page19:58
thekornan event should be inserted into zeitgeist19:58
thekornone of our devs Seif Lotfy will talk about ways to get this data back later this week19:59
thekorn.19:59
thekornI would like to end this session with some ressource:19:59
thekornfirst of all, if you are interressted in this project, or have any questions, please join us in the #zeitgeist channel19:59
thekornor visit our webpage at   www.zeitgeist-project.com20:00
thekornor our launchpad page at launchpad.net/zeitgeist20:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu App Developer Week - Current Session: Making Programs with Quickly in Vala - Instructors: fagan
thekornwe also have bindings for other languages like C, C#, vala, java, etc.20:00
* fagan loves vala20:00
faganthanks thekorn :)20:01
faganOk hi everyone20:01
faganand im going to talk about the infamous quickly20:01
faganSo to start this is a preview release of the Quickly Vala template.20:02
faganIts not in the repo yet and is very very new. It has a good lot of things working so far but not packaging or building.20:02
faganAlso translations are not working yet properly because it relies on the build systems for Vala.20:02
faganIts still a good start and is usable at the moment for little projects that you want to do.20:03
faganOh and if you have questions ill be looking at the chat so ill get to them as soon as i can.20:03
faganSo lets get this started then20:03
faganfirst we need to prepare a little to run this template you need quickly and Valac installed so if you don't have them run this command please:20:04
fagansudo apt-get install quickly valac20:04
ClassBotaugdawg asked: when it hits the repos, i assume it wil do this automatically right?20:05
faganWell I didnt want it in the maverick repos20:05
faganIm waiting for the build issues and other stuff to be fixed first20:05
faganNow lets start get the template20:06
faganso open up the terminal and type:20:06
faganmkdir quickly-templates;cd quickly-templates;bzr branch lp:~shanepatrickfagan/quickly/Quickly-vala20:06
fagan(in the root directory of your home)20:07
faganNow you should have everything you need20:07
faganIs everyone good?20:07
faganOk ill slow down a bit :)20:07
faganok so moving on20:08
faganlets get making programs then20:08
faganok get out of the quickly templates directory: cd ..20:08
faganrun this command in terminal to get your project created:20:08
faganquickly create Quickly-vala <project name>20:09
faganGood?20:09
faganNow our project is set up and the directory is created.20:10
faganSo now go into your project directory20:10
fagancd <project name>20:10
faganSo are you all there?20:10
faganSo in this directory you will see a /bin /data and two text files so its very similar to the other quickly projects that you may have used before.20:11
faganyou can now run the project with20:11
faganquickly run20:11
faganjust like the python templates20:11
faganThis command does a few things it compiles the .vala file and runs it.20:12
faganso it needs to do a few things to get the .vala file up and running but its in the background so its all good20:12
faganIll get into the problems with doing this in a little while but first ill get you developing.20:12
faganOki doke so moving on20:12
fagananymore questions?20:13
faganok so20:13
faganSo do get editing your code use:20:14
faganquickly edit20:14
faganJust like the python template :)20:14
faganAt the moment I only have 1 .vala project file I plan on adding the about box very soon too.20:14
ClassBotaugdawg asked: can you use glade to desgin a gui?20:15
faganyep20:15
faganSo in gedit you should see the base of a class. So to start developing all you need to do is scroll down to the bottom of the page and look for the line that says "write your code here".20:15
ClassBotbeardygnome asked: i'm running xubuntu - do i need to install gedit?20:15
fagansorry about that20:15
faganits a bug20:15
faganIll be fixing it later in the week20:16
ClassBotbeardygnome asked: or can i use geany?20:16
faganYep you can20:16
faganyou just have to double click on the .vala files to edit it20:16
faganbut still thats a bug20:16
faganmy bad20:16
faganthe warning you can ignore20:17
faganits a problem with glade and vala not being entirely in sync20:17
faganSo in gedit you should see the base of a class. So to start developing all you need to do is scroll down to the bottom of the page and look for the line that says "write your code here".20:17
faganso its fairly easy to use20:17
faganand hopefully there is enough comments to guide you guys20:17
faganOh and on that I tried to use xdg-open instead of just using gedit *.vala but it wasnt working right so I left it.20:18
faganthats the way I was originally going to do it20:18
faganit doesnt handle multiple files20:18
faganso thats why I dropped it20:18
fagananyway all the other stuff on the page is gtk and glade stuff20:19
faganso you can ignore all of that20:19
faganjust write your code below the comment saying write your code here20:19
faganHere is the link to the Vala docs to get started and developing with code examples:20:19
ClassBotaugdawg asked: what is this written in?20:19
faganWell thats a good question actually20:19
faganthe template is written in sh scripts really20:20
faganand the template is for vala so its vala there20:20
faganand the create command is pulled from quickly itself so its in python20:20
faganand the ui is glade20:20
faganok so20:20
faganmoving on20:20
faganHere is the link to the Vala docs to get started and developing with code examples:20:20
faganhttp://live.gnome.org/Vala/Documentation20:20
faganThey have most of the code that you will be looking for already there. So just have a poke about and they will give you tutorials on everything20:21
faganfor beginners to more advanced stuff20:21
faganSo I should say how to do the glade thing and can you guess what the command is?20:21
faganquickly design20:21
faganjust like the python quickly projects20:22
fagan:)20:22
faganOh I should say how to add your listeners to the code for glade events20:22
faganIf you want to create listeners for the widgets you add you just have to use code similar to how I wrote the quit menu item handler in the template itself. Like this:20:22
fagan[CCode (cname = "G_MODULE_EXPORT name_of_event")]20:23
faganpublic void name_of_event () {20:23
fagan// code here20:23
fagan}20:23
faganYou put the name of your event in there instead for both bits.20:23
fagan(the name in glade itself)20:23
faganoh and the CCode bit is just so it will work on windows too but I like leaving it in anyway even though I wont be porting anything to windows.20:23
faganso is everyone still with me?20:24
* fagan moves very fast20:24
faganok I broke quickly design yesterday20:25
faganits just the wrong directoy20:25
faganill fix it after this20:25
faganmy bad20:25
faganor data20:26
fagansorry20:26
fagandamn20:26
fagananyhow ill move on20:26
fagan:P20:26
faganSo we now have you guys editing your projects so what if you add extra classes to the project or you start using an external binding other than gtk+ or glib?20:26
faganthats the problem with vala20:27
faganYou will have to add the binding to the run method with this command:20:27
faganquickly edit_run20:27
faganand then you will get your editor and have to add the --pkg to compile it properly20:27
faganso if you have used Vala before you would know what to add but if you don't its just:20:27
fagan--pkg <binding>20:27
faganand I have the code commented so you guys should find it fairly easily20:28
faganSorry about this problem but we are going to work on this for 11.04 and was the main reason we haven't released it yet.20:28
faganits a challenge for me to fix :)20:28
faganok so thats most of the work so far20:28
faganis anyone having problems with anything other the quickly design command20:29
fagan?20:29
faganor do you guys have any questions?20:29
ClassBottesttest asked: how many terminals should I have open for this20:29
faganWell only 1 is needed20:30
faganyou can type them in a line20:30
ClassBotbeardygnome asked: what should quickly edit_run have done?  it just ran the app when i tried it.20:30
faganhuh20:30
faganoh now I get why it did that20:31
faganits not picking it up as a text file20:31
faganfail20:31
fagan:)20:31
faganjust gedit .run20:31
faganand it will do it20:31
faganI used xdg-open and it didnt open the text file :/20:31
fagananyhow if there are no more questions ill get into what my plans are20:32
faganany takers?20:32
fagangood good20:32
faganOk so my plans are for 11.04 and beyond.20:32
faganWell like quickly itself I really want to make things easy. I want everything to be automated and done for the user without much input.20:32
faganSo my plan for the end is to have 1 config file for the users to edit and all that needs to be inputted is authors info like email and name, category (for the menu entry), URL, description and long description.20:33
faganso that packaging and building is as easy as possable20:33
faganSo all of that is in the python template now but you have to edit the authors file, desktop.in and the setup.py file. The way im thinking is to do it in 1 file and make it more invisible how the magic is done.20:34
faganso the python template is a little bit hard if you didnt see any tutorials on how to do it20:34
faganMy idea is to have that all in one text file. How its displayed is up for discussion and ill talk about that at the UDS probably. (ill be participating remotely).20:35
faganI also plan on having packaging and building done properly for 11.04 which is going to take most of the cycle and involves a lot of things.20:35
fagan1. Detecting depends so the user doesn't have to do the --pkg thing or have to use makefiles and all of that crap.20:36
fagan(this is a big problem with vala in terms of new developers)20:36
fagan2. a great build system (this is going to be done with buildj hopefully) and a standard project directory layout so we just have to scan the dirs for files to detect what to add to the build.20:36
fagan3. packaging stuff but since this really relies on 1 and 2 its going to be done last. Plus im not a motu or do any packaging in general so the tools are quite new for me so it will take a little bit of fiddling. (if anyone wants to help with this ill buy you a drink sometime for your trouble)20:37
faganthats a lot of hard work for 1 cycle :)20:37
faganohter than that and some other boring stuff ill just be updating the template a little20:38
faganto make it a little bit more like the python template20:38
faganwhich is awesome20:39
faganand I might give desktopcouch a try in vala20:39
faganif the binding is there20:39
faganok any more questions?20:39
faganI have just a little bit more20:39
faganok so no questions?20:40
faganmoving on then20:40
faganoooh20:40
fagansomeone has one20:40
faganbeardygnome > can we use pdb for debugging (i see there's a session on this later this week)20:41
faganwell debugging is built into the valac compiler20:41
faganand it does give out some awesome info20:41
faganso there is no reason to use phb20:42
fagananyhow20:42
faganso im starting to run out of things to talk about so ill just go into the "why use Vala over python?" question20:42
faganWell the simplest answer is that Vala is a lot lot faster than python and its very well integrated into the gnome platform.20:43
faganThe other answer is that its the perfect language to got to if you started programming in Java or C# (if you don't want to use mono) oh and did I say its faster than both of those languages too.20:43
ClassBotbeardygnome asked: i have one20:44
faganlol20:44
faganDidnt mean to paste that one :/20:45
faganQUESTION : there is no intermediate language in vala right ?20:45
faganI dont have a clue what the question is :)20:45
faganIf anyone is wondering how its faster its because Vala is more or less a big wrapper over C.20:45
faganValac the Vala complier converts your code to to C then uses the C complier to make the binary. C is one of the oldest modern languages (its about 40 years old now) and is by a good stretch the fastest.20:46
ClassBotjthompson asked: Did you mention Vala run in Windows?  Does it use GTK for the GUI layer?20:46
faganI kinda glossed over the vala on windows thing20:46
faganbut yeah it does work on windows20:46
faganand it does use GTK20:46
faganyou can get an installer for both im pretty sure on windows20:46
faganbut you do have to change your / to \20:47
faganso the directories work20:47
fagansince windows is backwards20:47
ClassBotaugdawg asked: is there a valac for windows?20:47
faganyes20:47
fagan:)20:47
faganhttp://live.gnome.org/Vala/ValaOnWindows20:48
faganthanks for the link wutzara20:48
faganthoughts on quickly work-flow, e.g. multiple terminals <-> new developers?20:48
faganWell you can use quickly with a single terminal20:48
faganbut I have a small bug at the moment where it only allows one command at a time20:49
faganso its a little bit bad20:49
faganany more questions20:49
faganI flew through the whole session20:49
faganso im sorry if I was a little fast20:49
ClassBotw1ngnut asked: Don't know if was asked. Is there any IDE with code-completion for vala?20:50
faganYep geany is nice for that20:50
faganand valide (I think thats the name)20:50
faganvalide is a plugin for gedit and it has autocompletion just like netbeans or visual studio20:51
faganso its very nice20:51
faganhttp://code.google.com/p/vtg/20:51
faganhttp://www.valaide.org/20:51
faganthanks chat for the links :)20:51
ClassBotaugdawg asked: what do yu use?20:52
faganwell I use gedit20:52
faganbut I turn on the line numbering and i use different colours because the default ones are ugly20:52
faganoh and I should give the tools page too http://live.gnome.org/Vala/Tools20:52
ClassBotjiga asked: I was previously using QT with c++, and I'm wondering, what are the benefits of quickly-vala over QT20:53
fagangreat question20:53
faganWell I dont have a clue about QT really or the state of its bindings with vala20:53
faganbut id say there are20:53
faganso you wouldnt really need to use one or the other20:53
faganwell im almost out of time but keep the questions coming if you have them20:54
fagan:)20:54
ClassBotwutzara asked: is there autotools support in quickly-vala20:55
faganWell I hate autotools20:56
faganSo im working with buildj for 11.04 hopefully20:56
faganso we can have an easier way to build programs20:56
ClassBotaugdawg asked: does vala have alot of module type thingies?20:56
faganWell you have a lot of classes and bindings and stuff but all of them are similar to that in python20:57
faganso its not any more than any other language20:57
ClassBotw1ngnut asked: Vala seems a good alternative for one coming from C# or java but the namespaces/methods inherit more from glib than the java-c# pattern. Do you have any tip for someone with experience on java-c# wanting to migrate/start learning vala?20:57
faganWell the easiest way is to dive in20:57
faganthe tutorials are on the vala website20:58
faganand since its very similar to C# and java its easy to switch to20:58
faganthe only major difference is instead of swing in java its GTK20:58
faganbut thats awesome20:58
faganwell since the syntax is very similar its fairly easy to switch20:59
faganOk so thanks for listening and if you have any problems with my template go to #quickly on freenode or if you want help with Vala itself go to #vala on gimpnet. Of course patches are welcome and I hope you guys like it.20:59
faganAnyhow im out of time20:59
fagan:)20:59
faganthanks everyone :P20:59
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat ||
=== yofel_ is now known as yofel
=== Mahara is now known as Guest43620
=== gorilla is now known as monkey_gorilla
monkey_gorillawhat are you talking about now23:51

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!