HNHacker News
TopNewBestAskShowJobs

alexjarvis

57 karma · joined July 31, 2012

submissionscomments
alexjarvis··on Ask HN: Flexible, lightweight build automation/CI tool?
bitrise (https://www.bitrise.io) is the best that I've used so far for building iOS apps. Its elite package is also really fast if you can afford it. I've used travis (slow, 45 min build times) and gitlab-ci with a dedicated mac pro runner and bitrise wins hands down for speed and simplicity. Also don't forget fastlane (https://fastlane.tools). Most of my build configuration is in fastlane (for iOS and Android) and bitrise just triggers fastlane via the script step. Good luck!
alexjarvis··on Ask HN: If I only learn one static typed language, which one should I learn?
You could try Flow (https://flow.org) as you're already familiar with JavaScript. I've been using it after primarily using static languages and it's been great so far.
alexjarvis··on Ask HN: Why is the community so negative towards blockchain technology?
How are blocks not required to be cryptographically verifiable?
alexjarvis··on Ask HN: Why is the community so negative towards blockchain technology?
Sorry, I wasn't clear, I meant trust-less consensus (proof of work).

Distributed transactions in an RDBMS requires trusting all the hosts it runs on.

alexjarvis··on Ask HN: Why is the community so negative towards blockchain technology?
No because it's cheap to produce hashes for git.
alexjarvis··on Ask HN: Why is the community so negative towards blockchain technology?
Postgres doesn't do distributed consensus though does it.
alexjarvis··on Why Swift Guard Should Be Avoided
Yes it's more cognitive overhead but it's a more functional than imperative style which usually has many advantages. If the functions are named well (naming being the hardest problem) then it should be easy to read without knowing exactly what the implementation of the function does.
alexjarvis··on Why Swift Guard Should Be Avoided
I agree that you can split validation parts into separate functions but this is conflating two concerns, for example the rewriting of the guard statement from

  guard item.count > 0 else {
    throw VendingMachineError.OutOfStock
  }
to

  if count == 0 {
    throw VendingMachineError.OutOfStock
  }
only proves that you can refactor the code to not use guard whereas the article starts by talking about small functions, where you could in fact still use guard in this case.
alexjarvis··on Ask HN: Freelancer? Seeking freelancer? (January 2016)
SEEKING WORK – London UK, remote ok

Lead iOS Engineer (Swift, Objective-C).

Six years experience creating and publishing apps to Apple and iOS since it was called iPhone OS 3 (2009).

Experience working remote.

Some of my work:

• 6Tribes http://6tribes.com

• WeCycle http://www.travelai.info

Apps that I built for myself:

• ZombieChat http://getzombiechat.com

• Meep http://meep.io

Get in touch!

Email: alex@panaxiom.co.uk

GitHub: http://github.com/alexanderjarvis

LinkedIn: http://uk.linkedin.com/in/alexanderjarvis/

alexjarvis··on Limitations of protocols in Swift
extensions let you do this with enums (as well as protocols):

  enum Car { 
    case Red 
    case Blue 
  }    
  extension Car { 
    func hello() { 
      print("hello") 
    } 
  } 
  let x = Car.Blue
  x.hello()
https://developer.apple.com/library/ios/documentation/Swift/...

edit: although you can't add a new case to the enum.

alexjarvis··on Limitations of protocols in Swift
And with associated values in enum types they behave in a similar way to case classes in Scala that extend a sealed trait.

For example I've been working on a Json library that stores everything in an enum (ADT):

  public enum JsValue {
    case JsString(String)
    case JsNumber(Double)
    case JsObject([String: JsValue])
    case JsArray([JsValue])
    case JsBoolean(Bool)
    case JsNull
  }
alexjarvis··on Limitations of protocols in Swift
Yeah you're right. If you want to stick with value types and store those values in an Array where the array can only store one type then you have to use an Enum instead of classes. I think there are a few people getting confused by not identifying enums in Swift as a more powerful construct than in C/ObjC.
alexjarvis··on Apple Delays Release of WatchOS 2 Due to Bug
Apparently un-pairing and pairing again fixes the issue, so will give this a try.
alexjarvis··on Apple Delays Release of WatchOS 2 Due to Bug
I'm also having battery issues since the GM release. Beta 5 was fine, but now it doesn't even get through the morning.
alexjarvis··on Should I use a Swift struct or a class?
Also why no mention for the enum, the other value type that allows for pattern matching?
alexjarvis··on Should I use a Swift struct or a class?
What a stupid, long blog post
alexjarvis··on Swift Function Fun Facts
I also ran into this problem a couple of times..

It's not the only issue. I put it down to how new the language is and how many non-critical issues they can fix.

Swift 1.2 has been a massive improvement with incremental compiling and the SourceKit HUD not flickering in my face every few minutes. But still Xcode crashes frequently.

With all the known problems considered, I still find that the advantage of using Swift far outweighs the small number of issues with it in its current version.

alexjarvis··on Ask HN: What I should do with my life?
> What are the best places to search for them?

http://workinstartups.com

https://www.siliconmilkroundabout.com

In the meantime work on something you enjoy and can point to as a portfolio piece. Go to meetups and try and give a talk about something you care about.

alexjarvis··on Ask HN: Freelancer? Seeking freelancer? (December 2014)
SEEKING WORK – Remote – London & Brighton, UK

Full-stack software engineer (iOS / Scala). Loves building creative products, apps especially.

Startup founder with creative design skills and product experience: http://meep.io/download

Seeking part-time or fixed cost contracts for front-end, back-end or both.

Recently delivered a cross-platform activity recognition library in portable C to process inertial data using machine learning algorithms for a Travel startup (amongst other things).

Get in touch!

Email: alex@panaxiom.co.uk

Phone: +44 (0) 7545 378874

GitHub: http://github.com/alexanderjarvis

LinkedIn: http://uk.linkedin.com/in/alexanderjarvis/

keywords: iOS, Scala, Akka, Play, Functional, Distributed, Swift, Objective-C, ObjC, AWS

alexjarvis··on Phoenix – Elixir Web Framework
Could you please explain how PubSub in a cluster "Just Works"? How does it share subscriptions/channels between nodes?

I created a distributed PubSub for the Scala/Akka/Play toolchain a while ago so just wondering how it compares: https://github.com/alexanderjarvis/dubsub

alexjarvis··on Cache is the new RAM
http://crate.io is pretty much the system described towards the end of the article.
alexjarvis··on Open Whisper Systems partners with WhatsApp to provide end-to-end encryption
If you use a different key to encode the message for each client (web or app) then this is not necessary. This is how iMessage works.
alexjarvis··on Open Whisper Systems partners with WhatsApp to provide end-to-end encryption
It's possible to build a more complete picture of someone's interests based on what they share privately via Facebook chat.

It's also public knowledge that they've been parsing messages for links to then 'like' the appropriate pages inside Facebook.

Rather than debate about how much profit there could be in it, which is entirely down to what the user talks about, I think it is important to realise the potential here even if it not fully realised at this point it time.

Also remember that they are keeping chat history indefinitely in HBase clusters (because they are 'sentimental') so as your habits and interests change over time this will become invaluable data to marketers who want to understand consumer behaviour.

I think it's great that WhatsApp are implementing end-to-end encryption but their now immediate connection with Facebook doesn't sit well with me. Perhaps I'm an idiot, but it doesn't take long to realise that there are perhaps competing interests at play here.

alexjarvis··on Open Whisper Systems partners with WhatsApp to provide end-to-end encryption
Highly unlikely seeing as Facebook uses the content of your messages to market ads to you, build up a profile of you, identify you and identify trends (links, keywords).

The fact that Facebook owns WhatsApp makes this announcement a big surprise as I think they profit far more with unencrypted messages (although WhatsApp was just delivering, not storing them supposedly).

alexjarvis··on Ask HN: Freelancer? Seeking freelancer? (November 2014)
SEEKING WORK – Remote London & Brighton, UK

Full-stack engineer with iOS and Scala/Java experience.

Also a startup founder with creative design skills and product experience: http://meep.io/download

Seeking part-time or fixed cost contracts for front-end, back-end or both.

Recently delivered a portable C library to process accelerometer + gyroscope data using machine learning algorithms for a Travel startup (amongst other things).

Also available to consult with funded startups on growth and product.

Open source contributor: http://github.com/alexanderjarvis

Get in touch!

Email me: alex@panaxiom.co.uk Phone: +44 (0) 7545 378874

keywords: Scala, Akka, Play, Functional, Distributed, Swift, ObjC, AWS

alexjarvis··on Beyond Objective-C, Beyond Swift
Enjoyed this piece. You could argue that a few of the new features in Swift do offer more concise syntax e.g. inferred types and the ability to use map/filter – leading to reduced lines of code similar to ARC (but not quite as transformative as reducing state and memory bugs).

Nevertheless I would be interested in creating a framework to tackle the model/persistence/networking/reactive boilerplate issue. I imagine it would be very popular.

Also is there a Swift version of ReactiveCocoa?

alexjarvis··on Ask HN: What DB to use for huge time series?
Use https://crate.io It is built on Elastic Search and I've recently built something large to store time series data with it. We actually migrated away from Cassandra and ported out application from it because it didn't allow us any schema or indexing flexibility. It also allows you to partition a table by a column (e.g. a day) which means that a new table is created each day. Zero config, fast and operationally easy. Depending on your latency requirements for reads I would also have a serious look at Couchbase but I don't know how well they fare for time-series data.
alexjarvis··on Ask HN: YC rejected. Now an acquisition scenario came up. Help?
Had a friend who was recently in a similar situation minus the YC part and basically it turned out to be a massive waste of time (and legal fees) when they decided he wasn't the 'right fit' for their culture. It was more of an acqui-hire, but the lessons learned are still relevant here. Start discussions but don't let it take over everything as they might just be testing the water.

So in summary, continue business as usual while you negotiate and be skeptical of their motivations.

alexjarvis··on Ask HN: Have you made a profit mining Bitcoin?
The best advice I ever received was over 2 years ago whilst on holiday in Canada. A dude there said that he'd spent $6000 CAD on mining equipment (GPUs) and had made a cool $15000 - but he said that he would have made more if he'd of just bought the coins.

Rewind to just over a year ago and I place a (pre)order for 5 ASIC miners (from Butterfly labs) for a total of $3250. When the things arrived, a year later, I was lucky that they were still profitable at the time (mid August) as the price of BTC had risen but decided to sell them on eBay for ~$3000 each because not only were they ridiculously loud and I had no where to put them but the difficulty was ~60 million and increasing (and it's now 148).

I was lucky enough to pay off my credit card and still have some left over with the money I made from selling the miners. Although I made a decent profit, I would have made a lot more if I'd of just bought the coins for the same value (as they've increased ten fold in the same period).

Now I've invested around half of my profits back into buying coins and so have finally taken the original advice onboard. This and the current market conditions make even the best mining options from Cointerra seem like a risky investment at this stage.

alexjarvis··on Tests Are Overhyped
I'm sorry, but I've seen both sides of the coin here and think that in the right situations, having a suite of automated-tests to give you confidence in an application is invaluable. Especially when you consider the alternative, which is hours wasted debugging. Sure writing tests can be hard, but it will make you write better, more modular code.

If you really do need to just get something out the door that quick, then you should just be prepared to accept the consequences of no tests, or put some in later for maintenance sake.

Page 1 of 2Next →