haiku-website/content/development/learning_to_program_with_ha...

628 lines
27 KiB
HTML

+++
type = "article"
title = "Learning to Program with Haiku"
date = "2010-05-26T00:59:47.000Z"
tags = []
+++
<h1>Lessons by DarkWyrm</h1>
<span style="float:right;"><img
src="/files/images/ISBN_978-0-557-53969-7.jpg"
alt="Learning to Program with Haiku"
title="Learning to Program with Haiku"
class="image image-thumbnail "
width="225" height="320" /><br><span
class="caption" style="width: 198px;"><strong>ISBN: 978-0-557-53969-7 (<a href="https://www.lulu.com/search/?adult_audience_rating=00&contributor=Jon+Yoder">lulu.com</a>)</strong></span></span>
<p>
In January of 2010, I started publishing lessons on learning to program for
Haiku, aimed at people who want to be able to write simple
programs to get stuff done, but never had anyone around teach them. Years ago,
I started teaching myself and am an active developer. It's my turn to give back.
</p>
<p>
All of these lessons are distributed under a Creative Commons license which
allows free distribution for noncommercial purposes. Should you have questions,
by all means <a href="https://discuss.haiku-os.org/users/darkwyrm/">contact me</a>.
</p>
<p>
If you're a fan of the lessons and want to show appreciation or to have a copy of it on your desk while you work your way through, now you have a chance to have a high quality copy, and if you've been sitting on the fence about it, read a lesson or two and then decide for yourself. A hard copy of all of these lessons, compiled and further polished, can be found at the link below. Enjoy!
</p>
<p>
<a href="https://www.lulu.com/search/?adult_audience_rating=00&contributor=Jon+Yoder">Learning to Program with Haiku at Lulu.com</a>
</p>
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 1</h2>
<p>
Have you ever wanted to learn to program for Haiku (or something else) but
never had the money or the chance? Has something else gotten in the way?
This is quite an opportunity for someone who wants to learn to code. To
kick things off, here's the first one.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_1.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-01-20_calling_all_haiku_developer_wannabes#comments">
<img src='/images/App_Chat_32.png' title='Comments' alt='Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 2</h2>
<p>
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_2.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-01-23_programming_lesson_2#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 3</h2>
<p>
In this lesson, we examine the different types of data we can use, a more
in-depth look at how to print to the screen, and more!
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_3.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-01-30_programming_lesson_3#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 4: If, For, And, Not, Or</h2>
<p>
Decision-making and repeating instructions are on the agenda for this one,
expanding the repetoire of basic skills for writing code.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_4.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-02-06_lesson_4_if_and_not_or#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 5: Arrays, Strings, and Pointers</h2>
<p>
This lesson marks the end of the first unit and is somewhere around
halfway from complete neophyte to writing -- and understanding -- our
first program for Haiku which uses windows and buttons.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_5.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-02-13_lesson_5_arrays_strings_and_pointers#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Unit Review: 1 - 5</h2>
<p>
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Unit_1_Review.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-03-06_whole_lotta_lessons_goin#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 6: More Loops and Conditions </h2>
<p>
Here marks the beginning of the second unit in my series, "Learning to
Program With Haiku." Lesson #6 expands on our knowledge of loops and
decision-making constructs.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_6.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-02-20_lesson_6_more_loops_and_conditions#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 7: Losing My Memory</h2>
<p>
This one covers two major topics: memory management and binary math,
nothing terribly exciting, but really useful and necessary nonetheless
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_7.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-02-27_lesson_7_losing_my_memory#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 8</h2>
<p>
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_8.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-03-06_whole_lotta_lessons_goin#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 9</h2>
<p>
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_9.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-03-06_whole_lotta_lessons_goin#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Unit Review: 6 - 9</h2>
<p>
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Unit_2_Review.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-03-06_whole_lotta_lessons_goin#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Unit_2_Review_Answers.pdf">
<img src='/images/Misc_Marker_32.png' title='Review Answers' alt='Review Answers'><br />Review Answers</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 10: More Pointers and the Command Line</h2>
<p>
Now we're starting to tie up loose ends before moving on to just C++. In
this lesson, we learn more about pointers and kinda-sorta pointers called
references, and we examine the basics of getting information from the
command line.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_10.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-03-13_lesson_10_more_pointers_and_command_line#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 11: More Data Structures and Types</h2>
<p>
This time around, we will be examining some important kinds of data
structures and ways to create custom data types, a critical stepping
stone in getting to understanding the Haiku API. This is the last C / C++
lesson -- the rest will be C++ only. A couple more lessons and we'll
finally be ready to write GUI programs for Haiku!
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_11.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-03-20_lesson_11_more_data_structures_and_types#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 12: OOPs I Did It Again!</h2>
<p>
This lesson introduces us to the wonderful world of C++ and Object
Oriented Programming. It's not terribly code-heavy, so this might be a good
time to look over past lessons to make sure you understand concepts pretty
well -- it only gets bigger from here. :-)
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_12.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-03-28_lesson_12_oops_i_did_it_again#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 13: Programming With Class(es)</h2>
<p>
Today we'll be diving headlong into the murky depths of C++ programming:
classes and inheritance -- struct's with fancy tricks aplenty. It's also
our last lesson before writing our first windowed Haiku program, so get
ready and study well. Enjoy!
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_13.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-04-04_lesson_13_programming_classes#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Unit Review: 10 - 13</h2>
<p>
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Unit_3_Review.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-04-04_lesson_13_programming_classes#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Unit_3_Review_Answers.pdf">
<img src='/images/Misc_Marker_32.png' title='Review Answers' alt='Review Answers'><br />Review Answers</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 14: Our First GUI Program</h2>
<p>
It's about time: our first program which does more than print stuff to the
Terminal! Now the real fun begins!
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_14.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-04-14_lesson_14_our_first_gui_program#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 15: The Haiku API at 10,000 Feet</h2>
<p>
Lesson 15 delves further into what writing basic applications are all
about, looking at the API and its organization and focusing on an
essential: messaging. Also included in this lesson are the finished
sources for those who don't want to mess around with typing the project
out.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_15.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_15ClickMe.zip">
<img src='/images/ide_project_32.png' title='Download Source Code' alt='Download Source Code' ><br />Download<br />Source Code</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-04-20_lesson_15_haiku_api_10000_feet#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 16: Locked and Overloaded</h2>
<p>
This lesson takes a break from hacking the Haiku API to learn a few C++
language concepts needed to continue progress as an aspiring developer.
Function overloading and operator overloading are examined in detail.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_16.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-04-27_lesson_16_locked_and_overloaded#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 17: What's on the Menu</h2>
<p>
We are back to learning about hacking on the Haiku GUI after taking a short
C++ language break. Today's topic? Menus. Also in this lesson is some
expansion of what we know about messaging and BViews.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_17.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_17MenuColors.zip">
<img src='/images/ide_project_32.png' title='Download Source Code' alt='Download Source Code' ><br />Download<br />Source Code</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-05-10_lesson_17_whats_menu#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 18: Working With Lists</h2>
<p>
We're starting to get closer to the end of this Learning to Program series.
After toying with menus and interface colors in the last lesson, we apply
some of the concepts used with menus to get the hang of using list boxes
and discover along the way a few bizarre sports that really exist. Games
people play. Sheesh.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_18.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_18ListTitle.zip">
<img src='/images/ide_project_32.png' title='Download Source Code' alt='Download Source Code' ><br />Download<br />Source Code</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-05-19_lesson_18_working_lists#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 19: Resources and Pictures</h2>
<p>
Ten years ago when I first started to learn to write code using BeOS, I had
a lot of questions that I couldn't any documentation to give me the
answers. Luckily, there was the Be Code Talk mailing list and kindhearted
members of the community, like David Sowsy (Animaxo, Vesa Accepted).
Resources are one of those things that eluded me. Eventually I figured them
out, but Lesson 19 lays some of it out in plain conversation.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_19.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_19Emo.zip">
<img src='/images/ide_project_32.png' title='Download Source Code' alt='Download Source Code' ><br />Download<br />Source Code</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-05-25_lesson_19_resources_and_pictures#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 20: All About Storage</h2>
<p>
Moving on from exploring the Interface Kit, we turn our attention to the
Storage Kit in this lesson. We take a look at the kit from a broad
perspective and also begin using some of its many of the classes. We take
a break from writing GUI applications and, instead, write a console
directory-listing program using C++.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_20.pdf">
<img src='/images/pdf_32.png' title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_20ListDir.zip">
<img src='/images/ide_project_32.png' title='Download Source Code' alt='Download Source Code' ><br />Download<br />Source Code</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-06-02_lesson_20_all_about_storage#comments">
<img src='/images/App_Chat_32.png' title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 21: Reading and Writing Files</h2>
<p>
This lesson continues with delving into the Storage Kit,
reading and writing files. We also start writing code for
the final project of the Learning to Program With Haiku
series which will be developed over the course of several lessons.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_21.pdf">
<img src='/images/pdf_32.png'
title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-06-11_lesson_21_reading_and_writing_files#comments">
<img src='/images/App_Chat_32.png'
title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br /><!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 22: Designing a GUI</h2>
<p>
Usability is one of my pet topics. Although less so now that in years past, it is all-too-often ignored or not given enough priority. This lesson scratches the surface from a developer's point of view. I'm no usability expert, but I do know a thing or two. This lesson is a must-read for any budding developer, and by the end of it, we will have a good real-world program to show off which is just shy of being ready for a release.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_22.pdf">
<img src='/images/pdf_32.png'
title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_22HaikuFortune.zip">
<img src='/images/ide_project_32.png' title='Download Source Code' alt='Download Source Code' ><br />Download<br />Source Code</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-06-15_lesson_22_designing_gui#comments">
<img src='/images/App_Chat_32.png'
title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<!--
===================
NEXT LESSON
===================
-->
<h2>Lesson 23: Polish and Packaging Our Project</h2>
<p>
This lesson finishes up the project that the last two have been about:
HaikuFortune, a program which randomly chooses and displays a fortune in a
window. It's not a very complicated one, but it exemplifies a reasonably
well-coded real-world project. Although it was code complete as of the end
of Lesson 22, it was not finished, missing icons and other resources. This
concludes the project with adding resources, a basic discussion on source
code licensing, and packaging a program for Haiku.
</p>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/files/learning_to_program/Learning_to_Program_With_Haiku_Lesson_23.pdf">
<img src='/images/pdf_32.png'
title='Download PDF' alt='Download PDF' ><br />Download PDF</a>
</div>
<div style='float: left; text-align: center; margin: 0px 4px 0px 4px;'>
<a href="/blog/darkwyrm/2010-06-23_lesson_23_polish_and_packaging_our_project#comments">
<img src='/images/App_Chat_32.png'
title='View Comments' alt='View Comments'><br />View Comments</a>
</div>
<br style='clear:both' /><br /><br /><br />
<h1>Conclusion</h1>
<p>
This also concludes the Learning to Program With Haiku lesson series. It's
been a good run. Rest assured, though, that this is not the last lesson on
Haiku programming that I will write. This series has been intended to turn
a motivated power user into a developer using Haiku. It's been a lot of fun
and many people have encouraged me with their kind words regarding it.
</p>
<p>
Later this summer I will start another yet-to-b e-named series which will
continue where Learning to Program With Haiku is leaving off and introduce
novice and intermediate developers to real coding specifically for Haiku and
its nuances, such as multithreaded programming, add-on coding, queries and
attributes, Tracker and more.
</p>