The Perfect Cup of Coffee

image

Musicians, filmmakers and programmers are very serious about their respective arts. Having experience working as all three, I have the somewhat unfortunate experience of being a workaholic. However, I also have the very fortunate experience of a shared passion that all three embrace without hesitation, an experience that creates an almost religious fervor in the more artistic members of these groups. As you have probably surmised by the title of the article, I am talking about the wonderful elixir whose parent bean causes goats to dance on the mountain tops, that dark and energizing brew we know as coffee.

As magic elixirs go, this is arguably the very finest. There are many different roasts available in just about every store in my country and, quite probably, throughout the world. People search endlessly for the method of making the perfect cup. It is, of course, a somewhat subjective matter, so you may argue with this article with no fear of chastisement from me. However, I am happy to present to you my recipe for the perfect cup of coffee.

It’s all about the bean!

Perfect coffee starts with a perfect coffee bean and a perfect roasting of that bean. Most people are used to drinking a bitter concoction consisting of beans that are almost burned in comparison with what I prefer. High attitude beans are considered the best quality bean and shade grown beans are all the rage.

High altitude beans have the unfortunate trait of having a high acid content. For people who drink coffee on a regular basis, this can result in stomach problems. Darker roasts present the drinker with a bitter flavor profile and, you guessed it, a higher acid content. If you imbibe to the extreme, grab the Prilosec and hang on for the ride.

Personally, I prefer a mild, Columbian roast. In fact, I smell beans before making a purchase to make sure they have the rich flavor I prefer. My favorite to date is a mild, Columbian roast from Whole Foods’ Allegro coffees. The coffee is shade grown, which matures the bean more slowly for a richer flavor. There is another mild coffee at Whole Foods called Ubuntu that I intend to try. The name embraces the African philosophy that a man is only a man through his interaction with others, signifying that the things we do to and for others defines who we are. It should also be a favorite to Linux programmers who find it because it is also the name of an operating system that is totally free and open source and embraces this philosophy.

Grind and brew!

I only buy whole beans, grinding at the time of brewing. I eschew the burr grinders that evenly grind every bean to consistent perfection, preferring to use a simple blade grinder. My family owns one of those fancy, automatic machines that grinds the beans and brews the coffee at pre-programmed times but we rarely use it. Instead, we have a larger French press and a couple of single-serving modeIs designed to brew a single cup. Mine is pictured.

Grinding beans for a single serving presents a problem. Grinders are designed to brew a regular pot of coffee, The smaller amount of beans, usually a heaping tablespoon for my perfect cup of coffee, does not grind properly with a sustained grind. Instead, l use six to eight short pulses, stopping when the grinds are at the desired consistency. I do not grind them as fine as I would for a regular pot of coffee made in an automatic drip coffee maker because the screen on the French press allows the finer grounds to slip into the coffee.

For my perfect cup of coffee, I prefer to heat the water in the cup. I don’t mind microwaved water. Some people say it tastes different to them than boiled water but I can’t tell the difference. Heating the water in my coffee cup also makes the cup hot. Added ingredients do not contribute as much to the cooling of the drink when they sit in a hot cup. I am assured a piping hot cup every time.

I brew the coffee in the French press for five minutes, then press it and pour it into the cup.

Do added ingredients spoil the brew?

Some people prefer a hot, black, bitter cup of Joe. Personally, I prefer a blending of flavors in my coffee. I found a long time ago that a little ground cinnamon in the brew had others raving about the wonderfully delicious coffee I made. I have since learned that the Mexican people use a bit of cinnamon and brown sugar in their coffee. I don’t use the powder, which contaminates the drink. Instead, I grind a chunk of cinnamon stick to a coarser consistency and add it to the coffee grounds. I grind it separately in my coffee grinder, using short bursts, because it grinds differently than the coffee beans.

Like the people of Mexico, I love brown sugar in my coffee. White sugar will also do nicely in a pinch but it lacks the darker, more robust, molasses flavor of its less processed cousin. Four to four and a half teaspoons is my preffered amount,

l love cream in coffee but it is loaded with saturated fats. Except for special occasions, I use 2% milk. I prefer organic milk. There is a difference in flavor. I use a double shot glass to measure a perfect two ounces in my cup.

As I stated before, I let these added ingredients sit in the hot cup while brewing. This helps ensure that my coffee is hot when I serve it. One other addition I use on rare occasions is a shot or two of rum or brandy. Presidente is my favorite brandy for this purpose, another wonderful flavor from Mexico. More often, I choose Flor de Cana, a Nicaraguan rum with a wonderful, dark, molasses flavor.

Even the cup matters!

Yes, even the cup matters. I have a great coffee cup I was given at a leadership conference presented by Breakfast With Fred a few years ago, It is a great organization whose goal is not coffee cups, but furthering ethical leadership in business. However, they also created the perfect coffee cup for my purposes. It is slightly larger than a standard cup, allowing addition of my extras while still giving me room for a full cup of my favorite beverage.

Enjoying it responsibly!

Too much of anything is bad for you. I enjoy responsible amounts of coffee. While it gives a nice boost to your day, and it tastes great, coffee’s properties and slightly addictive quality, make it a drink best enjoyed in limited amounts. I invite you, oh coffee lover, to try my recipe for a perfect cup of coffee. Conform it to your taste and enjoy it in responsible amounts so it can be a boon to your day.

Windows and Virus Programming

InPursuitThe fine programmers at Microsoft have a problem. To put it simply, their platform is the most heavily targeted by malicious code. However, that is beginning to change.

I have read that Apple has been targeted with viruses recently, though it’s not as frequent, yet. Linux has traditionally been exempt from malicious code attacks but Linux systems are growing in popularity and have become targets. The Android operating system has its viruses and, now, even scripting languages like PHP are starting to see virus activity. I recently read the code of a PHP virus that attaches itself to the program and does some nasty things.

Microsoft programmers, however, have not been idle. I’ve been learning programming on Linux but recently bought a laptop with Windows 8. It’s large enough to let me host multiple Linux operating systems on VirtualBox, so I’ve been playing and having fun.

I’ve also installed Microsoft Visual Studio Express 2012 and been playing with some old school tools of virus programmers with interesting results.

Programs that Delete Themselves

One interesting things virus programmers have been able to do is make their viruses disappear after they’ve done their work. The following code uses the remove() command to delete argv[0], the reference to the program that is running. Effectively, the program deletes itself. I found the original code on several websites and couldn’t compile it under Windows or Linux with a modern OS. I rewrote it as you see here.

This code will run under Linux and the program will delete itself. In Windows, however, it returns a very visible error. Not very good for a virus that wants to remain incognito.

// This program will no longer destroy itself under Windows.
 // Windows returns an error message.
#include<stdio.h>
 #include<conio.h>
 #include<dos.h>
 int main(int argc, char argv[])
 {
 printf("This program will destroy itself when you press a key!\n");
 getch();
 remove(argv[0]);/*array of pointers to command line arguments*/
 return 0;
 }

I became intrigued by this and decided to try another bit of source code from the Internet. This one allows one file to be embedded into another file. After some reworking of the old code, I got it running under Windows. It will embed a program into another program. The program that receives the information can still run and the file can be extracted into an executable program.

Three things to note about this program are that it actually takes the target file and places it into the source (which can be confusing), Windows will not let it put itself into another file and Windows will not run the extracted file.

#include<stdio.h>
 #include<conio.h>
 #include<fcntl.h>
 #include<sys/types.h>
 #include<sys/stat.h>
 #include<stdlib.h>
 #include<string.h>
 #include <io.h>
void embed(void);
 void extract(void);
char buff[1],sname[128],tname[128],dname[128],choice;
 unsigned long int size=0;long int psize=0;int outh,bytes=0;
 FILE *source,*target,*data;
void main()
 {
 while(1)
 {
 system("cls");
 puts("\n\t\t\t\tFILE EMBEDDING UTILITY BY SRIKANTH\n\n\n");
 puts("1.Embed A File 2. Extract A File 3.Exitn");
 choice=getch();
 switch(choice)
 {
 case '1':
 embed();
 getch();
 break;
 case '2':
 extract();
 getch();
 break;
 default:
 exit(0);
 }
 }
 }
void embed()
 {
 puts("\nEnter The Source Filename\n");
 scanf("%s",sname);
 source=fopen(sname,"rb+");
 if(source==NULL)
 {
 puts("\nCannot Open The Source File\n");
 return;
 }
 puts("\nEnter The Target Filename\n");
 scanf("%s",tname);
 outh=open(tname,_O_WRONLY | _O_BINARY);
 if(outh==-1)
 {
 puts("\nCannot Open The Target File\n");
 return;
 }
 printf("\nReading The Source File Please Wait…\n");
 while((bytes=read(outh,buff,1))>0)
 size+=bytes;
 data=fopen("Data.cfg","w");
 if(data==NULL)
 {
 puts("\nCannot Create Configuration The File\n");
 return;
 }
 fprintf(data,"%lu",size);
 close(outh);
 fclose(data);
 target=fopen(tname,"rb");
 if(target==NULL)
 {
 puts("Cannot Open Target File\n");
 return;
 }
 printf("\nEmbedding Please Wait…\n");
 fseek(source,0,SEEK_END);
 while(fread(buff,1,1,target)>0)
 fwrite(buff,1,1,source);
 fcloseall();
 printf("\nEmbedding Completed Successfully\n");
 }
void extract()
 {
 printf("\nEnter The Source Filename\n");
 scanf("%s",sname);
 source=fopen(sname,"rb");
 if(source==NULL)
 {
 printf("\nCannot Open The Source File\n");
 return;
 }
 printf("\nEnter The Target Filename(eg: abc.exe)\n");
 scanf("%s",tname);
 printf("\nEnter The Configuration Filename(eg: DATA.cfg)\n");
 scanf("%s",dname);
 data=fopen(dname,"r");
 if(data==NULL)
 {
 printf("\nConfiguration File Not Found\n");
 return;
 }
 fscanf(data,"%ld",&psize);
 target=fopen(tname,"wb");
 if(target==NULL)
 {
 puts("\nCannot Open The Target File\n");
 return;
 }
 printf("\nExtracting Please Wait…\n");
 fseek(source,-psize,SEEK_END);
 while((fread(buff,1,1,source))>0)
 fwrite(buff,1,1,target);
 printf("\nFile Extraction Completed Successfully\n");
 fcloseall();
 }

Admittedly, a programmer who is good at building virus programs may be able to find workarounds for this and, also admittedly, I may have overlooked something on the second program in trying to get the code to work, but it’s clear that Microsoft added to its operating system in ways that make it harder to use some of the old tricks. This may be why many of the new virus programs are a bit more straightforward and rely on fooling the user into executing them. Viruses are still a big threat under Windows but the face of virus programming is changing in Windows because of the work Microsoft’s programmers do to make it safer to use.

It’s a bit scary that I can run potentially malicious code on Linux systems that won’t work as expected under Windows.

Invoking Javascript on a webBrowser.Document in C#

Houston, we have a problem! Invoking Javascript on a page through a webbrowser in a C# application.Houston, we have a new problem!

So, I’m working away at this little project, bemoaning the fact that I can’t get posts to populate in the textarea on this particular social site. My login and logout code works well but there’s a problem with the status updates.

This is one of those text boxes that grows when you click it with the mouse or Tab into it. The problem seems to be a Javascript that needs to be invoked properly for the text box to appear. I want to automate posting, I don’t want to use 0Auth and the API and I want this all to run automatically with no need for human interaction.

Here’s the <script> in the <head> of the page.

<script>window.Bootloader && Bootloader.done(["6HM2D"]);</script>

Here’s the way it appears in <textarea> on the page.

onkeydown="window.Bootloader &amp;&amp; Bootloader.loadComponents([&quot;control-textarea&quot;], function() { TextAreaControl.getInstance(this) }.bind(this)); "

I’m not the Javascript guy but it appears that the script is being called with different options to open the text box in response to a key press or a mouse click. I’ve tried simulating a human entering the data. First, I tried just copying the data into the <textarea> element, followed by having the software click the button. This didn’t work. I followed by trying to simulate a MouseDown event but I’m new to C# and I’m not sure I did it properly. I finally used Focus() to get focus on the <textarea> and found that, if I follow it with putting text into the initial box, the box will grow, the text will disappear and I won’t be able to add anything to it.

What are my possible solutions?

As I see it, I have three possible solutions.

  1. Find a way to convince the program that the text area was clicked so it will expand before entering text.
  2. Find a way to bypass it, entering values and attributes to that <textarea> that will negate the need to do all the clicking and entering.
  3. Use HttpWebRequest to bypass the need for interacting with the webBrowser.

I’ve tried 1 but I may have not been executing it properly. I dove blindly into C# with no training because it is so easy for me to read after learning the syntax for C, C++, Java and PHP. I have not been able to find 2, a way to bypass it but I’m not sure what all their code does. That bring us to 3 and I have not studied HttpWebRequest yet, though I can tell you that will be on my list now.

If you, dear friend, can offer some help with this problem, it would be greatly appreciated.

PHP General Questions & Answers

Here’s a great explanation of some common questions from people who are learning PHP. The author discusses the differences among the include(), include_once() and require() statements and also talks about the differences between if() and switch() statements. Good food for thought, so I’m reblogging it for my friends.

Web Development

Question1: What are the differences between require and include, include_once?
Answer:
File will not be included more than once. If we want to include a file once only and further calling of the file will be ignored then we have to use the PHP function include_once(). This will prevent problems with function redefinitions, variable value reassignments, etc.

The major difference between include() and require() is that in failure include() produces a warning message whereas require() produces a fatal errors.

Question2: What are the differences between include() and include_once() functions?
Answer: include_once() will use the specified file only once. include and require will use the specified file as many time we want. If include_once() is used before with same name, it can not done again

Question3: What is difference between echo and print?
Answer: print and echo are more or less the same; they are both language constructs that display strings…

View original post 106 more words

Logging Out of Facebook in C# Without 0Auth

InPursuit

I’ve never done anything in C# before the company bought me this new laptop. The old machine I have that is running Vista won’t install Microsoft’s Visual Studio, so I haven’t been able to run it. I wasn’t aware of how much you can do with their free Express package until I decided, on a lark, to try it.

I am amazed at how easy it is to work in C# with my knowledge of C, C++ and Java. I am by no means proficient in those yet but the combination of knowledge from the different packages transfers easily. So, I’m doing what I proposed for a marketing presentation in college; I’m writing a package to automate tasks on several social media sites.

I want the program to automate tasks the way a human does them, filling out forms and clicking buttons instead of using the APIs of those respective sites. I don’t want the package to need keys for 0Auth because you are inherently restricted in the functionality you can provide by the limitations of the API and the limitations of the agreement you enter into with the sites for interfacing your software with their site.

Houston, I have a problem!

I’ve built the GUI and some basic functionality. Now I’m working on the nitty gritty, interfacing with the web pages through the web browser I plugged into the program. The difficult part of this is learning to navigate the document and interact with the web page. I was up until 7:00 a.m., researching solutions to this problem. I grabbed four hours sleep, then worked on the problem some more until I left to teach in the evening.

Houston, I’ve found some solutions!

I was sitting there with empty code on a button listener, trying to figure out how to write script to log out of Facebook. I read every article I could find, trying code only to erase it. Finally, right before dinner, I found some promising code on the MSDN site. This code had been regurgitated by other programmers but none of it seemed to work. This bit of code was more complete, so I tried it. I placed a message box strategically to tell me if the code was found on Facebook. It worked!

After dinner, I replaced the message box with code I also found on MSDN, changing it to fit my use, clicking the “Log Out” button on the Facebook logout form. Success!

This is the basic code needed to automate other interactions with forms on web pages. I’m providing the complete code for the event listener attached to the button so you can see how it works. The code searches the document for every instance of an “INPUT” element, looks for every one with a “type” of “submit” and checks each one of those for a “value” of “Log Out,” the name of the facebook button the user sees.

I have added more code that is not listed in this article to make this production ready, to make sure the document is fully loaded and to prevent errors in handling. However, the code I’ve listed here works and it takes me a huge leap forward in writing a usable program. I hope it is useful to you.

Facebook application logout using POST instead of 0Auth.

//
// This function is a button’s event listener.
private void button3_Click(object sender, EventArgs e)
{
//
// Check to see if there is a webpage (document) in the browser.
if (webBrowser1.Document != null)
{
//
// If something is there, inititalize the code to search for “INPUT” tags on the page.
HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName(“INPUT”);
//
// Each time you find an “INPUT” tag, do the following …
foreach (HtmlElement elem in elems)
{
//
// typeStr will get the “type” of each “INPUT” element it encounters.
// If a type is “submit,” check further …
String typeStr = elem.GetAttribute(“type”);
if (typeStr == “submit”)
{
//
// contentStr will get the “value” listed for each “type” in the element.
// If the value is “Log Out,” click that element
String contentStr = elem.GetAttribute(“value”);
if (contentStr == “Log Out”)
{
elem.InvokeMember(“click”);
}
}
}
}
}

Humans as Finite State Machines

Have you ever heard of an infinite state machine? It’s a theoretical concept of a machine that is large enough to hold all the information in the universe, under the assumption that the universe is infinite, of course. What we have in modern computers are finite state machines, devices that are finite in nature and can only hold so much data.

For monotheistic religions like Judaism, Christianity and Islam, God could be described as an infinite state machine. However, we take the concept further. Not only is there something that is able to hold all the information in the universe, this something also created the universe.

What does this say of human beings as we try to understand the universe around us? People grasp for truth and knowledge and, quite often, claim to have found universal truth.  Religious and non-religious people alike have a tendency to proclaim these things they believe as absolute truth, eschewing the beliefs of the people around them.

I’ve heard it said that the human brain can hold about ten terabytes of information. I don’t know if this information is correct but we do know that the human brain can hold a finite amount of information at one time. In fact, the human brain does not store and retrieve information the way a computer does. The things we learn must be learned by repetition; the brain categorizes what is important to remember by frequency of repetition. Those things that are repeated often and in large quantities can be readily and accurately remembered. It is said that college students retain, on average, about 25% of the things they learn in their classes after leaving college, retaining those things they use constantly on the job but forgetting those things they don’t use on a daily basis.

This information draw some very interesting conclusions about the relationship humans have with religion. The first thing is that people, in their finite state, do not have the facility to judge other people and the beliefs they have. What we learn is largely based on experience and we rely on repetition of those things that are important to our survival. Individual human experiences may have commonalities but there are so many things that are singular that we are best able to judge others only in general terms. We do not know the hearts and minds of others and, outside general observation, we are not well equipped to judge specifics of individuals.

This applies not only to religious people but to the non-religious as well. In Christianity, my religion, we are forbidden from judging others. For instance, it is not my place to judge whether an atheist is going to hell for not believing in God. How could I, when I know so little of that person’s motivation? On the other hand, the atheist, or even more to the point the anti-theist, has no place judging Christians, lumping all of Christian experience into the conservative, literal view often expressed by that group as the whole of religion. Likewise, people from different religions are not well-suited to judge each other. Because our ability to know and understand becomes more generalized as we move farther from our particular experiences, we cannot hope to understand the specifics of another’s feelings and motivations. Each person decides what is important based on different situations and circumstances, their brains retaining that which is oft repeated. This includes what they choose to feed into their brains as well as the experiences outside their control during formative years and the lasting impression they have.

This article serves as an admonishment to me first, then more generally to others. Not only is it forbidden in Christianity to judge other people past a certain point, it is scientifically improbable that I can do so with any substantial degree of certainty. It is within my realm to judge what contact I should have with that person, based on what I value and what that person brings to the table. However, beyond that, I must take a more general approach when passing any kind of lasting judgement on another human being, just as others should take a more general approach when drawing conclusions about me.

Like Adam and Eve in the second Genesis story, people put themselves in the position of God. Perhaps the real sin in knowing good and evil is that we assume, incorrectly, that we have the ability to use this knowledge wisely in our relationships with others.