..the cat came back.. i does tech i does. 2009-11-25T08:30:10Z WordPress http://blog.automated.it/feed/atom/ ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Tivo Return to UK Via Virgin Media]]> http://blog.automated.it/?p=220 2009-11-25T08:30:10Z 2009-11-25T08:06:08Z This would be so awesome…. if I could get Virgin connectivity. This bit saddens me though, unless Virgin start releasing set top boxes for the rest of us.

“Virgin Media will become the exclusive distributor of TiVo services and technology in the United Kingdom. “

The full announcement is here

Virgin Media Selects TiVo For Next Generation TV Platform

PRNewswire
ALVISO, Calif., and LONDON
(NASDAQ-NMS:TIVO)

ALVISO, Calif., and LONDON, Nov. 24 /PRNewswire-FirstCall/ -- TiVo Inc. (NASDAQ: TIVO), a leader in the creation of television services and advertising solutions for digital video recorders (DVRs), and Virgin Media Inc. (NASDAQ: VMED) (LSE: VMED), the UK's leading entertainment and communications company, today announced they have entered into a strategic partnership under which TiVo will develop Virgin Media's next generation TV platform. Under the mutually exclusive agreement, TiVo will develop a converged television and broadband interactive interface to power Virgin Media's next generation, high definition set top boxes. The terms of the deal are not disclosed.

TiVo will become the exclusive provider of middleware and user interface software for Virgin Media's next generation set top boxes. Virgin Media will become the exclusive distributor of TiVo services and technology in the United Kingdom.

Neil Berkett, CEO of Virgin Media said, "TiVo's proven track record of innovation, strength of its patented technology and experience in developing best in class user environments, make it an ideal strategic partner for Virgin Media as we move aggressively to bring our next generation TV service to market. The superiority of our fibre optic network combined with TiVo's capabilities, will allow us to offer consumers the most significantly advanced and compelling TV service available in the UK, and we believe will do to the TV market what Virgin Media has done to the high speed broadband market."

The next generation platform will offer a superior television viewing experience which will allow Virgin Media customers to search and discover content through major advances in video-on-demand integration and broadband video delivery creating the ultimate one-stop-shop for in-home entertainment.

"This deal underscores TiVo's commitment to expanding its global footprint through strategic alliances with leading international media companies to help them deliver the best in-home entertainment experience for consumers," said Tom Rogers, president and CEO of TiVo Inc. "We are very excited about this new distribution relationship with the UK's most advanced pay television provider and are particularly proud to have been selected as Virgin Media's core software partner for its next generation DVR-enabled set top boxes and its next generation non-DVR set top boxes. Virgin Media is a true leader in the world of entertainment and their enthusiasm for building the next generation of pay television is an excellent opportunity to put all of TiVo's innovation to work in a product distributed by a world class partner. We believe this international deal affords us a significant subscriber growth opportunity."

Virgin Media currently anticipates its first TiVo co-branded product in 2010.

About TiVo Inc.

Founded in 1997, TiVo Inc. (NASDAQ: TIVO) developed the first commercially available digital video recorder (DVR). TiVo offers the TiVo service and TiVo DVRs directly to consumers online at www.tivo.com and through third-party retailers. TiVo also distributes its technology and services through solutions tailored for cable, satellite, and broadcasting companies. Since its founding, TiVo has evolved into the ultimate single solution media center by combining its patented DVR technologies and universal cable box capabilities with the ability to aggregate, search, and deliver millions of pieces of broadband, cable, and broadcast content directly to the television. An economical, one-stop-shop for in-home entertainment, TiVo's intuitive functionality and ease of use puts viewers in control by enabling them to effortlessly navigate the best digital entertainment content available through one box, with one remote, and one user interface, delivering the most dynamic user experience on the market today. TiVo also continues to weave itself into the fabric of the media industry by providing interactive advertising solutions and audience research and measurement ratings services to the television industry. www.tivo.com

TiVo, 'TiVo, TV your way.', Season Pass, WishList, TiVoToGo, Stop||Watch, Power||Watch, and the TiVo Logo are trademarks or registered trademarks of TiVo Inc. or its subsidiaries worldwide. © 2009 TiVo Inc. All rights reserved. All other trademarks are the property of their respective owners.

About Virgin Media

With almost 10 million customers, Virgin Media is the UK's first quad-play provider of broadband, TV, phone and mobile.

The company is one of the largest residential broadband providers in the UK, using a unique fibre optic cable network to deliver next generation ultrafast internet access of up to 50Mb to just over half of all homes. Combined with a high speed ADSL service and mobile broadband products, Virgin Media is able to offer broadband internet access to virtually the entire country.

Virgin Media has the UK's most advanced TV on demand service and is the only TV platform to carry BBC iPlayer. It is the second largest provider of pay TV, was the first to launch a high definition TV service and offers a high-specification, HD-ready V+ personal video recorder.

The company operates the most popular virtual mobile network in the UK which, when launched, was the world's first such mobile phone service. It is also one of the largest fixed-line home phone providers in the country.

Virgin Media also owns Virgin Media Television (VMtv) which runs seven entertainment channels, including Virgin1, LIVING, Bravo and Challenge. VMtv is a 50 per cent joint partner with BBC Worldwide in UKTV, which consists of ten channels including Dave, G.O.L.D., Watch and Alibi.

With operations based entirely in the UK, Virgin Media Inc. is listed on the NASDAQ Stock Market (VMED) and the London Stock Exchange (VMED).

For more information, go to www.virginmedia.com

Forward-Looking Statements

This release contains forward-looking statements within the meaning of the Private Securities Litigation Reform Act of 1995. These statements relate to, among other things, the future availability and timing and the expected features and functionality of the TiVo software, technology, and service to be deployed by Virgin Media to its customers and expected future TiVo subscriber growth from Virgin Media. Forward-looking statements generally can be identified by the use of forward- looking terminology such as, "believe," "expect," "may," "will," "intend," "estimate," "continue," or similar expressions or the negative of those terms or expressions. Such statements involve risks and uncertainties, which could cause actual results to vary materially from those expressed in or indicated by the forward-looking statements. Factors that may cause actual results to differ materially include delays in development, competitive service offerings and lack of market acceptance, as well as the other potential factors described under "Risk Factors" in each company's public reports filed with the Securities and Exchange Commission. Each company cautions you not to place undue reliance on forward-looking statements, which reflect an analysis only and speak only as of the date hereof. Each company disclaims any obligation to update these forward-looking statements.

SOURCE: TiVo Inc.

Web site: http://www.tivo.com/




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Another Android Security Update]]> http://blog.automated.it/?p=219 2009-07-18T07:19:37Z 2009-07-18T07:19:37Z I woke this morning to a new security update notification Android - beep beepon my T-mobile G1. The update can be downloaded directly from Google’s servers if you don’t yet have it. The build number changes from CRB43 to CRC1. The update itself is only 2mb but there seems to be little information as to what it fixes, however, the largest patch is the recovery image at 1.4mb (line 43). I’ve extracted the update and below is a file listing of the contents for those that are interested. Incidentally my T-mobile G1 is actually running with an O2 SIM and still got the OTA update. The same should be the case if you’re using any other mobile network.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
 
drwxr-xr-x    7 andypowell  staff   238B 18 Jul 07:56 .
drwxr-xr-x+ 128 andypowell  staff   4.3K 18 Jul 07:55 ..
drwxr-xr-x    6 andypowell  staff   204B 18 Jul 07:55 META-INF
-rw-r--r--    1 andypowell  staff   206K  1 Jan  2009 applypatch
-rw-r--r--    1 andypowell  staff     0B 18 Jul 07:56 flist
drwxr-xr-x    6 andypowell  staff   204B 18 Jul 07:55 patch
drwxr-xr-x    3 andypowell  staff   102B 18 Jul 07:55 system
 
./META-INF:
total 56
drwxr-xr-x  6 andypowell  staff   204B 18 Jul 07:55 .
drwxr-xr-x  7 andypowell  staff   238B 18 Jul 07:56 ..
-rw-r--r--  1 andypowell  staff   1.7K 20 Aug  2008 CERT.RSA
-rw-r--r--  1 andypowell  staff    12K 20 Aug  2008 CERT.SF
-rw-r--r--  1 andypowell  staff    12K 20 Aug  2008 MANIFEST.MF
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 com
 
./META-INF/com:
total 0
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 .
drwxr-xr-x  6 andypowell  staff   204B 18 Jul 07:55 ..
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 google
 
./META-INF/com/google:
total 0
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 .
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 ..
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 android
 
./META-INF/com/google/android:
total 96
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 .
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 ..
-rw-r--r--  1 andypowell  staff    48K  1 Jan  2009 update-script
 
./patch:
total 2832
drwxr-xr-x  6 andypowell  staff   204B 18 Jul 07:55 .
drwxr-xr-x  7 andypowell  staff   238B 18 Jul 07:56 ..
-rw-r--r--  1 andypowell  staff   966B  1 Jan  2009 boot.img.p
-rw-r--r--  1 andypowell  staff   1.1K  1 Jan  2009 recovery.img.p0
-rw-r--r--  1 andypowell  staff   1.4M  1 Jan  2009 recovery.img.p1
drwxr-xr-x  8 andypowell  staff   272B 18 Jul 07:55 system
 
./patch/system:
total 8
drwxr-xr-x   8 andypowell  staff   272B 18 Jul 07:55 .
drwxr-xr-x   6 andypowell  staff   204B 18 Jul 07:55 ..
drwxr-xr-x  93 andypowell  staff   3.1K 18 Jul 07:55 app
drwxr-xr-x   3 andypowell  staff   102B 18 Jul 07:55 bin
-rw-r--r--   1 andypowell  staff   246B  1 Jan  2009 build.prop.p
drwxr-xr-x   3 andypowell  staff   102B 18 Jul 07:55 etc
drwxr-xr-x  37 andypowell  staff   1.2K 18 Jul 07:55 framework
drwxr-xr-x   4 andypowell  staff   136B 18 Jul 07:55 lib
 
./patch/system/app:
total 976
drwxr-xr-x  93 andypowell  staff   3.1K 18 Jul 07:55 .
drwxr-xr-x   8 andypowell  staff   272B 18 Jul 07:55 ..
-rw-r--r--   1 andypowell  staff   3.9K  1 Jan  2009 AlarmClock.apk.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 AlarmClock.odex.p
-rw-r--r--   1 andypowell  staff   7.4K  1 Jan  2009 Browser.apk.p
-rw-r--r--   1 andypowell  staff   208B  1 Jan  2009 Browser.odex.p
-rw-r--r--   1 andypowell  staff   157B  1 Jan  2009 BugReport.apk.p
-rw-r--r--   1 andypowell  staff   199B  1 Jan  2009 BugReport.odex.p
-rw-r--r--   1 andypowell  staff   2.2K  1 Jan  2009 Calculator.apk.p
-rw-r--r--   1 andypowell  staff   202B  1 Jan  2009 Calculator.odex.p
-rw-r--r--   1 andypowell  staff   5.7K  1 Jan  2009 Calendar.apk.p
-rw-r--r--   1 andypowell  staff   202B  1 Jan  2009 Calendar.odex.p
-rw-r--r--   1 andypowell  staff   1.8K  1 Jan  2009 CalendarProvider.apk.p
-rw-r--r--   1 andypowell  staff   203B  1 Jan  2009 CalendarProvider.odex.p
-rw-r--r--   1 andypowell  staff    11K  1 Jan  2009 Camera.apk.p
-rw-r--r--   1 andypowell  staff   204B  1 Jan  2009 Camera.odex.p
-rw-r--r--   1 andypowell  staff    10K  1 Jan  2009 Contacts.apk.p
-rw-r--r--   1 andypowell  staff   199B  1 Jan  2009 Contacts.odex.p
-rw-r--r--   1 andypowell  staff   174B  1 Jan  2009 DownloadProvider.apk.p
-rw-r--r--   1 andypowell  staff   199B  1 Jan  2009 DownloadProvider.odex.p
-rw-r--r--   1 andypowell  staff   165B  1 Jan  2009 DrmProvider.apk.p
-rw-r--r--   1 andypowell  staff   199B  1 Jan  2009 DrmProvider.odex.p
-rw-r--r--   1 andypowell  staff   6.8K  1 Jan  2009 Email.apk.p
-rw-r--r--   1 andypowell  staff   213B  1 Jan  2009 Email.odex.p
-rw-r--r--   1 andypowell  staff   2.8K  1 Jan  2009 FieldTest.apk.p
-rw-r--r--   1 andypowell  staff   9.2K  1 Jan  2009 Gmail.apk.p
-rw-r--r--   1 andypowell  staff   205B  1 Jan  2009 Gmail.odex.p
-rw-r--r--   1 andypowell  staff   1.2K  1 Jan  2009 GmailProvider.apk.p
-rw-r--r--   1 andypowell  staff   205B  1 Jan  2009 GmailProvider.odex.p
-rw-r--r--   1 andypowell  staff   1.4K  1 Jan  2009 GoogleApps.apk.p
-rw-r--r--   1 andypowell  staff   202B  1 Jan  2009 GoogleApps.odex.p
-rw-r--r--   1 andypowell  staff   1.2K  1 Jan  2009 GoogleContactsProvider.apk.p
-rw-r--r--   1 andypowell  staff   202B  1 Jan  2009 GoogleContactsProvider.odex.p
-rw-r--r--   1 andypowell  staff   162B  1 Jan  2009 GooglePartnerSetup.apk.p
-rw-r--r--   1 andypowell  staff   199B  1 Jan  2009 GooglePartnerSetup.odex.p
-rw-r--r--   1 andypowell  staff   1.3K  1 Jan  2009 GoogleSearch.apk.p
-rw-r--r--   1 andypowell  staff   199B  1 Jan  2009 GoogleSearch.odex.p
-rw-r--r--   1 andypowell  staff   170B  1 Jan  2009 GoogleSettingsProvider.apk.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 GoogleSettingsProvider.odex.p
-rw-r--r--   1 andypowell  staff   2.0K  1 Jan  2009 GoogleSubscribedFeedsProvider.apk.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 GoogleSubscribedFeedsProvider.odex.p
-rw-r--r--   1 andypowell  staff   157B  1 Jan  2009 HTMLViewer.apk.p
-rw-r--r--   1 andypowell  staff   197B  1 Jan  2009 HTMLViewer.odex.p
-rw-r--r--   1 andypowell  staff   2.0K  1 Jan  2009 ImProvider.apk.p
-rw-r--r--   1 andypowell  staff   202B  1 Jan  2009 ImProvider.odex.p
-rw-r--r--   1 andypowell  staff   5.5K  1 Jan  2009 LatinIME.apk.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 LatinIME.odex.p
-rw-r--r--   1 andypowell  staff   8.1K  1 Jan  2009 Launcher.apk.p
-rw-r--r--   1 andypowell  staff   203B  1 Jan  2009 Launcher.odex.p
-rw-r--r--   1 andypowell  staff    16K  1 Jan  2009 Maps.apk.p
-rw-r--r--   1 andypowell  staff   1.4K  1 Jan  2009 MediaProvider.apk.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 MediaProvider.odex.p
-rw-r--r--   1 andypowell  staff   2.7K  1 Jan  2009 MediaUploader.apk.p
-rw-r--r--   1 andypowell  staff   7.1K  1 Jan  2009 Mms.apk.p
-rw-r--r--   1 andypowell  staff   211B  1 Jan  2009 Mms.odex.p
-rw-r--r--   1 andypowell  staff   7.3K  1 Jan  2009 Music.apk.p
-rw-r--r--   1 andypowell  staff   206B  1 Jan  2009 Music.odex.p
-rw-r--r--   1 andypowell  staff   159B  1 Jan  2009 NetworkLocation.apk.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 NetworkLocation.odex.p
-rw-r--r--   1 andypowell  staff   1.8K  1 Jan  2009 PackageInstaller.apk.p
-rw-r--r--   1 andypowell  staff   201B  1 Jan  2009 PackageInstaller.odex.p
-rw-r--r--   1 andypowell  staff    11K  1 Jan  2009 Phone.apk.p
-rw-r--r--   1 andypowell  staff   203B  1 Jan  2009 Phone.odex.p
-rw-r--r--   1 andypowell  staff    21K  1 Jan  2009 Settings.apk.p
-rw-r--r--   1 andypowell  staff   203B  1 Jan  2009 Settings.odex.p
-rw-r--r--   1 andypowell  staff   168B  1 Jan  2009 SettingsProvider.apk.p
-rw-r--r--   1 andypowell  staff   198B  1 Jan  2009 SettingsProvider.odex.p
-rw-r--r--   1 andypowell  staff    17K  1 Jan  2009 SetupWizard.apk.p
-rw-r--r--   1 andypowell  staff   199B  1 Jan  2009 SetupWizard.odex.p
-rw-r--r--   1 andypowell  staff   1.9K  1 Jan  2009 SoundRecorder.apk.p
-rw-r--r--   1 andypowell  staff   197B  1 Jan  2009 SoundRecorder.odex.p
-rw-r--r--   1 andypowell  staff   1.9K  1 Jan  2009 Stk.apk.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 Stk.odex.p
-rw-r--r--   1 andypowell  staff   2.0K  1 Jan  2009 Street.apk.p
-rw-r--r--   1 andypowell  staff   203B  1 Jan  2009 Street.odex.p
-rw-r--r--   1 andypowell  staff   1.7K  1 Jan  2009 SystemUpdater.apk.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 SystemUpdater.odex.p
-rw-r--r--   1 andypowell  staff   6.8K  1 Jan  2009 Talk.apk.p
-rw-r--r--   1 andypowell  staff   208B  1 Jan  2009 Talk.odex.p
-rw-r--r--   1 andypowell  staff   1.2K  1 Jan  2009 TelephonyProvider.apk.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 TelephonyProvider.odex.p
-rw-r--r--   1 andypowell  staff   159B  1 Jan  2009 UserDictionaryProvider.apk.p
-rw-r--r--   1 andypowell  staff   195B  1 Jan  2009 UserDictionaryProvider.odex.p
-rw-r--r--   1 andypowell  staff   7.2K  1 Jan  2009 Vending.apk.p
-rw-r--r--   1 andypowell  staff   208B  1 Jan  2009 Vending.odex.p
-rw-r--r--   1 andypowell  staff   1.3K  1 Jan  2009 Webnwalk.apk.p
-rw-r--r--   1 andypowell  staff   196B  1 Jan  2009 Webnwalk.odex.p
-rw-r--r--   1 andypowell  staff   4.7K  1 Jan  2009 YouTube.apk.p
-rw-r--r--   1 andypowell  staff   208B  1 Jan  2009 YouTube.odex.p
-rw-r--r--   1 andypowell  staff   157B  1 Jan  2009 checkin.apk.p
-rw-r--r--   1 andypowell  staff   201B  1 Jan  2009 checkin.odex.p
-rw-r--r--   1 andypowell  staff   1.7K  1 Jan  2009 gtalkservice.apk.p
-rw-r--r--   1 andypowell  staff   208B  1 Jan  2009 gtalkservice.odex.p
 
./patch/system/bin:
total 8
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 .
drwxr-xr-x  8 andypowell  staff   272B 18 Jul 07:55 ..
-rw-r--r--  1 andypowell  staff   165B  1 Jan  2009 debuggerd.p
 
./patch/system/etc:
total 0
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 .
drwxr-xr-x  8 andypowell  staff   272B 18 Jul 07:55 ..
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 security
 
./patch/system/etc/security:
total 8
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 .
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 ..
-rw-r--r--  1 andypowell  staff   171B  1 Jan  2009 otacerts.zip.p
 
./patch/system/framework:
total 592
drwxr-xr-x  37 andypowell  staff   1.2K 18 Jul 07:55 .
drwxr-xr-x   8 andypowell  staff   272B 18 Jul 07:55 ..
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 am.jar.p
-rw-r--r--   1 andypowell  staff   195B  1 Jan  2009 am.odex.p
-rw-r--r--   1 andypowell  staff   176B  1 Jan  2009 android.awt.jar.p
-rw-r--r--   1 andypowell  staff   206B  1 Jan  2009 android.awt.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 android.policy.jar.p
-rw-r--r--   1 andypowell  staff   203B  1 Jan  2009 android.policy.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 android.test.runner.jar.p
-rw-r--r--   1 andypowell  staff   199B  1 Jan  2009 android.test.runner.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 com.android.im.plugin.jar.p
-rw-r--r--   1 andypowell  staff   199B  1 Jan  2009 com.android.im.plugin.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 com.google.android.gtalkservice.jar.p
-rw-r--r--   1 andypowell  staff   202B  1 Jan  2009 com.google.android.gtalkservice.odex.p
-rw-r--r--   1 andypowell  staff   153B  1 Jan  2009 com.google.android.maps.jar.p
-rw-r--r--   1 andypowell  staff   205B  1 Jan  2009 com.google.android.maps.odex.p
-rw-r--r--   1 andypowell  staff   285B  1 Jan  2009 core.jar.p
-rw-r--r--   1 andypowell  staff   165B  1 Jan  2009 core.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 ext.jar.p
-rw-r--r--   1 andypowell  staff   166B  1 Jan  2009 ext.odex.p
-rw-r--r--   1 andypowell  staff    62K  1 Jan  2009 framework-res.apk.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 framework-tests.jar.p
-rw-r--r--   1 andypowell  staff   201B  1 Jan  2009 framework-tests.odex.p
-rw-r--r--   1 andypowell  staff   166B  1 Jan  2009 framework.jar.p
-rw-r--r--   1 andypowell  staff    97K  1 Jan  2009 framework.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 ime.jar.p
-rw-r--r--   1 andypowell  staff   195B  1 Jan  2009 ime.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 input.jar.p
-rw-r--r--   1 andypowell  staff   195B  1 Jan  2009 input.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 monkey.jar.p
-rw-r--r--   1 andypowell  staff   200B  1 Jan  2009 monkey.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 pm.jar.p
-rw-r--r--   1 andypowell  staff   195B  1 Jan  2009 pm.odex.p
-rw-r--r--   1 andypowell  staff   154B  1 Jan  2009 services.jar.p
-rw-r--r--   1 andypowell  staff   211B  1 Jan  2009 services.odex.p
-rw-r--r--   1 andypowell  staff   152B  1 Jan  2009 svc.jar.p
-rw-r--r--   1 andypowell  staff   198B  1 Jan  2009 svc.odex.p
 
./patch/system/lib:
total 16
drwxr-xr-x  4 andypowell  staff   136B 18 Jul 07:55 .
drwxr-xr-x  8 andypowell  staff   272B 18 Jul 07:55 ..
-rw-r--r--  1 andypowell  staff   3.3K  1 Jan  2009 libcameraservice.so.p
-rw-r--r--  1 andypowell  staff   2.7K  1 Jan  2009 libmediaplayerservice.so.p
 
./system:
total 0
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 .
drwxr-xr-x  7 andypowell  staff   238B 18 Jul 07:56 ..
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 etc
 
./system/etc:
total 104
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 .
drwxr-xr-x  3 andypowell  staff   102B 18 Jul 07:55 ..
-rw-r--r--  1 andypowell  staff    49K  1 Jan  2009 NOTICE.html.gz

Android CRC1

 




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
2
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Pictures from Computex 2009]]> http://blog.automated.it/?p=218 2009-06-05T08:25:47Z 2009-06-02T10:51:56Z Two of my colleagues are in Taipei again attending Computex 2009 this week and the news is that there appear to be a whole lot of netbooks on view. As ever Nick is uploading pictures to Picasa so you can get some idea of what’s about. As the days progress Nick will update the images, but it is a slow, slow process. Keep your eyes peeled for the rest of the week – and make sure you’re not looking at last years’ pictures by mistake ;) . Some of you might notice that some things like the Asus Skype phone have been around for a little while. In fact it has been around since September of last year.

Update 1: More pictures are available.

Update 2: Pictures from day 3 are available now.

Update 3: Pictures from day 4 are available now. There are also some shots of Taipei




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Pull That Squidgy iPhone application]]> http://blog.automated.it/?p=217 2009-06-03T10:33:29Z 2009-06-02T08:34:56Z Yesterday a friend was ranting away as usual about how stuff was always broken and in passing mentioned the iPhone application Squidgy, an application that allows you to control your Squeezbox(es). There are apparently two problems with the application. The first is that it crashes quite a bit and doesn’t really seem to work very well, not particularly good for an application costing £5 ($8 / 6 EUR). The second is a little more serious. You see EMCC Software Ltd, the company that released the application, went into administration on 12th March 2009. The application is still on sale in the iTunes store despite the fact that EMCC are not providing support and their website consists of a statement that they are in administration and who the acting agents are. Perhaps it would be wise to find a different application to control your Squeezebox(es).




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
7
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Extra Cupcake, Still No Latitude]]> http://blog.automated.it/?p=216 2009-05-24T22:00:35Z 2009-05-22T09:12:12Z After getting Android Cupcake about a month ago and running it happily, this morning I was notified of another update that was a security fix. I have been unable to find anything that mentions what the fix was for, I guess it’s a little early for that information to be floating around. I’ve got my log from the G1 and will be taking a look to see if there’s anything interesting there.

Shame that this fix didn’t include making Latitude available for UK users – Google seems to be coming up with excuses that don’t really wash for that. Considering Latitude is available to pretty much every other smart phone out there and that it’s even on the G2.

If you want to get a copy of the update, you can download it direct from Google’s servers

Update:
I’ve extracted the update and here’s a list of the contents, the largest patch is in Maps (at 291KB) and the second largest is in framework.odex (at 271KB), then “MediaUploader” which is likely to be the YouTube and Picasa uploading service (at 166KB).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
 
total 3496
drwxr-xr-x  6 andypowell  staff   204B 23 May 11:24 META-INF
-rwxr-xr-x  1 andypowell  staff   141K 20 May 10:03 applypatch
-rwxr-xr-x  1 andypowell  staff   1.6M 20 May 10:03 boot.img
drwxr-xr-x  4 andypowell  staff   136B 23 May 11:25 patch
drwxr-xr-x  3 andypowell  staff   102B 23 May 11:24 system
 
./META-INF:
total 56
-rwxr-xr-x  1 andypowell  staff   1.7K 20 Aug  2008 CERT.RSA
-rwxr-xr-x  1 andypowell  staff    12K 20 Aug  2008 CERT.SF
-rwxr-xr-x  1 andypowell  staff    12K 20 Aug  2008 MANIFEST.MF
drwxr-xr-x  3 andypowell  staff   102B 23 May 11:24 com
 
./META-INF/com:
total 0
drwxr-xr-x  3 andypowell  staff   102B 23 May 11:24 google
 
./META-INF/com/google:
total 0
drwxr-xr-x  3 andypowell  staff   102B 23 May 11:24 android
 
./META-INF/com/google/android:
total 96
-rwxr-xr-x  1 andypowell  staff    47K 20 May 10:03 update-script
 
./patch:
total 0
drwxr-xr-x  9 andypowell  staff   306B 23 May 11:25 system
 
./patch/system:
total 8
drwxr-xr-x  93 andypowell  staff   3.1K 23 May 11:24 app
drwxr-xr-x   3 andypowell  staff   102B 23 May 11:24 bin
-rwxr-xr-x   1 andypowell  staff   236B 20 May 10:03 build.prop.p
drwxr-xr-x   6 andypowell  staff   204B 23 May 11:26 etc
drwxr-xr-x  37 andypowell  staff   1.2K 23 May 11:24 framework
drwxr-xr-x   5 andypowell  staff   170B 23 May 11:25 lib
 
./patch/system/app:
total 1896
-rwxr-xr-x  1 andypowell  staff   324B 20 May 10:02 AlarmClock.apk.p
-rwxr-xr-x  1 andypowell  staff   262B 20 May 10:02 AlarmClock.odex.p
-rwxr-xr-x  1 andypowell  staff   582B 20 May 10:02 Browser.apk.p
-rwxr-xr-x  1 andypowell  staff   312B 20 May 10:02 Browser.odex.p
-rwxr-xr-x  1 andypowell  staff   156B 20 May 10:02 BugReport.apk.p
-rwxr-xr-x  1 andypowell  staff   266B 20 May 10:02 BugReport.odex.p
-rwxr-xr-x  1 andypowell  staff   223B 20 May 10:02 Calculator.apk.p
-rwxr-xr-x  1 andypowell  staff   266B 20 May 10:02 Calculator.odex.p
-rwxr-xr-x  1 andypowell  staff   402B 20 May 10:02 Calendar.apk.p
-rwxr-xr-x  1 andypowell  staff   262B 20 May 10:03 Calendar.odex.p
-rwxr-xr-x  1 andypowell  staff   205B 20 May 10:03 CalendarProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   263B 20 May 10:03 CalendarProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   566B 20 May 10:03 Camera.apk.p
-rwxr-xr-x  1 andypowell  staff   268B 20 May 10:03 Camera.odex.p
-rwxr-xr-x  1 andypowell  staff    11K 20 May 10:03 Contacts.apk.p
-rwxr-xr-x  1 andypowell  staff   260B 20 May 10:03 Contacts.odex.p
-rwxr-xr-x  1 andypowell  staff   174B 20 May 10:03 DownloadProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   263B 20 May 10:03 DownloadProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   165B 20 May 10:03 DrmProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   257B 20 May 10:03 DrmProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   455B 20 May 10:03 Email.apk.p
-rwxr-xr-x  1 andypowell  staff   270B 20 May 10:03 Email.odex.p
-rwxr-xr-x  1 andypowell  staff   1.6K 20 May 10:03 FieldTest.apk.p
-rwxr-xr-x  1 andypowell  staff   631B 20 May 10:03 Gmail.apk.p
-rwxr-xr-x  1 andypowell  staff   267B 20 May 10:03 Gmail.odex.p
-rwxr-xr-x  1 andypowell  staff   176B 20 May 10:03 GmailProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   263B 20 May 10:03 GmailProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   191B 20 May 10:03 GoogleApps.apk.p
-rwxr-xr-x  1 andypowell  staff   264B 20 May 10:03 GoogleApps.odex.p
-rwxr-xr-x  1 andypowell  staff   170B 20 May 10:03 GoogleContactsProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   264B 20 May 10:03 GoogleContactsProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   162B 20 May 10:03 GooglePartnerSetup.apk.p
-rwxr-xr-x  1 andypowell  staff   261B 20 May 10:03 GooglePartnerSetup.odex.p
-rwxr-xr-x  1 andypowell  staff   174B 20 May 10:03 GoogleSearch.apk.p
-rwxr-xr-x  1 andypowell  staff   258B 20 May 10:03 GoogleSearch.odex.p
-rwxr-xr-x  1 andypowell  staff   172B 20 May 10:03 GoogleSettingsProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   266B 20 May 10:03 GoogleSettingsProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   206B 20 May 10:03 GoogleSubscribedFeedsProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   265B 20 May 10:03 GoogleSubscribedFeedsProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   154B 20 May 10:03 HTMLViewer.apk.p
-rwxr-xr-x  1 andypowell  staff   258B 20 May 10:03 HTMLViewer.odex.p
-rwxr-xr-x  1 andypowell  staff   208B 20 May 10:03 ImProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   263B 20 May 10:03 ImProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   443B 20 May 10:03 LatinIME.apk.p
-rwxr-xr-x  1 andypowell  staff   264B 20 May 10:03 LatinIME.odex.p
-rwxr-xr-x  1 andypowell  staff    37K 20 May 10:03 Launcher.apk.p
-rwxr-xr-x  1 andypowell  staff   3.3K 20 May 10:03 Launcher.odex.p
-rwxr-xr-x  1 andypowell  staff   290K 20 May 10:03 Maps.apk.p
-rwxr-xr-x  1 andypowell  staff   180B 20 May 10:03 MediaProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   264B 20 May 10:03 MediaProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   165K 20 May 10:03 MediaUploader.apk.p
-rwxr-xr-x  1 andypowell  staff   459B 20 May 10:03 Mms.apk.p
-rwxr-xr-x  1 andypowell  staff   263B 20 May 10:03 Mms.odex.p
-rwxr-xr-x  1 andypowell  staff   7.6K 20 May 10:03 Music.apk.p
-rwxr-xr-x  1 andypowell  staff   265B 20 May 10:03 Music.odex.p
-rwxr-xr-x  1 andypowell  staff   155B 20 May 10:03 NetworkLocation.apk.p
-rwxr-xr-x  1 andypowell  staff   1.9K 20 May 10:03 NetworkLocation.odex.p
-rwxr-xr-x  1 andypowell  staff   198B 20 May 10:03 PackageInstaller.apk.p
-rwxr-xr-x  1 andypowell  staff   264B 20 May 10:03 PackageInstaller.odex.p
-rwxr-xr-x  1 andypowell  staff    29K 20 May 10:03 Phone.apk.p
-rwxr-xr-x  1 andypowell  staff    23K 20 May 10:03 Phone.odex.p
-rwxr-xr-x  1 andypowell  staff    23K 20 May 10:03 Settings.apk.p
-rwxr-xr-x  1 andypowell  staff   266B 20 May 10:03 Settings.odex.p
-rwxr-xr-x  1 andypowell  staff   168B 20 May 10:03 SettingsProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   262B 20 May 10:03 SettingsProvider.odex.p
-rwxr-xr-x  1 andypowell  staff    18K 20 May 10:03 SetupWizard.apk.p
-rwxr-xr-x  1 andypowell  staff   264B 20 May 10:03 SetupWizard.odex.p
-rwxr-xr-x  1 andypowell  staff   215B 20 May 10:03 SoundRecorder.apk.p
-rwxr-xr-x  1 andypowell  staff   261B 20 May 10:03 SoundRecorder.odex.p
-rwxr-xr-x  1 andypowell  staff   206B 20 May 10:03 Stk.apk.p
-rwxr-xr-x  1 andypowell  staff   262B 20 May 10:03 Stk.odex.p
-rwxr-xr-x  1 andypowell  staff   212B 20 May 10:03 Street.apk.p
-rwxr-xr-x  1 andypowell  staff   265B 20 May 10:03 Street.odex.p
-rwxr-xr-x  1 andypowell  staff   195B 20 May 10:03 SystemUpdater.apk.p
-rwxr-xr-x  1 andypowell  staff   263B 20 May 10:03 SystemUpdater.odex.p
-rwxr-xr-x  1 andypowell  staff   450B 20 May 10:03 Talk.apk.p
-rwxr-xr-x  1 andypowell  staff   265B 20 May 10:03 Talk.odex.p
-rwxr-xr-x  1 andypowell  staff   170B 20 May 10:03 TelephonyProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   263B 20 May 10:03 TelephonyProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   155B 20 May 10:03 UserDictionaryProvider.apk.p
-rwxr-xr-x  1 andypowell  staff   252B 20 May 10:03 UserDictionaryProvider.odex.p
-rwxr-xr-x  1 andypowell  staff   421B 20 May 10:03 Vending.apk.p
-rwxr-xr-x  1 andypowell  staff   269B 20 May 10:03 Vending.odex.p
-rwxr-xr-x  1 andypowell  staff   174B 20 May 10:03 Webnwalk.apk.p
-rwxr-xr-x  1 andypowell  staff   255B 20 May 10:03 Webnwalk.odex.p
-rwxr-xr-x  1 andypowell  staff   359B 20 May 10:03 YouTube.apk.p
-rwxr-xr-x  1 andypowell  staff   264B 20 May 10:03 YouTube.odex.p
-rwxr-xr-x  1 andypowell  staff   155B 20 May 10:03 checkin.apk.p
-rwxr-xr-x  1 andypowell  staff   264B 20 May 10:03 checkin.odex.p
-rwxr-xr-x  1 andypowell  staff   196B 20 May 10:03 gtalkservice.apk.p
-rwxr-xr-x  1 andypowell  staff   261B 20 May 10:03 gtalkservice.odex.p
 
./patch/system/bin:
total 8
-rwxr-xr-x  1 andypowell  staff   160B 20 May 10:03 debuggerd.p
 
./patch/system/etc:
total 96
-rwxr-xr-x  1 andypowell  staff    42K 20 May 10:03 NOTICE.html.gz.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 contributors.html.p
drwxr-xr-x  3 andypowell  staff   102B 23 May 11:24 security
 
./patch/system/etc/security:
total 8
-rwxr-xr-x@ 1 andypowell  staff   175B 20 May 10:03 otacerts.zip.p
 
./patch/system/framework:
total 1040
-rwxr-xr-x  1 andypowell  staff   155B 20 May 10:03 am.jar.p
-rwxr-xr-x  1 andypowell  staff   257B 20 May 10:03 am.odex.p
-rwxr-xr-x  1 andypowell  staff   176B 20 May 10:03 android.awt.jar.p
-rwxr-xr-x  1 andypowell  staff   270B 20 May 10:03 android.awt.odex.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 android.policy.jar.p
-rwxr-xr-x  1 andypowell  staff   234B 20 May 10:03 android.policy.odex.p
-rwxr-xr-x  1 andypowell  staff   155B 20 May 10:03 android.test.runner.jar.p
-rwxr-xr-x  1 andypowell  staff   6.9K 20 May 10:03 android.test.runner.odex.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 com.android.im.plugin.jar.p
-rwxr-xr-x  1 andypowell  staff   264B 20 May 10:03 com.android.im.plugin.odex.p
-rwxr-xr-x  1 andypowell  staff   152B 20 May 10:03 com.google.android.gtalkservice.jar.p
-rwxr-xr-x  1 andypowell  staff   266B 20 May 10:03 com.google.android.gtalkservice.odex.p
-rwxr-xr-x  1 andypowell  staff   155B 20 May 10:03 com.google.android.maps.jar.p
-rwxr-xr-x  1 andypowell  staff   263B 20 May 10:03 com.google.android.maps.odex.p
-rwxr-xr-x  1 andypowell  staff   285B 20 May 10:03 core.jar.p
-rwxr-xr-x  1 andypowell  staff    46K 20 May 10:03 core.odex.p
-rwxr-xr-x  1 andypowell  staff   155B 20 May 10:03 ext.jar.p
-rwxr-xr-x  1 andypowell  staff   211B 20 May 10:03 ext.odex.p
-rwxr-xr-x  1 andypowell  staff    63K 20 May 10:03 framework-res.apk.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 framework-tests.jar.p
-rwxr-xr-x  1 andypowell  staff   262B 20 May 10:03 framework-tests.odex.p
-rwxr-xr-x  1 andypowell  staff   168B 20 May 10:03 framework.jar.p
-rwxr-xr-x  1 andypowell  staff   270K 20 May 10:03 framework.odex.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 ime.jar.p
-rwxr-xr-x  1 andypowell  staff   252B 20 May 10:03 ime.odex.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 input.jar.p
-rwxr-xr-x  1 andypowell  staff   249B 20 May 10:03 input.odex.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 monkey.jar.p
-rwxr-xr-x  1 andypowell  staff   267B 20 May 10:03 monkey.odex.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 pm.jar.p
-rwxr-xr-x  1 andypowell  staff   263B 20 May 10:03 pm.odex.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 services.jar.p
-rwxr-xr-x  1 andypowell  staff   4.6K 20 May 10:03 services.odex.p
-rwxr-xr-x  1 andypowell  staff   153B 20 May 10:03 svc.jar.p
-rwxr-xr-x  1 andypowell  staff   255B 20 May 10:03 svc.odex.p
 
./patch/system/lib:
total 16
-rwxr-xr-x  1 andypowell  staff   4.7K 20 May 10:03 libicudata.so.p
drwxr-xr-x  3 andypowell  staff   102B 23 May 11:24 modules
 
./patch/system/lib/modules:
total 8
-rwxr-xr-x  1 andypowell  staff   618B 20 May 10:03 wlan.ko.p
 
./system:
total 3672
-rwxr-xr-x  1 andypowell  staff   1.8M 20 May 10:03 recovery.img

Cupcake CRB43




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[G1 Assault on battery]]> http://blog.automated.it/?p=215 2009-05-10T22:20:11Z 2009-04-25T22:27:44Z I know I’m late to the party but a few days ago I received a small package containing a T-Mobile G1 phone running Android. The first thing I did was go to unlock-now to get myself a SIM unlock code. After submitting my details and paying up the 17.50 EUR it was just a case of waiting for the email, about 3 hours in my case. The email details G1everything you need to know when unlocking, particularly useful is the info on setting up a new APN which you’ll need to do if you aren’t using T-Mobile as your carrier. My O2 PAYG SIM from my iPhone worked fine and soon the G1 was syncing happily with gmail. One of the things that struck me about the G1 was all the negative comment on it’s size and feel that I’d read in various blogs and reviews. Personally I couldn’t see and issue with either the thickness of the device or the the look and feel of it and I wasn’t alone in that. I really don’t see what all the ‘complaints’ were about.

One of the things I had heard though, that I can confirm, is the poor battery life. Without installing any extra software the only real control over the G1’s power management seems limited to turning off the GPS or WiFi. However, there is a ray of light. After installing Power Manager things improved immensely but it still wasn’t enough. The solution I settled on was to buy an extended, 2400mAh, battery which came with a replacement back. The battery is physically 2 or 3 times the thickness of the original, which is why you get a replacement and the end result is a device that’s about as thick as a NOKIA N95.

So why didn’t I wait for a G2? Simple really. The G1 has a wonderful physical keyboard. I really can’t stand on screen keyboards, perhaps I’m a minority.

Of course the other reason that I wont be getting a G2 is that Vodafone are capping both daily and monthly usage when you sign up – 15mb / day and 500mb a month. Perhaps everyone at Vodafone still uses a 6310? Maybe they just don’t like the G2 or Android. Who knows?

Update (Sunday 10th May) : G1 Running cupcake has been running for 3 days with the extended battery and no charging!




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Everywhere you go, always take the weather with you]]> http://blog.automated.it/?p=214 2009-03-21T20:36:26Z 2009-03-21T18:11:03Z Originally I wasn’t going to blog about this but I finally gave in so here it is. This isTracking weather another one of those things that you really just can’t do with your iPhone unless you’ve jailbroken it.

Having the weather on your lock screen is nothing particularly new, there are enough Winterboard themes that allow you to do this. However, this is slightly different. I’ve never really understood why you’d only ever want to know what the weather was like in your home town. What does it matter? That is of course unless you never actually go anywhere. Why not have the weather for where you are? Yes I know you could just look out of the window or actually go outside but that’s beside the point. What I wanted was to have the weather for where I actually am right now. So, as part of my iPhone tracking system I added the ability for the weather to follow me too. The implementation is rather simple.

Since I’m already sending my location and retrieving the wallpaper image I’m also getting an override (overRide.js) for my weather configureMe.js. The overRide.js contains a single line, the location – as per the configureMe.js format:

var locale="Lelystad,NL"

So each time the wallpaper is updated, so is this file. One of the key things you need to do to accomplish this for yourself is what is called reverse geocoding. That is, getting the name of your location from your GPS coordinates.

Now, the best way I’ve found of doing this so far is by using geonames this is a fantastic site that allows you to do the reverse geocoding without even blinking. For example, calling geonames using the url

http://ws.geonames.org/findNearbyPlaceName?lat=50.455&lng=-3

would result in the following xml being returned

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <geonames>
    <geoname>
        <name>Seaton</name>
        <lat>50.7049382166946</lat>
        <lng>-3.06999206542969</lng>
        <geonameId>2638278</geonameId>
        <countryCode>GB</countryCode>
        <countryName>United Kingdom</countryName>
        <fcl>P</fcl>
        <fcode>PPL</fcode>
        <distance>28.2265</distance>
    </geoname>
  </geonames>
</xml>

This gives you pretty much everything you could possibly want and for free too. Note the inclusion of your distance between your coordinates and the the coordinates returned (nearest named location).

Now I know what you’re thinking. Why would I retrieve a file with the data in it from my server, why not parse the xml in the javascript on the lock screen. You’re right, I could and you, possibly, should. I don’t because I keep all my GPS data in a database on that server so I update the database with the actual locations too. I don’t parse the xml on the iPhone because I don’t need to.

Of course I haven’t yet tested being in some obscure location that the weather provider doesn’t know about. Incidentally, geonames is so freaking good that, if you want to, you can download a daily dump of the database.

Lock screen weatherLock screen weather, later that day




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Pachube dials without the heartache]]> http://blog.automated.it/?p=209 2009-03-06T16:09:57Z 2009-03-05T16:51:15Z Some people might not want to have their own web server and php installs just to use their Pachube feed to show a dial or two so let me introduce to you the simple way of getting this all to work. Go over to my Pachube app page and follow the on screen instructions. You’ll end up with some text to copy and paste into your web page. All done for you all lovely and simple.

Update Added the ability to de-wiggle the value needle, and then fixed a bug in the wiggle.




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
1
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Dynamic Dials Disclosed]]> http://blog.automated.it/?p=208 2009-03-05T12:02:58Z 2009-03-04T18:08:44Z There’s been quite a bit of interest in my electricity usage dial like the one below so I’m going to go through how I did it with you. The first thing you’ll need is the XML/SWF Gauge and a web server with PHP. It’s possible to do this on a web server running Perl or usage dialASP but you’ll need to do that yourself. For this example I’m also using a Pachube account to grab the data. My feed, the one for my gauge on the top right, is 1498 but you will want to create your own account and start updating your own data. Using the gauge is as simple as a simple thing.

There are a number of things we need to get this simple display working,

  • 1. The .SWF file
  • 2. An gauge.html page to show the gauge
  • 3. A data fetch PHP script

1. The .SWF file

We’ll come to that at the very end of the article.


2. The gauge.html file.

Open your favourite text editor and cut and paste the following into it.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<HTML>
<BODY bgcolor="#FFFFFF">
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
        codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
        WIDTH="200"
        HEIGHT="100"
        id="gauge">
<PARAM NAME="movie" VALUE="/data/gauge.swf?xml_source=/getdata.php" />
<PARAM NAME="quality" VALUE="high" />
<param name="wmode" value="transparent">
<param name="allowScriptAccess" value="sameDomain" />
<EMBED src="/data/gauge.swf?xml_source=/getdata.php"
        quality="high"
        wmode="transparent"
        WIDTH="200"
        HEIGHT="100"
        NAME="gauge"
        allowScriptAccess="sameDomain"
        swLiveConnect="true"
        TYPE="application/x-shockwave-flash"
        PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
</EMBED>
</OBJECT>
</BODY>
</HTML>

Save the file as gauge.html.


3. A data fetch PHP script.

Start a new document and cut and paste the following. Before you save the file as getdata.php make sure you change the $myFeedId and $myFeedStream values to match your Pachube feed.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?
$myFeedId=1498;
$myFeedStream=1;
$myURLPath='/getdata.php';
 
$url = "http://www.pachube.com/feeds/$myFeedId/datastreams/$myFeedStream/history.csv";
 
$now = gmdate('Y-m-d').'T'.gmdate('H:i:s').'Z';
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , false );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false );
curl_setopt($ch, CURLOPT_HEADER, 0);
 
ob_start();
$result = curl_exec($ch);
$resultStr = ob_get_contents();
ob_end_clean();
 
curl_close($ch);
 
if ($result) {
	$readings = split(",",$resultStr);
	$last=(($readings[count($readings)-1])/40);
	$prev=-90+(($readings[count($readings)-2])/40);
	$mval = (max($readings)/40);
	$tval=-90;
 
	header("Content-Type: text/xml\n\n");
?>
	<gauge>
		<update url='<?=$myURLPath;?>?m=<?=$mval?>' delay='909' delay_type='1' timeout='30' retry='9' /> 
<?
		RadialTicks( 100, 75, 60, 15, -90, -45, 12, 3, "33ff33" );
       		RadialTicks( 100, 75, 60, 15, -45, 0, 12, 3, "efe415" );
       	 	RadialTicks( 100, 75, 60, 15, 0, 45, 12, 3, "ef8b15" );
        	RadialTicks( 100, 75, 60, 15, 45, 94, 12, 3, "ff3333" );
?>
      		<text x='40' y='50' width='220' align='left' size='10' color='000000' alpha='20'><?=$now;?></text>
		<text x='150' y='100' width='120' align='center' size='24' color='000000' alpha='100'>Watts (W)</text>
 
       		<rotate x='100' y='75' start='-90' span='<?=$mval?>' step='3' shake_frequency='0' shake_span='3' shadow_alpha='15'>
	                <polygon fill_color='ff0000' fill_alpha='90' line_alpha='0'>
               		        <point x='97' y='5' />
       	        	        <point x='101' y='5' />
                        	<point x='102' y='63' />
               	        	<point x='96' y='63' />
	                </polygon>
			<rect x='94' y='87' width='10' height='10' fill_color='ff0000' fill_alpha='90' line_alpha='50' />
	        </rotate>
 
		<rotate x='100' y='75' start='<?=$prev?>' span='<?=$last?>' step='1' shake_frequency='95' shake_span='3' shadow_alpha='15'>
			<polygon fill_color='000000' fill_alpha='90' line_alpha='0'>
				<point x='100' y='10' />
				<point x='101' y='10' />
				<point x='101' y='63' />
				<point x='96' y='63' />
			</polygon>
			<rect x='94' y='87' width='10' height='20' fill_color='000000' fill_alpha='90' line_alpha='50' />
		</rotate>
		<circle x='100' y='75' radius='14' fill_color='000000' fill_alpha='50' line_alpha='0' />
	</gauge><?
}
 
function RadialTicks ( $x_center, $y_center, $radius,  $length, $start_angle, $end_angle, $ticks_count, $thickness, $color ) {
 
	for ( $i = $start_angle; $i <= $end_angle; $i += ($end_angle-$start_angle)/($ticks_count-1) ) {
 
		echo "		<line x1='".($x_center+sin(deg2rad($i))*$radius).
			"' y1='".($y_center-cos(deg2rad($i))*$radius)."' x2='"
			.($x_center+sin(deg2rad($i))*($radius+$length))."' y2='"
			.($y_center-cos(deg2rad($i))*($radius+$length))
			."' thickness='".$thickness."' color='".$color."' />\n";
	}
}
 
?>

Copy the .swf file that you downloaded from the XML/SWF Gauge site and put it on your web server along with your gauge.html and getdata.php files. Point your browser at your website and the gauge.html page and bask in your glorious meter display.

I should point out that this is using the historic feed data from pachube which has a 15 minute lag. The reason for this is simply because it does not require authentication with the pachube servers. If you want to use your live feed you will need to change the url used and the management of the data returned as well as adding

1
curl_setopt($curl, CURLOPT_USERPWD, "username:password");

just before the ob_start(); on line 16. Replace username:password with your actual username and password, don’t forget the colon in between. When changing the url you might want to use the secure https rather than just http.




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Gratifying Graphic Gizmos]]> http://blog.automated.it/?p=207 2009-03-04T14:05:42Z 2009-03-01T08:47:37Z Yesterday the Current Cost unit actually got installed for real, something I was dreading. Dreading not because it was a difficult thing to do but simply because I expected the figure it would show would be terrible. Guess what, it wasn’t. In fact it seemed to be fairly close to that of other people who are monitoring theirs. The initial figure of 371 Watts didn’t last too long once the dishwasher and oven came on and an interesting spike appeared when the hob went on for the kettle.




Continuing with my sudden graphing fetish, as well as using a Current Cost unit I have dotted a number of little devices I’ve built with Xbee and Arduinos to measure temperatures (and other things) around the house. More information on those will come out later, but it’s an interesting project too.

Since I have the data for those it’d be rude not to graph them too, there’s a sample in the thumbnails below.

Not content with graphing them locally I picked up a Pachube invite and started graphing data there too. The process is simple really and as you can see on the right hand side of this page under ‘Graphy Stuff’, graph images can be embedded in your own or other sites. The really interesting thing about Pachube is that you can share your data with people who may be interested. The data they get to see is delayed by approximately 15 minutes. If you output your data in the eeml format then you can specify your own tags too.

Electricity Usage GraphTemperature in the garage




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Current Cost Capers]]> http://blog.automated.it/?p=205 2009-02-18T09:22:04Z 2009-02-13T09:38:06Z My Unbioctium Current Cost CC128 arrived on Thursday and although I’m not going to actually get a chance in install it for a couple of weeks I did have a play. The first thing to do once it was all up and paired with the base was get the output into my laptop. To do this you will need to buy the data cable or make up your own…

At first I tried to be smart with reading from the serial port, as that seems to be a bit unreliable I fell back on the old tried and tested method. I also decided from the outset that I was going to parse the XML that the the CC128 spat out rather than just filter the bits needed with regexp.

You will need to make sure you have the perl modules Device::SerialPort and XML::Simple installed. If you don’t have them then as root on your linux box do the following:

perl -MCPAN -e shell

then install each module, for example Device::SerialPort,

install Device::SerialPort

and here’s the script which is also available for download.Updated to make it more reliable.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/perl
 
use Device::SerialPort qw( :PARAM :STAT 0.07 );
use XML::Simple;
 
$port = "/dev/ttyUSB0";
 
$ob = Device::SerialPort->new($port) or die "Can not open port $port\n";
$ob->baudrate(57600);
$ob->write_settings;
$ob->close;
 
# using XML::Parser speeds xml parsing up lots!
$backend = 'XML::Parser';
$ENV{XML_SIMPLE_PREFERRED_PARSER} = $backend;
 
# we use this to only do 1 iteration (or not)
$escape=0; 
 
open(SERIAL, "<$port");
 
while($escape <= 0) {
	sleep(2);
 
	while ($line = <SERIAL>) {
 
		# for debug
		#print $line;
 
		$isValid = (index($line,"<msg>") != -1);
 
 
		if (!$isValid) { last; }
 
		print "This data is".($isValid==1?"":" not")." valid\n";
 
		# force XML::Simple to see this as a string not as a file
		# since XML::Simple is stupid and needs to be shot
 
		$line = "<fakeTag>$line</fakeTag>";
 
		$isHistoric = (index($line,"<hist>") != -1);
 
		$nref = XMLin($line,forcearray => 0);
 
		$ref = $nref->{msg};
 
		# just for reference, show if data is historic or not
 
		print "This data is".($isHistoric==1?"":" not")." historic\n";
 
 
		if (!$isHistoric) {
 
	        	$dsb        = 0 + $ref->{dsb};
        		$recordTime = $ref->{time};
        		$ccname     = $ref->{src};
        		$temp       = $ref->{tmpr};
			$ch1watts   = 0 + $ref->{ch1}->{watts};
			$sensor     = 0 + $ref->{sensor};
			$id         = $ref->{id};
			$type       = 0 + $ref->{type};
 
 
			if (defined $ref->{whatever}) {
				# do something based on whatever
 
			}
 
        		print "This $ccname was born $dsb days ago as at $recordTime - temperature is: $temp :: Current Watts in use on channel 1 are $ch1watts :: Sensor is $sensor, with an id of $id and a type of $type\n";
 
			# for cacti you'd probably just want to output CC_Temperature:$temp CC_Watts1:$ch1watts 
 
			# insert data into db
 
			# if you want to exit after a 'good' iteration set this to 1 otherwise set it to 0 (or don't change it to 1 :) );
			$escape=1;
		} else {
			#process or ignore historic data
		}
	}
}
 
close(SERIAL);

and here’s some example output, remember that I haven’t actually connected the loop around my electrical cable as yet.

This data is not historic
This CC128-v0.11 was born 1 days ago as at 21:16:44 - temperature is: 23.7 :: Watts used on channel 1 are 0 :: Sensor is 0, with an id of 02835 and a type of 1

Historic data isn’t processed at the moment but it would be trivial to do. I’m not processing it since I don’t really see the point if you’re going to store the results in a database.




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
2
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[One Wireduino made easy]]> http://blog.automated.it/?p=204 2009-06-10T08:52:55Z 2009-02-04T21:46:25Z For a very long time now I’ve been playing with the Arduino boards but it wasn’t until I recently discovered some DS1820 1-wire chips in my parts box that I started even thinking about 1-wire stuff. Connecting 1-wire devices to the Arduino is, well, amazingly simple. Using the sample circuit from the datasheet we can see the connections are few and far between.

Please note that this is the corrected circuit, previously the VDD was not tied to ground. While the circuit would work it would only give reliable results on very short runs. This circuit allows longer runs to the sensor.

Coding this up is also made extremely easy with the OneWire library. I’ve put together a little application below that will read all of the 1-wire devices on a bus. If you press L in the Arduino IDE serial monitor it will list all the 1-Wire device id’s and if you press T you’ll get the id and temperature reading.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
Simple 1-wire device reading
 
Pass T over serial to get temperatures
Pass L to list 1-wire devices
 
*/
#include <OneWire.h>
#include <stdio.h>
 
#define CONVERT     0x44
#define READSCRATCH 0xBE
#define SKIP_ROM    0xCC
#define MATCH_ROM   0x55
 
OneWire  ds(10);  // The DS18S20 is connected on pin 10
int ledPin = 13;  // flash an led on 13 - we all like flashing lights
 
void setup(void) {
  // initialize inputs/outputs
  // start serial port
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);  //we'll use the led to output a heartbeat
}
 
void loop(void) {
  int incomingByte = 0;
  if (Serial.available() &gt; 0) {
		// read the incoming byte:
		incomingByte = Serial.read();
 
		// say what you got:
		//Serial.print("I received: ");
		//Serial.println(incomingByte, DEC);
                if (incomingByte == 84) {
                  getStuff();
                  Serial.print("\r\n^");
                } else if (incomingByte == 76) {
                   listDevices();
                }
	}
 
}
 
void listDevices(void) {
 
  byte addr[8];
 
  ds.reset_search();
 
  while(ds.search(addr)) {
 
     digitalWrite(ledPin, HIGH);   // sets the LED on
 
     if ( OneWire::crc8( addr, 7) == addr[7])   {
         if ( addr[0] == 0x10) {
            // Make sure it is a DS18S20 device
            char buffer[512];
            sprintf(buffer,"Id:%02x%02x%02x%02x%02x%02x%02x%02x\r\n",
                       addr[0], addr[1], addr[2], addr[3], addr[4],
                       addr[5], addr[6], addr[7]);
              Serial.print(buffer);
          }
      }
  }
 
    Serial.print('^');
}
 
void getStuff(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  char buff[15];
  float real_temp;
 
  float temp_count;
  float read_temp; 
 
  ds.reset_search();
 
  while(ds.search(addr))  {
 
     digitalWrite(ledPin, HIGH);   // sets the LED on
 
    if ( OneWire::crc8( addr, 7) != addr[7])  { // Check CRC is valid
        Serial.print("CRC is not valid");
    }
 
    if ( addr[0] != 0x10) {   // Make sure it is a DS18x20 device
      Serial.print("Device is not a DS18x20 family device.");
    }
 
    ds.reset();    // Reset device
    ds.select(addr);     // Select device
    ds.write(CONVERT,1);   // Issue Convert command 
 
    delay(1000);     // maybe 750ms is enough, maybe not
    digitalWrite(ledPin, LOW);    // sets the LED off
 
    present = ds.reset();  // Reset device
    ds.select(addr);  // Select device
    ds.write(READSCRATCH);  // Read Scratchpad
 
    for ( i = 0; i &lt; 9; i++) {  // we need 9 bytes
          data[i] = ds.read();
    }
 
    if(OneWire::crc8( data, 8) == data[8]) {  // Check CRC is valid
 
      // CRC is ok
      // Divide the temperature by 2 - note the » and
      // « need to be replaced with double < and >
      // wordpress kills the server when you try to 
      // save otherwise.
      read_temp=((data[1]«8) | data[0]) » 1 ;
     // Convert to real temperature
      temp_count=float(data[7] - data[6])/(float)data[7];
      real_temp = ((float)read_temp-0.25)+temp_count;
 
       // Convert float to ascii
      tempToAscii(real_temp,buff);
      char buffer[512];
      sprintf(buffer,"%02x%02x%02x%02x%02x%02x%02x%02x %s\r\n",
                  addr[0], addr[1], addr[2], addr[3], addr[4],
                  addr[5], addr[6], addr[7], buff);
 
      Serial.print(buffer);
 
    } else    {
       Serial.println("CRC Failed");
    }
  }    
 
void tempToAscii(double temp, char *buff) {
  int frac;
  //get three numbers to the right of the decimal point
  frac=(unsigned int)(temp*1000)%1000;
  itoa((int)temp,buff,10);
 
  strcat(buff,".");
  //put the frac after the decimal
  itoa(frac,&amp;buff[strlen(buff)],10);
}

There’s also a copy of the .pde file that you can download if you feel more inclined. It’s not an exact copy, I removed the commented out xml for the above version. It’s worth pointing out that this circuit is using what is called parasitic power, which means your cable run should be shortish. If you want to use an external power supply then pin 3 (VDD) on the DS18S20 should go to your external supply. This would allow for much longer runs of cable. Below is an example graph generated by cacti with 2 DS1820’s connected the the arduino. As you can see the temperatures aren’t exactly the same but this is to be expected since the accuracy of the DS1820 is +/- 0.5 ° C

The breaks in the graph were caused my me removing the USB plug from the PC it was connected to so that I could make some minor alterations to the circuit.

Josh asked how I was getting the input for Cacti, here’s the perl script I use

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl
 
$output = `echo -en "T" >>/dev/ttyUSB0 && cat /dev/ttyUSB0`;
 
@lines = split(/\r\n/,$output);
$t=1;
 
foreach $line (@lines) {
 
       @spl = split(/\s+/,$line);
 
	$lc = @spl;
 
	if ($lc gt 1) {	
                $node=$spl[0];
		$val=$spl[1];
 
		print "Temperature_$node:$val ";
	}
$t++;
}

This outputs Temperature_x:n where x is the 1-Wire id and n is the temperature. It could probably do with tidying up and if you wanted to you could pass the 1-Wire id to the script to and only output the temperature for that particular 1-Wire device. A copy of the exported Cacti template can be downloaded, I’m hoping that you just need to import that into your Cacti after placing the script in the scripts directory. Just remember, under linux, if you unplug and replug in your Arduino you may need to set the tty port speed to 9600 (or whatever you put in your Serial.begin(); ). You can use the following command for that;

1
2
3
 
 
stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts

Make sure that ttyUSB0 is what your Arduino is connected to first. If not you will need to change it in the perl script and on the line above.




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
11
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Wordpress tweetbacking]]> http://blog.automated.it/?p=201 2009-01-12T22:09:11Z 2009-01-12T22:09:11Z Tweetbacking, it sounds like some sort of deviant sport or something but isn’t. The idea behind Tweetbacks, similar to pingbacks, is that you can see who is commenting (tweeting) about your blog on Twitter. There are a number of plugins available for use in the end I went for Joost de Valk’s version. While it worked nicely I decided that I really wanted to approve the tweets before they appeared in my blog so I modified the code a little. The diff is available for download. It allows you to enable and disable the automatic approval of Tweets form the plugin’s admin page. Hopefully Joost will add this option in the official version sometime.

Tweetbacks are saved in the comments table and can be displayed however you like for example, in my comment loop I have:

 
<?php 
if (strtolower($comment->comment_type) == 'tweetback') {
   $avatarurl = str_replace(
       "twitter:",
       "http://s3.amazonaws.com/twitter_production/profile_images/",
       $comment->comment_author_email
       );
       echo "<img align=middle"
              ." src='$avatarurl' border=none"
              ." width=40 height=40 alt=''>";
}
?>

A word or two of caution about the plugin. Personally I’ve removed the bit.ly url shortening link parsing because it just didn’t work properly – I ended up with bogus tweetbacks until I did. The other issue is with the date saving from the tweetback, it doesn’t work properly either giving dates in the 1970’s!!!




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
4
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[What the UK VAT Reduction really means]]> http://blog.automated.it/?p=200 2008-12-01T11:24:16Z 2008-12-01T09:13:54Z The new UK VAT rate that came in today is probably going to affect consumers in many ways. Unfortunately, as you can see from the snapshot images below of the expansys website, I fear that this solution, as predicted in our office, will become widespread. I’d also expect in 13 months for them to take the opportunity to increase their prices.

Pricing for LG Viewty pre VAT change

Expansys Pricing for LG Viewty pre VAT change

Expansys Pricing for LG Viewty post VAT change

Expansys Pricing for LG Viewty post VAT change

Thankfully some online retailers, like LinITX.com where I work, haven’t pulled this sort of trick on customers.




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
4
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[iPhone proximity sensing IS in the API]]> http://blog.automated.it/?p=198 2008-11-28T12:32:58Z 2008-11-28T11:43:04Z There seems to have been a lot of misinformation flying about of late. With Google releasing a new version of their app incorporating proximity sensing, some blogs have claimed this is breaking AppStore rules by using undocumented hidden (non public) API calls. I’m here to tell you that’s just rubbish. All that has happened is the people reporting it haven’t even bothered to check. Want to prove this to yourself?

1. Start Xcode and pick one of the templates.
2. Load up the AppDelegate code and skip to ‘applicationDidFinishLaunching’.
3. Type ‘application.’ (note the full stop after the word application)
4. Hit escape and you’ll get a list, scroll down to items starting with P
5. Oh look there it is…

For those without Xcode here’s a picture.

Oh, that must be the non-public public api...

Oh, that must be the non-public public api...

For those that want to see the what the documentation says


proximitySensingEnabled

A Boolean value that determines whether proximity sensing is enabled.

@property(nonatomic, getter=isProximitySensingEnabled) BOOL proximitySensingEnabled

Discussion
YES if proximity sensing is enabled; otherwise NO. Enabling proximity sensing tells iPhone OS that it may need to blank the screen if the user’s face is near it. Proximity sensing is disabled by default.

Availability

Available in iPhone OS 2.0 and later.

Declared In
UIApplication.h

Unfortuneately once some people grab hold of false information no facts will get in their way. Anyone that knows me will tell you that I’m really not fond of either Google or Apple, but let’s just get stuff right shall we.


Update:
I’ve had some discussion on irc and it was felt that I should point out that proximityStateChanged is used and following some additonal chatter on IRC with UncleBob who pointed out that “It’s not private in the OBjC sense just the Apple documented SDK sense. ” he then went on to say “the whole thing is definately a peanut-gallery cockfest” which sums it all up really.




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Concept iPhone Application]]> http://blog.automated.it/?p=196 2008-11-16T16:44:32Z 2008-11-11T20:35:39Z I’ve been messing about trying to learn how to write iPhone apps. There’s a lot to take in but at the moment I’ve managed a concept application. A little shop (of horrors ;) . At the moment it simply reads data from an sqlite database and then displays information on the product. The buy now button currently just jumps to the product url at Linitx.com.

Update: Added a screenshot when rotated. The iPhone SDK handles the rotation automatically, all you need to do is specify which parts of which objects move or resize. All that can be done from Interface Builder. Easy as pie. Also note the changed title bar colour, in keeping with LinITX, and the title text. The shop title (LinITX) and shop base product URL are read from a plist file. I suppose they could be read from the sqlite db but I am experimenting so learning how to read a plist file is useful too.

Update 2: Spent ages last night trying to work out why some of the text descriptions for products came out of the database as null. Discovered that when importing the data file it wasn’t using UTF8 encoding, which is apparently all sqlite deals with. Loading up the source data file into TextEdit under OSX and saving it as UTF8 then reimporting solved the problem. I also modified how things are displayed. The image and text are inserted into a UIWebView so are now scaleable by the user. The images are also base64 encoded and in the database. This increases the database size but means the application can still be used offline. Before none of the pictures would display if there was no network connectivity.

Update 3: Added the ability to search the list. The search bar appears when the search button is pressed and hides again when the search is complete.

Product ListProduct detailProduct detail rotatedAdditional toolbarSearchSearching for DDR2 memory




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
3
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Meet JO Black]]> http://blog.automated.it/?p=195 2008-11-01T19:30:32Z 2008-11-01T14:37:24Z Having the IMIV in the car makes driving around much more fun but up until recently I had my iPhone and prior to that my iPod Classic flapping about on the passenger seat. It worked but wasn’t particularly elegant and of course the moment I had a passenger in the
car there was a problem. This week I finally broke and decided to sort out the problem. To be honest I was looking for something cheap and functional. A quick search lead me to the JO BLACK from x castro design. This is a rather simple frame with what I can only describe as a bulldog clip on the back. The JO works rather simply. You squeeze the clip to open it and slip it onto one of your car air vents. Your iPod or iPhone or other device slips into it, gently held by the neoprene arms. The arms can be bent to allow more or less grip, so, although it seems to be an iPhone or iPod holder it isn’t just that, it can safely hold pretty much any handheld device – within reason of course. The fact that it has an open base means I can have the IMIV cable connected with no issues.

The JO is available with the neoprene in one of 7 colours, the base frame is always black but the colour range is varied enough for most tastes.

If you’re looking for a passive holder for your phone or music player then for the money the JO series suit. One thing I did notice when looking at the pricing on their site compared to Amazon was that although the x castro site and Amazon prices matched (after shipping), there seemed to be no way to select the free shipping for the UK. The 3 options in the dropdown box all added more to the price.

Front viewFront viewSide viewAngle sideWith battery




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Free World Dialup not so free]]> http://blog.automated.it/?p=194 2008-10-31T09:27:07Z 2008-10-30T12:32:04Z I know it’s late but I really hate to write this post. I really, really do. It saddens me deeply. Free World Dialup the pioneering VoIP service has gone ‘pay only’. For a $30 yearly charge you can now get exactly what you used to have.

Sad but true

For me Free World Dialup represented what should have been happening in the world of VoIP. While everyone else acted like money grabbing whores Free World Dialup weren’t out to make a fast buck. It was the ultimate social network – Where else could you phone complete strangers for help and end up being good friends. Community members offered support to those just getting started with VoIP.  It was a wonderful time. Sadly this is no longer true.

The unfortunate thing about Free World Dialup now charging is that there are so many other services that offer the same thing for nothing. To me it seems a rather odd decision particularly as it was held in such high regard buy its users and supporters.

Jeff Pulver has commented on this on his blog but I still find it difficult to understand. As far as I am concerned Jeff is one of those totally awesome people you sometimes get to meet. He’s like an ideas factory. I have nothing but respect for him but this is almost like finding out your favourite uncle dresses up as a woman and heads down the docks at the weekend.

So I guess it’s goodbye Free World Dialup…




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
1
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Fullscreen iPhone WebApps]]> http://blog.automated.it/?p=193 2008-10-22T11:31:00Z 2008-10-19T16:44:59Z Web applications on the iPhone have always been second class citizens without access to the really interesting features. To add insult to injury web applications lost a large chunk of screen real estate to the top and bottom Safari toolbars.

Well, now they don’t need to. For users with firmware 2.1, if you add the following lines to the <head> section of your web application page then, when someone adds your web application to their home screen and then uses it all they will see is the standard bar showing carrier name, signal and battery level. As ever the pictures should make it much clearer. Notice that there is no address bar or lower toolbar at all, even when scrolling.

<meta name="viewport" content="width=device-width; 
 initial-scale=1.0; maximum-scale=1.0; user-scalable=1;" />
 
<meta name="apple-mobile-web-app-capable" content="yes" />
 
<meta names="apple-mobile-web-app-status-bar-style" 
 content="black-translucent" />

One thing I should point out is that, if you already have a link to a particular web application on your home screen, you will need to delete it and recreate it after the above lines have been added.

Web app opened from Home ScreenWeb app scrolling down - no address barWeb app scrolling up




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
1
ScaredyCat / Andy Powell http://www.automated.it <![CDATA[Tesco DVD Player Region Hack]]> http://blog.automated.it/?p=192 2008-10-22T11:31:23Z 2008-10-11T11:28:50Z In the UK Tesco are selling a sub £20 DVD player – the Tecknika DVD 1033. It looks cheap, it looks nasty but it works very well indeed and what’s more you can make it region free. I really don’t know how they build these things so cheaply and I do worry that small children might have been involved. Anyway, here’s how you make your Tecknika DVD 1033 region free.

1. Power On

2. Open the tray

3. Press the ’setup’ key

4. Press the fast forward key ( ‘>>’ )

5. Type 9735 on the keypad

6. In the top right corner you will see a ‘2′ this is your current region. Use the left and right arrow keys to change the region. If you make this ‘0′ (zero) your player will be region free.

7. Press ’setup’ to exit the setup menu.

8. Play your DVD’s :)

This is a sticky fix, meaning that if you power the player off and then back on it will still be set to the region (or freeness) prior to the power off.




[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon] [Twitter]

]]>
0