So, you've got something today, huh? Now, show us your 'manis' here in a complete sentence, and of course, in Indonesian.
Let's be smart your way with Squline!

seen from Italy

seen from Italy
seen from Argentina
seen from Türkiye
seen from Italy

seen from Malaysia

seen from Italy

seen from United Kingdom
seen from Hong Kong SAR China

seen from United States

seen from United Kingdom
seen from Vietnam
seen from China
seen from China
seen from China
seen from Malaysia

seen from United Kingdom
seen from Russia
seen from Japan
seen from Philippines
So, you've got something today, huh? Now, show us your 'manis' here in a complete sentence, and of course, in Indonesian.
Let's be smart your way with Squline!
Unidad 4: #EdTechMooc
Comparto mi actividad de la unidad 4, mi plan de implementación detallado en el siguiente enlace de google docs y el siguiente póster que ofrece una versión más visual y resumida de la información que detallo en mi plan.
Biology lesson experiment: bacteria on carrots!
Carrots are not only good for your eyes but also to make some exciting experiments in biology classes! Check out our cool tutorial video on how to visualize bacteria grown on carrots (yummyyyy)!
Database Sandboxing to Increase Performance
Sandboxing is one of those widely used I.T. buzz words. In some circles of software developers this word is on par with other common business buzz terms like "Synergy" or "Innovation".
If you are a developer then you have no doubt heard this term used in multiple facets of software engineering. It is often used in describing a development vs test vs staging vs production environment. It is also used to describe generic isolation. Isolation takes many forms such as networking (subsets of users can only access resources on Network A and not Network B), application execution (application can only access a subset of assigned computer resources), or server side development (which is the topic of this blog). Some of us resisted this idea, but in the end it is hard to argue against it. It's one thing to sandbox application code, but what about server side?
A very exciting niche in software engineering is server side development. You get so many opportunities to work with many different technologies, and you also learn SO MUCH about integrating systems. One of the many exhilarating aspects of server side development is controlling the data! In today's development world applications are often simply a shell to display data that comes from a server. This means that server side software development is more important now-a-days than it has ever been previously. People are so spoiled with peek performance from companies like Google that it leaves very little tolerance for applications to lag! The modern view of development is very server focused. The client side is important too, don't get me wrong, but client software is heavily depend on the data resulted from the server. Any inefficiencies on the server will show on the client, and users will grow tired of significant lag very quickly!
Highly integrated applications, like Facebook, Twitter, etc have more complex methods of dealing with massive amounts of data. But a more simple application can use simple server side sandboxing techniques to maximize performance. If your application is company based, and the companies do not need to have highly integrated interactions with each other then one simple method of increasing server performance is to sandbox each company in its own database! This can be done automatically and it can be part of the account creation process.
Many applications store user credentials. Let's say you have a table called [authorize], and it contains basic information about your users such as Company foreign key, User primary key, first name, last name and a SHA1 hash of their password. This table is queried when users request a login to gain access to the application. The table looks like this:
PK_User FK_Company FirstName LastName 1 1 Bill Simpson 2 1 Allan Smith 3 1 Kim Itzi 4 1 Bob Bobson 5 1 John McClain 6 1 Liz Sampson 7 1 Iris Bliss 8 1 Chris Rossfe 9 1 Randy Moss 10 1 Robert Griffin
Looks like a simple table right? This could easily be one of dozens (or even hundreds) of tables in a database that contains relationships to different database objects all over the place! Let's say you have an application that has many companies sharing the same data source. After another company joins your [authorize] table will start to look like this:
PK_User FK_Company FirstName LastName 1 1 Bill Simpson 2 1 Allan Smith 3 1 Kim Itzi 4 1 Bob Bobson 5 1 John McClain 6 1 Liz Sampson 7 1 Iris Bliss 8 1 Chris Rossfe 9 1 Randy Moss 10 1 Robert Griffin 11 2 Al Rotsman 12 2 Bethany Bell 13 2 Kwiki Island 14 2 John Riggins 15 2 Shazam Shwing 16 2 Zack Groff 17 2 Emily Deckerson 18 2 Linda Hamlet 19 2 Yolanda Quitzb 20 2 Ravindra Rumar
You can see that there are two different companies using this table and each company has 10 users. This is not big deal, right? Well., what happens if your application gets really popular and over night 1,000 different companies sign up. What if each company has 10,000 employees? Now this table contains 10,000,000 records. If this is only one table that contains data (which inevitably it will be), then that means each table starts to get overloaded with tons of data! Each time a new company joins and adds their employees the side effect is that every other company will experience more and more lag as it takes longer and longer to extract data from the database.
Yikes! This is a real problem. After you analyze your software you realize that the cost of rewriting it will severely affect your profits (because time is money), so you make the logical choice: increase the hardware! GIVE IT MORE RAM! GIVE IT MORE MEMORY! GIVE IT MORE SPEED!!!
Then, you get more and more clients... Your hardware cost cuts deep into your profits and you come to the realization that you need to increase your prices to make a profit. Your customers won't like that, will they? Internet customers are used to either free or very low cost services so a price increase could cost you your entire business!!!!!! At this point, you may be forced to consider a rewrite.
Don't kill yourself over this! If your application is focused on different companies, and the companies are not highly integrated, then consider this idea...
(RootDatabase) [Company] PK_Company | Name | DatabaseName
Inside of a database called [RootDatabase] (in this example) there is only one table. It contains basic information about the companies plus and a database name. In your server side code you can create a database when a company creates an account and all the tables in that database belong only to that company. This keeps the root database very light weight because there is only one simple record for each company.
After 2 companies sign up your database will look like this:
(RootDatabase) [Company]
PK_Company Name DatabaseName 1 Company A Database1 2 Company B Database2
When each company creates an account, the two databases (CompanyDatabase1 & CompanyDatabase2) will be created automatically.
Your database server will look like this:
(RootDatabase) [Company]
(CompanyDatabase1) [Authorize]
[UserBlog]
... other tables
(CompanyDatabase2) [Authorize]
[UserBlog]
... other tables
Neat and organized!
How exactly do you do this? Well, let's say you are using PHP/MySQL on your server... part of the account creation process will run code like this:
$conn = mysql_connect("localhost", "mysqlUsername", "mysqlPassword"); $result = mysql_query("SELECT COUNT(PK_Company) FROM Company"); $companyCount = mysql_fetch_row($result)[0]; $newCompanyDatabaseName = "CompanyDatabase" . $companyCount; mysql_query("CREATE DATABASE " . $newCompanyDatabaseName); mysql_query("INSERT INTO `Company` (Name,DatabaseName) VALUES ('$companyName','$newCompanyDatabaseName')");
The above code is incomplete, does not protect against SQL Injection, and I didn't actually test the above code, but you get the idea! It's very easy to do this.
As you can see... sandboxing your server side is a fantastic idea when you are dealing with massive amounts of data and you want to make sure your clients get the best performance possible! Now, the size and activity of one company has significantly less impact on others. Even simple things like removing the need to check a company foreign key will save valuable milliseconds or seconds or minutes depending on the table capacity! If you are selecting all of the blogs a company has submitted, then this query...
SELECT * FROM UserBlog WHERE FK_Company=1
Will technically run slower than this one...
SELECT * FROM UserBlog
... assuming the table is filled with hundreds or thousands of different company data!
Is there a limitation to this approach? Well, yes... Many DBMS application have a maximum number of databases that can be created. For example, SQL Server and MySQL typically max out at 32,000ish databases. But my view is... If you have 32,000 paying customers then that's a good problem to have, and with the money you're making you can expand to an array of SQL Server instances!
My guess is that if you are a database purist you hate this idea. And that's cool if you do! I have seen this concept work before and I admit I do like the idea. I'd love to hear your thoughts, comments, complaints, rebuttals, etc!
Happy Coding!
Integrating Technology into a Project; A Reflection
Living Museum
The idea of the Living Museum is for students to research the biography of a famous historical person and transform themselves into that person. This project is very traditional in that it is basically a research paper with theatrics thrown in at the end. And for the sake of keeping this post not too too long I will not go into the many task (timeline, guidelines and rubrics) that students follow throughout the project.
The technology used in a research project like this would usually consist of:
the Internet for research
a Word Processing application to type documents, scripts, posters etc...
I definitely was not the first to assign project, it has been around for years. However, I wanted to infuse technology into the project based on observations made from some of the museums that I have visited recently.
One way that museums are making their displays more interactive are by using QR Codes.
Above is a QR Code, It is used as a visual portal to sites, videos, email, calendars. They are easy to create and with a QR Code reader app installed on a mobile device, can be used in many educational ways. Students added a QR Code to a poster of their historical person.
I assigned students to highlight a short unknown fact about the historical person that they were already researching. The idea being that a person attending the Living Museum could "find out more" about the historical person by following the QR Code.
Once the student had the fact, they wrote it down in the third person to juxtapose the live first person POV presentation that they would be giving the day of the Living Museum.
They practiced.
Once the student was ready they recorded their short fact on an iPad 2 connected to a Blue Snowball using the Camera Connection Kit. The Apple version is a bit pricey so I did an Amazon search for 'camera connection kit' and found a very economical version (less than $7 with shipping) I used Garageband app to record the audio.
There are several ways to handle the audio recording part of this mini-project. If you are using a PC with a microphone built in or with an external USB mic, Audacity is a good option. Audacity is a free audio editor and recorder and has a robust selection of tools.
Audacity also works with a Mac.
If you are working with a Mac, the easiest option would be Garageband since it comes pre-installed with OS X. It too has an assortment of editing tools.
The part I found time-consuming was moving each students audio file to a page on the Internet. Since I used Garageband on my iPad, I had to email each one to myself so that I could move the file around from folder to folder. It was not difficult, just time-consuming.
Alas I found an option that will streamline next year's project!
Evernote!
There is also an Evernote app for iOS, Android, Blackberry and Windows Phone. It is one of the true cross platform applications available for free and I have written about its many uses before.
Audio can be added to the note from within Evernote and since it is cross platform, one student could be using New iPads and others using iPod Touches and laptops. Everything syncs!
Using Evernote to record the audio makes sense because this was how I created a Web page for every student. All I did was create a note under a folder I named 'Living Museum' and saved each audio file within the notes. I named each note by the historical person.
Images, links and text can also be added to the note. Whatever is added to the note will show on its own individual Webpage.
To create a QR code for each student (another slightly time consuming part) I had to copy the uniquely generated Evernote Url to a Google Docs and Spreadsheets spreadsheet. Once each URL is entered, a formula will generate a unique QR Code for each address. I learned about this at Tammy Worcester's Tip of the Week blog.
This is how it looked as a Webpage:
Once I had each site 'live', I printed the QR Codes and had them cut and pasted onto each students individual poster. Tony Vincent of Learning In Hand blog has a cool but pricier solution.
This is a step-by-step explanation with commentary for each step of the way. I made mistake and I learned from them. Now its your turn. Thanks for reading.
Here are a few photos of the Living Museum (on some you can see the Poster with QR Code in the background).
Christopher Columbus
Rosa Parks
Benjamin Franklin
Juan de Oñate
A frank talk about my experiences with gaming and computing and how it has shaped my life and the way I teach. More information @: http://erichawkinson.com
Career Decision
I need help people!! I will be graduating here in May with an undergraduate in General Studies with a minor in Educational Technology and a minor in Human Development from Ball State University. I really want to work in a school system with Technology most likely a Technology Coordinator or Technology Facilitator. But I'm not sure what would be better to try to find a job or go to Grad School for Educational Technology! I NEED HELP!!! If you know anything or can help me please MESSAGE ME!!! THANKS!!! =)
77 Web Resources for Teachers to Explore This Summer (via http://www.freetech4teachers.com/)