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.
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.
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.
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.
"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"?
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).
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.
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 :)
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.
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.
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".
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.
"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"?
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?
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?
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.
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.
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!
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 :)
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 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"?
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
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.
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 :)
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
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.
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?
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?
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.
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.
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....
"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...
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.
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...
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?
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.
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.
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 :)
"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.
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.
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 :)
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.