A SCHEME that offers a free will writing service for people aged 55 and over in Coventry has been launched.

Marie Curie Cancer Care, with Lawyers2you, will be taking applications for the wills at West Orchards Shopping Centre between 8am-7pm Monday to Friday, and 9am-5pm on Saturdays.

Phae Comber-Jones, the charity’s legacy advisor said: “A will written by a solicitor is the best way to ensure that your family, friends and favourite charities will benefit exactly as you would wish.

“Statistics produced by the Law Society of England and Wales show that roughly two-thirds of people over 50 do not have an up-to-date will.

Call Phae on 07540 675562 for more information.


OUR MISSION: To facilitate communication among glass artists, to encourage education and promote excellence in the glass arts.

The primary purpose of flux is to prevent oxidation of the base and filler
materials. Tin-lead solder, for example, attaches very well to copper, but
poorly to the various oxides of copper, which form quickly at soldering
temperatures. This applies to lead and brass too. Flux is a substance
which is nearly inert at room temperature, but it becomes strongly reducing
at elevated temperatures, preventing the formation of metal oxides.

Secondarily, flux acts as a wetting agent in soldering processes for lead,
copper and brass.

[previous glass tip]                                          [next glass tip]

follow IGGA  follow IGGA

   flux - the purposes


Toronto Raptor’s point guard Cory Joseph has been struggling and his team has been struggling as well.

Starting off the season 8-5, Toronto went on to lose five games in a row, and the Raptors have been an average 3-3 since. Joseph put up 33 points in a win at Brooklyn in mid-January and he had outings of 10 and 15 points in losses to San Antonio and Memphis, respectively. Since then, his numbers have really declined, though, and as a result, so have his minutes.

Joseph only played seven minutes in the loss to Orlando, and he didn’t score a single point. In Toronto’s last game, a 103-95 win over Brooklyn, Joseph didn’t play at all.

The sixth-year pro is obviously seeing his role on the team deteriorate. Surprisingly, it doesn’t seem to be bugging him too much, at least outwardly. After the game against Orlando, Joseph spoke with Ryan Wolstat of the Toronto Sun about head coach Dwane Casey going with Fred Van Fleet in favor of him for much of the game. Per Wolstat, Casey’s reasoning was that Joseph needed a “mental blow”.

Joseph didn’t agree with that, but he decided to stay true to his roots in his answer.

Joseph is a home-town hero for the Raptors. He played college ball at Texas but he was born in Canada — a country known for its polite nationals.

Canadian’s are notoriously non-haters. They’re the type of people who would apologize for you to something that you did to them, and that’s a great thing. As a whole, Canada is much more laid back than its neighbors down South, and you can see that mentality in Joseph’s response.

He’s not going to trash his teammate, a rookie, and he’s not going to sulk about it like other spoiled veterans may tend to do.

He’s going to deal with it like a true Canadian.

And sure, this is borderline becoming a meme, but his response is respectable none the less.


Adding Graphics Card Support into Condor

Condor is middleware supporting high-throughput computing (HTC). In it's typical mode, Condor scavenges idle cycles from machines and makes them available for general purpose computation. With the advent of general purpose programming for graphical processing units (GPGPU) and supporting libraries such as CUDA and OpenCL, GPUs on idle machines can be an additional source of computational resources.

This project aims to scavenge idle GPU cycles by integrating into Condor. Currently, available GPUs are advertised through Condor and can be requested as part of job requirements. Future implementations will support pre-emption and investigate issues around GPU security.


Wednesday, August 21, 2013

A New Rhythm of Prayer

Posted by Michael

                                -Psalm 119:164 TNIV

The Divine Offices or Liturgy of the Hours is a form of fixed-hour prayer, which simply means that there are fixed times set aside each day to pray. The practice goes all the way back to the time of the Old Testament and the nation of Israel as the verse above illustrates.  I became familiar with fixed-hour prayer a few years back while I was exploring different types of spiritual disciplines. Since that time I have used it as a tool at conferences, with small groups, and with students that I work with.  I don’t know about you, but I need something other than my memory or emotions to prompt me to pray, and committing to “pray the hours” has been a great way of staying connected to God consistently throughout my day. I don’t pray the hours every day, but return to it for days at a time during different seasons of my life (that seems to keep it fresh and works best for me). If you are interested in stretching yourself spiritually, I would recommend trying out praying the hours.

What you will need:

-A prayer book of some sort. I use The Divine Hours which was compiled by Phyllis Tickle (see below). Tickle has books available for different parts of the year, and even shorter books to use during Easter and Christmas. If you are looking for something that is easy to pack around, she has a book available that contains a week’s worth of prayers, which can also be purchased as an e-book. Prayer books are helpful because they keep us from repeating the same stale prayers over and over. Our history is packed with thousands of years of people seeking God and recording their prayers and songs. It is arrogant to think that their words and insights couldn’t be helpful to us.

-Patience. Returning to prayer during set times each day is about slowing down and remembering. We remember that God is with us and that he is for us. We remember that he cares about our awful days as well as our joys and celebrations. Reading through prayers and absorbing the words down into our own souls allows us to slow down for a bit, and in my experience that is almost always a good thing.

-Grace. Even though you will strive to consistently keep each prayer time over the course of the day, you will fail.  You will miss your morning prayer or skip the mid-day one, or might even miss entire days all together. Remember, this is a tool to help you connect to God, not another set of rules to run your life! If you are feeling guilty about your performance you are missing the point!

If you have any questions about fixed-hour prayer or have any other prayer exercises that have encouraged you, please let us know! Also, if you attempt incorporating this type of prayer into your daily life, let me know how it goes!

  1. So, this is something about which I'm curious. How does one do something like this when it involves a book when one works a normal 9-5 job, has a family, and other life stuff? How does one slow down enough to slow down?

    1. A great question! Slowing down for most of us starts by setting aside 5-10 minutes in the morning and around lunch time at work. Start small, if you don't work though the entire prayer litany for a specific time, it's ok, the goal is to connect with what you do and to breathe. Set a rhythm for yourself, choose the number of times a day that works for you, and when you want to implement them!


Blockley Dennis

Denis Blockley

Born in 1950, Blockley started work as a naval architect and a trade unionist in the Swan Hunter’s shipyard on the Tees. A member of the Young Communist League, he was presented with the TUC award for Youth in 1975. Having moved into the Communist Party by 1979 he was appointed a full time official with TASS, at the time being the youngest officer across the country.

Following the 1988 merger with ASTMS, he was an officer for MSF He worked in the Essex area, and then the Ipswich office, keeping an involvement with the Youth Committee. He was also especially supportive of the anti-apartheid movement.

Since he died at a relatively young age in 1996, his union (and its successor, Amicus) organised a special Fund (also associated with another youngish deceased union official), which helps young people from developing nations to learn how to negotiate and to campaign for rights.


25 May 2015

Glug, glug... it worked for Hemingway

We now travel to the Cannes film festival, much loved playground of the idle rich and pre-eminent purveyor of socialist idealogy to the hoi-polloi, to celebrate the grandfather of Global Warming...

Hmmm... all due respect to Claude Lorius, let's talk to a scientist who didn't get his "moment of fame" from the bottom of a whiskey bottle.

So what exactly does an objective "sobre" study of the ice-core data reveal?

Dr. Philip Lloyd, a South Africa-based physicist and climate researcher, examined ice core-based temperature data going back 8,000 years to gain perspective on the magnitude of global temperature changes over the 20th Century. What Lloyd found was that the standard deviation of the temperature over the last 8,000 years was about 0.98 degrees Celsius - higher than the 0.85 degrees climate scientists say the world has warmed over the last century.

"This suggests that while some portion of the temperature change observed in the 20th century was probably caused by greenhouse gases, there is a strong likelihood that the major portion was due to natural variations," Lloyd wrote in his study.
After all the recent revelations about faked studies and fudging of data to support the theory of man-made global warming, Dr. Lloyd's study is yet another brick in the wall suggesting that Al Gore will come to be regarded as the P.T. Barnum of the 20th century.


dcarneyGuest Blogger: Dan Carney is a Landscape Architect and the Water Conservation Manager at Marin Municipal Water District

According to the Department of Water Resources, California usually receives 75% of its annual precipitation between November and March, and in many parts of California landscape trees and plants need little or no winter watering during this time. When rain doesn’t show up, greenery becomes stressed – like all living things, they need at least an occasional drink to survive. If you’re trying to decide how to meet your water conservation goals, consider prioritizing trees over easier to revive lawns and other less beneficial landscape plants.

Keeping trees healthy

img class=”size-thumbnail wp-image-2868 alignleft” style=”margin-left: 5px; margin-right: 5px;” src=”http://investfromthegroundup.org/wp-content/uploads/2017/09/2.jpg” alt=”2″ width=”150″ height=”150″ />Trees bring incredible values to the community that increase every year. Literally, money grows on trees in the form of water, soil, and energy conservation; habitat value; air quality improvements; carbon sequestration; and quality of life. It’s hard to find a better economic deal anywhere worth the amount of water required to keep trees alive.

Mature trees, with access to groundwater and broad extensive root systems, usually are better adapted to periodic droughts – 100 year Oaks have weathered some tough times – and may actually be harmed by supplemental irrigation. Please consult your local UC Cooperative Extension office, certified arborist, landscape professional, or water district if you have specific questions about your trees.

Here is a simplified method you can follow to give most newly planted and newly established trees enough water to survive the drought:  Rule of thumb – 10 gallons per week per inch of trunk diameter

More water-wise tips:

Using a garden hose:

Hose_deepwaterNewly planted trees: Place the hose on the ground near the root ball. Turn on the faucet to medium flow.  Give the tree 10 gallons of water for every inch of tree trunk diameter (measured 6” above the ground). Since newly planted trees have limited root systems, they may need to be watered 2-3 times each week. For example, a 2-inch diameter tree will get a total of 20 gallons of water each week.  If the hose flows at 5-gallons per minute, water for 1-2 minutes several times a week. (Use the second-hand on your watch and a bucket to measure gallons per minute)

Newly established trees (1-5 years old): Place the hose on the ground as near as possible to the outside edge of the branches (the drip line). Follow the same watering guideline (10-gallons per inch of trunk diameter), but measure the trunk diameter at chest height. Because established trees have a more extensive root system they can be watered less frequently (about once every 7-10 days) depending on the soil type and time of year. For example, using a hose flowing at 5-gallons per minute, a 5-inch diameter tree would be watered for 10 minutes (50 gallons) every 7-10 days.

Using drip emitter tubing:

Toro+circular+tree+island+best+horzNewly planted trees: Place the drip emitter tubing directly on top of the soil and in a circle near the root ball.  A typical drip emitter hose with one-gallon per hour emitters spaced one-foot apart would need to operate for about 40 minutes 2-3 times a week.

Newly established trees (1-5 years old): Place the drip emitter tubing directly on top of the soil and in a circle near the outside edge of the branches (the drip line). For a tree that was planted 1-5 year ago, run the drip emitter tubing for 90 minutes every 7-10 days.

IMPORTANT NOTE: If water starts to runoff or pond, reduce the flow, move the hose to a new location around the tree every few minutes, or water for fewer minutes at a time so that all water infiltrates completely into the soil.

Finally, apply a generous 4-inch deep layer of organic mulch under the tree (keeping the mulch 6 inches away from the trunk) to preserve the moisture in the soil.

Investing the time to correctly water trees helps preserve scarce water resources and maintains a healthy environment for everyone.


20 July 2011

Raise Our Wages, Can or Not?

Ape haven't been looking into the sacred text The KinJioLeaf for quite some time. Just some days ago, a certain news report made ape recall a leaflet out of the The KinJioLeaf. Of course they are totally unrelated.

The leaflet from The KinJioLeaf was a letter written some years ago to address some wage issues within the Mandai Forest. It was addressed to the Palm Tree Chimpanzee (PTC) who was setup to oversee the Palm Tree Orang Utans (PTO) who were in charge of the overall health and well being of the palm trees in Mandai Forest.

"Dear Chimpanzees,

We humbly and sincerely write to you to request for an increase of our salary by 2.8%. Our reason for this request is that the cost of living has increased and is likely to continue increasing. To list some examples,

1) Fuel cost, ERP, parking charges and maintenance has increased resulting in us having to spend more to drive to work.
2) Tuition fees, piano lessons and movies tickets cost has increased so we have to pay more for our children. Not to mention my children had wanted an iPad each, the latest model one.
3) Our foreign domestic workers have also demand for more pay.
4) Our wives have also raised concerns that, in spite of our cost cutting measures and a decent savings of $1611 (myself) and $543 (Esbe) a year, it is clearly not enough. In fact our savings dropped by 1.1% and 0.6% respectively.

We admit that our service has not improved much and at times there were isolated lapses but there have never been any major incidents... other than that time when someone sneaked into the nursery and vandalised a tree, only to be discovered by fellow apes when I sent it out to the forest. Or that time when other apes complained that there's not enough trees to provide shelter for them. Aiyoh, surely, there is enough if they could just squeeze themselves under those trees. Surely, these accounts are isolated and negligible.

Last but not least, we are only asking for an increase of 2.8%, a cap set by you, based on a formula that is what you think we should deserve.

We sincerely and humbly seek your approval to raise our wages.

Assam R.T.
Esbe S.T.

Ape couldn't find the reply though. Have a great weekend!

09 May 2011

Sharing Some Thoughts On General Election

Singapore General Election 2011 is over. For the first time since independance, all but 5 seats, were contested. You can read all about GE2011 in the news, online social media, etc. Many people also, for the first time, get to vote and I'm not talking about people who just reached the legal voting age (i.e. 21 years old).

Some of my peers were sort of caught off guard, thinking that their constituency would be a walkover. They, like me a decade ago, made last minute scramble for information about the candidates and parties contesting in their SMC/GRC.

If you're one of them, you may want to read on. Please note that the following is just an opinion, my opinion. You have every right to form your own opinion and come to a conclusion on HOW you might want to vote, in the next GE.

In GE2001, when I first got to vote, I knew close to nothing about the incumbent and absolutely nothing about the contender. There was a frantic seach in the internet, the fastest means to get information, on the candidates. I saw their CVs... both equally impressive but not enough for me to decide. There were close to nothing else in the internet since election campaigning on the internet then was not allowed. Furthermore, there were very little news and articles about Singapore politics and politicians on the internet then.

I attended the contender's rally but walked out before the candidate spoke. Reason being that a lot of the speeches were about why we should not be voting for the incumbent. I wanted to know why I should be voting for him which I did not get to hear. I didn't attend the rally of the incumbent since my decision was more of less formed at that point. So come Polling Day (2001), my decision was based on who had done something for the constituents BUT I wasn't satisfied with this approach. What can anyone, who is not an MP, do for the constituents? If I were to maintain such a position, does it not naturally mean that I will forever be voting for the incumbent? Only to swing when the incumbent did nothing (or perhaps screw up) and the contender perhaps setup free clinics/tuition centres/bus service etc? If it is that simple, maybe I should vote for the cleaner who sweep my corridor almost everyday should he stand for election.

Nevertheless, I spent the next 5 years before the next GE to read up about the candidates. Starting with the Parliament Papers and following whatever websites that talk about politics and politicians in Singapore. Parliament papers was a good place to start off with since there, you'll get to read what the MPs and NCMPs got to say about the policies, their views and positions. There is a problem relying solely on Parliament Papers though (which I encountered in GE2006), you won't know (if there is) what a new candidate has to say. Following the internet can be difficult too because you have to first establish the objectivity of a particular website before you want to trust what is written on that website... provided you find websites that talk about politics in Singapore then.

GE2006 came and I thought I was better prepared but there was a change in the candidates. SHIT. Now, I have to devote some time to determine who this new chap was and all I got was his CV. It was also during and just before GE2006 was announced, I concluded that looking at the personalities and qualities of the candidates are not only subjective but missing a bigger picture about election. If ONLY the personalities and qualities of a candidate count, why have political parties in the first place? What is a political party? It was also during GE2006 that I got to find out what is a Manisfesto but had little time to digest the contents of the Manisfestoes. It was also in GE2006 where internet seemed to be more active but still inadequate to provide information due to laws prohibiting election campaigning. However, by Polling Day (2006), I've looked beyond personal characteristics and included policies the candidates had to offer, to form the decision I took to mark my vote. I was still not satisfied.

Beyond GE2006, with more websites and avenues offering social and political information in Singapore, I went on to seek for more. I read about politics in general. I read about the political history of Singapore. I read about the diffifferent approaches used in different countries with regards to how elections are conducted. I asked myself many questions and attempt to seek the answers. I am still seeking the answers to some of the questions.

In GE2011, I voted and I am satisfied with my vote. No only I get to read up the CV of the candidates, I read their position and policies. I read about the kind of Singapore they want to build. I read about how they intend to serve the contituents and beyond the contituency, how they want to serve Singapore Citizens.

What I no longer look at is their academic qualifications, track record (unless that candidate is THE PERSON setting that record) or the backing he/she/them is likely to receive from the party.

I voted base on that he/she/the party has to offer for Singapore and how likely they can truly convince the parlimentarians, who are also representatives of their respective constituencies.

29 April 2011

Independence From Any Political Parties

Ape is never good with words and always have difficulties articulating his thoughts. So ape sometime resort to others who closely matches with what ape's thoughts are.

"As civil servants, we stay out of the fray but we work within the political realities"

This statement is quoted from THINK HAPPINESS. Ape is happy to know that there are some people who understands the difference between politicians and civil servants.

It's no surprise to ape that there are people who still think that civil service officers (or grassroots volunteers) will lose their job if PAP is voted out. Ape's reply to this to them is "Why worry if you are doing a good job? It's just a change of CEO."

22 April 2011

General Election 2011 - Vote For Who?

Your vote is secret and it is an offence (I think) to ask anyone who they voted for. However, it's not an offence for one to tell others, right?

Who will I vote for? I don't know since I've to wait for nomination day to determine if there is a walkover.

If I do get a chance to vote and to ask the potential candidates some questions, here's a list:-

1) Why did you want to stand for election?
2) Why did you choose this political party?
3) What will you do for the residents of this area?
4) What will you do for Singapore?
5) What is the one thing that the Singapore government must never compromise no matter what?

Perhaps some of these questions will be addressed during the rally or perhaps when the MP wannabe come round for the house-to-house visit. We'll see.

On a perhaps unrelated matter. Some of you might have read in an earlier post that ape is in the Residents Committee. I made it quite clear to my Chairman that I'll not be involved in any activity the moment GE is announced. That's why ape has some time to blog :p

08 February 2011

Going Gets Tough Gets Going

It is said that when the going gets tough, the tough gets going. In the case of ape, it's more of a case of keeps going and going and going and not knowing where it is going to lead ape to. This is how ape describes his work.

Wurk wurk wurk... you sure ape is the right person to get this job done?

Never mind if others are doing their part. Never mind if the "higher ups" are even aware of what's going on. Never mind if those monkeys know what they are asking. More importantly, is ape is doing enough? Has ape put in his best effort? Is ape's "best effort" good enough?

Wurk wurk wurk... please tell ape what is he doing this for?

Perhaps ape is not tough. Perhaps ape is lumbering and blundering. Perhaps ape is taking too much upon himself. How nice it will be if ape could clone himself and observe his abilities (or lack of) as a third person or perhaps not, as it could mean two apes going around in circles... or performing in a circus.

Wurk wurk wurk... please tell ape how to multi-task when everything and anything are of high priority.

Maybe it is really time for ape to seriously look for greener pastures... if there ever is a greener pasture.

Wurk wurk wurk...


Project 1: Warm-up Project

Important Dates

Questions about the project? Send them to .

Due: Friday, 9/12, by 5pm.

9/11: End of Clarifications. Due to popular demand, there will be no more clarifications for this project.

9/10: Errors after FILE_TOO_LONG. If there are more lines after you reach the 1024th valid lines, you should print the FILE_TOO_LONG message on the next line, stop reading the file (i.e. ignore the rest of the file), and sort what you have read in so far.

9/9: BAD_KEY and LINE_TOO_LONG. If you encounter a line that has both of these errors, you should print both error messages.

9/8: Blank line. A blank line is invalid. For example, you should print BAD_KEY for the third line of this input:

10 abc
11 abcd

22 abcde

9/8: 1024 valid lines. The original spec says that the input has to be 1024 lines or fewer. The more accurate way to say that is 1024 valid lines. Thus, if you have one or more bad keys in your file, you should not treat them as valid lines. For example, a file that has 1026 lines (comprising of 1024 valid lines and 2 bad keys) should not generate the FILE_TOO_LONG error message.

9/6: Whitespace. Assume that there can be an arbitrary amount of whitespace before and after the integer key. Here, for simplicity, we assume whitespace is just made up of spaces (not tabs or other whitespace characters). The following are thus all legal:

10 abc
 12 abcd
  9   abcde
This should produce the output:
  9   abcde
10 abc
 12 abcd
Note that the whitespace is intact in the output.

9/6: 32 bit integer range. You may assume that the numbers are 32-bit integers, i.e. we will not test integers larger than 32 bits

9/5: Invalid file. If the user specifies exactly one file (as desired) but it can't be opened (for whatever reason), they should print:

Error: Cannot open file FILE
where FILE is what the user passed in.

9/4: Line length. Let's say the max size of an input line is 8 characters (and not 512). Which of these lines should be in the final output?

10 abc
11 abcd
22 abcde
The first seemingly has 6 characters (10, space, abc), the second has 7, and the third 8, and thus you might naively think all should be accepted. However, you are forgetting the newline character (\n) which is at the end of each input line. Thus, the first two should be accepted (as they have 7 and 8 characters including the newline). For the third line, you should only accept '22 abcd' and put a \n, and skip the rest of the line, and don't forget to print the LINE_TOO_LONG message.

9/4: Only a number. Let's say there is a line like this:

This line only has a number in it (and a newline character). It is a valid line, and should be included in the final output as such.

9/2: Picture required. You now have to also turn in a picture of yourself along with source code. Why? Because we want to learn your names!

Before beginning: Read this tutorial. It has some useful tips for programming in the C environment.

This project must be done alone. You can talk to your colleagues about it, but every line of code must be written and understood by you. Of course, you can always ask the TAs and professors for help too.

The first project is simply a warm-up to get you used to how this whole project thing will go. It also serves to get you into the mindset of a C programmer, something you will become quite familiar with over the next few months. Good luck!

You will write a simple sorting program. This program should be invoked as follows:

shell% ./mysort test.txt

The above line means the users typed in the name of the sorting program ./mysort and gave it a single file test.txt as input.

Proper input files should look like this:

10 should be first
20 should be third
15 should be second

The goal of the sorting program is to read in the data from the specified input file, sort it based on the key value in the first column, and output the sorted result (keys and text) to the screen (standard output, or stdout as it is called). Thus, for the aforementioned example, the output to the screen should be:

10 should be first
15 should be second
20 should be third

You should observe how the output file is sorted on the first column of integers, and the accompanying text is kept with the integer key that it was read in with. Sounds easy, right? It should. But there are a few details...

String length: You may assume no line in the input file is longer than 512 bytes. If you encounter a line that is too long, you should print error message LINE_TOO_LONG (as detailed below) and skip the rest of this line.
File length: You may assume the input file has 1024 lines of input or fewer. If you encounter more lines, print the FILE_TOO_LONG error message (as detailed below) and sort and output whatever input you currently have read in.
Bad key: You may encounter a key that is not strictly an integer. If so, you should print the BAD_KEY error message (as detailed below) and simply skip this line, but keep processing the rest of the file.
Keys per line: You can assume that each line of the input file will end with a newline character (“\n”). Thus, two integers that need to be sorted will never be on the same input line.

Error Messages

All error messages encountered while reading the input file should be of this format:

Error in line XXX: specific error message
where the specific error messages are:
FILE_TOO_LONG: You should print the following message: File too long
LINE_TOO_LONG: You should print the following message: Line too long
BAD_KEY: You should print the following message: Bad key . Valid keys are any integer (including negatives).

There are some other possible errors too. For example, if the user doesn't properly specify the input file on the command line (by say, not giving one, or by giving too many files), you should print:

usage: sort <file>
and then exit.

Important: On any error code, you should print the error to the screen using fprintf() , and send the error message to stderr (standard error) and not stdout (standard output). This is accomplished in your C code as follows:

fprintf(stderr, “usage: ... ”);

Useful Routines

For reading in the input file, the following routines will make your life easy: fopen(), fgets(), fclose().

For parsing each line, you may find strtok() useful, as well as isdigit() for checking whether a particular character is a digit and atoi() or strtol() for converting a string into an integer.

The routine strlen() is good to know for getting the length of a string.

Finally, qsort() is great to use for this assignment. No need to write your own sorting code!

If you don't know how to use these functions, use the man pages. For example, typing man qsort at the command line will give you a lot of information on how to use the library sorting routine.

Other Tips

Start small, and get things working incrementally. For example, first get a program that simply reads in the input file, one line at a time, and prints out what it reads in. Then, slowly add features and test them as you go.

Testing is critical. One great programmer I once knew said you have to write 5-10 lines of test code for every line of code you produce; testing your code to make sure it works is crucial. Write tests to see if your code handles all the cases you think it should. Be as comprehensive as you can be. Of course, when grading your projects, we will be. Thus, it is better if you find your bugs first, before we do.

Keep old versions around. Keep copies of older versions of your program around, as you may introduce bugs and not be able to easily undo them. A simple way to do this is to keep copies around, by explicitly making copies of the file at various points during development. For example, let's say you get a simple version of mysort.c working (say, that just reads in the file); type cp mysort.c mysort.v1.c to make a copy into the file mysort.v1.c . More sophisticated developers use version control systems like CVS , but we'll not get into that here (yet).

Keep your source code in a private directory. An easy way to do this is to log into your account and first change directories into private/ and then make a directory therein (say p1 , by typing mkdir p1 after you've typed cd private/ to change into the private directory). However, you can always check who can read the contents of your AFS directory by using the fs command. For example, by typing in fs listacl . you will see who can access files in your current directory. If you see that system:anyuser can read (r) files, your directory contents are readable by anybody. To fix this, you would type fs setacl . system:anyuser “” in the directory you wish to make private. The dot “.” referred to in both of these examples is just shorthand for the current working directory.

Handing It In

You should turn in THREE files. The first, containing your code, should be called mysort.c . We will compile it in the following way:

shell% gcc -Wall -std=c99 -o mysort mysort.c
so make sure it compiles in such a manner.

You should also include a file called README which includes any notes on your program that you think are important.

Finally, you should include a picture of yourself, titled FIRSTNAME.LASTNAME.jpg (or .gif or whatever). This should be a clear picture of yourself such that we can identify you.

You should copy these two files into your handin directory. If you are in section 1 of CS-537, these will be located in ~cs537-1/handin/login/p1 where login is your login. For example, Remzi's login is remzi , and thus he would copy his beautiful code, README, and picture into ~cs537-1/handin/remzi/p1 . If in section 2, copy your stuff into ~cs537-2/handin/login/p1 , of course. Copying of these files is accomplished with the cp program, as follows:

shell% cp mysort.c ~cs537-1/handin/remzi/p1/
shell% cp README ~cs537-1/handin/remzi/p1/
shell% cp remzi.arpaci.jpg ~cs537-1/handin/remzi/p1/
or more succinctly:
shell% cp mysort.c README remzi.arpaci.jpg ~cs537-1/handin/remzi/p1/
(the copy utility knows that if the last thing specified is a directory, it should just copy the files into that directory and give them the same names. Read the man page for cp for more details.)