Categories
Blog

You do you

There are people that create useful and beautiful products. And there are people trying to educate others about perfect software languages and disciplines. I think there is not much overlap between the two. At least if you browse social media like Twitter, Reddit and Hacker News. 

The shit Pieter Levels is getting every time he shows the tech he uses to bring in 500k+ a year as a single sole is… it is just not helpful. If the product works great, why does it make a difference what the underlying tech is? 

If the product sucks, the tech does not matter. If the product is perfect, the tech does not matter as well. It is all about the product, and only about the product. 

This new no-code MVP movement shows this as well. It is all about the value you deliver to people willing to pay for it. All else is just a hobby.

Actually, the tech does matter. But it is only about you. What do you want to use? What language makes you effective and productive? It can be the latest and greatest trending framework or plain PHP, Ruby or Perl. Runtime performance does not matter in almost all situations, almost nobody is building realtime systems for self-driving cars. And even in those situations using the right tech can give you the wrong product.

Some people say Ruby is not made for big platforms because it is “slow”. But as Basecamp’s dhh recently published it would not make a monetary difference to use a faster language for Basecamp, if that comes with the side effect of their small programming team becoming a little less happy and thus less productive.

At Picqer we use mainly PHP and Laravel, among others like Swift, Javascript and Vue. A couple of times a year people ask me if we don’t hit any limits of PHP, or when we are going to use something more professional. We process around 5% of all Dutch e-commerce orders via our platform, and like I tweeted last week performance is not an issue. We even spend less than Basecamp’s 15% of our operations budget on server processing PHP. For us, PHP is not a bottleneck and we can build everything we dream with it. Why would we need something else?

Same is true for using Node.js. I don’t like it personally, but if you are productive with that language and you can build your dreams, don’t let anyone tell you that you should use something else. It is true for every language, platform and tool.

I’ve always said that I am not a real programmer, because I did not got a degree in software engineering. I also can’t write in languages like C. I’ve always said that I am only a product-person, and sometimes I can get it working in code as well. But I guess I am a real programmer? I have been programming PHP for 20 years now and generated a couple million euros in total revenue over those years.

My title and the languages that I use do not matter. It is only about the product. What makes you productive and happy? Use that. You do you.

Categories
Blog

Honeywell Captuvo, how to get it to work

For Picqer we are experimenting with barcode scanner sleds. (You can connect it to a iOS device and use it in warehouses instead of old and expensive Windows CE devices.)

After reviewing the Honeywell Captuvo’s and the Linea Pro’s, we decided to try the Captuvo’s first.

Captuvo with demo app

Easy SDK

The SDK looked very easy to use. Drop in 2 libraries, write 5-6 lines of code and it should work.

But after a day of trying I could not get it to work. Also my colleague @stephangroen ran into the same problems the day after. We could retrieve the serial number and battery status. But after we ‘start’ the barcode scanner, the lights stay out.

So frustrating.

The missing plist entry

At the end of the second day I found an abandoned forum with an extra entry to the Info.plist. Looked like exactly something we were missing. We tried it in 2 minutes and now it worked. And it worked flawlessly.

The missing entry, add this to your main Info.plist:

<key>UISupportedExternalAccessoryProtocols</key>
<array>
    <string>com.honeywell.scansled.protocol.decoder</string>
</array>

The plist entry is never mentioned in the docs. Also the docs are too much text for some really easy steps. So perfect for this first blog post to create a comprehansive how-to. 🙂

Complete how-to

These are the minimum steps to get the Honeywell Captuvo to work in your iOS project:

  • Get the Captuvo SDK from honeywellaidc.com, you can download it directly after you fill in the form
  • Drag the Captuvo.h file into the file tree on the left in Xcode (in the pop-up check ‘copy items if needed’ and all targets)
  • To the same with the libCaptuvoSDK.a file
  • Go to your project settings (click the first item in the file tree), click on the General tab, at Linked Frameworks and Libraries add ExternalAccessory.framework
  • Open the Info.plist and add “Supported external accessory protocols” key as an array with item 0 as string with the contents “com.honeywell.scansled.protocol.decoder” 
  • Open AppDelegate.h and add ‘#import “Captuvo.h”’ at the top and add “CaptuvoEventsProtocol” as extra delegate, like this:
#import <UIKit/UIKit.h>
#import "Captuvo.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate,CaptuvoEventsProtocol>

@property (strong, nonatomic) UIWindow *window;
@end
  • Open AppDelegate.m and add the following code:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[Captuvo sharedCaptuvoDevice] addCaptuvoDelegate:self];
    [[Captuvo sharedCaptuvoDevice] startDecoderHardware] ;
}

-(void)decoderDataReceived:(NSString *)data{
    UIAlertView* alert = [[UIAlertView alloc]initWithTitle:nil
               message:data
              delegate:nil
     cancelButtonTitle:@"OK"
     otherButtonTitles:nil];
    [alert show];
}

Now you can build your app, put it on a iOS device and it should work. You now get a UIAlert for every barcode you scanned.

Hope this helps the next developer wasting a day 🙂 If you have any questions regarding this, ping me on twitter: @casperbakker

Categories
Blog

Hi there

Note-to-self 2019: Never post that you are going to post a lot.

After years without a personal blog, I thought it would be fun to start a blog again. In the last months I had some technical tips to share, but no place to share it. And with Medium being so bloated lately, that was not an option.

So here I am. Writing in Markdown my first new blog, powered by Jekyll. And for the first time in English, to help me get used to writing in English as a Dutchie.

For the last months I exclusively work with Laravel, PHP, Amazon AWS and a lot of external API’s. So there is enough for me to share about.