. .

general

iPad Instead of In Car DVD?

April 22, 2010 7:08:31.754

I ran across this speculative post, and think that it makes a ton of sense:

I see the big breakthrough in the back seat, and it could prove to be a serious problem for automakers that charge a ransom for rear entertainment systems. The base iPad costs far less than most DVD options offered by automakers. Ford charges $1,995 for a dual-headrest-mounted DVD system in its Flex crossover. The Acura MDX is $1,900 for its single screen system, which has three wireless headsets and a 9-inch screen that was impressive in size when compared next to the iPad. These prices are par for the course for similar systems from most manufacturers.

Most new cars have multiple charge ports as well, so even when the battery ran low, you would be ok. Now, someone is going to say that any laptop (especially a Netbook) could do the same thing, but: the iPad is simpler. In this space, I'd say that simpler is better.

Those cash cow car entertainment systems might have to start pricing themselves realistically.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

social media

Looks Like I Have Work to Do

April 22, 2010 7:43:30.754

With the Facebook announcements yesterday, it appears that I have some new work on the Smalltalk to Facebook interface. The authentication scheme seems to be simpler (which is good - I never really got the first version as finished as I'd like).

It looks like it's simpler than the old API - that was a mishmash of old and new ideas, whereas this version seems to be unified around a simple data model, and all the accesses to it are via JSON (much, much nicer than XML, IMHO). I'll take a more comprehensive look at it later today.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

itNews

The Flash Contest Won't End Soon

April 22, 2010 8:33:41.016

While Apple is trying to kill Flash, Android is embracing it, and so are the next generation Windows phones. I'm not sure what RIM plans with the BlackBerry, but I expect they'll fall in line, too. That'll put Apple on one side, and the rest of the universe on the other. Normally, I'd say that would put Apple in the losing position, but the iPhone is popular enough that it guarantees one thing: a long battle.

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

smalltalk

Using Statement Caching with Oracle and ObjectStudio: Video

April 22, 2010 9:08:45.940

Today's screencast looks at using statement caching against Oracle (version 9 and up) with ObjectStudio. If you're looking for a particular topic, you can find it with the Media Search application on our site.

The code used is below; To watch, click on the viewer:


"Statement Caching examples. Oracle does not support this feature until 9.0.0, so make 
sure you are using Oracle 9.0.0 and later."

"Information from Oracle: Statement caching refers to the feature that provides and 
manages a cache of statements for each session. In the server, it means that cursors 
are ready to be used without the need to parse the statement again.  It can be 
used with connection pooling, and will improve performance and scalability." 

"The following are two examples, one uses statement caching, the other does not."

"Statement Caching is off be default."
ObjectStudio.OracleDatabase useStatementCaching: false.

"Logon to the Oracle Server."
ObjectStudio.OracleDatabase 
	logOnServer: #'OracleDB' 
	user: #'username' 
	password: #'pwd' 
	alias: #'OracleDB'.


"Get the Oracle database instance."
db := ObjectStudio.Database accessName: #'OracleDB'.

"Set times to repeat."
loopCount := 100.

"Set the SQL to do the fetch."
sql :='select * from sys.all_tables where TABLE_NAME=''DUAL'''.

selectTime1 := [
1 to: loopCount do: [ :i|
        db execSql: sql.
    ].
] millisecondsToRun.

"Print out the miliseconds spent."
('Select without using statement caching: ' + selectTime1) out.	

db logOff.


"Turn on Statement Caching."
ObjectStudio.OracleDatabase useStatementCaching: true.

"Logon to the Oracle Server."
ObjectStudio.OracleDatabase 
	logOnServer: #'OracleDB' 
	user: #'username' 
	password: #'pwd' 
	alias: #'OracleDB'.

"Get the Oracle database instance."
db := ObjectStudio.Database accessName: #'OracleDB'.

selectTime2 := [
1 to: loopCount do: [ :i|
    db execSql: sql.
	]
] millisecondsToRun.

"Print out the miliseconds spent."
('Select using statement caching: ' + selectTime2) out.	

db logOff.



You can download the video directly here. If you like this kind of video, why not subscribe to "Smalltalk Daily"?

posted by James Robertson

 Share Tweet This

blog

Now With Like

April 22, 2010 10:57:23.762

At the bottom of each post there's a Facebook "Like" button now - if you have a Facebook account, hitting that will just up the "like" count for the post over there. It was simple to add (once I fixed the stupid CSS styling issues I had with my copy/paste job).

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

media

Hulu Plus: Stillborn?

April 22, 2010 11:15:21.255

Looks like Hulu's plan to charge for a premium service might not make it out of the gate - ABC (Disney) is undermining the value:

Citing industry sources, Kafka said that Hulu CEO Jason Kilar "tried desperately to get ABC not to introduce its free app," because ABC giving away free content makes subscription-based access to Hulu on the iPad seem less valuable. ABC obviously did not place much weight behind Kilar's concerns, as the network's streaming application was available on the iPad from day one, and has found great success.

Obviously, ABC is only one content provider - but other networks are going to be pressured into doing the same thing - just like all other digital media, the price tends to fall towards zero. Hulu will need a new plan.

Technorati Tags: , , , ,

posted by James Robertson

 Share Tweet This

blog

How the Like Thing Works

April 22, 2010 12:12:54.878

I got a question about the new "like" button - specifically, why "liking" the news stream entry on Facebook doesn't reflect back to the blog (and vice versa).

Well, that's because the two things aren't really linked. Here's how the news stream entries land on Facebook:

  • I post to my blog
  • The server auto-tweets the post for me (to Twitter)
  • I have my Twitter stream linked to my facebook news stream, so that anything I tweet lands in the Facebook news stream

Which means that the blog post and the news entry on Facebook are not the same item. Adding a "like" to one will not add a "like" to the other. To get the two linked, I'd have to do some investigation of the FB api, and see if it would even be reasonably possible :)

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

development

Static Binding Considered Harmful

April 22, 2010 12:23:37.248

Spotted in Phil Windley's Technometria

The more dynamic the Internet gets, the more data there is floating around, the more we mashup things to create just what we need, the more important late binding becomes--in your life, your programming language, and your Web technology.

I agree with that. The web is an ever changing thing, and dynamic systems are much, much easier to adapt. An early bound system is just too rigid.

Technorati Tags:

posted by James Robertson

 Share Tweet This

smalltalk

Debugging a Frozen Smalltalk App

April 22, 2010 12:47:05.998

I have some advice (via Andreas) over on my Cincom Blog

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

gadgets

The Geek Demographic Hearts the iPad

April 22, 2010 22:16:32.168

Spotted in Wired Top Stories

Just three weeks after its launch, the iPad already accounts for almost 1 percent of Wired.com's overall traffic -- and more than a quarter of our mobile traffic

That's an astonishing percentage given the fact that it's only been out for a few weeks.

Technorati Tags:

posted by James Robertson

 Share Tweet This

smalltalk

Smalltalk Events

April 22, 2010 23:01:45.819

Julian Fitzell has a rundown of a number of upcoming Smalltalk events.

Technorati Tags:

posted by James Robertson

 Share Tweet This

gadgets

How Apple Gets Away with Restrictive Policies

April 23, 2010 7:13:18.584

Numbers like these out of Japan help:

The iPhone, offered by Japan’s third-largest wireless carrier Softbank Corp., accounted for 72 percent of smartphones shipped in the country in the period, the Tokyo-based researcher said in a report yesterday. Taiwan’s HTC Corp. was second with 11 percent, followed by Toshiba Corp. with 6.8 percent, it said.

Lots of people are unhappy with the new development rules for the iPhone/ipad - but has that unrest translated into lower sales? Based on the Wired story I linked to last night, I'd have to say no. Apple has realized something pretty important: their target market loves these devices, and based on the size of the market, there's simply not going to be a "developer strike".

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

smalltalk

Using Prefetch with Oracle and ObjectStudio: Video

April 23, 2010 8:19:07.058

Today's screencast looks at using Oracle's pre-fetch capabilities with ObjectStudio - note that this is an upcoming feature of ObjectStudio 8.2.1. If you're looking for a particular topic, you can find it with the Media Search application on our site.

The code used is below; To watch, click on the viewer:


"PrefetchRows example. Feature is available in OS8.2.1"

"Prefetch rows is similar to array fatching, but it happens in Oracle client. If 
OCI_ATTR_PREFETCH_ROWS is set then this value multiplied by the row size of 
memory is allocated.  When a call to fetch is made all the memory allocated 
is used to store records from the server. The first call gets back n rows and 
subsequent calls to fetch do not make a network call until all n records have 
been returned from the client."

"The following Workspace examples will show the performance 
improvements when using prefetchRows in OS8."

"Logon to the Oracle Server."
ObjectStudio.OracleDatabase 
	logOnServer: #'OracleDB' 
	user: #'username' 
	password: #'pwd' 
	alias: #'OracleDB'.


"Get the Oracle database instance."
db := ObjectStudio.Database accessName: #'OracleDB'.

"Drop the test table if existed."
db execSql: 'DROP TABLE TESTTABLE'.

"Create a test table."
db execSql: 'CREATE TABLE TESTTABLE(
	NUMMER int ,
	BEMERKUNG varchar2 (30)
)'.

"Set the number of recrods being inserted."
loopCount := 2000.

"The SQL used to do inerst."
sql := 'INSERT INTO TESTTABLE VALUES (?, ?)'.

insertTime := [
|bindArray numArray stringArray |
    numArray := OrderedCollection new.
    stringArray := OrderedCollection new.
	1 to: loopCount do: [ :i|
		numArray add: i.
		stringArray add: 'bla'.
	].			
	bindArray := Array with: numArray with: stringArray.
    sql := 'INSERT INTO TESTTABLE VALUES (?, ?)'.
    db execSql: sql vars: bindArray.
] millisecondsToRun.

"Print out the miliseconds spent."
('Insert using array binding: ' + insertTime) out.

"Set times to repeat."
loopCount := 1.

"Set the SQL to do the fetch."
sql := 'SELECT * from TESTTABLE'.

"Default value of prefetchRows is 1."
db prefetchRows: 1.

selectTime1 := [
1 to: loopCount do: [ :i|
        db execSql: sql.
    ].
] millisecondsToRun.

"Print out the miliseconds spent."
('Select with prefetchRows= 1: ' + selectTime1) out.	

"Set prefetchRows to be 100."	
db prefetchRows: 100.
selectTime2 := [
1 to: loopCount do: [ :i|
    db execSql: sql.
	]
] millisecondsToRun.

"Print out the miliseconds spent."
('Select with prefetchRows=100: ' + selectTime2) out.

"Set prefetchRows to be 1000."	
db prefetchRows: 1000.
selectTime3 := [
1 to: loopCount do: [ :i|
    db execSql: sql.
	]
] millisecondsToRun.

"Print out the miliseconds spent."
('Select with and prefetchRows=1000: ' + selectTime3) out.



You can download the video directly here. If you like this kind of video, why not subscribe to "Smalltalk Daily"?

Technorati Tags: , , ,

posted by James Robertson

 Share Tweet This

web

How Did People Survive Before Firebug?

April 23, 2010 16:05:33.770

I spent a large part of the day updating the look for the media landing pages on the CST website - like the Smalltalk Daily one. It had been using the look we had before the last update, and I hadn't gotten around to changing it. It wasn't that hard; I had a template provided for me, and I only needed to make a few tweaks to the content and stylesheet.

The bigger issue was figuring out what needed to be changed where - and for that Firebug was a lifesaver. Seriously, what on earth did people do before that tool arrived?

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

games

Why I Won't be Buying Final Fantasy

April 24, 2010 9:47:38.615

I keep seeing stuff like this written about it:

so i'm at 25 hours in, at Chapter Ten and here's the scoop. If you're looking for the "Free Roam" and travel stuff that 7, 8, 10 & 12 had, its in the 3rd act of Chapter 11, which sorry to say is a good 30 hours of play into the game.

I don't have a link, because that came across a chat session -but it's consistent with what I read (and hear) from people playing the game. What on earth were they thinking?

Technorati Tags:

posted by James Robertson

 Share Tweet This

social media

The Semantic Web Comes Back

April 24, 2010 18:05:14.355

Dare Obasanjo notes that the semantic web is back, via Facebook and the meta-data that they are getting ready to consume via their new open graph API:

One of the things I find most exciting about this development is that sites now have significant motivation to be marked up with extremely structured data which can then be consumed by other applications.

Technorati Tags:

posted by James Robertson

 Share Tweet This

movies

Kick Ass: Awesome

April 24, 2010 23:46:20.193

I haven't been out to see a movie in awhile - a bunch of us went out for drinks and a movie this evening, and we saw Kick Ass. Great film - some of the action sequences play like Matrix, if you can imagine a costumed 11 year old girl doing the fighting.

The beginning is a bit slow, but once it starts rolling, it really rolls. Highly recommended.

posted by James Robertson

 Share Tweet This

smalltalk

Across Smalltalks Part 2 (Podcast)

April 25, 2010 10:47:55.420

This week's podcast is part 2 of our conversation with Julian Fitzell, about cross dialect Smalltalk code - the approach taken with Grease and Slime for Seaside, and how that might help in other projects.

To listen now, you can either download the mp3 edition, or the AAC edition. The AAC edition comes with chapter markers. You can subscribe to either edition of the podcast directly in iTunes; just search for Smalltalk and look in the Podcast results. You can subscribe to the mp3 edition directly using this feed, or the AAC edition using this feed using any podcatching software. Starting with Episode 185, you can also download the podcast in ogg format.

To listen immediately, use the player below:

If you like the music we use, please visit Josh Woodward's site. We use the song Effortless for our intro/outro music. I'm sure he'd appreciate your support!

If you have feedback, send it to smalltalkpodcasts@cincom.com - or visit us on Facebook or Ning - you can vote for the Podcast Alley, and subscribe on iTunes. If you enjoy the podcast, pass the word - we would love to have more people hear about Smalltalk!

Technorati Tags: , , ,

posted by James Robertson

 Share Tweet This

itNews

It Wasn't Dead Yet?

April 26, 2010 0:10:00.000

Spotted in Slashdot

In a brief press release buried within Sony Japan's website, the company announced that they would be ending sales of the classic 3.5 inch floppy disk in the country in March of 2011. Sony introduced the size to the world in 1981, which saw its heyday in the 1990s. Sony has been one of the last major manufacturers to continue shipments of the disk type they helped develop, but had ended most worldwide sales in March of this year. The company's production of the 3.5 inch floppy ceased in 2009

I had no idea that you could still buy those things. On a slightly more serious note: "back in the day", lots of people did backups on floppies (I well remember the multi-disk flip operation). If you actually have data from that era that you need to access, it's well past time to fire up any old PC's you still have in working condition and transfer the data :)

Technorati Tags:

posted by James Robertson

 Share Tweet This

smalltalk

Array Binding with VisualWorks and Oracle: Video

April 26, 2010 6:48:32.939

Today's Smalltalk Daily looks at using Array Binding against Oracle (version 9 and up) with VisualWorks. If you're looking for a particular topic, you can find it with the Media Search application on our site.

The code used is below; To watch, click on the viewer:


"The following Workspace examples will show the performance improvements when using array 
binding and array fetching in VisualWorks."

"Connect to an Oracle database."
conn := OracleConnection new.
conn username: 'username';
password: 'password';
environment: 'ORACLEDB'.
conn connect.

sess := conn getSession.

"Drop the test table if existed."
sess prepare: 'DROP TABLE TESTTABLE';
	execute;
	answer;
	answer.

"Create a test table."
sess prepare:  'CREATE TABLE TESTTABLE(
	NUMMER int ,
	BEMERKUNG varchar2 (30)
)';
	execute;
	answer;
	answer.

"Set the number of records being inserted."
loopCount := 1000.

"The SQL used to do inerst."
sql := 'INSERT INTO TESTTABLE VALUES (?, ?)'.

"Insert: not using array binding."
sess prepare: sql.
insertTime1 := Time millisecondsToRun: [
	1 to: loopCount do: [ :i|
         sess bindInput: (Array with: i with: 'test');
		execute;
		answer;
		answer.
	].			
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent without using array binding: ', insertTime1 asFloat printString.

"Insert: Using array binding."
insertTime2 := Time millisecondsToRun: [
|bindArray numArray stringArray |
    numArray := Array new: loopCount.
    stringArray := Array new: loopCount.
	1 to: loopCount do: [ :i|
		numArray at: i put: i.
		stringArray at: i put: 'test'.
	].			
	bindArray := Array with: numArray with: stringArray.
	sess prepare: sql.
         sess bindInput: bindArray;
		execute;
		answer;
		answer.
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent using array binding: ', insertTime2 asFloat printString.

"Set times to repeat."
loopCount := 1.

"Set the SQL to do the fetch."
sql := 'SELECT * from TESTTABLE'.

"Default value of blockFactor is 1."
sess blockFactor: 1.

selectTime1 := Time millisecondsToRun: [
	1 to: loopCount do: [ :i|
		sess prepare: sql;
		execute.
		ans := sess answer.
		res := ans upToEnd.
    	].
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent when blcokFactor is 1: ', selectTime1 asFloat printString.

"Set blockFactor to 100."
sess blockFactor: 100.

selectTime2 := Time millisecondsToRun: [
	1 to: loopCount do: [ :i|
		sess prepare: sql;
		execute.
		ans := sess answer.
		res := ans upToEnd.
    	].
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent when blcokFactor is 100: ', selectTime2 asFloat printString.

"Set blockFactor to 500."
sess blockFactor: 500.

selectTime3 := Time millisecondsToRun: [
	1 to: loopCount do: [ :i|
		sess prepare: sql;
		execute.
		ans := sess answer.
		res := ans upToEnd.
    	].
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent when blcokFactor is 500: ', selectTime3 asFloat printString.


You can download the video directly here. If you like this kind of video, why not subscribe to "Smalltalk Daily"?

Technorati Tags: , , , ,

posted by James Robertson

 Share Tweet This

smalltalk

Scratch on the Podcast

April 26, 2010 8:35:10.000

This Tuesday at 9 PM EDT we'll be doing the podcast - Listen live as we talk to John McIntosh and John Maloney about Scratch.

I'm sure the topic of the new Apple language regime for the iPod and iPhone will come up, but we'll primarily be focused on what Scratch is, and what kind of reception it's had in the educational community

Technorati Tags: , , , ,

posted by James Robertson

 Share Tweet This

management

Reaping What You Sow

April 26, 2010 10:11:55.000

Now Apple is finding out about the kind of distrust their new "our languages only" policy is setting up with developers - witness the rumor that flew around the internet yesterday, ultimately ending in an email that Steve Jobs felt compelled to answer personally:

We heard a rumor last week about Apple making some big changes to the Mac OS X platform, let’s say to 10.7, in order to make it similar to iPhone OS and introduce an App Store for Mac applications that should be approved by Apple first. People started complaining about it, and I guess this would be the worst thing that could happen to a Mac developer, indeed. There are entire business built on top of the open nature of Mac OS X, and Apple just can’t change it anymore

It's a fairly absurd rumor, but - ponder the fact that it started to gain traction. That's the hole Apple has dug itself with some developers. As I've said before, it's too early to tell whether enough developers are angry enough to impact Apple... but this was an interesting data point.

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

sports

The NFL Needs MoneyBall

April 26, 2010 13:15:43.000

Spotted in Wired Top Stories:

Most NFL teams have a sucky strategy at selecting their draft picks. Why? They're not looking at the numbers and crunching the data.

A few years ago Moneyball showed up, and soon thereafter, it wasn't just teams with less money (like the Oakland A's) that were zeroing in on "the stats that matter". Heck, the Red Sox suddenly became a team that could win a World Series after their new ownership bought into the idea.

Wired thinks it's high time that the NFL followed suit. I'm sure that the long suffering fans of the Detroit Lions would agree :)

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

Argentina Leads the Way

April 26, 2010 15:30:29.000

For the upcoming Google "Summer of Code" projects, four of the five projects are being led by people from the Argentinian Smalltalk community. Looks like the Smalltalks conference series has been doing good things down there :)

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

gadgets

Something Apple Needs to Provide

April 26, 2010 19:16:18.000

Seriously, Apple - it's 2010 now:

Following Opera's script in building grassroots hysteria to goad Apple into approving a contentious app, developer Greg Hughes is teasing a video of his Wi-Fi Sync app to the peoples of planet internet. As the name implies, the app promises a complete sync of your iPhone or iPod touch with iTunes without having to tether and looks pretty straightforward

Can we get this out of the box?

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

humor

Wally Explains the 4G iPhone Mess

April 26, 2010 22:18:36.000

Scott Adams hits it out of the park :)

Technorati Tags: , , ,

posted by James Robertson

 Share Tweet This

smalltalk

Using LOBs with Oracle and VisualWorks

April 27, 2010 6:29:36.418

Today's Smalltalk Daily looks at using LOBs with Oracle (version 9 and up) with VisualWorks. If you're looking for a particular topic, you can find it with the Media Search application on our site.

The code used is below; To watch, click on the viewer:


"The following are examples to demonstrate performance improvement when 
setting the right size of LOB buffers."

"Connect to an Oracle database."
conn := OracleConnection new.
conn username: 'username';
password: 'password';
environment: 'ORACLEDB'.
conn connect.
sess := conn getSession.

"Drop the test table if existed."
sess prepare: 'DROP TABLE TestLob';
	execute;
	answer;
	answer.

"Create a test table."
sess prepare: 'CREATE TABLE TestLob (A CLOB, B BLOB, C INTEGER)';
	execute;
	answer;
	answer.

conn begin.
insertSQL := 'INSERT INTO TestLob (a, b, c) VALUES (?, ?, ?)'.
sess prepare: insertSQL.
clobLength := 2097152. "2MB"
blobLength := 2097152. "2MB"
clob := String new: clobLength withAll: $a.
blob := ByteArray new: blobLength withAll: 1.

sess lobBufferSize: 32768.  "32KB is the default buffer size for read/write Large Objects."

insertTime1 := Time millisecondsToRun: [
		sess bindInput: (Array with: clob with: blob with: 1);
		execute;
		answer;
		answer.
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent for insert when lobBufferSize is 32KB ', insertTime1 asFloat printString.

"Set lobBufferSize to 1MB"
sess lobBufferSize: 1048576.  "1MB"

insertTime2 := Time millisecondsToRun: [
		sess bindInput: (Array with: clob with: blob with: 2);
		execute;
		answer;
		answer.
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent  for insert when lobBufferSize is 1MB: ', insertTime2 asFloat printString.

conn commit.

conn begin.
sess := conn getSession.
selectSQL := 'SELECT * FROM TestLob'.
sess answerLobAsValue. "Get LOBs back as values."
sess defaultDisplayLobSize: 2097152. "We want every byte of the LOBs returned."

sess lobBufferSize: 32768.  "32KB is the default buffer size for read/write Large Objects."
selectTime1 := Time millisecondsToRun: [ | ans1 |
		sess prepare: selectSQL;
		execute.
		ans1 := sess answer.
		ans1 upToEnd.
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent for select when lobBufferSize is 32KB ', selectTime1 asFloat printString.

"Set lobBufferSize to 1MB"
sess lobBufferSize: 1048576.  "1MB"

selectTime2 := Time millisecondsToRun: [ | ans2 | 
		sess prepare: selectSQL;
		execute.
		ans2 := sess answer.
		ans2 upToEnd.
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent  for select when lobBufferSize is 1MB: ', selectTime2 asFloat printString.

conn rollback.


You can download the video directly here. If you like this kind of video, why not subscribe to "Smalltalk Daily"?

Technorati Tags: , , ,

posted by James Robertson

 Share Tweet This

gadgets

Popularity Breeds Malware

April 27, 2010 8:45:37.000

Well, it looks like we're about to find out just how secure (or not) the iPad is - it's big enough that hackers are starting to target it:

Sabina Datcu, technology writer for anti-virus firm BitDefender, wrote in a blog post today that the threat arrives via an unsolicited email urging the recipient to download the latest version of iTunes as a prelude to updating their iPad software.
"A direct link to the download location is conveniently provided. As a proof of cyber crime finesse, the web page the users are directed to is a perfect imitation of the one they would use for legitimate iTunes software downloads," Datcu said.

And we're off to the races. I wonder whether anti-virus apps for the iPad (once non-Apple background apps are allowed in OS 4) are the next step?

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

law

If I Lived in California...

April 27, 2010 13:46:25.000

Is it just me, or does it appear that California law enforcement has hopped all over the Gizmodo/iPhone thing in a way that the average homeowner who spots his stolen stuff at a flea market can only dream about?

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

More Smalltalk

April 27, 2010 15:48:49.000

I just spotted another Smalltalk implementation:

ChocoSmallTalk is a hybrid SmallTalk/Lisp implementation in Common Lisp. The purpose of this project is an embedded SmallTalk in Lisp, known as a meta-circular implementation of lisp as an add-on. As time permits this project should be usable on ARM based processors on handhelds to make a real lisp-smalltalk machine.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

podcasting

Live at 9 PM EDT

April 27, 2010 20:51:42.269

We will be live on justin.tv with John McIntosh and John Maloney - talking about Scratch - at 9 PM (10 minutes from this postingig)

posted by James Robertson

 Share Tweet This

smalltalk

Using Prefetch with Oracle and VisualWorks

April 28, 2010 6:51:07.133

Today's Smalltalk Daily looks at using Oracle's pre-fetch capability with VisualWorks. If you're looking for a particular topic, you can find it with the Media Search application on our site.

The code used is below; To watch, click on the viewer:


"Connect to an Oracle database."
conn := OracleConnection new.
conn username: 'username';
password: 'password';
environment: 'ORACLEDB'.
conn connect.

sess := conn getSession.

"Drop the test table if existed."
sess prepare: 'DROP TABLE TESTTABLE';
	execute;
	answer;
	answer.

"Create a test table."
sess prepare:  'CREATE TABLE TESTTABLE(
	NUMMER int ,
	BEMERKUNG varchar2 (30)
	)';
	execute;
	answer;
	answer.

"Set the number of recrods being inserted."
loopCount := 1000.

"The SQL used to do insert."
sql := 'INSERT INTO TESTTABLE VALUES (?, ?)'.

"Insert: Using array binding."
insertTime2 := Time millisecondsToRun: [
|bindArray numArray stringArray |
    numArray := Array new: loopCount.
    stringArray := Array new: loopCount.
	1 to: loopCount do: [ :i|
		numArray at: i put: i.
		stringArray at: i put: 'test'.
	].			
	bindArray := Array with: numArray with: stringArray.
	sess prepare: sql.
         sess bindInput: bindArray;
		execute;
		answer;
		answer.
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent using array binding: ', insertTime2 asFloat printString.

"Set times to repeat."
loopCount := 1.

"Set the SQL to do the fetch."
sql := 'SELECT * from TESTTABLE'.

"Default value of prefetch rows is 1."
sess setPrefetchRows: 1.

selectTime1 := Time millisecondsToRun: [
	1 to: loopCount do: [ :i|
		sess prepare: sql;
		execute.
		ans := sess answer.
		res := ans upToEnd.
    	].
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent when prefetch rows  is 1: ', selectTime1 asFloat printString.

"Set prefetch rows to 100."
sess setPrefetchRows: 100.

selectTime2 := Time millisecondsToRun: [
	1 to: loopCount do: [ :i|
		sess prepare: sql;
		execute.
		ans := sess answer.
		res := ans upToEnd.
    	].
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent when prefetch rows  is 100: ', selectTime2 asFloat printString.

"Set prefetch rows to 500."
sess setPrefetchRows: 500.

selectTime3 := Time millisecondsToRun: [
	1 to: loopCount do: [ :i|
		sess prepare: sql;
		execute.
		ans := sess answer.
		res := ans upToEnd.
    	].
].

"Print out the miliseconds spent."
Transcript 
	cr; 
	show: 'Time spent when prefetch rows is 500: ', selectTime3 asFloat printString.


You can download the video directly here. If you like this kind of video, why not subscribe to "Smalltalk Daily"?

Technorati Tags: , , ,

posted by James Robertson

 Share Tweet This

social media

Facebook Supporting the iPad

April 28, 2010 7:45:06.000

Looks like my theory on transcoder use in order to support the iPad wasn't off - that's exactly what Facebook has started to do:

As ReadWriteWeb notes, this implementation is not HTML5, which is what YouTube, Vimeo, Brightcove and a host of other video services are starting to support. Instead, Facebook is doing device-based transcoding (something that SaaS companies like Encoding.com provide) and converting the video so that it plays back in a QuickTime-compatible format within the iPad’s native video player.

As time goes by, I expect more sites to move to HTML5 or use Transcoding - and I also expect Flash usage to start dropping. Flash was the video standard for the web, but I think these sorts of moves prove that it's being dethroned....

Technorati Tags: , , ,

posted by James Robertson

 Share Tweet This

browsers

Partying Like it's 2001

April 28, 2010 10:07:23.000

Apparently, corporate IT shops are keeping IE6 alive - during work hours, it's the 4th most common browser in use - after hours, usage drops in half:

"It almost looks like individual Internet users are more tech-advanced at home than the IT departments where they work," said Alden DoRosario, Chitika's CTO, in a statement. "It's crazy to think that people whose job description revolves around employees having secure ways to browse the Web would keep IE6 alive, while these same employees go home to more secure browsers."

It's an amazing thing. The intranet I hit at work is usable in IE7 and 8, but only after I set compatibility mode. We have met the enemy, and he is us...

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

Andreas Raab is Blogging

April 28, 2010 13:07:05.000

Andreas is one of the most active guys doing Squeak development - now he's got a new forum for telling us what he's up to

Technorati Tags:

posted by James Robertson

 Share Tweet This

browsers

The Open Platform Grows

April 28, 2010 14:54:28.000

Android is progressing - Firefox for the Android is coming along:

Early adopters, it’s time to rejoice: Mozilla has officially released the “pre-alpha” of Firefox for Android — aka Fennec. It is available now for testing.

I think we can say "game on". It's going to be an interesting competition between Apple and Google in the mobile space. A lot of people think it'll play like Windows vs. Mac, but - there's a huge differerence now. The App store and iTunes puts Apple in a much better place than they were circa 1990.

Technorati Tags: , , , ,

posted by James Robertson

 Share Tweet This

games

It's the 21st Century

April 28, 2010 16:57:35.000

Spotted in Engadget

The Boy Scouts of America have finally recognized that most important of modern children's pastimes with the creation of a "Video Games" belt loop and pin.

Just in case you had any doubts about what the relevant survival skills were for a modern boy...

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

management

Why Does HP Want Palm?

April 28, 2010 18:00:46.677

I can't figure this one out:

HP and Palm, Inc. (NASDAQ: PALM) today announced that they have entered into a definitive agreement under which HP will purchase Palm, a provider of smartphones powered by the Palm webOS mobile operating system, at a price of $5.70 per share of Palm common stock in cash or an enterprise value of approximately $1.2 billion. The transaction has been approved by the HP and Palm boards of directors.

Why? What on earth is HP going to do with a failing phone business? Didn't they learn anything from the Compaq deal?

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

news

Cue the Terminator Music

April 28, 2010 18:02:16.000

Be Afraid:

If an unmanned Apache gunship makes your boots quake, you're not alone, but you won't truly have reason to fear until 2025. That's when the government estimates half of all Army aircraft will be OPV, and those bots will learn the more deadly behaviors, like swarming.

Thisis a combination of awesome and terrifying, all at the same time. The idea of a swarm of Apache choppers with aAI driven chain guns is sort of nightmare thing.

Technorati Tags: , , ,

posted by James Robertson

 Share Tweet This

smalltalk

Statement Caching with Oracle: Video

April 29, 2010 6:49:34.601

Today's Smalltalk Daily looks at using Statement Caching against Oracle (version 9 and up) with VisualWorks. If you're looking for a particular topic, you can find it with the Media Search application on our site.

The code used is below; To watch, click on the viewer:


"The following are two examples, one uses statement caching, the other does not."

conn := OracleConnection new. 

"Verify whether the loaded OCI supports Statement Caching."
conn supportStatementCaching.

"Set to use statement caching."
conn useStatementCaching: true.

conn environment: 'ORACLEDB'; 
        username: 'username'; 
        connect: 'password'. 

"Get Statement Cache Size, the default is 20."
conn getStatementCacheSize.

"Set Statement Cache to desired size."
conn setStatementCacheSize: 30.

"Verify the new Statement Cache Size."
conn getStatementCacheSize.


t1 := Time millisecondsToRun:[

       " | conn sess ansStrm |"

     100 timesRepeat: [
		sess prepare:  'select * from sys.all_tables where TABLE_NAME=''DUAL'''.
		sess execute.
		ansStrm := sess answer.
		res := ansStrm upToEnd.
	].
].
Transcript 
	cr; 
	show: 'Time spent when using Statement Caching: ', t1 asFloat printString.

conn := OracleConnection new. 

"Set to use statement caching."
conn useStatementCaching: false.
conn environment: 'ORACLEDB'; 
        username: 'username'; 
        connect: 'password'. 

t2 := Time millisecondsToRun:[
       " | conn sess ansStrm |"
     100 timesRepeat: [
		sess prepare:  'select * from sys.all_tables where TABLE_NAME=''DUAL'''.
		sess execute.
		ansStrm := sess answer.
		res := ansStrm upToEnd.
	].

].

Transcript 
	cr; 
	show: 'Time spent without using Statement Caching: ', t2 asFloat printString.


You can download the video directly here. If you like this kind of video, why not subscribe to "Smalltalk Daily"?

Technorati Tags: , , , ,

posted by James Robertson

 Share Tweet This

general

Death By PowerPoint

April 29, 2010 7:48:52.000

If your slides look like this:

Death By PPT

Then you lost your battle, or war, or sale - whatever it was you were attempting. Based on the graphic, it's not entirely clear what was being attempted :)

Technorati Tags:

posted by James Robertson

 Share Tweet This

social media

Back to the Past

April 29, 2010 9:00:28.000

Good luck with this - from a New Jersey Middle School Principal:

"It is time for every single member of the BF Community to take a stand! There is absolutely no reason for any middle school student to be a part of a social networking site! "Let me repeat that - there is absolutely, positively no reason for any middle school student to be a part of a social networking site! None."

Right.... just like there was no reason for his generation to use a phone. When this guy joins the 21st century and reality, he should let the rest of us know.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

Smalltalk in Argentina

April 29, 2010 9:50:23.000

Spotted in Planet Squeak

Alexandre Bergel organizes a new Pharo sprint in Argentina (Buenos Aires or Rosario).

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

itNews

No Climb Down for Apple

April 29, 2010 11:18:13.989

Looks like there won't be a climb down for Apple - Steve Jobs has released a public letter on Flash - and why he doesn't want it on Apple's mobile devices. He went through a whole set of points, building up to this last one: Jobs doesn't want cross platform tools being used to build apps:

Flash is a cross platform development tool. It is not Adobe’s goal to help developers write the best iPhone, iPod and iPad apps. It is their goal to help developers write cross platform apps. And Adobe has been painfully slow to adopt enhancements to Apple’s platforms. For example, although Mac OS X has been shipping for almost 10 years now, Adobe just adopted it fully (Cocoa) two weeks ago when they shipped CS5. Adobe was the last major third party developer to fully adopt Mac OS X.

Maybe there was some kind of compromise possible before this, but - not so much now. Apple has - from the very top - told Adobe (and every other non-native toolset, for that matter) to "go fish". That means the lines are drawn now: there's the bright lines of Apple's app store, and the less well drawn ones for Android. Meanwhile, HP sounds like they intend to invest real money in WebOS, so there's going to be real competition in this space. Game on.

Technorati Tags: , , ,

posted by James Robertson

 Share Tweet This

smalltalk

World of Smalltalk

April 29, 2010 11:52:30.000

Geert Claes has set up a new "World of Smalltalk" site - I'll be setting up a podcast calendar so he can include that.

posted by James Robertson

 Share Tweet This

smalltalk

Smalltalk TV

April 29, 2010 13:56:16.000

Interesting video site for Smalltalk tutorials - the Smalltalk Medicine Show, run by Chris Cunnington. Chris does a new video every week - the Medicine Show has some interesting video up on HttpView2.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

More on Xtreams

April 29, 2010 15:58:14.000

Michael has pushed out some new info on Xtreams - check it out.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

Taking Advantage of the Java Deluge

April 29, 2010 18:38:01.000

Spotted in self halt

For example, to access the Google Spreadsheets APIs and Tools, you need to download the Java client libraries and all its dependencies. The paths to there Jars must be known to the JVM and can be set through JNIPort. For easy deployment, I put together a single jar using an Ant build script

That's pretty cool - there are tons of Java libraries that connect to tons of things and JNIPort opens up that world to Smalltalk. It's all about reuse :)

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

Workspace Variables in ObjectStudio

April 29, 2010 21:40:01.000

You might have noticed that I used the VisualWorks workspace in a few recent ObjectStudio screencasts; now Andreas has addressed the issue that drove me to that:

What are Workspace Variables? Well, a Workspace Variables is just like any other variable, except that it is defined in the context of the current Workspace. This way you can get always the content of the variable, if you use the same Workspace.

That's what's cool about Smalltalk - want a feature? You can add it, whether you're an expert like Andreas or not.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This