I just thought I'd note how interesting it is that our minds can figure out something so quickly one moment, and then have so much difficulty with the same problem in the future. This is probably attributed to many factors like mood, environment (place, sounds, people around you), nourishment, etc.
Thursday, December 11, 2008
Time and time again?
I was at a co-worker's place today and his stove/oven's time was an hour off because of Daylight Saving's Time. Now this is something that happens (or will happen!) to all of us eventually - we do something extremely simple, then later we come back to it, and can't figure out how in the world we did it. The same thing happened to me when I had to change my car's clock - one time change I did it without a problem, I looked at the choices and figured it out almost instantly. The next time change, I couldn't figure it out for the life of me.
Wednesday, December 3, 2008
CakePHP: Difference in form elements
(CakePHP 1.2)
Like many programming languages, there are always more than one way to do the same thing. Some give you more control, some help you develop quicker.(Note: This post is directed toward new CakePHP users, or those unfamiliar with the difference between $form->input() and the form specific functions)
After using CakePHP for a short while, I found two different ways of doing form elements. There's "$form->input()" and the form specific functions. But what's the difference between these two? $form->input() has more "magic" but means you might have less control over it...
Let's look into them in more detail:
echo $form->create('Post');
echo $form->input('Post.body');
echo $form->end('Submit');
This small code block creates an input box, wrapped up in a div and complete with a label.
Let's look at an alternative:
echo $form->create('Post');
echo $form->text('Post.body');
echo $form->end('Submit');
This just creates the form action, and the input box. No divs, no labels, no magic.
The most important differences about these two functions doesn't lie at the surface though.
First, $form->input() is wonderful for edit forms. Why? Because you don't have to pass a variable to the view.
Here's an example:
/controllers/posts_controller.php
class PostsController extends AppController {
function edit($_id) {
if (!empty($this->data) {
$this->Post->id = $_id;
$this->Post->save($this->data); //update post
}
$this->data = $this->Post->findById($_id); //populates input box
}
}
This controller class doesn't set any variables, but see the line commented as "populates edit forms"? $form->input() will automatically grab relevant data from the $this->data array and display it in the input box.
Here's the view:
/views/posts/edit.ctp
echo $form->create('Post'); //begin the form
echo $form->input('Post.title'); //display label, input box, wrapped up in a div
echo $form->input('Post.body', array('type' => 'textarea'); //display label, textarea box, wrapped up in a div
echo $form->end('Submit'); //end form and display submit button
That's all that's required to automagically populate edit forms - it is a great time saver...but there are problems when you get into CSS. Because $form->input() displays Labels (if you choose to display labels) and the input boxes wrapped up in it's own div, it can cause problems for your designer (or you).
The alternative is to use the form specific functions ($form->text(), $form->select(), etc.) - though it might be longer to code, your designer will probably love you for it. Just remember that those forms are not automatically populated (you have to set variables to the views, and in each supply the variable to the form function).
But wait...there's more.
Validation. $form->input() will also automagically display validation errors, where as the form specific functions do not.
To display the validation errors, you'll need to place $form->error(); in your view (this will also allow greater flexibility where you want your validation error placed)
Here's an example of edit.ctp using the form specific functions:
echo $form->create('Post'); //begin the form
echo $form->label('Post.title'); //displays a label
echo $form->text('Post.title'); //displays the input box
echo $form->error('Post.title'); //displays validation errors for the title input box
echo $form->label('Post.body'); //displays the text area
echo $form->textarea('Post.body'); //displays the textarea for the post body
echo $form->error('Post.body'); //displays validation errors for the textarea box
echo $form->end('Submit'); //end the form and display a submit button
That's a lot more coding, but it gives you more power to design your page.
Here's a small list to recap:
Benefits of $form->input();
- Model Introspection - grabs data, and chooses a form type based on that data (can override it by setting 'type' in the options array)
- Displays validation errors
- Displays label
- the added divs might impede your design work or annoy your designer
- Gives you the bare minimum when you need it
- Allows greater flexibility for design work
- Doesn't display validation errors
- Form needs you to pass the data into the function
is a great place for information. As well as the Manual
Both these form functions are extremely helpful the way they are - this post was just to note the differences between the two, so that it might help someone use the correct function when they need it (and save them some time, code and/or headaches!)
Please note: If there are any mistakes, please let me know and I'll fix the post asap (It's 1:17am at the moment, so there's bound to be a few *wink* ). If I left anything out between the differences of $form->input() and the form specific functions, feel free to comment.
Comments, questions, or feedback on this post? I'm all ears....or eyes.
Saturday, October 25, 2008
All Hallow's Eve
Halloween is approaching!
Tomorrow I'll be carving pumpkins and decorating my house for the ghoulish night. Unfortunately, nobody else I know is excited for it T_T....nobody comes to my house because I live so far out, but I still like to decorate anyway - Halloween is a great night, but so short.
One great thing about Halloween is in-game events - they really capture the spirit of halloween. Everquest's in-game events have always captured my attention: rampaging skeletons that are nearly unbeatable, fabled creatures much more powerful than their original counterpart, "trick or treat" (Scavenger hunt) for an in-game illusion item - definitely a fun time for everyone.
Guild Wars is another online game that gears up for the Halloween season. Unfortunately, every year I missed their Halloween events - but not this year. They started yesterday (October 24th) and last until November 2nd - though the main event is only scheduled for All Hallow's Eve!
Tomorrow I'll be carving pumpkins and decorating my house for the ghoulish night. Unfortunately, nobody else I know is excited for it T_T....nobody comes to my house because I live so far out, but I still like to decorate anyway - Halloween is a great night, but so short.
One great thing about Halloween is in-game events - they really capture the spirit of halloween. Everquest's in-game events have always captured my attention: rampaging skeletons that are nearly unbeatable, fabled creatures much more powerful than their original counterpart, "trick or treat" (Scavenger hunt) for an in-game illusion item - definitely a fun time for everyone.
Guild Wars is another online game that gears up for the Halloween season. Unfortunately, every year I missed their Halloween events - but not this year. They started yesterday (October 24th) and last until November 2nd - though the main event is only scheduled for All Hallow's Eve!
Wednesday, October 15, 2008
New Macbooks
I've known about the possibility of new Apple notebooks coming out for months now, and finally the day has arrived. Apple sent out the media invitations last week, and today at 10:00am PT, the new notebooks were revealed.
Key points:
Key points:
- Only one colour available (black screen, silverish body....Still looks nice...but I was hoping for a choice of colour)
- Glossy screen only (No matte...which means outdoors will be a pain)
- New video cards: Nvidia 9400M GT and 9600M GT 256/512(up to 5 times faster than previous used, intel integrated GPUs)
- Mini display port (crap...I was hoping for a standardized display port. I hope Apple doesn't turn into Microsoft with this proprietary crap, hoping everyone will follow them).
- Aluminum casing - "Brick" manufacturing. By taking a solid brick of aluminum, they can make a stronger notebook by removing the excess with lasers and then recycling anything left over
- Enlarged Multi-touch Glass trackpad (removed the button so the trackpad is now the button - I could get used to this pretty easily)
- Backlit LED display
- Backlit keyboard
- 4 GBs of RAM
- 2.8 GHz Intel Core 2 Duo
- 9600M GT 512MB
- 320GB 7200RPM HD
- 15'' display (my favourite size)
Monday, October 6, 2008
A New Blog to Come
Lately, I haven't been doing much coding since I've been doing a lot of testing. I had a free weekend a couple weeks ago, so I decided to start a little project.
To help keep my CakePHP fresh and moist, I've decided to create (and design) my own blog. It will be simple but useful (for me anyway). Not only that, but I've wanted to design my own site for awhile - and this is a great way to start.
Wednesday, August 27, 2008
Installing PHPUnit, Testing_Selenium, and Selenium RC in Windows Vista
What is PHPUnit?
How to install PEAR, PHPUnit, Testing_Selenium PEAR package, and Selenium RC in Windows Vista:
This post assumes PHP is installed (I used 5.2.5) in C:\php\ (change the directory where applicable).
The first thing you'll need to do is to install PEAR. To do this, Open up your command prompt. You can do this by:
clicking the start button
typing "cmd" (without quotations) in the search field
Click the "cmd.exe" application or Hit ENTER if that's the only one there
In the command prompt, go to your PHP root directory. Mine was located at C:\php\
cd C:\php\
Run the go-pear.bat file with the command prompt. This batch file will install PEAR in C:\php\PEAR\
Next, you'll want to install PHPUnit. To do this, type the following in the command prompt:
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit
The first command registers the pear.phpunit.de channel with the local PEAR environment - basically it lets PEAR know where to get PHPUnit from. The second command downloads and installs PHPUnit.
After it installs, you'll be able to find it in C:\php\PEAR\PHPUnit\
Next, you'll want to download the Selenium package using pear. As of this writing, the newest version is 0.4.3. In the command prompt, type:
pear install Testing_Selenium-beta
At this time, if you don't have Java installed, you should install it now: http://www.java.com/en/download/manual.jsp#win
To check if you have java installed, in the Command prompt type "java -version" (you need JRE 1.5 or higher).
After that, you can install Selenium RC. I downloaded the most recent at this time; Version 1.0 beta 1: http://selenium-rc.openqa.org/download.html
Create a new folder called "selenium" somewhere easily accessible by the command prompt.
Inside the folder you downloaded there's a Selenium-server folder (Mine was called "selenium-server-1.0-beta-1"). Move all the files in the Selenium-server folder into the "selenium" folder you created, mentioned above.
In the Command prompt, go to the directory that contains the Selenium server.
To start the server in interactive mode (allows you to control the browser manually), type the following in the command prompt:
java -jar ./selenium/selenium-server.jar -interactive
And finally everything is set up to create and run tests!
To create tests, you can use the Firefox plugin IDE to record actions. Alternatively, you can code them yourself.
If you use the IDE: After you create a new test, export it as PHP to an easy-to access location.
In the command prompt change your directory to the location of your new test.
use the following to run the test using PHPUnit:
phpunit testname.php
Assuming you've done everything correctly, PHPUnit will read the test file and tell your running Selenium RC server to open a browser. From there, it will go through your test and give you a report!
- PHPUnit is a testing framework to create and run automated unit tests for your web application.
- PHPUnit helps test the back-end of your web application by running through certain parts (units) and test them, comparing them with the expected output
- Selenium is a suite of test tools to help test the front-end of your web application. The front -end being the visual aspect, and browser compatibility.
- Using Selenium you can create automated tests to ensure your product is less prone to errors
How to install PEAR, PHPUnit, Testing_Selenium PEAR package, and Selenium RC in Windows Vista:
This post assumes PHP is installed (I used 5.2.5) in C:\php\ (change the directory where applicable).
The first thing you'll need to do is to install PEAR. To do this, Open up your command prompt. You can do this by:
clicking the start button
typing "cmd" (without quotations) in the search field
Click the "cmd.exe" application or Hit ENTER if that's the only one there
In the command prompt, go to your PHP root directory. Mine was located at C:\php\
cd C:\php\
Run the go-pear.bat file with the command prompt. This batch file will install PEAR in C:\php\PEAR\
Next, you'll want to install PHPUnit. To do this, type the following in the command prompt:
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit
The first command registers the pear.phpunit.de channel with the local PEAR environment - basically it lets PEAR know where to get PHPUnit from. The second command downloads and installs PHPUnit.
After it installs, you'll be able to find it in C:\php\PEAR\PHPUnit\
Next, you'll want to download the Selenium package using pear. As of this writing, the newest version is 0.4.3. In the command prompt, type:
pear install Testing_Selenium-beta
At this time, if you don't have Java installed, you should install it now: http://www.java.com/en/download/manual.jsp#win
To check if you have java installed, in the Command prompt type "java -version" (you need JRE 1.5 or higher).
After that, you can install Selenium RC. I downloaded the most recent at this time; Version 1.0 beta 1: http://selenium-rc.openqa.org/download.html
Create a new folder called "selenium" somewhere easily accessible by the command prompt.
Inside the folder you downloaded there's a Selenium-server folder (Mine was called "selenium-server-1.0-beta-1"). Move all the files in the Selenium-server folder into the "selenium" folder you created, mentioned above.
In the Command prompt, go to the directory that contains the Selenium server.
To start the server in interactive mode (allows you to control the browser manually), type the following in the command prompt:
java -jar ./selenium/selenium-server.jar -interactive
And finally everything is set up to create and run tests!
To create tests, you can use the Firefox plugin IDE to record actions. Alternatively, you can code them yourself.
If you use the IDE: After you create a new test, export it as PHP to an easy-to access location.
In the command prompt change your directory to the location of your new test.
use the following to run the test using PHPUnit:
phpunit testname.php
Assuming you've done everything correctly, PHPUnit will read the test file and tell your running Selenium RC server to open a browser. From there, it will go through your test and give you a report!
Labels:
PEAR,
PHPUnit,
RC,
Remote Control,
Selenium,
Testing_Selenium,
Vista,
Windows
Wednesday, July 16, 2008
Fat Models, Skinny Controllers
What is a fat Model?
Why should I make fat Models vs skinny Controllers?
What type of functions should I put in my Model?
What type of functions should I put in my Controller?
When I first started with CakePHP, I put almost everything in my controllers. In reality, the controllers should be extremely tiny - and only contain important business logic. As I worked with CakePHP more, I also learned to start putting more in my Models and less in my Controllers.
To put a function in your Model, you do it the exact same way as putting it in your controller:
$this->ModelName->functionName();
Here's an example:
If you have a User Model and an Event Model that are associated,
you could put this in a method in your Users Controller:
- When I say fat, I'm not talking about the FAT filesystem here - I mean long lines of code, methods, variables, etc. Basically, a fat script would be a big script.
Why should I make fat Models vs skinny Controllers?
- After developing for awhile, when you look back at your code you'll realize how hard it is to keep track of things. Basically, with a skinny controller (and meaningful function names) you can quickly see what's going on. When you have a controller with 300 lines of code, it can get pretty messy looking (even with proper formatting)...So to solve that problem, simply put many of your functions in your Models instead.
What type of functions should I put in my Model?
- The type of functions you should put in your model should be anything related to your model, or it's data. Formatting, Retrieving, Searching are just a few examples.
What type of functions should I put in my Controller?
- Usually, the only functions you should have in your controller are: Index, Add, Edit, View, Delete, and the "before" functions. Almost anything else can go in your model.
When I first started with CakePHP, I put almost everything in my controllers. In reality, the controllers should be extremely tiny - and only contain important business logic. As I worked with CakePHP more, I also learned to start putting more in my Models and less in my Controllers.
To put a function in your Model, you do it the exact same way as putting it in your controller:
To use the function, inside your controller use the following format:
function getEventDetails($_id) {
$params = array(
'conditions' => array(
'Event.id' => $_id,
),
);
return $this->find('first', $params);
}
$this->ModelName->functionName();
Here's an example:
After adding functions to your models, you can also access those functions using Model associations if they're set up correctly:
$eventDetails = $this->Event->getEventDetails($_id);
If you have a User Model and an Event Model that are associated,
you could put this in a method in your Users Controller:
$eventDetails = $this->User->Event->getEventDetails($_id);
Labels:
cakePHP,
controllers,
fat models,
models,
skinny controllers
Monday, July 14, 2008
CakePHP Plugins
Plugins were a great idea added to CakePHP 1.2 that allows you to create a mini web application inside your main web application. This mini web application you can then distribute to other users, or your other projects, to reduce re-inventing the wheel so much.
Plugins were a great idea, but is not quite something the CakePHP core team really focuses much attention on, and probably never will. Despite that, CakePHP plugins can still be very useful for decreasing code time between projects - as long as you remember the pitfalls associated with them.
Some very important things to remember when working with Plugins:
and
below are two examples taken from two different models:
Special Note: The key in the array doesn't contain the plugin name but the className part does
Using the above examples, I haven't had any troubles working with associated models in my plugin, but any other way I've tried wouldn't work properly in some cases (such as accessing a model's function through associations with $this->ModelName->functionName(); )
Also, please see the manual for more information: http://book.cakephp.org/view/114/plugins
Plugins were a great idea, but is not quite something the CakePHP core team really focuses much attention on, and probably never will. Despite that, CakePHP plugins can still be very useful for decreasing code time between projects - as long as you remember the pitfalls associated with them.
Some very important things to remember when working with Plugins:
- When naming controllers, try to make their names unique (to prevent any ambiguity errors if two controllers have the same name) Usually prefixing any filename with the plugin's name works great (such as calendar_events_controller.php where calendar is the plugin name)
- Every controller in your plugin must be told where to find its models. Even though you're using the $uses variable, still try to stick with CakePHP's conventions of having 1 model per controller. To tell your controller where your model is, use the following:
- var $uses = array('PluginName.ModelName');
- When working with model associations in a plugin, never use the short form (eg. $hasMany = ModelName); always extend it like the following examples(!Notice how className has PluginName.ModelName, where the ModelName before that is by itself!):
var $hasMany = array(
'ModelName' => array(
'className' => 'PluginName.ModelName',
)
);
and
var $belongsTo = array(
'ModelName' => array(
'className' => 'PluginName.ModelName',
),
);
below are two examples taken from two different models:
Special Note: The key in the array doesn't contain the plugin name but the className part does
var $hasMany = array(
'CalendarAttendantsEvent' => array(
'className' => 'Calendar.CalendarAttendantsEvent',
'dependent' => true,
)
);
var $belongsTo = array(
'CalendarAttendant' => array(
'className' => 'Calendar.CalendarAttendant',
'foreignKey' => 'calendar_attendant_id',
),
'CalendarEvent' => array(
'className' => 'Calendar.CalendarEvent',
'foreignKey' => 'calendar_event_id',
),
);
Using the above examples, I haven't had any troubles working with associated models in my plugin, but any other way I've tried wouldn't work properly in some cases (such as accessing a model's function through associations with $this->ModelName->functionName(); )
Also, please see the manual for more information: http://book.cakephp.org/view/114/plugins
Tuesday, June 17, 2008
CakePHP 1.2
CakePHP is a free and open source rapid development framework for PHP that greatly reduces the time required to create and maintain small to large websites. I've only been using it for roughly a month, however, it has proven to be a valuable tool thus far.
For those new to CakePHP and who'd like to take a look at what it's all about, please see the main site at http://cakephp.org/ From the main site, you can download it (the newest stable release as of this post is version 1.2.0.7125) as well as learn the ins and outs of this tasty cake!
But why should you use CakePHP? How does it help?
Well, CakePHP organizes all the files for your web application into 3 different categories - Models, Views, and Controllers (MVC design pattern). Models are much like gateways to your database, Views are the HTML/PHP pages that displays the data, images, or information. The Controllers are where the main functions of your web applications reside.
Let's look at an oversimplified example of the MVC design pattern:
A user wants to post a comment on your blog. She types in her message and clicks on the "Post!" link to post her comment. The data is sent to the Controller, the Controller then sends it to the Model which inserts it into the database. After being inserted, data is sent to the View and you see your "The Post was Saved Successfully!" message.
Why would you want your code separated like this? Because it's a lot easier to maintain. Furthermore, if you have an error you need to fix, you know almost exactly where to look for it. Is it a database error? Check your Model or your database. Is it a template issue? Check your view.
CakePHP also has many built in functions and helpers that help you quickly, easily and (usually) painlessly find information from your database, manage user permissions, use AJAX and even display forms (to name a few).
I would highly recommend viewing the CakePHP manual (aka "The Cookbook") for more information and for a much better explanation of how things work, what you can do, and what you can't. You should also take a look at the Blog tutorial located in the Cookbook for a walk through of many useful functions to easily create a Blog. The cookbook can be found at http://book.cakephp.org/view/7/introduction-to-cakephp.
As I learn more about CakePHP, I'll be posting more blogs about it, what problems I've had with it, and how to get around those problems.
Until then,
Happy Baking!
For those new to CakePHP and who'd like to take a look at what it's all about, please see the main site at http://cakephp.org/ From the main site, you can download it (the newest stable release as of this post is version 1.2.0.7125) as well as learn the ins and outs of this tasty cake!
But why should you use CakePHP? How does it help?
Well, CakePHP organizes all the files for your web application into 3 different categories - Models, Views, and Controllers (MVC design pattern). Models are much like gateways to your database, Views are the HTML/PHP pages that displays the data, images, or information. The Controllers are where the main functions of your web applications reside.
Let's look at an oversimplified example of the MVC design pattern:
A user wants to post a comment on your blog. She types in her message and clicks on the "Post!" link to post her comment. The data is sent to the Controller, the Controller then sends it to the Model which inserts it into the database. After being inserted, data is sent to the View and you see your "The Post was Saved Successfully!" message.
Why would you want your code separated like this? Because it's a lot easier to maintain. Furthermore, if you have an error you need to fix, you know almost exactly where to look for it. Is it a database error? Check your Model or your database. Is it a template issue? Check your view.
CakePHP also has many built in functions and helpers that help you quickly, easily and (usually) painlessly find information from your database, manage user permissions, use AJAX and even display forms (to name a few).
I would highly recommend viewing the CakePHP manual (aka "The Cookbook") for more information and for a much better explanation of how things work, what you can do, and what you can't. You should also take a look at the Blog tutorial located in the Cookbook for a walk through of many useful functions to easily create a Blog. The cookbook can be found at http://book.cakephp.org/view/7/introduction-to-cakephp.
As I learn more about CakePHP, I'll be posting more blogs about it, what problems I've had with it, and how to get around those problems.
Until then,
Happy Baking!
Saturday, May 24, 2008
Summer's approach
It's been awhile since I've posted...again. Summer is approaching quickly and school is almost over. In about 3 weeks I'll be graduating and I have a great job working as a Web Developer. I was planning on going to college (Centre for Arts and Technology has already accepted me) but I've been offered a full time position as a Web Developer which I'm leaning towards.
This new job has been great to teach me more about scripting/programming which in turn teaches me more about security and flaws...not to mention the pay is quite decent for a yet-to-be HS grad. At the moment, I'm using the money to build a beautiful gaming computer that will blow all my other crappy computers away. Later on I'll be putting up a server on one of my older computers for pen testing.
This summer I'll be working full time and traveling to B-C to visit some old friends before we all leave on our separate paths. In the future I'll be adding some blogs about CakePHP (the framework I've been using for work that speeds up the design and programming of web applications).
It's 4am at the moment, and I have no clue what else to write, so, with that I leave you.
good night!
This new job has been great to teach me more about scripting/programming which in turn teaches me more about security and flaws...not to mention the pay is quite decent for a yet-to-be HS grad. At the moment, I'm using the money to build a beautiful gaming computer that will blow all my other crappy computers away. Later on I'll be putting up a server on one of my older computers for pen testing.
This summer I'll be working full time and traveling to B-C to visit some old friends before we all leave on our separate paths. In the future I'll be adding some blogs about CakePHP (the framework I've been using for work that speeds up the design and programming of web applications).
It's 4am at the moment, and I have no clue what else to write, so, with that I leave you.
good night!
Tuesday, March 11, 2008
Cuba Get-Away
For Spring Break I took a trip down to Cuba to relax on a nice warm beach for a week. I stayed at an all-inclusive resort (named Melia Cayo Santa Maria -> Melia means a Firm, Cayo means Island), which included unlimited food at the buffet and snack bars, 3 a la carte meals for my week stay, unlimited alcohol at any of the bars, daily and nightly entertainment, use of equipment (such as catamarans, wind surfing, kayaks, etc.), etc.
That vacation has, so far, been the best vacation I've had. I paid for 2 excursions: one to the city of Santa Clara, and one for a day long sail trip on a giant catamaran (I didn't know Catamarans could get big enough to hold 4 bathrooms...).
Cuba is actually a really interesting place, full of culture and history. The houses are extremely small and in very bad condition. The roads are also very narrow and I would never want to drive there; each car has to pass about 3 feet beside the next car.
Apart from the lack of technology, narrow roads and poor housing, Cuba is definitely one of my favorite countries. The climate is perfect (imo), the people were kind and if it weren't for a lack of internet, I wouldn't mind staying there for quite some time.
One interesting fact: There's one phone company for the whole country. There is only dial-up and computers are not an everyday thing for the people who live there. From a quick examination of their pay phones, phreaking might actually still be practical in Cuba.
Unfortunately, now I'm off the beach and back into my home which means back to the freezing cold, school and work.
That vacation has, so far, been the best vacation I've had. I paid for 2 excursions: one to the city of Santa Clara, and one for a day long sail trip on a giant catamaran (I didn't know Catamarans could get big enough to hold 4 bathrooms...).
Cuba is actually a really interesting place, full of culture and history. The houses are extremely small and in very bad condition. The roads are also very narrow and I would never want to drive there; each car has to pass about 3 feet beside the next car.
Apart from the lack of technology, narrow roads and poor housing, Cuba is definitely one of my favorite countries. The climate is perfect (imo), the people were kind and if it weren't for a lack of internet, I wouldn't mind staying there for quite some time.
One interesting fact: There's one phone company for the whole country. There is only dial-up and computers are not an everyday thing for the people who live there. From a quick examination of their pay phones, phreaking might actually still be practical in Cuba.
Unfortunately, now I'm off the beach and back into my home which means back to the freezing cold, school and work.
Thursday, February 28, 2008
DSL - My long lost partner
When I left British-Columbia, I had to leave my precious highspeed behind...it's been 3 long, arduous years on Dial-Up since then, however, at last I finally have Highspeed again!
My connection isn't THAT great, but it is certainly an improvement to my old 24Kbps Dial-Up connection I just got rid of...Highspeed I <3 you
After not being able to receive highspeed for years, my phone company has finally sent me a DSL modem to test a DSL connection in my area. Within 3 days (just bought the Router today) of connecting my modem, I already have a Wireless network setup (2 Wired desktops and my Wireless laptop) and plan on (eventually) setting up one of my older computers as a (probably Linux) Pen-Test server, hooray!
On top of that, a recent job opportunity has presented itself. Someone I know has a client that needs programming/scripting work done and wanted to know if I would be interested. Basically, I'd be creating Web Crawlers to gather specific information off of Government sites and store it to a database. I've already created a sample script for the job and will be going from there. This will definitely be a great opportunity for me to get some extra cash to pay for college, computer parts, and it will look great on a resume ^_^
My connection isn't THAT great, but it is certainly an improvement to my old 24Kbps Dial-Up connection I just got rid of...Highspeed I <3 you
After not being able to receive highspeed for years, my phone company has finally sent me a DSL modem to test a DSL connection in my area. Within 3 days (just bought the Router today) of connecting my modem, I already have a Wireless network setup (2 Wired desktops and my Wireless laptop) and plan on (eventually) setting up one of my older computers as a (probably Linux) Pen-Test server, hooray!
On top of that, a recent job opportunity has presented itself. Someone I know has a client that needs programming/scripting work done and wanted to know if I would be interested. Basically, I'd be creating Web Crawlers to gather specific information off of Government sites and store it to a database. I've already created a sample script for the job and will be going from there. This will definitely be a great opportunity for me to get some extra cash to pay for college, computer parts, and it will look great on a resume ^_^
Subscribe to:
Comments (Atom)