Search This Blog

Thursday, July 12, 2012

Join the Community! - Ubuntu Forums.

www.ubuntuforums.org
One of the best ways to get involved in the Ubuntu community is to join the Ubuntu Forums and start talking.

For those of you unfamiliar with the purpose of forums, forums are gathering grounds for different discussion topics in the form of threads.

There's all kinds of discussions, from absolute beginner talk all the way to technical bits, like programming and running ISOs.  And there's always a community cafe, which breezes through material unrelated to Ubuntu.

The community is very active and vibrant, a strong reason why many people love Ubuntu.

Still interested? Learn about where and how you can contribute to Ubuntu.

Wednesday, July 11, 2012

"Intro to Ubuntu Development World for Beginners" #ubuntu-classroom.

From 15-16 UTC, in IRC, there is a session on "Introduction to Ubuntu development." In Los Angeles, that's from 8 to 9 am! Anyone who is interested in becoming developers should really , pick up an IRC client, enter the session, and learn more about how Ubuntu is worked from the ground up.

Our speaker is Bhavani Shanker, who has been helping out for Ubuntu for 5 years and an experienced developer.

Saturday, July 7, 2012

Debian Filesystem

From the filesystem guide.
The Debian filesystem follows that of the Unix system.  Apple's Mac OS X has its foundations on Unix, so there is a vague similarity between Mac and Linux.

The hierarchy is divided into the shareable and unshareable, static and variable.

Static files cannot be manipulated unless the administrator explicitly decides to act on them. They may be binaries, programs, and libraries that came as it was; only under your own discretion may you take access and do work on these files (ex. code revision.)

The variable files, however, are meant to change, stuck in a flux as necessity permits. For instance, when some emails arrives on your Thunderbird client, you can label some, trash others, etc. 

There is a clear difference between the shareable and the unshareable files.  User files, like our word documents and our music and - to an extent - our information, sit in a pool to be shared. The unshareable files are really device-related, for booting, system-wide tasks, device information, the kernel. 

But all these files are open source, able to be editted.

Cmdline: Input and Output.


Mind that the developer must learn to use the reference and tutorials side by side. Eventually human help can be useful as well. It's a scarce resource. Tutorials are great ways to give a first impression of developments, and as business necessitates, references can fill gaps of knowledge.

In Linux, there is a way to keep you covered about interesting, ambiguous commands: the commands man, info, and whatis. Whatis is my personal favorite because it gives a one-line description of the purpose of the command. Man is useful as a reference of commands. So, say I want to know what bzr is. Simple, I write up

whatis bzr

And there you go: Bazaar next-generation version control.

I/O - Input, Output

The Linux terminal knows how to invoke I/O. What you type onto the terminal is an input, and the results that are spit out are outputs. Outputs actually come in two forms, standard output and standard error. The interesting thing is that the outputs are linked to the screen, so that you could see it them with your own eyes. For instance, if you invoked the ls command, which lists directory files, in usr/bin, the near equivalent of the Program Files folder in Windows, then you would receive an output of the entire program list.

ls -l /usr/bin

Now here's the catch. Say you want the output to be stored in a file, not directed to the screen. Manipulating the I/O to redirect the output comes in handy. All you need to do is use the > command.

ls -l /usr/bin > bin-output.txt

This would put the output you normally see on the screen arrives to your .txt file. But it also overwrites the contents of the intended file. If you want to append (add on) the output, we could use >>.

ls -l /usr/bin >> bin-output.txt

There are all sorts of possibilities that spring to my mind with Linux's redirection ability. Perhaps I want to share an error message if any with a fellow developer who can review it and discuss it with me in detail. Or show the measures I took and have the community help me out with a problem.


Friday, July 6, 2012

Intro to Debian, Package sections in Universe.

Check out Debian at www.debian.org.

In Debian, the aspiring developer is expected to take initiative into the scene.  Having individual attention, just like our teachers show, is a very scarce resource.  Be sure to read the Developer's Maintainer Guide on "getting started the right way"!
 
The social dynamics of Debian is to use IRC and mailing lists (sign up to one, like google debian-mentors) to communicate with developers, and everyone interested in volunteering for the open source community start out as contributors.  Once one has shown large contributions to the community in reporting bugs, packaging, writing up documentation, and so on, he or she can apply for membership as a maintainer, and ultimately a developer, the one who has complete upload rights to the universal repository of packages.

Think of packages as your typical shipment.  When you order something from, say Amazon, it comes to you wrapped in a package.  Inside is the content that you've been waiting for.  The same way, in the software community, applications - and developer tools - are wrapped into packages.  The developers' job is to package these things and maintaining them as they upgrade or downgrade in versions.

Package sections - main, contrib, nonfree

I bet Amazon has an ultra-huge repository of items and contents in their warehouses.  The same virtual warehouse exists in the developer world, what we call the Universe.  The universe is the world where packages all sit.  During the early days of Linux, there weren't many packages.  Now we have over 15000, a large number that requires creating sections. They come in 3 sections: main, contrib, and nonfree.

In the main repository, all packages have dependencies on the essential tools already pre-installed in the system. In the contrib repository, the packages have dependencies on supplemental tools that may not be from the system.  In the nonfree repository, the makers obviously have the key to manage the files to be installed themselves, not the community.

Thursday, July 5, 2012

Interested in developing? Become a packager!

Before diving into Ubuntu development, I want to equip myself with sufficient knowledge of the open source community.  The best way, I discovered, is to learn Debian.

That's right.  Ubuntu is a derivative of Debian, and for the prospective packager who wants to discover the immersive world of open source programming, he or she will need to learn the basics of merging code into branches, mastering the social order of launchpad, dealing wiht Upstream, and communicating with developers. 

Throughout the next week or so, I'll be sharing bits of what I found essential from the Debian maintainer's documentation.  To develop for Ubuntu, one must know Debian by heart.  A quick trivia: most of Ubuntu's documentation comes from Debian documentation.

Here are the steps:
1. Find a choice Linux distro to install.  My personal favorite is Ubuntu, which you can download at www.ubuntu.com
2. Check out the Ubuntu package guide. Read the intro and getting set up, and set up your development machine.
3. Once you understand how Ubuntu development works, start reading the Debian's New Maintainer's Guide.

Happy learning!

Wednesday, July 4, 2012

Fourth of July - A Praise.

My pencil sat on the table, waiting for use.  Meanwhile, I stepped up to the window, watching the dawn turn to dusk.  Breath after breath, intrepid for excitement, I wake, with the rising moon, to the pulpit of the ages.  Yes, these creeping days of the beautiful day of independence.  Contrary to common belief, American independence really followed after 1782, seven years before George Washington ascended to presidency.  Well, enough of that.

Spending a wonderful time at my cousins' house, I look around the beautiful, sinewy meadows of the Rancho Cucamunga suburbs.  Together, late at night, my cousins' family and I hiked along a trail, seeing the entire city light up, ablaze, beautiful, from a distance so fitting that a panaroma of the lamp posts, of bustling businesses, and of cars on the highways ensues.  The eye could only grasp so much.

Along the way, my cousins and I shared a warm chat about appreciation for this holiday and our prospects for future.  Youngsters as they are - the oldest is heading to 8th grade - my cousins are quite indecisive (very expected).  Perhaps, it hasn't hit them yet about the tranquil bodes of swift action and powerful moral choices. To go so far for a cause...

America has braved the turbulence of two centuries.  In the midst of debt crisis, failing Medicare, impending presidential elections, Islamophobia, class inequality, and economic disunity, we look to a new light: each other, Americans.

Tuesday, July 3, 2012

Developers and Money: What's the reality in success?

Development is a lucrative field.  App markets constantly bloom with a plethora of new apps daily, and developers are either hailed with newfound glory due to a successful app or lie in neglect, as if public scrutiny failed to notice.  There is a countless number of apps that have changed lives.  Perhaps, we are in search of an excellent local restaurant, and if the internet is of little help, an app out there can filter the best based on user reviews.  Or maybe a social networking guru could use a client that unifies them all - Facebook, twitter, G+ - under a single client.  Or you could use a snack: an entertaining game of Angry Birds. The public enjoys the service, handed to us on a silver platter, waiting to use a portion of our hard-earned wages for something to make life easier or more enjoyable.  Piece of cake.


But there is a stone cold reality behind the fanfare and craze, I noticed as I read a mailing list conversation today on what makes a money-reeling app for the android market. The developer will have to face the odds: knowledge of the fickle tastes of the public, its desires and needs that evolve when least expected.  Luck isn't enough. Forget technicality or fine-bred talent on the art of programming. Although money is a huge incentive, the typical developer must think beyond the money.
  • Innovation: The power of innovation, to take the risk of trying new technologies, is the ultimate asset to stardom.  There are many forms compelling apps can adopt, but innovation is best when it exposes the glories of the future.  Only then will it capture the interest of the mainstream.
  • Public interest: If the developer can build hype amongst the public - online community, local, school - he or she already has the upper hand.  Adding publicity and marketing effectively makes a difference between a passing haze or a one-hit wonder! Prepare for lots of attention. 
  • Ask "What would the public use?": The best way to find out is checking the top selling apps of the categories in the app market. Keeping up with the trend is a smart way to know the public's appetite.
  • Connections: The most powerful allies.  The more connections, the higher up the mountain the developer can go. One should be fearless to befriend the world that towers before us.  
Finally, the developer shouldn't have high expectations on earning quick cash.  Overnight sensation status rarely occurs, and the real world is frankly unmerciful.

There is more to success than pure luck after all.

What do you think?

Respecting the developers.


I've been on a tutorial learning spree to get the hang of these new programming concepts. More importantly, I have to step in for some best practices. To embark on creating an app haphazardly does scare me, though, more importantly than developing something, one must have a brilliant, innovative idea shaped in an application.  At the moment, mastering Python for Ubuntu applications, Java for Android, and Objective-C for iOS is a far-reaching goal.

Just watch those many other developers out there, ready to pounce with their code-driven minds and adept skill with their computers.  With their applications, they are shaping the future.  Perhaps, I'm still feeling insecure. :/

Sitting down in the library with my suburbs-residing cousins today, I have a long way to go. But the summer is ample time to fill those gaps of programming.  I've been hanging out not too actively in the Ubuntu forums and AskUbuntu, and that needs a fix soon. I still haven't lost hope about starting a Linux User Group; without the proper knowledge, however, I will have trouble raising up a crowd of burgeoning people.

The experience is nevertheless exhilarating!


Tuesday, June 26, 2012

Creating 'Hello World' app for iOS.

Hello World!  A primer for beginners, like myself.

All it does is take what you wrote on a text label and output your name with a hello!  

I just returned from a brief hiatus from society in the desert setting.  Invigorated by the isolation, I feel triumphant in this land, ready to explore my boundaries and continue studying important concepts for development.  Mobile development especially, because it's lucrative for the successful ones. 

Today I spent my time following the apple developer 'getting started documentation.'  I only followed a tutorial, though I hope to repeat it from scratch without looking later. 

Although many advise that one becomes educated of these concepts before taking the step into the real developer scenario, I decide that just doing it teaches more, as long as I grind down on the tutorials. 

Later, I'll take my time on the Android developer documentation and its own "Hello World!" tutorial. 

Oh, and I have to spare time for Ubuntu app development.




Thursday, June 21, 2012

Making Jotty: 3/3 A reflection and analysis

For a first-timer at coding, I just passed my first test.  I gripped to my seat throughout the entire roller coaster ride, survived miraculously and lived to tell the tale.  I must, however, address the necessity to debug, because I've encountered a lot of errors in trying to "open" or "save," despite following the tutorial carefully.  

I'll have to address these errors to askubuntu at my spare time. This is indeed confusing matters to me.

Jotty: looks good on the outside, but what about the functionality?


Reflection.

Before I embarked on creating my very first app from scratch, I read books about programming languages, most of which were free.  I read them so thoroughly and slowly that my impatience was manifest when I saw the Ubuntu App Showdown appear last Monday.  I badly wanted to just do it, and get my hands dirty with raw concepts.

I consider before when I used to love playing games.  At one point of my experimentation, I played this MMORPG called Maplestory.  I know of fanatics who go crazy about contests or in-game events that transform the average mind riddled with school work into a bustling machine, chugging through the game, mastering its mechanics, voraciously serving the content of nonsense and ultimately a capitalist scheme.  (Yes, I dote on time-consuming online games.)

But development seems like an entirely new, radical and productive experience.   To serve than to be served: the prospects of service makes me exuberant!  I've been hanging out more often in AskUbuntu and Ubuntu Forums to clear my doubts.  It also feels more productive to ask the Ubuntu community good questions than meet with a specialist in person. Mobile development for iOS and Android also caught my eye; one step at a time is good for now.

In short, I'm starting to seep into the online community.

What next?

It's a great step forward but now, I want to keep moving ahead. I only finished the Get Started document... and encountered an unfortunate error.  If someone can explain the AttributeError on the Terminal and how to fix it, I will be grateful.  Perhaps I have to learn the practice of debugging.

I still have no idea for an app.  I have yet to draw inspiration from my peers or those subreddit posts.

Application development is a stunning field. Since I have to take off those training wheels as I make my own, I'm looking forward to the support that AskUbuntu and Ubuntuforums can provide in the days to come.

Wish me luck!  I like where this is going. :-)

Inspirations?

If you have any thoughts about a good app for a novice developer like myself, please suggest on the comments!  I'm all ears as long as it doesn't sound incredibly difficult.

Making Jotty: 2/3 Writing the Code.

I almost shied away when I saw the section on coding to enable functionality in the widgets of my application.  Widgets are those submenu items, like "open" or "save." I was almost caught with anxiety, like a recruit soldier reluctantly entering the fog of gruesome war. 

Regardless, I stood firm and I entered.


Although I was hit by a lot of new concepts, I stood firm and absorbed this knowledge with an open heart.  I'm thankful that the Quickly tutorial provided a steady walkthrough, describing the pertinence of the code I wrote into the application. 

Coding is like breathing life to a stone.  Design is fruitless without compelling and innovative functionality.  I know that in order to accomplish this, one doesn't have to be a code monkey!

I cleared away my vague notions of programming terms as I followed along.  JottyWindow.py, which I edited and wrote code, was a class!  And the definitions following the class are considered methods, which have only one indentation.  Indentation matters in programming, so it seems. 

Before even bringing up methods or calling definitions, we have to import tools and libraries.  For this tutorial, I imported GLib, a hefty library. 

With much writing, hooking objects to the living code, I managed to create Jotty! Huzzah!