Jan 24 2012

My take on RIM

Tag: Uncategorizedadmin @ 2:40 pm

RIM is obviously in deep trouble. It’s stock price has fallen 75% in the last year and it just lost its dual CEO’s.

The value in RIM has always been twofold:

  • its technology: back end, phone OS, buy especially secure email and messaging.
  • its customer base

Its technology has failed to keep pace with innovation in iPhone and Android phones, and now in tablets. Its user base has been steadily eroded. I don’t know by how much.

Going forward, RIM’s value depends on how well it can retain its customer base, and how well it can dramatically improve its technology. Retaining its customer base relies on improving the technology, so in the end it is all about the technology.

There are two possible routes to take with the technology:

  • Follow the example of Nokia and others and ditch its proprietary OS in favour of Android or Windows OS. I don’t think that this way it retain anywhere near the revenue it needs to support its market cap. In addition, it would be a lot of work to integrate RIM’s proprietary network into another OS – it’s deep stuff.
  • Double down on its own technology. I think this is the way to go.

So, my advice to RIM is: double down on your technology. Use some cash or sell some assets to hire a wonder-team of developers and product people.


Jan 12 2012

Jetlag

Tag: Uncategorizedadmin @ 10:29 am

Jetlag should not be allowed.


Nov 08 2011

git

Tag: Uncategorizedadmin @ 10:41 am

I started using version control using SCCS – a single user version control system. Then I moved to CVS, which almost made me through a CRT monitor out of a 3rd floor window. Then came SVN and that was better. Now I am using git. Since git’s version control model is distributed, it is taking bit of getting used to.

I found this succinct tutorial, which nicely explains commits, branches, staging etc.

Today I need to add a branch to a project, but I have already made some uncommitted changes. I need the stash.

That is all.


Nov 08 2011

Not abusing UIViewControllers

Tag: Uncategorizedadmin @ 10:37 am

I having been mulling for a while an interesting conundrum. I have some code, which is designed to work as a library. It makes no assumptions about any view controller which is active when it is used, and so directly adds things to the view using addSubview: on the application’s main window (view). The initial problem with this approach is that the newly added views have no view controller.

I fixed that by defining a view controller with an appropriate view, but then how to get that displayed. Without any assumptions about the context in which the code is used, the best I could do was instantiate the view controller and then add its view as a subview of the application’s main window as before. An immediate undesirable I discovered was that the new view controller’s viewDidLoad: was never called.

After some fishing around, I found a few useful articles:

Abusing UIViewControllers – presents the case that you should NOT do what I initially do above, force the new view controller’s view into the view hierarchy.

Writing high-quality view controller containers – discusses the same problem and how to write custom view controllers which manage multiple view controllers, like the iOS SplitViewController.

The solution I am going to adopt now is to require the code calling the library to provide a view controller onto which the new view can be pushed using pushModalViewController:


Jul 03 2011

Caching 3D Printing Production for Economies of Scale

Tag: Uncategorizedadmin @ 10:52 am
3D printed object made with netfabb
Image by Creative Tools licensed under Creative Commons Attribution 2.0 Generic (CC BY 2.0).

In a recent piece in Locus Magazine, Cory Doctorow discusses the economic and copyright consequences of a manufacturing model in which 3D printing enables production runs of zero, tens, thousands or millions of objects. The article mentions that the limited production capacity of 3D printing companies makes large production runs troublesome, but there is another problem with the economics of this kind of mass production: 3D printing is still quite expensive, and there are not significant economies of scale. The main cost driver for 3D printing is probably machine time, and printing a thousand model rabbits requires a thousand times as much machine time as printing one.

In large scale search – and many other internet services and computational domains – have a similar problem: computing a result can be quite expensive. Perhaps 3D printing services should adopt the same solution used in search (computation): caching. In caching, the results for commonly submitted queries (computations) are stored in a cache. Future results for a cached query can then be generated cheaply by returning copies of the cached result rather than rerunning the expensive computation needed to generate a result from scratch. Without such caching, search and other large scale internet services would be very significantly (3x-10x?) more expensive.

Maybe companies like Shapeways which operate a 3D printing service could use caching to significantly reduce costs? When a sufficient number of orders for an object have been made – or are anticipated – they print a mold, and produce future copies from the mold(s) rather than on the 3D printers. Just as in computational world, such caching could be performed entirely behind the scenes, and just as in the computational world, it could significantly reduce the cost producing commonly requested objects.

Casting is already a limited part of the 3D production process – on Shapeways, silver objects are exclusively produced using lost-wax casting.

As a footnote, perhaps what draws me to both 3D printing and computer science is the shared computational aspect. One of my current 3D projects concerns an object which is entirely procedurally (computationally) generated. So far that has required about two weeks of Erlang programming for a custom extension to Wings3d.


Apr 29 2011

Debugging Erlang code

Tag: Uncategorizedadmin @ 10:08 am

Compile module to be debugged with:

erlc +debug_info test_spikes.erl

then follow the rest of the instructions in:
Erlang manual debugger chapter


Apr 27 2011

Vertex and face data structures in Wings3d

Tag: Uncategorizedadmin @ 10:51 am

I could not find this information clearly stated anywhere else, so for the record, I will describe the Wings3d vertex and face data structures here. I did find some useful information about datastructures in this post on How To Write Wings3D Plugins (for beginners), but it was not complete. Note, I am NOT describing the winged edge data structure. That is something else which Wings3d uses internally to represent geometry data.

  • vertex: a triple of real numbers, {X, Y, Z}. When building a shape in a plugin, the vertices of the shape are enumerated in a list.
  • face: a list of indexes of vertices in a vertex list. Vertexes must be enumerated ANTICLOCKWISE when viewed from OUTSIDE the constructed shape

A good concrete example is given by the code for constructing a cube:

Faces = [[0,3,2,1],[2,3,7,6],[0,4,7,3],[1,2,6,5],[4,5,6,7],[0,1,5,4]],
Vertices = [{-Xi,-Yi,Zi},{-Xi,Yi,Zi},{Xi,Yi,Zi},{Xi,-Yi,Zi},
{-Xi,-Yi,-Zi},{-Xi,Yi,-Zi},{Xi,Yi,-Zi},{Xi,-Yi,-Zi}],

The first face, [0,3,2,1] is the front one in the following drawing:

wings3d face orientation

Front face of cube


Apr 24 2011

New words with proposed definitions

Tag: Uncategorizedadmin @ 3:15 pm

Exobiome: n., a biome [wikipedia], i.e. an ecosystem, outside of the planet Earth (c.f. exobiology [wikipedia]).


Apr 22 2011

Letterhead: a 3D printed sculpture for word gamers

Tag: Uncategorizedadmin @ 1:06 pm

Yesterday, I was very excitedly waiting for the UPS truck to bring me my first 3D printed model. When it arrived, the box was surprisingly light. I opened it with a fair degree of trepidation, half expected a formless piece of plastic in place of the model I thought I had designed and printed. But no, it worked!

A photograph of the Letterhead model.

Letterhead, a 3D printed sculpture for the avid word gamer

As you can see, the figure has a letter tile for a head while their brain is held in their hand.

I have made a few small changes to the model since printing it, making the neck area less bulky and beefing up the upper arm a little. If you would like to print a copy, you can do that from the model’s page at Shapeways, Letterhead (Revision 1.0).

The model was designed mostly using Wings3D and touched up using Meshlab (Visual Computing Lab – ISTI – CNR), both excellent open source packages. Wings3D is written in Erlang, which is quite exciting.

I made this model in honour of my brother, Adam Lamprell, my arch-adversary at Lexulous. Adam, you are awesome.


Apr 18 2011

Google Voice UX bleugh

Tag: Uncategorizedadmin @ 3:14 pm

I want to change a forwarding number in my Google Voice account. I go to Google Voice and it shows me my received voicemails and texts. This is OK. On the left edge of the page is a column of links for navigating some aspects of my Google Voice account. Um, nothing there for changing my profile or a forwarding number. Underneath the search bar near the top of the page is a row of buttons for performing actions on messages. Nothing there for me either. At the top of the page is a dropdown menu for switching accounts and configuring my GOOGLE account – but not my Google Voice account. Oh dear. Finally, I see the little gear in the very top right corner of the page. THAT one gives me a drop down menu for changing my Google Voice settings. Why do they make this so hard to find?


Next Page »