hacker news with inline top comments    .. more ..    16 Jun 2014 Ask
home   ask   best   4 years ago   
Ask HN: If learning to develop for iOS- start with Obj C or Swift?
47 points by austenallred  8 hours ago   40 comments top 27
mpweiher 7 hours ago 5 replies      
Anecdotal evidence in favor of Objective-C (Swift wasn't around back then): at an early WWDC, a dev. who was completely unfamiliar with Objective-C finished his first Cocoa application during the "Intro to Cocoa" session, and spoke about his amazement during the feedback.

Swift is way more complicated than Objective-C, even if the syntax may seem a lot more familiar if you're used to certain other languages.

The reasons for this complexity are manifold: static type-systems of the sophistication that Swift is attempting are complex. Even if Swift were stand-alone, had an all new class-library (or non-class library as it may be), there is quite a bit of complexity there.

However, Swift is not stand-alone. It has to interoperate with the existing Objective-C class libraries. That alone would also not be a problem, had Swift's designers not chosen to go in a completely different direction from Objective-C, both syntactically and semantically. So while they did an OK job in wrapping the libraries, there just is quite a bit of fundamental mismatch that's just waiting to bite you. A small example are force-unwrapped optionals that you get out of a lot of the library calls (because nil ptrs. are OK in ObjC and Cocoa), which will blow up when you use them, without the compiler warning you! (So much for safety).

As other posters have pointed out, you will need to learn Objective-C to make sense of things.

On the other hand, Apple will push on Swift hard, and with the faddishness of the industry being what it is, you might find Swift skills in much greater demand, even if it doesn't actually make sense from an objective standpoint.

Finally, while Swift currently is completely proprietary, Objective-C actually does have non-Apple implementations and users on Linux and Windows.

gdubs 3 hours ago 0 replies      
I've been writing Objective-C for a long time now, and have shipped a fair number of iOS apps. It's a beautiful language in my opinion, if you can get passed the syntax (harder for those who lack a "beginners mind" and are used to a certain way of doing things.)

To answer your question, it really depends on your goals. If you're looking to write your own apps, and you're not under any time pressure, I'd say start with swift. Apple will push the adoption curve _hard_, they always do.

If you're looking to get a job as an iOS developer in the next year or so, Objective-C isn't going anywhere. Big organizations in particular will not be rewriting their apps from the ground up, and there will be legacy code to maintain for years to come. I know of some big projects that were still avoiding ARC for quite a long time...

No matter what, I'd learn Swift _now_, but if you can spare the time I'd say do yourself a favor and learn both. Objective-C has a lot of great concepts, and they're totally worth learning. And it will make understanding the Cocoa and UIKit frameworks a bit easier as well.

Good luck!

austinz 7 hours ago 0 replies      
I would suggest going with Swift, but learning enough about Objective-C concepts to use the Cocoa APIs. There is a guide to interoperability between the two languages on the developer site.

For example, some sample code to call a method (here, one named 'upCommand') whenever the user swipes in the 'up' direction looks like this:

  let upSwipe = UISwipeGestureRecognizer(target: self, action: Selector("upCommand"))  upSwipe.numberOfTouchesRequired = 1  upSwipe.direction = UISwipeGestureRecognizerDirection.Up  self.addGestureRecognizer(upSwipe)
A more idiomatic way in Swift to create a gesture recognizer might be to assign a closure to execute whenever the swipe is recognized.

However, because of the way Objective-C and Cocoa works, you need to define the target of the action as a string literal describing the method name, encapsulated in a 'Selector' object. This is a fundamental Objective-C feature that shows up as a common idiom in the Cocoa APIs. If you didn't know what a selector was, you might have trouble translating this API into working Swift code, since Swift has no real equivalent construct (except the 'Selector()' class described above, there only for backwards compatibility).

wisty 6 hours ago 1 reply      
Objective C. When you need to figure something out, and Google returns 1,000 tutorials on how to do it on Objective C and nothing for Swift, you'll know why.

Sure, Swift might be better. One day you'll probably learn it. But 99% of the effort in learning Objective C is learning all the frameworks and libraries, and the support to do that is much better in Objective C (at present).

If you already know Objective C, and a looking at starting a new project, Swift might be better. The lack of Swift-specific resources won't hurt, because you should be able to easily translate them from one to the other. But if you don't know either, I'd start with Obj-C.

potatolicious 6 hours ago 0 replies      
Objective-C, though approach knowing that you'll switch to Swift.

The Swift tools aren't mature yet - on Friday I managed to get llvm to segfault on multiple parts of my codebase. Rewriting the same thing in slightly different syntax fixed it.

The code highlight/autocompletion service also crashes frequently, as does Xcode in response to certain pieces of valid code.

Not only that, the amount of Googling you can do with regards to any kind of problem is roughly zero right now. People are still figuring things out, so the amount of help you can get is very, very limited.

Once Google/Stackoverflow fills up more, and llvm stops fucking crashing on perfectly valid syntax, you can switch to Swift.

kabdib 7 hours ago 1 reply      
I learned Objective C in about a week (two days of reading, then three more days of trying stuff out).

I'm not an expert ObjC hacker, but if you already know C++ and have done a little UI work in something before then you shouldn't have much trouble.

Once I got over the hump (mostly weirdness with terminology and window manipulation), the XCode environment feels quite nice, comparable to Visual Studio with the Whole Tomato plugins.

Next up: Android. Hmmm.

josephlord 6 hours ago 0 replies      
Several questions to consider in deciding:

Can you wait 6 months to start? How comfortable are you with functional programming and type theory? How comfortable are you with C/C++? How tolerant are you of buggy/constantly crashing software?

In 6 months time the answer will be Swift in my view. It is a better language and has nice strongly typed features to help make robust code.

However at the moment you have to put up with a buggy implementation and a development environment that is likely to crash every 30 minutes or so taking unsaved edits with it (this is not a complaint it is an Alpha/Beta release and the first release). It does make developing more of a chore. Plus the fact that the language may change itself in the coming months (and in places like the arrays I hope it does). Given all that I suggest waiting and doing something else in the meantime.

If you are familiar with C/C++ I would dive in with Obj-C and start getting to know the libraries you will need for your project and you can start adopting Swift when you are ready.

If you don't currently program or are used to dynamically/duck typed languages like Ruby and Python I would try some stuff in something like Haskell, ML or another strongly typed language that will get you used to type theory and how to programme in that sort of strongly typed environment within a stable environment. I think that would make it easy to pick up Swift when it is a little more stable.

If you already have a good background in functional programming but not so much in C/C++ it might be worth braving the instability to use Swift to learn the Cocoa touch libraries and explore. The Playgrounds are very cool but VERY unstable at the moment, maybe there will be a better release tomorrow.

jonhmchan 6 hours ago 0 replies      
I used to help teach the iOS Development class at NYU - I was having this conversation with the professor who's teaching it again next year and we talked about this specifically for new students.

I think that you should learn Swift because it is where most app development will be heading in the future and far easier to pick up than Objective-C. The main disadvantage currently is that the whole corpus of knowledge about iOS development is steeped in Objective-C. My advice is to learn Swift and develop in Swift, but know enough Objective-C to be able to translate it to Swift and read documentation written for Objective-C.

Eventually as the corpus of knowledge in iOS development grows for Swift, this won't be as much of an issue.

craigching 4 hours ago 0 replies      
Both. Swift should be your focus, but you need to know enough Obj-C to translate doc (hopefully a short-term problem) and you need to interop with Obj-C. Swift will be the more productive language, but will have a bigger learning curve (it is a bigger language, more concepts). Obj-C is not that hard to learn these days, a lot of the annoyances are taken care of for you (ARC, synthesize, etc.)

Good luck and have fun!

ricardobeat 7 hours ago 0 replies      
I can offer anecdotal evidence in favor of Swift: I attempted to learn Obj-C in the past and gave up more than once, whereas this week I downloaded the XCode 6 beta and in an hour had my first app running.

The documentation on Cocoa is still sparse, and you have to use a lot of Obj-C interfaces, so it feels like you're a level up too high; it's backwards, but better than not learning it at all.

On the other hand, if you are looking into doing it professionally, it doesn't seem possible to build complex iOS/OSX apps right now without knowledge of Objective-C.

dirtyaura 6 hours ago 2 replies      
A +10 times WWDC veteran said to me that it usually makes sense to really start using new dev tools and APIs 1 year after their announcement in WWDC. Dev tools have matured enough and the latest OS version has had enough installs to make it worthwhile.
ajarmst 4 hours ago 0 replies      
I, having been burned many times, have developed an allergy to the latest new shiny thing, especially if heavily promoted. The number of such things that have been successful are lost in the mass of those that have not. For every C#, there's a hundred Microsoft Bobs.

Investing scant resources (and your time and mind-share are among the most precious you have) in a technology before it has developed a following, third-party support (tools and libraries), a viable user base, and the resources to educate yourself and others is a significant gamble. Sure, you might win. But you probably won't.

polskibus 7 hours ago 0 replies      
I know you asked a closed question, but would you consider Xamarin? This way you would earn more transferable skills (C#, multi-platform toolkit, etc.) and not lock yourself in one platform. You could also develop in raw C++ and have only a thin ObjC wrapper over it.
wsc981 6 hours ago 0 replies      
I think you do have to learn a bit of the basics of Objective-C. The sole reason being that most of Apple's frameworks are currently written in Objective-C, as well as most tutorials and example material. You'd have an easier time converting Objective-C code to Swift code if you understand the basics of Objective-C. You'd also have an easier time finding solutions to problems on sites like StackOverflow, which already has a wealth of Obj-C questions and answers.

But in the end you don't have to become an Objective-C pro. Once you feel comfortable using the language, you could start focusing on Swift.

chriseidhof 6 hours ago 1 reply      
Swift. All the code will move to Swift eventually, I predict that new APIs won't even be callable anymore from Objective-C in the future. I'm going to write all my code in Swift from now on.
jerluc 2 hours ago 0 replies      
I'd agree with some of the other commentors' sentiments voicing that you should start out with Objective-C, but less so because of immature tooling.

For me personally, I'd be more concerned about someone in your position trying to learn Swift now because it's an incredibly immature language. Core language-level changes IMO are the hardest to cope with, as they can have a severe impact on code written in a previous version of the language, not to forget how much of a mental cluster-f!#@ it can cause.

bdcravens 7 hours ago 0 replies      
Learning a language is more than learning the official syntax. It's solving real problems, finding a community, looking up answers on blogs and Stack Overflow. To that end, I think the answer is definitely Obj-C, but it's not mutually exclusive. I think Swift is where C# was circa 2002 - it might be the language of the future, but back then there was still plenty of VB being written, and ditto for Obj-C.

I personally think starting with one of the WebView wrappers is a better place to start, as it gets you used to the toolchain.

purringmeow 5 hours ago 2 replies      
I am not an iOS dev, so I apologize if the answer is too obvious, but why did Apple introduce Swift? What's wrong with Objective-C?
adamnemecek 7 hours ago 0 replies      
I don't think that it really matters that much, they are not THAT different. The harder part about learning Cocoa is learning the how to structure the application and the APIs. You might have an easier time starting with Obj-C since there will be more learning material and more sample code that you can learn from.
nkozyra 5 hours ago 0 replies      
You know how a good beer tastes even better after a really long, arduous, confusing, painful, muddled, wonky day of hard labor?

That's what it'll feel like when you try Swift after learning Objective C.

LeicaLatte 7 hours ago 0 replies      
Learning, Swift for sure.

For shipping, prototyping or production work, you cannot live without some of the stuff from the community. Cocoapods, testing frameworks, AFnetworking, Reveal there's a lot. All those are obj-c and it will take some time for Swift to catch up.

davidrupp 6 hours ago 0 replies      
Short answer: Both.

Longer answer: Swift is the future, so if you have to pick exactly one of the two, pick Swift only. But Swift is, along some axes, an evolution of ObjC, and you will learn much by getting what you can from the wealth of ObjC/Cocoa/CocoaTouch material that's already out there, then applying it to Swift.

threeseed 5 hours ago 0 replies      
If you plan to work in the industry in the next few years. Then definitely Objective-C. No serious company is going to rewrite an existing app in Swift just because it's a cool language.
jayd16 6 hours ago 0 replies      
Not knowing either, I would say Objective-C. Way more tutorials, SO answers and you don't want to be dealing with compiler bugs when you're trying to learn. In a year the answer will be Swift.
Arcanum-XIII 7 hours ago 0 replies      
Pragmatic : Objective C. Swift is too "young" and unproven - there's still lot of rough edge, it's a beta. But start learning Swift in the same time. Future looking : Objective C, to be able to understand the interop still needed for Swift... but using Swift right now for most stuff.
legohead 3 hours ago 0 replies      
as a C programmer, anything but Objective-C
ianstallings 6 hours ago 0 replies      
This is a tough one. Swift is going to be the future of iOS development and very important. But at the same time I think Obj-C will allow you to explore all the existing source code that is out there without any problems. I'd say go with Obj-C and learn Swift in the future.
Ask HN: Looking for feedback on my side project
63 points by seven  1 day ago   45 comments top 25
AhtiK 1 day ago 1 reply      
The website is nice and clean, well done! The idea is clear for a developer-type of mind.

Just a few specific remarks:

* smallest billing period is 1 month so I'd change jobs/day quota to jobs/month. Daily quota for a monthly plan is somewhat confusing and looks rather restrictive if it doesn't roll over to the next day.

* I'd drop yearly plan and "Servers" limit to keep things clear and simple. If needed, would add "contact if you need special arrangements (self-hosted, yearly plan etc)".

* To become easier to find by search, I'd find main use-cases why someone would use this template API for bulk-pdf conversion in the first place and use these use-cases for the selling, not focusing on the "template" and "API".

If it turns out that most of the users are using it for just one specific use-case then I'd focus on these and go extra mile to make it even more useful for that specific user-group.

The risk of focusing on actual use-case is that right now the site is very easy to understand, if rewriting it to tailor for use-cases then dev-minded surfer doesn't grasp what goes on.

I'd see companies use this service to generate invoices for small businesses or SaaS providers (running monthly the database query and feeding it to your API and storing the invoice in S3); tickets; vouchers; event nametags; customizing a presentation and document that is sent to the customers' user; where else?

EDIT: Ahh yes, and when logged in, please provide a way to see pricing and a way to convert to a paid account! :)

zhte415 1 day ago 1 reply      
Lawyers and accountants, accounts payable, general ledger. Anyone who needs to have a .PDF, print it, sign it, scan it back. In large quantities.

I visited your site. It is simple and straightforward. But something surprised me: I was expecting the likes of Accenture, E&Y, Genpact, someone like that, as a target market (internal solutions may exist in these companies, but I have never encountered them, always a cropped screenshot then copy-pasted document, and this has been thousands of times).

Smaller clients does make sense: your target market as smaller clients could knock the pants off larger clients (in a small, accounts payable way) in terms of style an appearance. Can you get your clients to integrate to SAP or other accounting systems?

In direct answer to your questions (Firefox on Mint Ubuntu/Linux/GNU):

I am not a fan of the typography. For polish, add a bit of line-spacing, in the bullets in particular.

Perhaps separate each section (topic area) of the front page with a different background (I know this is terribly Bootstrap, but hey).

Registration: Do not advertise a lack of credibility / assuredness. But do not demand intrusive personal information (turns off both corporate types trying something out and technologists for a myriad of reasons).

I did not detect an option for HTTPS. This is a must for any site proposing dealing or storing financial or client information.

Try a start up form on the front page, or a direct shot of a demo. Include use cases and customer comments (do not fake these, make them checkable - check with your commenters this is OK beforehand).

Word of mouth counts for a lot, especially in professional circles that do not use social media (other than perhaps talk to one's family and old friends). Get a foothold with some oldskool businesses, then when you have a little coming in as revenue seek ways to pump it up (when you've shown it is a credible service this is orders of magnitude easier, in the most unexpected ways).

ColinWright 1 day ago 1 reply      
Clicketty-click: http://template2pdf.com/

I visited your site expecting exactly the same kinds of problems I've given feedback about many times before[0][1].

I was pleasantly surprised. The landing page is clean, clear, and I immediately understood what you were doing. I don't have a need for your service, but I can see that it could easily fill a need.

I don't know how easy it is to use, but if the execution is good then I think you might have something. You have identified your problem, though. Exposure. You might want to change your landing site to increase the size of the problem being solved, and reduce the links to "Template," API," etc. The visitor needs to be reminded immediately of the pain, that way you catch their attention.

Others may have more to add about the marketing problem and your pricing choices. A few questions/comments:

* How is this better than just exporting a PDF from PowerPoint?

* Some of your copy seems to be targeted at sys-admin types - they aren't the ones with money.

* I suspect you need to start getting a network of interested people.

Good luck!

[0] https://news.ycombinator.com/item?id=7857964

[1] https://news.ycombinator.com/item?id=7839799

helen842000 1 day ago 1 reply      
I think this is a great service! However the landing page is suffering from listing the features instead of the benefits.

Obviously you/developers care that it's a cool API that will replace the values. Will the mass market? Probably not. They want to know what they have to put in and what they will get out of it. Some visual reference to this would be good.

After all it's called template2pdf not template2API2pdf :)

I can see that currently you're thinking in the developer mindset but with some tweaks you could make it accessible for those that can't just send a hash. It could be awesome for LOTS of industries. Basically any industry that has sales reps & prepares quotes/invoices on the fly.

Maybe they just get a URL bookmark that displays an input form where they can enter their changing values & a PDF e-mailed to them. How great would that be to do mid-meeting on an iPad! A professional quote done before the end of the meeting. No going back to their office to prepare it! Sales reps would love that.

I almost missed that the words Template, API & PDF were links - I only found the output example by chance on second look! The output is super important, show it straight away!

Try to find a way of showing the template/input without it being a download.

Let people test it straight away - only ask for the e-mail/payment when they want to save their finished template.

As for not being a spammer, you can easily create content that isn't 100% sales pitch. So maybe you start a blog about automating & streamlining procedures, admin hacks etc - then at the end of each post you can refer back to how great template2pdf is.

Also, you could get a designer to create some pretty sweet template designs & make them part of the paid tiers.

seven 1 day ago 1 reply      
What a fantastic day!

A big thanks to all of you. I actually did not expect that much feedback. I just went to pick up some food. Now my access log is rotating, my apache needed a little tweaking and my pulse is high. :)

I appreciate every input and hope that I will be able to test out new ideas and work on the inspiration that I'm getting so far.

I am a bit overwhelmed and currently not able to say something smarter than 'thanks to all of you!'.

hluska 1 day ago 0 replies      
You have a nice looking site and an excellent idea. I'm sure there is a demand out there for this product! You should be very proud of the work you have done so far.

I think that I understand what you do, but my concern is that the people who feel this pain the most acutely might not. Have you considered shooting a video? That way, non technical people who are having this problem can go to your site, see what you mean by template, see what you mean by an API, and see the final result? Or, have you considered rewriting the front page to be completely from the perspective of a non-technical person, then include technical details on a developers page?

vineet 1 day ago 0 replies      
My 2 cents - You have software built, now comes the challenging part of actually building a business around it. There are lots of things that you can do, I would suggest making all of the below equal priorities going forward:

- Meet your customers needs: I don't really know what this means, make sure to hear from those that are using it right now, and those that will say that they will do it. You might end up getting feedback to add features like:a) Templates: You support only OpenOffice templates? I believe it should not be too hard to support more formats like RTF, Text Documents, and MS Office documents.b) API: Supporting Node.js, Java, and other languages. You might want to look at a site like Stripe.com for examples on how to structure developer documentation.c) Output: Perhaps supporting HTML outputs as well as PDFs.

- Homepage: I think your homepage looks good, but can get much better. It might be a good idea to find similar/adjacent companies and see how they do their homepage. I think you should move the 'reasons to use' further up the page.

- Pricing Page: Not sure if I really care about the number of servers running. Also, jobs per day - are you really expecting that many users? I think you might want to significantly reduce the amount of usage per day in each tier. I think you will also likely want to tier on different criteria - perhaps support, keeping a history of converted documents, and others that your users will ask for.

- Conversion: Are you tracking what percentage of visitors are converting to signup? Are you trying A/B testing different prompts to them?

- Driving Traffic: You could think about doing guest posts, blogging on your site, buying ads, and building integrations into other tools to drive traffic.

petercooper 1 day ago 0 replies      
How do you promote stuff without already established social media status while not behaving or feeling like a spammer?

Find people who would have a self interest in promoting your stuff. You might have to tailor your story, but I mean things like sites that link to cool new stuff, the press, newsletters, etc. Anyone whose job it is to link to stuff like yours, that's who you want to know. Unfortunately your site isn't loading for me at the moment so I don't have any ideas, but just from the sound of it, Lifehacker might be one such place or even ProductHunt.

sheetjs 1 day ago 1 reply      
> Use a LibreOffice/OpenOffice document as your template.

> The end-user will be happy, since he can create or modify pdf layouts himself.

On a side note, can Word/Excel/PowerPoint generate LO/OO documents? I'd like to use a service like this, but have had really poor experiences translating word and excel documents to LO.

jwheeler79 1 day ago 1 reply      
here's how you promote it: focus on a very narrow market first because your current market is very broad and hard to attack. come up with one specific use case for this bad boy like invoices, and then narrow it even further, custom invoices for paypal, and then you have a tangible market you can start to attack, not an abstract one. my examples aren't probably the best, but you get the idea. excited for you!

the thing is to get some experience and momentum in getting a customer, which is very different than engineering code. lots of good will come out of it, and it will take you in directions you can't anticipate or imagine.

rachelandrew 17 hours ago 0 replies      
I would definitely go for creating plugins for popular content management systems. You can then optimize landing pages for each CMS - people searching for "generate PDF from WordPress" etc.

People using a CMS solution are a really great market for you. They may well be on hosting that does not allow them to install serverside components to make generating PDFs easier. They may also have limited development skills - being more web designers or front end developers, so they couldn't solve this problem themselves.

You may well be able to get your plugin listed in the marketplace's or addon listings for the CMS solutions you are targeting, especially if there is some free limited mode.

As for advertising your product places. One way to not be spammy is to keep an eye on forums for people asking how to generate a PDF from their application. You then reply with how they would do that themselves via some open source script or whatever for their particular platform. It's a PITA on most platforms, so you can then drop in at the end that you have a service that does this. So you have given them some info on how to DIY as this is your specialist subject, but also dropped in a link for an easier way to do it via your service.

adinb 1 day ago 1 reply      
Really, the issue is not your website, but maybe your current target audience (developers only)

You can really get some word of mouth by targeting individual communities that have a huge (but under served use case) - and writing out if ten box integrations for your service so that a power user or low level admin can install your plugin.

Two communities that might be interested:

Educational/LMS (specifically moodle, open source educational Learning Management System) - the web LMSes don't target printing of tests, just online testing. Quite a few teachers want to print out tests and have been using some serious kludges like moodle2word that involve having specific versions of word, installing templates, etc. This would be a godsend.

CMS and or Bloggers (ready to go wordpress (put shortcodes in a page), django, etc integrations) - lots of CMS data is dying for printouts...but there aren't any flexible printing services that allow for a customizable template all I've found are glorified browser print buttons.

ERP also seems like a natural fit.

Anyways, it seems like you need to reach out to individual communites and try to work with them directly via their plugin repo's to get the ball rolling.

vendakka 1 day ago 0 replies      
I don't give feedback of this sort too often, so this might not necessarily be useful. Now, for the actual feedback.

This is a very useful product to have for the intended target audience.

From looking at the landing page, your target audience is developers who need to generate PDFs directly from a template.

This is only useful if they need PDFs in bulk, if not they can export to PDF.

While developers are a good target market, there is also the market of all people who need to generate PDF reports in bulk.

You could add a simple frontend allowing anyone to upload a template, with a spreadsheet containing the values to substitute. Think of the spreadsheet as the API parameters.Non-developers can easily use this interface and are very likely to find this service very useful. In addition, you can charge more since the interface will not require any dev skills to use.

The catch with this approach though, is that it might be harder to scale. When targeting enterprises a single sale gives you more revenue.

All the best!

rahilsondhi 1 day ago 1 reply      
Here's my contribution: I looked at the landing page for 5-10 seconds and I couldn't quite figure out what the product does. What is a "template" in your product's context? I understand "HTML to PDF" or maybe even "JSON to PDF", but what is "template" to PDF?

EDIT: Okay I see on your site a template is a "LibreOffice/OpenOffice document." I have no idea what that is. Maybe I'm just not your target audience?

eccp 1 day ago 0 replies      
While I understand the problem this solves, the landing page doesn't express confidence: "Reasons to use this template to pdf solution" should be just "Why using Template 2 PDF?" or just "Why" ... the reasons should be very brief:

* Your end users will be able to modify layouts themselves

* Minimal effort required for software developers

* Business stakeholders will obtain sharp, professional-looking documents, sooner

Minimal changes:

* Change "Features:" to "Features"

* Use "PDF", all in caps, consistently.

The UI theme is screaming for something more end-user friendly such as http://bootswatch.com/lumen/ or http://bootswatch.com/flatly/

Also, I feel the landing page could benefit from a layout such as this: http://getbootstrap.com/examples/justified-nav/

ilaksh 1 day ago 0 replies      
I might consider using this if there was an SDK for Node.js or another platform that I was into. That call is not really complicated, but having an SDK ready to go would make it a much easier decision to try this out.

Also ODT is the most flexible but if I could log in, pick a pre-existing HTML-based template from a library of common things like invoices or whatever, and edit it in my account with Aloha Editor or CK Editor or something, that might be just fine unless I needed special headers or something.

Then the API call could just give the name of the template.

Kudos 1 day ago 0 replies      
Some feedback on the design, you're using #000 for those hero images, I would tone them back to something lighter.

Contrast is important, but #000 against #fff is too harsh.

JelteF 1 day ago 0 replies      
Good to see there are other solutions out there for nice PDF generation. I open-sourced my code for generating LaTeX (and compile it to pdf's) using Python. This seems like a good solution for the less tech savy people.
rdvrk 1 day ago 0 replies      

I do understand the problem. The problem is real, and this seems like a great developer friendly way to solve it. In my mind, that could probably make it commercially viable by itself, but why don't go a step further? Solve it for non-developers as well:

I might have missed it (which could make it a UX flaw then), but there doesn't seem to be a way to upload tabular data in any form and use that on a template. Why not? You could make it work with csv, javascript supported grid, or maybe some easily parsable spreadsheet format.

Pricing is not my strong suit, so no real comment on that - only that adding an "upgrade account" button to accounts section would be nice.

Good luck!

xur17 23 hours ago 0 replies      
You have a nice looking site, and figuring out what you do was very easy (good landing page).

On the pricing page, I'm a little confused on what 'servers' refers to. Is that the number of servers you are using, and if so, why do I care?

Overall, great work - I'll keep it in mind for the future!

kshitij_libra 1 day ago 0 replies      
I think you could work on the documentation a bit. Keep it succinct and informative to start with. I expect to just read the first paragraph and get to know, how to use it, or the hang of it. Better highlighting and formatting is in order, atleast in the "in words" section.

The details can go later. Impress the developer with how easy it is at first. If someones interested, they will fish out the details later. Just give an example and its output pdf on the first page maybe.

ecesena 1 day ago 0 replies      
There are several services (free and not) whose purpose it to help you in getting initial users and feedback. For instance, betalist.com and erlibird.com. (I have no affiliation with any of those, and perhaps there are more that I simply don't know).

As for your service, it looks down to me. :(

michaelmcmillan 1 day ago 0 replies      
Let me try it without signing up! It will definitely increase your conversion rate.
ilosthnpass 1 hour ago 0 replies      
Webmerge.me is similar with lots of workflow options and salesforce intergration, how does yours differ?
jwheeler79 1 day ago 1 reply      
dude this idea is freaking genius. total no brainer
Ask HN: How to find a marketing co-founder?
13 points by mark_sz  17 hours ago   12 comments top 7
PeterWhittaker 14 hours ago 0 replies      
Talk to your developers, friends, etc. Tell them briefly what you are doing, and what sort of help you think you need. Keep it general - you're working on the technology side, you think you'd benefit from a trusted associate on the business side. But try to lean people's thinking away from MBAs - and away from sales or marketing communication - and more to market analysis.

Do you or your developer friends know people who have built businesses before? Talk to them.

No matter who you talk to, get used to saying something like "I really appreciate your time, who else do you think I should talk to? Do you have their number? Can I use your name?"

Also try to talk to the people who might use your service. Give them a brief overview of the problem you are trying to solve, let them tell you how it might or does not fit in to their world. Listen, and listen between the lines. Then do it again. If they seem interested, ask them how much such a service would save them in time, effort, or other forms of money.

Do NOT change your service based on one or even ten conversations, not until you understand the story between the lines. At least not right away.

If you need a sounding board, rather than a marketing associate, ask some of your trusted friends, technical and non-technical, if you can buy them drinks or dinner a couple of times a month and share what you've learned.

Practice duck testing (cf recent HN articles): You should be able to explain the idea and what you've heard from others to a rubber duck.

bennesvig 3 hours ago 0 replies      
I'm a marketer who is interested in learning about your SEO tool. At the very least I can give you feedback and ideas from a marketing perspective.
me_bx 12 hours ago 0 replies      
To whom is your product addressed? Might be good to find a co-founder connected to the market you're targetting. As a co-founder, even technical, you need to understand your users and you'll have to sell your product, so networking in your target segment is something you have to do. Double benefit if you find your marketing co founder while doing customer development.

Edit: grammar

amorphid 12 hours ago 1 reply      
What do you want your marketing cofounder to do?
mc_hammer 14 hours ago 0 replies      
well, one way would be to pick someone from the many blogs that end up here. choose someone that has successful projects in their past, and did their own marketing. choose someone that has projects that you like, and you are happy with their writing style and the way the present the project and themselves.
webstartupper 13 hours ago 1 reply      
Could you give us some more information on your saas project? That might help figure out where to look.
musgrove 15 hours ago 1 reply      
It depends. What kind of marketing help do you need for your project at this point?
Project Euler offline, "database may have compromised"
2 points by aaronmacy  6 hours ago   1 comment top
robin_123 6 hours ago 0 replies      
Does anyone have the details for Problem 476?
Ask HN: How can i help my dad?
130 points by eagerNewb  2 days ago   55 comments top 26
jgrahamc 2 days ago 0 replies      
What sort of networking engineer? Could you post a short summary of his skills and experience?
drinchev 2 days ago 1 reply      
Disclaimer: I'm a Bulgarian.

My story short : I recently moved to Berlin without knowing German. I was hired 2 weeks after I started to search for a job and I had enough offers to choose the job I want ( I've graduated law, but programming is what I've been doing my whole life ). Before this I was freelancing successfully in Bulgaria for awhile and had pretty decent amount of income anyway. I moved here, because of personal wishes ( I really like the spirit here ).

Nowadays is really easy to change country inside EU, but anyway I don't believe that Bulgarian economy is unstable especially for IT. You can also check out a lot of positions in Sofia and around the country that are in extreme need for specialists ( my friends still keep complaining they can't find people, because most of them are abroad ).

Whatever your father is doing if he really knows English ( working level ) he will be offered with a job here or if the position allows he can even work remotely from BG.

If you think I can help you personally contact me.

ars 2 days ago 0 replies      
People in this type of situation usually volunteer. Your local library, school, or place of worship are the most common.

It's not as much fun as building a huge network, so you have to replace that part of the experience with the people - get to know the people there, and enjoy having them appreciate you (i.e. quality of interaction instead of quantity).

leandot 2 days ago 0 replies      
I feel your pain is genuine and I am sorry for is happening with your father. As a Bulgarian though I feel the need to say that there are several untrue facts in your post - e.g. there are no riots in BG. Also the IT sector is very strong with HP, Micsosoft, IBM etc. having offices + emerging startup ecosystem growing rapidly and I honestly have not heard anyone in IT having issues finding a well-paid job.

That being said I think you can help your father in many ways:

Support him by telling him he is doing a great job of being a father and caring for his family and profession.

You can help with the CV - I recently read an article on HN about an older guy in US in a similar position and basically it turned out that his CV was just not adjusted to the new realities of the IT world.

Be active in communities like HN and you might get unexpected help.

Checkout the portfolios of startup hubs - e.g. http://launchub.com/portfolio/ - perfection and attention to detail do mean a lot there. Contact directly, be creative -e.g. ask if they would like to have someone helping them with networking for free one month and they can then decide if they would like to hire.

If you are more adventurous try a small project on indiegogo https://www.indiegogo.com/ - I believe enough people from HN will back it. If it is a nice idea I know I will.

If it is not about the work itself but looking urgently for money - try mechanical turk or something like that to make ends meet for the time being..

Hope it helps, I wish you luck

blrgeek 2 days ago 0 replies      
Can he do these things remotely?

Can you help get overseas projects?

Can you setup a profile on eLance/etc where he can get projects?

Can you get an investment from Kiva or another crowd-funding site?

smoyer 2 days ago 0 replies      
What did the company he worked for provide to the client that he couldn't/didn't provide directly? It sounds to me like he should start doing these projects under his own shingle.
LTheobald 2 days ago 1 reply      
So I've got to ask - what country?. Riots and a controlling government doesn't narrow it down. Is there any chance of emigrating? How are your dad's language skills - how's his English for example?

What things has he tried? Sending out speculative letters? Taking unpaid placements (if possible) to get a foot in the door?

brudgers 2 days ago 0 replies      
No matter how much you love your father. you can't 'fix' him.

You can however be supportive. In part that means putting aside what you think he should do because it's not your call. Provide love without being asked. Provide advice only when.

Don't expect him to suddenly stop acting in ways in which he takes pride. He would work without pay again if the circumstances were the same. Accept him for who he is. Doing the right things will be hard because it is about him not you.

Good luck.

rwhitman 2 days ago 0 replies      
The connections you're going to get out of the comments on this HN thread will probably be a huge gift to your dad. You're a good kid.
labaraka 2 days ago 0 replies      
I don't have any specific ideas for you but just came here to say that your dad is very lucky to have such a caring son/daughter.
taprun 2 days ago 1 reply      
Could he start a hacklab? Find an old warehouse, put in some big tables and some equipment then invite people to come in and learn about engineering?

Some people got together nearby, got a government grant and setup a building to do just that. Charge a monthly fee to members and BAM! He's a business owner doing what he loves.

jkaljundi 2 days ago 0 replies      
How about he approaches some Bulgarian accelerators, seed funds etc and offers to first help them, even if pro bono to begin with. Mentor startup teams on technology and other issues. Build a network. You build great contacts and definitely something will show up if he is good. Not starting from "I need a job" or "I need an investment" but just getting involved in the scene? A network engineer is usually a good all-around tech guy and as such can be very valuable to young people. Also participate at events there and help out.

Quite often in that situation being part of a community and being useful can do wonders to your mentality and self-assurance. But networking is just as important.

Why not go visit http://11.me/ and http://launchub.com/ and http://www.betahaus.bg/ and others?

fredkelly 2 days ago 0 replies      
I felt a similar predicament with my father after he was made redundant at the age of 65, having working for large US corporations (working from the UK) for most of his working life. He spent many months searching for work, at first for equal/lower calibre roles in similar industries (he was a manager for a large telecoms company), later just looking for anything to fill his time and bring in some money. You could argue that he could've tried X or Y, but the truth is it seems (at least for his line of work) that job-hunting in the "twilight years" of your career is always going to be a struggle.

At first I thought this was wholly unfair. I know have come to think it's more an unfortunate fact of life. That said, it's not as if our ability to do go work just vanishes as we get older. For sure we aren't as sharp; but I don't see this as a deal breaker.

I'd like to think when I reach his age there will still be a meaningful role for me to fill?!

brickcap 2 days ago 1 reply      
What I am saying is not a solution to your problem but have you considered suing the organization that did not pay your dad for 7 months? It won't help him get a job but I think it is quite unfair that the organization which profited immensely from his hard unpaid labour should be allowed to walk away. I am assuming of course that being involved in a lawsuit would not lower is his prospects of finding a job.
blablabla123 2 days ago 0 replies      
Do you have an E-Mail address or some stuff? I know a Network company that has a lot of people working remote.
vayarajesh 2 days ago 0 replies      
He can try on http://angel.co where mostly startups are listed and he can get what he loves may be. (there are remote jobs as well)
dansman 2 days ago 1 reply      
Bulgaria is in the European Union since 2007. Your dad is eligible to work in any of the 28 Member states without any restrictions. Why did you not consider this yet?
stevehawk 2 days ago 0 replies      
Get him a book on Amazon Web Services... pay for him to get an architecture certificate... and try to get him consulting work.
algorix 2 days ago 0 replies      
In times of crisis sometimes is good we try new areas, maybe your father finds happiness working with something else.

A small business, something that he can be independent, owner.

ForHackernews 2 days ago 0 replies      
Would it be possible for him to get a remote-work job? That would get around some of the problems specific to your country, and it might also help somewhat with the ageism issue.
hiphopyo 2 days ago 0 replies      
You could always team up with your dad and create the coolest app your country has ever seen.
Rigjig 2 days ago 0 replies      
I've been in the same position, as you with my dad. The best thing to do is network. Put his resume on indeed.com, dice.com, working with rails (or something of that sort). There are a few cofounder sites as well (techcofounder.com is one). Rest is all chance, people with the stupidest startups are making quite a bit of money.
slvn 2 days ago 0 replies      
I imagine that him doing computer networking work has been a refuge from the bad kind of social networking the country imposes...
jfoster 2 days ago 0 replies      
How about taking some jobs from freelancing websites? (eg. ODesk or Freelancer)

I've heard that these can sometimes lead to ongoing arrangements.

jasoncartwright 2 days ago 4 replies      
> we live in a country, where things like perfection, attention to detail mean nothing

Is this actually true? Seems like a kneejerk generalisation. If it is true, then surely this is a huge opportunity.

otec 2 days ago 1 reply      
I don't think your father need any help. You will just waste your time trying and there won't be any benefit for him.

He is an adult. I assume, because he is a IT professional he has a good education.

I bet he knows that there are countries where he can get a better pay job. But for his own reasons, he has decided not to pursue this endeavor. I bet he made a choice of staying where he is now consciously. Maybe it's not his cup of tea moving between countries.

Of course no harm talking to him and reiterating the above. But I bet he knows and made up his mind already.

Ask HN: What's with all the new languages?
50 points by enen  13 hours ago   52 comments top 29
StefanKarpinski 9 hours ago 1 reply      
Part of the reason for the recent explosion of new languages is the emergence of technologies that make implementing new languages much easier, LLVM being one of the most obvious ones. Swift, Rust, Julia, and various new implementations of older languages all use LLVM. Implementing new languages on managed runtimes like the JVM and CLR is also much easier than building a full toolchain from scratch. It's also easier than ever to build a productive community around an open source language git and GitHub are amazingly effective collaboration tools.

The premise that old languages are pinnacles of perfection is simply not true. C, Lisp, Haskell, Smalltalk, etc. these languages did not get everything right. What they did do is get enough things right that it is really hard to make a language that is better by enough of a margin that it is worth breaking away entirely and starting from scratch. To make it worth switching to a new langauge, that language has to really make your life much, much better. Performance, convenience, safety, expressiveness whatever a new language gives you more of, it has to give you so much more to be worth the trouble of switching to a less mature language with a smaller, less developed community. But that's what people are trying to do with these new languages.

Consider Lisp as a potential pinnacle of perfection. Paul Graham quipped that Lisp was "discovered" by John McCarthy, rather than invented or designed Lisp already existed in the way that mathematical truths exist. That's a cute idea, but clearly not literally true. There were still a lot of design choices parentheses for example. Why not square or curly brackets? Why not indentation? There were also choices that are now almost universally recognized as mistakes. Dynamic scoping, for example, which was later replaced by lexical scoping in Scheme.

People who haven't tried their hand at language design generally tend not to fully appreciate how many unfortunate tradeoffs are inherent in the process. Static vs. dynamic? Both have great benefits as well as major drawbacks. That's just the first major choice and each choice affects most of the rest of the language. A coherent language design ends up being a crystalized fractal of difficult, uncertain choices. You never know when the difficulties you're facing in one area might have been easier in some nearby fold of this vast, combinatorial design space most of which is completely unexplored. The problem is compounded by the fact that although it may seem mathematical, language design is really a subfield of applied psychology: ideas often seem great on paper, but when you try them out, people find them incredibly awkward, unintutive, or just plain annoying.

rayiner 11 hours ago 2 replies      
> When I read about Smalltalk or Lisp or Haskell people regard them as the pinnacle of programming language design and yet their popularity isn't really proportional to those statements.

That's like saying you read about Bob Dylan being the pinnacle of songwriting, but his popularity compared to Beyonce not bearing that out.

nmrm 12 hours ago 2 replies      
Caveat Emptor: All the analysis below pertains mostly to type system features and other "surface observable" aspects of the lanugage. Newly maturing compilation techniques are certainly another reason for the recent explosion (e.g. Rust, Haskell). But I'll stick to what I (ostensibly) know.

> I have no particular background in programming languages design and theory

Well then, good news: most of these new languages -- especially those you mentioned -- were invented primarily with software engineers and programming in mind. That said, all are informed by ideas which emerged as PL design principles in the 1960's-1980's and became well-established in PLT academia throughout the 70's, 80's, 90's and 00's. Haskell is definitely an exception is many ways, but at least the essential ideas driving the type system design were there in the 80's. (with the possible exception of Haskell, where the "old ideas finally getting to market" analysis is a bit less true).

> I've been also on an exploration lately into the history of computer science and reading about the Lisp family and Smalltalk as they seem to viewed as the better designed ones.

I don't know about better designed. A better characterization is that they capture some essence -- lisp, smalltalk, SML, Haskell, etc. were all designed and implemented to demonstrate the feasibility of a certain programming style or discipline (as well how that approach makes certain problems really easy when they weren't easy before.)

> So what I don't understand and hope somebody here could shed some light on it is what's with all the new languages?

> How many of them really bring something new to the table, a better way than the old one?

> How is Go or Rust better than C C++ Ruby Python Lisps Java Smalltalk Erlang and whatnot.

A detailed answer would consider each pair. But broadly:

* These languages typed, which contrasts them from the dynamic family (including lisp).

* These languages tend to favor composition over inheritance, which differentiates them from (canonical) Java.

* These languages tend to make typed functional programming first-class (syntactic and compiler support for lambdas; pattern matching; etc.)

* The examples you've provided -- Rust, Go, Swift -- are more systems-oriented than Java and are not based on a VM.

* Lots of smaller things. E.g. apparently avoiding C++'s slow builds were a major design point for Go.

> Are those languages designed for very specific cases where older languages can't cope with.

Yes. All are designed to address some significant flaw with existing languages. Most were created because for an important set of language requirements, there exists a language which fulfills each requirement but no single language which fulfills all requirements. (Again, Haskell stands out as an experiment with laziness if I understand the history correctly).

> When I read about Smalltalk or Lisp or Haskell people regard them as the pinnacle of programming language design and yet their popularity isn't really proportional to those statements.

> How do languages get popular?

This is an area of active research (search for SocioPLT [1]). The common wisdom is "library support + important problem niche". The library thing strikes me as tautological.

> Money, syntax, portability?

The first is certainly a major reason the # languages exist :-)

> Why did PHP rule the 90' and not Common Lisp or Erlang or whatever.

Oh dear. Let's just agree that "quality" does not equal "popularity". Bieber > Vienna Philharmonic?

> Why do I read so much bad stuff about C++ from smart people yet it's one of the most popular languages. Why isn't Objective-C more popular since it is too C with classes? Why Java and not Self?

You'll receive lots of conjectures. I'll leave that business to others.


edits: formatting, adding link to splt

norswap 10 hours ago 4 replies      
My take on a few languages you mentioned. I'll try to stay as neutral as possible, but some things are bound to be controversial.

- C#: Microsoft's answer to Java, supposedly does some things better (Java seems to be catching up some), but cross-platform support is so-so.

- Go: I don't understand Go. It seems to be conceived as an improvement over C, and it gets many things right (and a few things wrong, like error handling). Unfortunately, it gets the most important things wrong: performance and low-level access, which are the only reason anyone uses C nowadays. If you don't need C's performance, you get languages that are much nicer and faster than Go (like Java or C#). As a result, it drew Python programmer rather than C programmer, because Go is still faster than Python, and feels quite similar to basic uses of it. Also Go seems to draw people who have drunk too much of the anti-OO kool-aid.

- Swift: A bit too new to tell. Objective-C was a notable improvement on C without incurring the complexity of C++. It suffers of a bit of Go syndrome, but Apple forces you to use it, so there's no debate to be had. Swift is an improvement over Objective-C. It seems to be that this heritage lead to some shoehorning and there are maybe clunky angles to how some things were designed (i.e. the type system).

- C++: many people have said it, C++ is very powerful but it's way too easy to break everything in a subtle manner without realizing it. The problem of C++ is that it has a very large set of core features, which can all interact in ways that are hard-to-predict if one is not a language lawyer. C++ is the opposite of elegance in language design. Despite this, it is used because it is fast and gets stuff done (good expressiveness). And if you run into strange feature interaction, you can always work your way around them by making the design a bit more ugly, thereby avoiding to have to gaze into the pit of hell.

- Rust: very interesting because it promises more safety when doing low-level work, while retaining performance. I'm still waiting for the development dust to settle to give it an in-depth look.

- Smalltalk: the language itself is nice enough, kind of like a Ruby that would have been pushed to the level in terms of meta-programming. The environment, however is awful. The "image" in which you work completely traps you, and has a super poor UX despite the inclusion of very powerful introspection/debugging tools. At any rate, Ruby is mostly good enough, and you rarely need the added meta-stuff from Smalltalk.

- Erlang: genuinely useful for its use case, distributed systems. This is a language where the intended use was really woven in the language design, to great effect. For the rest, it's a bit like ML without types. Personally, I see no good reason for leaving out types, so that tends to annoy me a bit.

- PHP: Many things (mostly bad) have been said about it, and many of them true. However, its success is not undeserved in the sense that it was a very easy language to get started with, from the fact that it could be embedded inside the html directly (allowing for nifty cut-and-pasting) to the availability of easy-to-configure servers. It also has top-notch documentation.

- Common Lisp: The problem of Common Lisp is that it feels old. Many things seem antiquated, especially the library ecosystem. It's very hard to tell if there are good libraries, because the ecosystem is so scattered. Some libraries may not have been worked on for some time, but still be adequate, but that's hard to tell beforehand. There is few endorsement/sponsorship of libraries/tools by organizations or companies; most artifacts are the product of the work of some lone hacker (at least, that's how it feels). Maybe quicklisp is solving the problem, but then again, it's in "beta" since 2012. As for the language itself, well it is quite nice with all the macros and stuff, albeit I once again miss types (mostly for documentation purpose, as Lisp can sometimes be quite cryptic). Typed Lisps exist btw, such as Shen.

- Javascript: Javascript reminds me of Lua, in the sense that both languages have a quite small set of basic features that turn out to be remarkably expressive. There are obvious problems however in Javascript, which are mostly the consequences of how fast the language was produced. Under the circumstances, it turned out admirably well. Javascript became popular because that's what was supported by the browsers, and this looped into a spiral of support/development.

chubot 10 hours ago 0 replies      
> How do languages get popular? Money, syntax, portability?

One particularly good way is to be attached to an OS or platform.

- C came with Unix (although was so good that it migrated off it to Windows and basically every other platform).

- JavaScript came with the browser

- C# comes from an OS vendor; Microsoft. They built APIs for their platform in C#.

- Likewise, Objective C was for NeXT, and Swift is for iOS. They built APIs for their respective platforms.

- Java is an interesting case because Sun wanted the JVM to be an OS, to replace Windows, but they ended up with just a language. This is great evidence that a language itself is unprofitable; an OS/platform can be hugely profitable.

You have all the main OS cases represented: Unix, Apple, and Microsoft.

Google is sort of an OS/platform company, with Android and ChromeOS. However they reused Java in the former case. They designed their own VM (Dalvik) instead of inventing a new language. For the web platform, they are designing and implementing Dart. For the "cluster of servers" platform, Go is very appropriate.

Mozilla is also a platform company; it's not surprising that they are investing in Rust.

So my takeaway is that OS/platform vendors are the ones with the main interest in the huge effort of designing and implementing a language. How successful the platform often has more to do with the success of the language than the language itself. Java might be the exception.

klibertp 10 hours ago 0 replies      
> When I ask those questions I am in no way trying to discredit new languages and their usefulness, I am just young, naive, not very smart and trying to get and idea of how the real world of programming and computer works.

Welcome to the war.

Please don't hold any hard feelings for the community if you get flagged or downvoted to hell. People who will do this to you are generally smart, sympathetic and considerate individuals who just were on the frontlines for much too long. Being cold-hearted and eliminating every threat swiftly, no matter how innocent it seems, is the only way of preserving one's sanity here.

I'm a PLT and Type Theory enthusiast, although I lack any formal education in this direction. I try to follow new research and I'm constantly learning new things (like the ones from the '60 which were then forgotten) and really new things (original research happening now which acknowledges what was done in the field already). I graduated (last year) from just learning new languages and I'm writing my toy languages (thanks to Racket's being an absolutely wonderful framework to do so), but I still learn every single language that seems interesting. This includes both nearly-mainstream languages like Erlang and the ancient, largely forgotten like Prolog, APL and Forth (which you should include in your list next to C, Smalltalk and Lisp).

I'm fascinated by the notion of computation, of how we can encode computation, how we can reason about computation and how we can transform computation to preserve its semantics. I'm fascinated by language design: what features a particular language has and what it omits, I'm always trying to discover what kind of turtle (and if really all the way down) a language is built upon. I'm feeling happy and safe reading papers from Racket and Haskell people, it feels like I'm reading a suspenseful novel in a quiet library somewhere.

Then I go to StackOverflow or here and the reality hits: screaming, shooting, blood and intestines everywhere, people fighting for their salaries and self-respect, so ultimately for their lives.

You'll hear about technicalities from other people here: type systems, concurrency primitives, memory safety and direct memory access, static vs. dynamic (not only typing), syntactic support for common idioms, having (or not) a built in support for certain concepts (like inheritance or composition). I'm not going to tell you about all this. I'd love to, and I really like the topic, but I feel that you wouldn't benefit from it nearly as much as from the other half of the story.

You see, programming languages are tools which people make for people to use. Not only that - both the makers and consumers do what they do to feed their families. I recently saw a Byte magazine from 1980 (IIRC) where I saw an ad of TinyPASCAL, which promised 4x increase in speed over the equivalent code in Basic. It came with some additional libraries (and it was available for a couple of different machines) and cost $8. There was another ad, which claimed that you won't ever need another Fortran after you buy the one being advertised, because it was fast and had additional libraries, for example (IIRC) for calculating log (or lg). It was some $15, I think. Not having lived then I miss a lot of context, but what I see here is that people were using programming languages to make money for quite a long time.

This is not a problem in itself. The problem is the nature of our industry, which is for the most part impossible to measure or experiment with. When have you last heard about double-blind (how would that even look like...) experiment of building the same large corporate system 5 times with different tools and simultaneously? I didn't. And that's not all. We are certain about some things, because the mathematicians discovered some very clever proofs of these things. But they are rare, few and far between. For my favourite example: what "readability" even is? People fight to their last breath and last shred of dignity for their particular take on readability, yet we don't have a slightest idea what the hell readability is, let alone how it impacts us. It's the same, just many times worse, with other features, like famous allowing assignment in conditionals, or preferring mutability over immutability, or providing pointers or not and so on. We know for sure that, if the language is reducible to a very few operations which form one of the basic models of computation, that it's able to express everything expressible in every other language. That's a baseline and it's basically useless, because there are real differences between how good are different languages as a tools and we have no idea at all what makes the difference. We have lots and lots of anecdotes, though.

All this - people wanting better tools and people getting used to their tools, people designing new tools and people marketing the tools they make as better, and having no meaningful way of defining what "better" even means here, but having a vague feeling that how good the tool is directly impacts your performance and your pay leads to the current situation. People have their beliefs, and there are people - some sincere, some not so much - who profit from their beliefs. Languages are being viewed as tools for writing software and for generating revenue... both by corporations and individuals. All programmers make decisions about which philosophy, which belief system to buy into and they all know that this decision is an important one. For companies it - having a language with large following - can make a whole difference between winning and loosing on the market. Similarly for individuals, belonging to a particular tribe makes them feel safer, they can more easily ask for help, they can find jobs more easily. It's really a circle of illusion which works, because it is economically possible for it to work, and because no one can really dispel that illusion (of knowing what "better language" means, for example) yet.

So, to answer your question - what makes languages successful or not? Please do read other answers and pay attention to all the technical details, they are important - but in the end I believe, at least for the last 40 years and some more to come, the answer is really simple: people. It's people, which are social creatures, which have emotions, which are susceptible to manipulation, which are rebellious, which are compliant, which are used to things, which are tired of things, which have wants and fears beyond and above technical matters - it's just people who make languages successful or not. It's almost purely a social issue. Think for a moment - what does it even mean for a language to be successful? Doesn't it mean to be popular with people?

haberman 9 hours ago 0 replies      
You sound just like me of about 12 years ago!

I remember thinking: "I keep reading all this stuff about how Lisp is so much better than all of the popular languages I know about, so is it going to start taking over soon? Is C++ about to go the way of the dodo?"

12 years later, C++ is still around and about as dominant as it was 12 years ago. So I guess the first thing I'd say is: PL enthusiasts on the Internet are not the best indicator of what's about to get big. My best explanation for this is: PL enthusiasts have a somewhat different set of values and aptitudes than mainstream programmers:

- a PL enthusiast is willing to invest a lot of effort into learning and using a language/tool that they think is better. Mainstream programmers will usually go with what has a lot of momentum and support.

- a PL enthusiast usually has a knack for thinking very abstractly, so what looks elegant to them will often be very difficult for less abstract thinkers to unpack.

- a PL enthusiast is usually more concerned with making a language fit an elegant mathematical model than making it fit the model of the underlying hardware.

So PL people end up loving languages like Lisp or Haskell because they are much "cleaner" from a mathematical/abstraction standpoint (particularly in how they eliminate or tightly control side effects). And even though the mathematical models aren't very close to how the hardware works, people have invested a lot of work into making the compilers optimize things so that they are often very efficient -- comparable to what you'd get if you wrote things in a much more "manual" way in an imperative language.

However, because there is a lot of transformation that happens in the compiler, it can be very hard to predict how efficient the program will actually be. You're sort of at the mercy of the compiler -- it can completely change the big-O in both time and space! So while the language itself gave you an elegant way to say something, you may have to get your head around the language's evaluation model and optimizations before you can understand why it has the performance characteristics it does.

For example, one time when I was trying Haskell I wanted to know if a trivial function I wrote took O(1) or O(n) memory. The people on the Haskell list were very helpful, but look how much analysis it took just to answer this simple question!


But languages like Lisp and Haskell are still highly valuable even to the "mainstream" in that they explore a lot of powerful and abstract concepts, and these feed into more mainstream languages. 10-15 years ago few mainstream languages had "lambda" (from Lisp), now most mainstream languages do (JavaScript, Ruby, Python kinda, Java, C#, even C++). Algebraic datatypes (from Haskell) are showing up in Rust. So I think of Lisp/Haskell as idea incubators that make powerful features a lot easier to add to more mainstream languages, because Lisp/Haskell have already tried them out and run into all the questions and edge cases around them.

So now your next question: why all the new languages, and will any of them take off?

New languages are exciting when they can open up new possibilities. But the downside is that languages have strong "network effects" -- integrating different languages together is a pain. Languages succeed when the plusses of the new possibilities outweigh the inherent costs of using a new/different language.

You listed a lot of languages but the main one I want to talk about is Rust. Rust opens up a huge new possibility: the possibility of getting memory safety without giving up performance or control. No mainstream language has ever done this before.

Traditionally you have had two choices. Either you get top performance and control with a memory-unsafe language (C, C++) or you get memory safety while tethering yourself to a garbage-collecting runtime (Java, C#, Python, etc).

(People will come out of the woodwork here to argue that their favorite GC'd language is faster than C and C++ on their favorite benchmark. Such benchmarks usually tend to be a bit fishy, but this is beside the point. The point is that C and C++ give you the control to do whatever the other language might have done to beat you. Other languages winning is just a local maximum, in which the C or C++ programmer has not yet optimized their program to win. The reverse is not true: when you are tethered to a garbage-collecting runtime, there are certain behaviors built-in that you simply cannot work around).

What makes Rust exciting and very new is that it gives you the best of both worlds. Rust is memory-safe (except in localized "unsafe" blocks), but does not impose any kind of runtime or GC onto you. This could completely change the way that we write performance-critical software.

Tyr42 10 hours ago 0 replies      
Lets look at PHP a little bit. It made moving from a static site of just html files to a slightly dynamic site dead simple, just rename the file .php, and add in a few <php? blocks. And then it was deployable with just ftp, which helped because some hosts didn't give ssh, and many people wouldn't have know how to use ssh at first.That's why it "won" on the server side, at least for small sites. It solved the problem of "I don't know much about web programming, but I have a website and I want it to do a bit more" really, really well.It doesn't matter if it lacked higher level features to them. So it didn't have them. So experienced programmers, who knew how to get cgi scripts running and could make a website using a "real" language look down on it, since it doesn't add value to them, and, frankly, it does suck a bit. Tons of gotchas, but they couldn't fix them once it became popular so fast. It'd be a much better language if it had time to mature before becoming popular.

That's actually a similar story to Javascript, since it really didn't have any time to mature before shipping out to everyone. But I think both languages have improved as they've been upgraded. But make no mistake, we could have built them better if we started over now, and didn't have to worry about backwards compatibility. We have learned which parts we'd want to keep and which parts might require some ironing out.

Now, for the longest time, Haskell had a unofficial motto of "avoiding success at all costs"[1], (page 10). "When you become too well known, or too widely used and too successful suddenly you cant change anything anymore. "

So, it's not a big surprise that Haskell isn't super popular, since the creators don't really benefit from it being super popular, and it makes their research harder.

[1]: http://www.computerworld.com.au/article/261007/a-z_programmi...

Do check out this article, it's great if you want to learn about languages.The whole site is.Page three talks about how languages pop out of nowhere: "In my experience, languages almost always come out of the blue."

Let me look at a few new languages

Go:It works great for concurrency, and shuns the hierarchies of OO for interfaces, but keeps the nice syntax. It feels a lot like Python even with it's static types. It's lack of proper generics cause it to get looked down upon sometimes by PL folks, and it's GC make it unpalatable for C/C++ tasks. I'm sure it's useful for Google.

C++11:It feels like a different language from C++. A lot of the verbosity of doing things the idiomatic way falls off (`for(const auto& x : things) {}` is much better than the old way). It definitely makes the language better, and can help speed it up and make it safer too.

Rust:It actually feels a bit like C++: The Good Parts, plus all the concurrency goodness from Go, and the little things you hate going without from Haskell (Algebraic Data Types is a big one). It's pretty ambitious, but if they can pull it off, I think it'll one of the best languages.

I'll pick Rust to beak down your question about how I think it's better.It's "better" than C++, because it leaves out all the foot shooting and messiness, and has just the good parts. And it's nice to have Option types without pulling in Boost. Compared to Ruby, well, it's aimed somewhere different, but I think it's faster while being at least close in expressively. Ditto for Python. Lisp, well, again, it's aimed differently, but Rust does have macros and strong functional programming support. Personally, I'd take the type system and leave Lisp behind. Java? Well, apart from not running on the JVM and being more complicated, I think you can say more clearer and have it run faster in Rust.Smalltalk? I don't know if Rust is better, I haven't used smalltalk at all.Erlang? This one is actually somewhat comparable, since both have strong functional programming support, and good concurrency. I think you can actually do more in Erlang, with it's actors approach, and it certainly wins with the hot code swapping and really cool features there. And Erlang also has better bit level logic support. But those features are exactly what are needed for Erlang's niche, so I'm not sure if I'm being fair. I can't say if one is better than the other here.

Swift:Wow, this one is new. But, it does take some of the things I really like, such as Algebraic Data Types (it's enums), along with things that you really expect from a modern language these days, such as tuples, lambdas/closures, map, filter, and generics (I'm looking at you Go!). It also inherits a bit from Objective-C, and I think that's at least partly why it is it's own language, and not some other language with some libraries. Also that playground feature seems like it's pretty neat; it's what Bret Victor was talking about.

Does my rambling help in any way?

PS: Haskell isn't the pinnacle, it's just a gateway to Idris :D

patrickmay 11 hours ago 0 replies      
"So what I don't understand and hope somebody here could shed some light on it is what's with all the new languages?"

While one can make an argument that these new languages address a particular need better than any extant language, I suspect the real reason is that it's more fun to create tools, including languages, than to solve particular business problems. As evidence, I offer the plethora of frameworks, libraries, and utilities that comprise the ecosystem of Java in particular. In many enterprise systems the business logic is a small fraction of the total running application.

"When I read about Smalltalk or Lisp or Haskell people regard them as the pinnacle of programming language design . . . ."

Lisp wasn't designed, it was discovered. ;-)

Thanks for the interesting questions.

ced 11 hours ago 0 replies      
Paul Graham's answer to why some languages become popular: http://www.paulgraham.com/popular.html
Slackwise 11 hours ago 1 reply      
> How many of them really bring something new to the table, a better way than the old one?

'Better' being subjective, but there are languages, or classes of languages, that bring new paradigms that change the way you approach a problem. Some may work better with the way you mentally model a problem, or they may naturally help with modeling certain problems.

So we've got...

- Imperative sub-procedure languages, like C, Algol, Fortran, etc.

- Object-oriented variants of C, like C++, Java, C#.

- Smalltalk, and Smalltalk OOP based languages like Ruby and Objective-C.

- Forth, a stack-based programming language.

- Tcl, a command-based programming language.

- Unix shells, string-based programming languages.

- Lua/JavaScript, prototypal/hashtable oriented languages.

- Lisp, tree/list-oriented languages.

These are the languages/classes of languages you should study, if you want to see something different. Something that may change the way you think.

mamcx 9 hours ago 0 replies      
Well, exist a very strong mythology around the idea that language A = language B, is only syntax sugar. So, some people don't see the point of create new languages (or, why not extend the old ones?).

>So what I don't understand and hope somebody here could >shed some light on it is what's with all the new languages? >How many of them really bring something new to the table, a >better way than the old one?

Probably the term "language" is a bit misleading (and fuel the notion that 'english'=='german' just different) and is better to think in machine builders, where its interface is based in combinations of words, but the words ARE NOT WORDS.

So, is posible to build a better machine builder than others? Of course. Some are very linear (and fast) but not that good at make parallel work. Some are very unsafe. Some are complicate to operate. Some are very non-sensical, where turn left mean instead self-destruction. Some requiere a lot of steps to produce the end-work.

The beauty of a language is that a SINGLE word can not only imply a meaning, but also is EXECUTABLE with a behavior.

go ...async ..for ...spawn ...

Is like have a machine that chomp wood. It could be made of hundreds of small pieces. Or it can be a axe, in a single iron mold.

A new language can be made when is understand that is possible to get NOW the axe and chomp, instead of build it like in minecraft. Even if the end result become the same (dude, people do insane things in minecraft) your way of THINK change if you are NOT PLAYING MINECRAFT but instead, something else.

Some languages try to move closer to the "I have a axe right now, let's move on" faster than others. IE: Some machines are more low-level than others.

With that idea on the mind, a language (machine builder) designer start to see some things: Even if have minecraft-level sub-machine builder is important (ie: The parts that almost all languages have like for, if, list, chars) is another level, game, to have machines tailored to some task.

And if you extend the idea far enough, you can see that is better to have several of that specializations of that in a single package. If the mix going well, you have a happy factory worked that is very... happy!. Or you have another crazy machine where turn left mean self-destruction. But well...

Of course, some natural limits are hit because the limitations of the computer architecture itself (and the limitations of the factory worked), but as I say:

Some people do insane things with minecraft.

fernly 9 hours ago 0 replies      
Never never underestimate the power of N.I.H.[1] in human affairs. Creative people with time to spare can't resist the temptation to think "how would I do that? oooh I can think of several tweaks that would make it better. I should totally make one of my own." And then their work becomes "held territory" for their coterie or organization to be defended and enhanced and bingo, you have a new language or database or protocol with a community, and the more effort the community invests in the thing, the more stable and important it becomes.

Really, it's the intellectual analog of the process by which a whirling disk of dust becomes a system of planets, some big, some small...

[1] http://en.wikipedia.org/wiki/Not_invented_here

x43b 11 hours ago 0 replies      
Maybe the increased number of people on the internet is connecting those who are making open languages. (I know the poster listed many ones made by closed teams too.)

I thought the technical/scientific computing market that MATLAB serves was too niche to get critical mass in an open competitor that could surpass it. I saw Octave as always being a second place clone playing catch up. I don't know what it took to get it going but Julia has me very excited and I'm grateful for the team that chose to make it.

mc_hammer 12 hours ago 1 reply      
It seems like its an evolving thing -- maybe like car design... there is language design also. All of them bring new things to the table, and the good ideas are then debated by designers and copied into other languages.

Languages get popular because of the people who use them. PHP ruled because it was easy to use and had a ton of tutorials - with a huge userbase to answer any question.

I'm not sure why people knock C++, its ugly but its fast. Obj-C is popular, just less popular than c++ (I think? Perhaps there are just easier ways to create apps for *nix and windows than Obj-C). I'm not sure about anything Java.

Javascript was an exception, IMO, because... they had a monopoly on being the only language that lets u modify webpage content programmatically.

hyp0 10 hours ago 0 replies      
complaints usage: There are only two kinds of languages: the ones people complain about and the ones nobody uses. Bjarne Stroustrup

  tl;dr they want to make things better
Languages are like products in a market that solve a problem. Many factors, product and non-product, make it hard to predict. e.g. do people know about it? how easy is it to get started? has a core vocal and influential group picked it up? How exactly does it solve the problem? Can it be enhanced or bandaided so it's workable for problems that it almost fixes?

But worse than products, languages are high-tech products. This makes them harder to evaluate, so the bandwagon effect is even stronger (oh, smarter-than-me guy says this is cool, I'll believe it). That makes it even more unpredictable.

But worse than high-tech products, there are network effects: it matters hugely how many other people are using it... because they make libraries which makes it even better. They also use your libraries, making it more attractive. That is, a language is a market, itself. This makes it more unpredictable again.

Finally, why do people make new languages? Well, there is real progress in language design. People just want to make things better. For example, Go is written by the C guys... they want to make it better. (NB: no guarantee of success! those guys also wrote unix, and tried to improve it with Plan 9. "What's Plan 9?", you ask curiously. Exactly.)

Of course, the big companies with money also want to capture developers, instead of sharing, so instead of one language with the cool new features, you have several. Just like in most markets, when there's an improved style of product.

EDIT what about smalltalk, lisp, haskell? partly it's the bandwagon effect that passed these by... partly it's the purity of a cool idea. This makes them attractive to idealists, and unattractive to pragmatists. e.g. homoiconicism is a very elegant idea, but awkward, complex, unintuitive - everything is sacrificed to its pure beauty.

These are like indie artists who haven't sold out.

protomyth 12 hours ago 0 replies      
We are dealing with a much different environment now since we cannot count on an ever faster single CPU. We also must deal with an environment where your program can be attacked via the network or how it handles memory.

Its really about time for a new set of languages given a historical view (after you remove some of the distortions brought on by the Java bankroll).

baumbart 10 hours ago 0 replies      
So, the first thing you have to think about is: What is a programming language? Or better, what is the purpose of a programming language? PLs give the programmer a way to express their idea in such a form the computer can understand. Here are two aspects already: 1) Expressing an idea, and 2) interpretation by the machine.

Certain PLs exist to formulate certain ideas in certain ways, that the computer interpretes in certain ways. That way, the popularity of a PL depends on

1) how many people think that way,

2) how much effort those people put into developing the needed tools

3) how much this way of thinking is needed and supported by the industry

4) how well this way of thinking is compatible with previous work

5) how well the computer can execute these expressions using its architecture

6) what architectures exist for which purpose, and whether these purposes comply with the way ideas are expressed in a PL

7) ... and so on, this list is endless

For example, stack-based CISC computers using the von-neumann-model have a long history and are very powerful these days, and using software has become common in non-IT industries, which is why object-oriented imperative programming languages like Java and C++ are so common.

When some great programmers love a special language because because it matches their way of thinking, then it's most probable that this PL is not very popular, simply because few people think this way. A genius may invent the mightiest programming language in the world, but nobody else would use it because nobody else could understand it.

You could say, the only thing that a PL actually expresses can be seen on the people who use it.

bcoughlan 10 hours ago 0 replies      

- LLVM is an awesome project and quite mainstream now, making it a bit easier to write an optimized compiler.

- Rust: C is a language built for single core use. The future is many-core machines. Mozilla realized that the archaic C language was making multi-core processing far more difficult because of missing language constructs, slowing down development and holding back the future of browser performance. The idea is that multicore/multichip aware languages can greatly simplify developing parallel applications.

- Go: Also aims to modernize "systems languages". Dependency management, better type systems, garbage collection, parallel computing. multi-core awareness, compile times. http://mashable.com/2009/11/10/go-google-language/ . It's your C/C++ replacement.

- Swift: Probably an Apple move to attract more app developers and to increase the quality of apps with better tools.

So the answer is both because the computing landscape is changing, and the move towards Python, despite its performance issues, signals developer demand for better tools.

Remember that HN/proggit users are generally interested in new ideas and ways of working, and most people working in industry have probably never heard of Haskell. HN is also susceptible to marketing from time-to-time - MongoDB and Rails were two huge trends that did not deserve their popularity, at least at the time.

snarfy 11 hours ago 1 reply      
It is an error to equate a programming language used for program construction with a (spoken) language used for communication. It is advantageous to have everyone use the same language for communication, but that's not true for construction. Different construction jobs require different tools. This is why there is a tendency for more programming languages, not less. They are tools. Languages for communication are more like protocols, which there is a natural tendency to reduce, just like spoken languages.
agumonkey 11 hours ago 0 replies      
PL are one piece of the (user,problem,tool) trinity. Every time you ask yourself why ? the reason is because for a particular triplet, it was the best solution.

Give a newcomer sml with no easy way to integrate with a HTTP server and watch the confusion grow. On the other hand PHP has good apache integration, is a simple platform : a .php file with html and code, press F5 observe your results and is a deceptively non complex language.

pigDisgusting 10 hours ago 0 replies      
aaronsnoswell 12 hours ago 1 reply      
"How is Go or Rust better than C C++ Ruby Python Lisps Java Smalltalk Erlang and whatnot." - sure fire way to start a flame war with programmers ;)
torom 6 hours ago 0 replies      
I see all these languages as tools in the battle between the big companies. Each language serves the purpose of the power behind it. See my review of this list here: http://tracks.roojoom.com/r/11224
NhanH 11 hours ago 1 reply      
Can anyone point me to the story of js? Did it get popular because it was the better language (as it seems to be implied by OP)?
Thiz 9 hours ago 0 replies      
Languages are like operating systems, browsers and search engines.

Every big tech company has to have one.

vezzy-fnord 12 hours ago 0 replies      
I'm not entirely sure, but I believe Go is basically a continuation of Rob Pike's vision in terms of how computing should be in general. (Plan 9, acme, rio, procfs, etc.) It's the spiritual successor to Limbo, which itself was the successor to Newsqueak. They basically extend upon the general model of C, but add things like built-in concurrency (inspired by CSP), conservative garbage collection, type checking and so forth. They also aim for simplicity and removing complicated features (see also cat-v.org and "harmful software" to understand the philosophy).

As for C++, Java and so forth, popularity is no indicator of quality. That and Smalltalk/Smalltalk-esque languages had rocky starts, including difficulty of acquiring development environments and performance overhead.

EDIT: Concerning Objective-C, it's pretty tough to work with it outside of an OS X-related environment, because of the lack of essential libraries. There's GNUstep, which tries to fill in the gap, but it remains very behind and it has very little development going for it.

Xcore 11 hours ago 0 replies      
A hypthesis: Languages are no mean in itself. They are used to generate programs for specific purposes on specific plattforms. The availability of the plattforms and the need to create software for them makes the language popular. C for Unix/Linux, JavaScript for the Browser, C++ for Microsoft Windows, Java for Business stuff* and Android, Ruby for Rails, Objective-C for Mac and iOS, C# for .net.

* Sun invested a billion in Java to replace the more costlier Smalltalk. Instead of competing with Sun, IBM ditched Smalltalk and just went with Java, too.

sillysaurus3 11 hours ago 2 replies      
How is Go or Rust better than C C++

Use C or C++ and then try out Go or Rust.

Ask HN: What ever happened with the TrueCrypt shutdown?
69 points by Tech1  1 day ago   80 comments top 7
tobias3 1 day ago 8 replies      
Conjecture:TrueCrypt was developed by mainly by one person. This person did write TrueCrypt to encrypt his WinXP Laptop/PC, but does not need it anymore now, because he can now use Bitlocker.

TrueCrypt is a consumer facing Open Source project. Those rarely have a large developer community and seldom get patches. Most successful ones are backed by corporate interests (Firefox, Eclipse, VirtualBox, ...).

Having no need of TrueCrypt himself, no other developer in the community to whom he could entrust the project and faced with drudgery the like he probably also has at his job (except he gets payed there), he probably did not want to continue developing and improving TrueCrypt (e.g. EFI support).

At this point. Since it is a critical security product there is no other option then to warn of all users. If there is a fork, it has to earn its reputation first.

I view truecrypt.ch as a bad development, since a) TrueCrypt is trademarked by the developer and b) the TrueCrypt license explicitly says that you cannot fork the project without renaming it to something other than TrueCrypt.

See https://www.grc.com/misc/truecrypt/truecrypt.htm "And then the TrueCrypt developers were heard from . . ."

abdullahkhalids 1 day ago 1 reply      
There is this person claiming "I can confirm presence of TrueCrypt duress canary as per 2004 conversation."

There were a bunch of other tweets with further details, but those seem to have been deleted.


Note: I am not claiming this is necessarily true.

aaw 1 day ago 1 reply      
The best of all the conspiracy theories was http://pastebin.com/9catw4X7.
MiWDesktopHack 1 day ago 0 replies      
Steve Gibson has also made the TrueCrypt Final Release Repository at https://www.grc.com/misc/truecrypt/truecrypt.htm

I had to use this mirror recently as there are already bad copies floating about; it is a trusted hosting for the last ungimped version for windows and linux. check the hashes n' sigs!

dewey 1 day ago 2 replies      
Following http://truecrypt.ch/ and https://twitter.com/TrueCryptNext is a good resource to get new information on this case at the moment.

I haven't come across any new and definite information since the hack/shutdown.

hbeaver 1 day ago 0 replies      
I would encourage you to listen to Steve Gibson's Security Now podcast on Twit. But the gist is TrueCrypt has not been hacked. Take a listen to the "TrueCrypt WTF?" episode.


nodata 1 day ago 0 replies      
It was discredited. Mission accomplished!
Ask HN: How do I protect myself when providing freemium SaaS product?
4 points by Everlag  23 hours ago   2 comments top 2
tectonic 10 hours ago 0 replies      
You may want to incorporate for liability protection, but I'm not a lawyer, especially not a Canadian one. In the US (CA), when I was doing a lot of public side projects, I formed an LLC with a separate tax identification number and bank account to help reduce liability.
guynirpaz 22 hours ago 0 replies      
Every saas website has terms of service. Take a look at few of them and see the basics that you need to consider
Ask HN: Did you start a company whilst employed?
140 points by GFuller  6 days ago   discuss
pud 6 days ago 4 replies      
I started my first company while employed as a project manager at a web design shop. I started a (smaller) web design shop.

While employed, I spent some evenings and weekends trying to find clients. I quit my job when I got my first paying client.

The company I started isn't around anymore -- but here I am 18 years later still happily self-employed and doing well. So I'd say it was a success.

Edit: Last month I gave a convocation address at Syracuse University graduation where I talk about how I got started as an entrepreneur:


swombat 6 days ago 1 reply      
I started my first company while employed as a Consultant at Accenture/UBS. I did not tell anyone at work that I was doing so, nor did I work on the business while at the office.

Vocalix was a tech startup, aiming to "put voice on the web". I'll spare you the details, but I worked on it from 4am to 7am every day, mostly thanks to the wond'rous benefits of Modafinil, after which I would take a one hour nap and then go to work. I did that for 9 months straight. I wouldn't recommend it to anyone starting a startup. I made numerous mistakes, slips, mismanagements, bad technical choices, etc, because I was constantly exhausted, and because Modafinil affected my lateral thinking (though it's great for getting through a task list).

Vocalix was effectively dead on arrival, and within 3 months of me quitting my job we decided it wasn't going to work. Ouch.

My advice: if you're going to start a startup, do it properly. Reduce your costs, learn about startups and obvious mistakes, save up some money - all while still employed. Then when you're ready make the jump cleanly.

Some further thoughts about it here: http://swombat.com/2011/12/15/startup-escape-path

toddynho 6 days ago 1 reply      
I started BuySellAds (http://buysellads.com) while employed full-time at HubSpot (http://hubspot.com). A few years after leaving, my company ended up on the Inc 500 (http://www.inc.com/profile/buysellads) and we're still doing quite well.

- I had the project specifically spelled out in my employment agreement with them since I had already been working on it for a while. I started working for them because I genuinely believed in their mission, and there was a certain allure of a steady paycheck after freelancing for a while. I made the decision to leave after about a year of trying to juggle both.

- By the time I left HubSpot was 50 people and they had plenty of funding, so while perhaps they would have liked for me to stick around, there's nothing I did that has ultimately contributed to them becoming the billion dollar company they are today (a nice humbling lesson for the youngster I was back then...).

- I actually think doing this (as long as you can keep it clean legally and actually own what you're building in your spare time) far outweighs quitting your job before starting a company. I wrote a post on Quora about this in a little more detail (http://www.quora.com/I-plan-to-quit-my-job-at-a-software-com...)

preinheimer 6 days ago 0 replies      
I launched WonderProxy ( https://wonderproxy.com ) while employed. I actually launched it to solve a problem a co-worker was having. He was a friend, and kept having to stay late to try and test aspects of our website using various free web proxies.

I bought a few VPS in different countries, gave him the password, and it was an instant hit.

They were my first customer, and are still a customer several years later. I launched with like 13 servers. We've got 127 now in 65 different countries.

buro9 6 days ago 0 replies      
Beware the due diligence issues.

If you start a company whilst employed/contracted elsewhere you will need to have your IP ownership and origin well-documented.

If you cannot get a document from your employer acknowledging that they have no claim to any IP in your company, then you will need to consider providing warranties to the new company that you accept liability for any subsequent claim, etc.

Basically, go speak to a lawyer, but you want to make sure that you don't act in a way now that gives your employer some claim on the company you are starting.

Do no actual work, whilst still employed, until this is resolved.

USNetizen 6 days ago 1 reply      
As it appears to be the case with most people here, I did the same thing - started while still employed.

I started a cloud and security solutions company that mostly targets the government market, but also commercial to a degree.

My employer was supportive. The government market is a little different, though, so if you work for a large company they sometimes see you as an opportunity to work on contracts that are targeted only for small business. For example, you can get these special "small business only" contracts and bring them to your (former) employer to work on as a subcontractor. You both win in this case.

The company is currently growing steadily after about 9 months in operation. We're in this for the long term, so steady is better than a rapid ascent. We have about 5-6 employees and are generating enough to pay myself a large percentage of what I was making working for other employers (which was fairly substantial).

My advice is don't burn bridges - meaning don't let your startup work impact your "day job" while you are doing both. Your employer can be a gateway to your first customers, so don't upset them. Also, there is no "ideal" time to make the leap, but when things are noticeably starting to take off (a couple solid, stable clients on decent-paying contracts) and you can pay yourself about 30-50% of what you were making in your full-time job it would be a good sign.

dctoedt 6 days ago 2 replies      
Re the employer's possible ownership of the employee's idea: A few years ao I posted an annotated flow chart explaining how (U.S.) law works in this regard -- see http://www.oncontracts.com/docs/Who-owns-an-employee-inventi...
paraschopra 6 days ago 3 replies      
Yes, I started http://visualwebsiteoptimizer.com/ when I was employed as R&D engineer. I told them way before and the business interests wasn't competing. The company is doing quite well.

My advice would be to say upfront and declare what you're doing, and if possible get in writing that this is something you'll own (and not them).

jacquesm 6 days ago 0 replies      
I've written a bit about this elsewhere, and on the off-chance of boring people here with the repetition:

- Software consultancy business;

- actively supported me

- still alive in it's 5th re-incarnation or so (or should I say 'pivot'?)

- Helpful advice (well, if it is helpful or not time will tell):

If you feel you can trust your boss then be open about it.

Make sure you show that post 'quitting' time you're still available to hold up your end if need be, offer them a (small) discount over your regular rates.

Build relationships, that starts when you're still employed and will carry over into the future when you're acting for your own shop. Deliver quality, don't lower your price in order to get jobs, know your value. Work harder than your competitors, charge the same and show your work.

Under no circumstance should you compete with your former employer for customers they already had while you were working there.

Be sure to stay in contact with the industry you left, including your old firm, stop by for a cup of coffee without being on the lookout to score jobs.

Be honorable. It may take a bit longer to 'get there' but it is a lot more sure than cutting corners and making money over other peoples misfortune.

best of luck!

ChuckMcM 6 days ago 0 replies      
In answer to the question, no. A similar question might be have you ever worked on developing a new relationship while you were in an existing relationship? Strangely a lot of the same hazards exist :-)

Besides the legal challenges, there are the IP challenges, and if you're honest with yourself you probably aren't doing your best work on one of the two jobs (and likely the one paying the bills) and so you are putting your reputation as an employee at risk as well.

The simple answer is, coming up with ideas? Great to do while you're working. Always be on the lookout for the next big thing. Due diligence on what has been done so far? Also fair game. Developing an itemized list of things you'd have to have done before you were 'up and running', also a reasonable thing. But once you pull the trigger and you're "starting a company", my experience suggests you will be much more successful if you are doing that 'full time' rather than 'nights and weekends.' If only to minimize the cognitive load of things not related to your new company.

Also if you treat your current employer well, which is to say you leave when you get serious about this new company. If it goes to hell they might take you back, if it goes well they might invest, and if you're just looking for mentors you may find them there. If you treat your employer poorly you will not have a chance at those benefits.

ntrepid8 6 days ago 1 reply      
I started a b2b SaaS company while employed and quit when we got our first paying customers. I always built software in my off hours for fun, but when I decided to try and solve other people's problems I realized it could be a business rather than just a hobby. I don't think my employer knew or cared what I was going to do after I left.

Currently we are in the process of being acquired by a larger company. I've seen a few folks try to do a start a company this way and they almost always underestimate how much work it's going to be. Everything takes 3 times longer than you think it will and requires 10 times more effort.

I tried to raise seed funding and VC money but failed on both counts, so I can't really give any useful advice on how to do that. I raise this because I spent a lot of time in meetings with potential investors and gathering information for them. Since that ended up being largely unproductive time, now I wish I had just focused on my customers instead.

I'd be interested to hear how other people decide which investor meetings to take and which ones to ignore.

demystified 6 days ago 2 replies      
I did start a company while still employed.. Here is what I did:

- Was upfront with my employer. (having established such a trust-based relationship for a long-time did really help)

- Told him that while I was using my spare time for my 'business'. If it would start getting more of my time, I was willing to negotiate a part-time position (hey, be honest, and if you are really valuable to your employer, there is nothing you should be worried of)

Believe me, people quit their jobs all the time - what employers do not like is getting caught off-guard. Just give them sufficient time in advance before leaving your job -- that will be appreciated most of the time.

Looksee 6 days ago 1 reply      
I started a small party rental service in college. It was sold after 2 years, but I made enough for rent, and most of the people I delivered to were extremely cool and sometimes let me hang out at their parties.

I was working as a statistician in LA overnight, from 9pm to 3am, and would work my delivery service from 4pm - 9pm and go to college in the afternoons. I was a broke student with no cash from home, so I made the best of it.

After college, I sold my rentals and client list to a friendly competitor (we would refer clients back and forth if we couldn't do the job) for a fair price. I quit my overnight job at about the same time. My employer took my quitting OK, and the company ended up paying me for another 2 months to be on standby and to train the replacement they hired. Just be cool, and straight forward, I guess. I was very clear at the start of my stat job that I was in college and wanted to keep this gig with those particular hours. I rejected a promotion offer they made because I planned to leave and told them so. My boss and I got along well, so to quit was bittersweet.

No regrets, I am successful still, in a completely different space.

Once you have to go out and kill your own meat for dinner.... food just never tastes the same from anywhere else.

I haven't worked a fulltime job for someone else in 5 years.

sebslomski 6 days ago 1 reply      
1 1/2 years ago I started my company http://cutterslounge.deI didn't quit my job and started working on my company, I've already built a prototype of my product whilst being employed. This gave me the huge advantage of not starting from scratch. It was easier for me to convince my now co-founder to join me and quit his job.

After I quit my job, I had still a good relationship with them, which made it possible for me to work freelance for them from time to time. This means there was cash flow from the very first days.

Now, a 1 1/2 years later, our product has become passive income with almost no effort now.My co-founder and me worked as consultants/freelancers while we developed our product. Showing off our product gained us trust and some local fame, which lead to many really cool jobs and investments (right now we ware working on a quite cool project, where we are invested in as well).

I'm happy :-)

benweatherman 6 days ago 0 replies      
I was 1 of 4 co-founders of https://www.ordoro.com that we started just as I got a job at http://www.bazaarvoice.com. Both companies are B2B but we're in totally different spaces and market sizes.

I was very upfront about my startup with Bazaarvoice. They were genuinely very excited about my potential success. I was often asked by directors or C-levels how things were going. I recently bumped into the CEO Brett Hurt and he asked me how my startup was doing. I wouldn't have been able to work as hard as I did on Ordoro without all the great support.

I think a big part of starting up while being employed is doing well at your day job. You need to make sure you're doing well there so they can be supportive. If they're having to pick up your slack, they won't be so happy about your new venture.

Good luck!

Schwolop 6 days ago 0 replies      
First time, no. I struck out on my own and failed rapidly.

This time, yes. I'm dropping a day a week of salary, and working (with my main job's blessing) on a new venture with some colleagues and others. For the others they feel there's enough spare time to pull it off, but for myself I don't have enough energy left after spending the time I think I ought to with my family, so would rather take the monetary hit to make the time for it.

Too early to say much else, except that I strongly recommend getting formal written approval for what you're doing - and especially so if you're taking co-workers with you.

wuliwong 6 days ago 1 reply      
Thanks for asking this, I've wondered the same thing. I actually just launched http://www.SoSoSwift.com 5 days ago. It certainly isn't a company yet but I hope it might grow into one. If not SoSoSwift, I will certainly keep building startups on my nights and weekends. I work for a big tech company. I know we have one of those crazy agreements about them owning everything I make. But, like I've read I don't believe those overly-broad agreements stand up well in court. Basically, I feel that if I get to the point at which someone starts suing me, then I've accomplished something already. I would be astonished if a court awarded my company to my employer. I suppose a more realistic outcome might be some percentage of ownership or damages? I know it isn't the ideal stance to take but I don't have the savings to first quit my job and then start a project. Anyway, I've enjoyed reading comments from people that have actually started successful companies in this scenario. It seems to be the road less traveled in the startup world, or at least the road less talked about.
beat 6 days ago 0 replies      
I did. I'm actually on my last week of dayjobbing (next to last week, actually - they asked me to stay on another week to help with transition). I've put in over a year of developing the idea (it's had one significant pivot), learning technologies I didn't know before (particularly front end), learning how to run a proper business, and ultimately, just talking my spouse into accepting the risk and radical change to our lives.

So, so excited to go full time! But once I do... I promised my spouse (and myself) revenue in six months, so I don't think life is going to get any easier or less stressful. On the other hand, I'll be doing what I feel like I should be doing. After 20 years of corporate life, I'll finally take full control of my fate.

The kind of company? It's a product for diffing system configurations, across security boundaries and along the entire timeline of the system. Think CMDB for the rest of us - easy to implement, affordable, and creating immediate daily value by reducing debugging times and cross-organization friction. This is a nontrivial thing to implement, though...

How did my employer take it? They're sad to lose me, of course, but a lot of people are envious as well. Maybe they can envy my cold sweats too.

Many people have observed that the only emotions founders get are elation and terror. Once I committed to it, though, I started feeling them both at the same time. I don't think that's going to change, not for a while.

As for advice... the only good advice I have is figure out your runway. How long can you go without getting paid? And what's your fallback plan? Get your business plan roughly laid out so you know what you intend to do, and what you'll do if it isn't working. And if you're married, do your best to make it work with your spouse.

flibble 6 days ago 0 replies      
I started up HandHQ.com (sells electronic goods) while employed. I was in my first job as a software developer and just learning about web dev on the job so started working on Hand HQ in the evenings to help speed up my learning.

I remember clearly the day the first automated sale came through, back in 2007. I had just finished integrating PayPal and fully automating the whole order process the evening before and I got an email saying that a $400 sale had been made. I thought it was my system not working until the PayPal payment email came through moments later. I watched in amazement as my little program noticed the order, pulled the relevant poker hands (this is what the site sold) out of the database, zipped and uploaded them and then emailed the customer that they were ready. I didn't have to do _anything_ and I'd just made more than I was to make all day in my job. This was awesome.

I continued to run the site while employed for a while and then quit to do it full time once it was making more per month than I was making in a year at work. I didn't tell my employer why I was leaving.

I found that I was as productive while working on my business while employed as when I quit to work on it full time. You can get _alot_ done in a couple of hours in the evenings once you've spend a bit of your day during the day-job thinking about what needs to be done that evening. I also found having a day-job very motivational to work hard in the evenings so that I could quit. Once I did quit that motivation wasn't there.

SDGT 6 days ago 1 reply      
I work a full 8-5 salaried job, have a side job from 6-whenever I sleep, and am starting a consulting gig with a friend of mine.

All bootstrapped, all while still having security. Things are still in their infancy, but we have 5 clients between two people, so things may pick up a bit soon.

I wouldn't do this any other way though. It may take a little bit longer to set everything up, but I have security. If everything fails tomorrow, my worst case scenario is I get back up and go back to work in the morning.

vyrotek 6 days ago 0 replies      
Here's a thread I started the day I quit my job to go full-time on my startup. It's fun to look back at what I wrote. I was so excited and terrified at the time. I shared some of my feelings and those of coworkers here.


We've pivoted a bit and grown over the years. Our company IActionable is a "gamification/engagement" platform. We focus on corporate/enterprise solutions that allow employees and managers to track company specific goals, achievements, performance, sales, etc. - http://IActionable.com

gsk 6 days ago 1 reply      
I started https://filespin.io when employed. We are doing well in enterprise space. Getting ready to release for developers.

One advice I could have used when I started: It is unnecessary to worry about your current employer. The truth is: "current employer" is a blanket name for only a handful of people and most often they don't care very much as long as what you do isn't affecting them adversely. Have non-compete agreements sorted out and always be honest and upfront about your venture.

Do what's best for your customers and for yourself. Ultimately, that's the only thing that matters.

Btw, my then boss was very supportive and we are now doing business with each other.

paulhauggis 6 days ago 0 replies      
I started my current B2B sales company while employed. It was just me 2 years ago. I stayed employed because it offered me some security/funding. But, my employer eventually let me go (a disaster of a project. I was replaced by an overseas worker for 1/3 my salary. This is what the boss told me when he let me go).

I now have 2 other partners and an employee and the business pays all of our bills.

Working while having a startup can work, but it will be hell on your social life (and family life).

thenduks 6 days ago 0 replies      
I wrote a bug tracker called Bugrocket and convinced the owners of my employer to switch us over to it from Bugzilla.

After a while of using it and improving it based on real-world usage, I pitched launching it as a company. Drew up all the paperwork and incorporated as co-founders. I didn't leave the company, we just all did it on the side.

That was 2009. It's still kicking, but growing really slowly (who knew, bug tracking isn't very sexy :)).

Advice... that's trickier. Every situation is different. I think starting with an MVP and dogfooding is really important. But generally just go for it and see what happens. It will take up a lot of your free time, more than you think, so be prepared for that.

I also agree with a lot of the other advice in here about bringing it up with your boss - I don't think Bugrocket would be a company today if I hadn't 'pitched it' to my employer. Then again, in 2012 I started CourseCraft (an ecourse platform) with my wife and we've been bootstrapping it on the side. It's doing even better than Bugrocket. Like I said every situation is different :)

That original employer was later acquired and I have since left, but it wasn't because-of or related to the stuff on the side.

reboog711 6 days ago 0 replies      
I did, sort of. I was working as "The tech guy" at a business to business consulting firm. It was good varied experience.

Through word of mouth; I took on my first consulting client in my "spare" time.

About a year later; I left the full time job and did consulting full time and I have been doing that as my primary source of income for 14 years now.

I gave a presentation about my various business mishaps at a conference called 360|Stack. I called it How to Fail Fantastically.


lauriswtf 6 days ago 1 reply      
Yes, I founded https://hiburo.com and had the idea while being employed and started building an early prototype on weekends/evenings.

However after I left the company, we changed the design and did a complete rewrite (switched from PHP/Kohana to Python/Django). Now it is up and running for a few months and growing slowly but steadily.

mokkol 6 days ago 0 replies      
I am starting my own company ( a saas app ) while im still employed. I changed 5 day workweek to 3 day work week so I have more time for my side project. The salary cut is worth it. I rather spend some time in the weekend to rest and preventing burning out. I can survive as well with my current salary so I lower the risk for not having any income.
gedrap 6 days ago 0 replies      
But aren't you risking to get sued by doing that?

I think almost all job contracts include a clause stating that any paid work outside the company is allowed with written permission only (or, worse, everything produced belongs to the company). I don't think any employer would support that.

Of course, starting a start up is not exactly 'paid' work in a casual way, but I my common sense says that it's quite clearly 'paid work', or at least intended to be paid.

brickcap 6 days ago 1 reply      
I tired to create a couple of products while I was still employed. They were not successful but I learned a lot just by deciding to do it. And in the end it gave me confidence enough to leave the job and go into consulting with which fortunately I have had success.

Any way, whether or not you tell your employee about your startup depends upon how well you know him/her, how comfortable are you with him/her and what your contract says.

Can you convince your boss that the duration for which you work in his organization would be as productive as it were before? Can you convince him that you are not just gathering funds just so you can leave and work full time on your own stuff when you are ready? Even if you have the very best of intentions it is hard to convince others of the fact.

At least my thinking is that there is no need to say anything to anyone in your organization unless you absolutely need to. During the early stages of your startup I suppose even you are not sure if you can be successful with it.Keep it under the wraps see how far you can go with it and then take a decision.

TylerJewell 6 days ago 0 replies      
Codenvy was started while I was employed at another company, Exo Platform. In this case, I was an advisor to the board, generating recommendations on strategic directions for the company. They had a product at the time called exo ide that had decent traffic, but was a distraction to their core business related to social enterprise portals. The original plan had been to shut down the garage product itself, but we got permission from the board to explore alternatives.

This gave us the freedom to look at alternative financing options, and to pursue any avenue that could lead to continued operation of the site. We eventually found investors, a new board, and a management team - that allowed us to incorporate Codenvy, bring the IP over, the engineering team, and get started. We did all of this while employed and receiving salaries from the original parent venture.

Now the company has raised $9M and we just crossed our 50th employee last week.

In our case, the helpful advice was that we were pursuing something that was in the interests of the parent company. They wanted this side project to succeed, but couldn't see a runway that made sense for them. By doing what was right for the company, we stayed committed to this project, and it just turned out that the best outcome was the formation of a new venture. That venture had allegiances and alignment to the parent that made sense for all, and it turned out to be an easy incorporation, and strongly backed by the parent. There wasn't any need for subterfuge, but these circumstances were unique. Net - you never know what the needs are of your employer, so if there is a business that helps the employer out, they may be willing to extend special arrangements to you during the incubation period.

Major_Grooves 6 days ago 1 reply      
I started Satago and raised my first money for it on Seedrs while I was still employed at Rocket Internet. I don't think it was in my contract that I could not start a company (it is in many) but I did have to get an IP waiver from Rocket before Seedrs would release the investment - just in case. I then built most of the MVP (with a contractor) whilst employed, which was very difficult.

Main advice would be to save as much money as you can before you take the plunge. I did not have enough spare money. Also play with timezones if you can. My contractor is in Russia, which meant I could work with him in the mornings if I got up early before starting my day job.

Here is where we are now: http://www.satago.co.uk Got in to the Seedcamp accelerator and raised $1M announced the other day. Going quite well. First employee starting tomorrow. :)

bawabawa 6 days ago 0 replies      
I am still currently employed and working on two online applications. Before that, I failed twice mostly because my partners and I were all employed full-time and we did not have enough time to dedicate to our side-project.

This time,I met with some investors who agreed to let me use their resources (dev, design). This allows me to be sure that someone is working hard on the development of the apps since they are paid for that.

I spend 30 minutes in the morning on the "social" aspect of the business, 2 hours at night on management of "my" team (review of the day, planning for the next day, testing), and my Saturday is devoted to tasks which are more time-consuming.

Sunday is the rest day which I keep free from my family.

As I am a C.F.O. by day, my applications are related to my field of expertise:

500Assets (Depreciation Software for accountants): (http://500assets.com/) and rKruiter (Recruitment Management for H.R. practitioners): (http://www.rkruiter.com/)

Being employed allows me to think about growing the company before getting a salary for myself. My employer is fine with that as long as it does not interfere with my job.

junto 6 days ago 0 replies      
A word of warning. Many companies include a contractual obligation inside your employment contract that requires you to declare any company directorships, whether you see you new startup as a conflict of interest or not.

I got fired from a well known PC manufacturer for not declaring such a directorship. A web development consultancy was not a conflict of interest but I broke the contract so it was a hard but valid lesson learned.

AndrewKemendo 6 days ago 0 replies      
I started Visidraft (www.visidraft.com) while still full time active duty military. Surprisingly enough I built it to solve a pain point I had while doing construction project management which is outside the scope of my formal job title. I am hoping the success of Visidraft will allow me to transition out of the military with minimal impact on my family.

We launch in August and given our Beta test results expect great growth.

amac 4 days ago 0 replies      
In simplistic terms, doing a startup whilst employed elsewhere is probably a bad idea on a number of levels. That said, i'm doing it; though I'm working on 'projects', not startups. (I've also formed a ltd (llc) umbrella company with it's own bank account so I can properly account for savings I invest in my ideas)

My first project is Octopus (http://www.theoctopusapp.com) whilst I've also just started my second, Solarshell. I'm not sure one can do more than two projects at any-time but then again, the likes of Musk and others seem to make multiple things work.

m4nu 6 days ago 0 replies      
Started working on https://nota.io while employed as full stack dev. The idea actually came from my day to day workflow.

Quickly I found that I had trouble focusing on the job that was actually paying me and all i wanted to do is build my app. So I quit (my employer totally understood my motivations). That was 6 months ago.

Now I've launched a few week ago and I am realising that I planed a bit short budget wise, so soon I am afraid I'll have to go back job hunting. I wish i had plan for more slack.

The lesson that i've taken form that is that if you want to build a software that you are passionate about soon enough it will take all your focus. So do plan on that. Validate and plan as much as possible while keeping your day job and when you are as ready as you possibly can just take the dive! Good luck.

randall 6 days ago 0 replies      
I started a company and was hired by my first customer for a year. While there, I got to work on http://vidpresso.com while maintaining the IP. It was awesome.
liox 6 days ago 0 replies      
hi there and congrats on taking your first step towards founding! i am currently in the midst of several projects so i can provide some "in process" advice; hopefully it will help to give you some perspective about the daily grind and about what it takes to get to where you want!

- my "day job: im a manager at a medical device company (run training department along with driving self-guided data mining projects that improve training & engineering efficiency)

- tech startups: i do biz dev and provide data science guidance as a co-founder for two tech startups (one is an offshoot of a school project, one is a social monitoring service specifically aimed at the utilities sector)

- non-tech startup: i also have a product im in the process of bringing to market that will make the mens necktie a much more useful item. a little random? yes. its one of those ideas that just happened to come along and so far ive been able to [successfully] run with it!

- part time MBA: i also am working towards an MBA on a part-time basis in NYC. ive been able to adjust my specializations so theyre tech focused and Ive met some really awesome people in the data science/startup community in NYC as a result.

how is it possible to do all of this? they key [for me] has been alignment. i began by finding issues at my 9-5 that both captured my attention AND presented the opportunity to be spun off into separate projects (if i played my cards right and made sure there wouldnt be IP issues down the road). i then started aligning my 9-5 projects with my school related projects, thus turning work into school and vise-versa. a year and a half later im heavily involved with many ventures that i thoroughly enjoy, and while i put in a lot of time and effort each day, its work that i enjoy so burnout hasnt been a concern (so far).

i wrote a motivational piece about how juggle everything and stay sane on my non-tech startups website: http://www.takeiteasythursday.com/liox/2014/5/2/3-startups-o...

if you have any qs you can reach me via the contact page on the website! best of luck!

seestheday 4 days ago 0 replies      
Has anyone ever worked at a company that effectively banned side businesses or asked to pre-approve all side businesses?
christudor 6 days ago  replies      
I started MASSOLIT (www.massolit.co.uk) when I was still employed as a strategy consultant. MASSOLIT provide video lectures in the arts and humanities, though we are changing things slightly at the moment. Anyway, you can get a lot of market research done while still doing a job, e.g. e-mailing lots of people. The idea developed significantly while I was still working, and I only left when we had positive noises about the product we were making.
Ask HN: What game has the best RPG party interface?
3 points by blooberr  21 hours ago   1 comment top
everyone 4 hours ago 0 replies      
hmm thats a good question. In most games like that the interface is awful.

This is not an rpg but 'frozen synapse' and 'frozen endzone' are actually good examples of a UI for controlling multiple guys acting simulataneously.

Also I remember dungeon siege having a pretty basic interface but also being quite functional (with 8 people in you party!)

The 'eye of the beholder' / 'might and magic' / 'legend of grimrock' way of doing things is effective but it basically turns your 4 characters into one big one

XSS issue affecting every page on TheDailyWTF
8 points by sikhbeats  19 hours ago   2 comments top 2
sikhbeats 11 hours ago 0 replies      
(update) Sunday 16:20 UTC: looks like they fixed it. Though it's not entirely clear if the thread got pushed out of the front page and the bug still remains.
ExpiredLink 17 hours ago 0 replies      
Tell HN: The site was offline. What changed?
208 points by kogir  5 days ago   100 comments top 17
_wmd 5 days ago 4 replies      
I know it's crazy talk, but glancing at my own profile, I count maybe 100 bytes of data? Yet to represent that data in memory, it's going to blow up to 4096 bytes plus structs to represent the inode and directory entry/entries because you put each profile in its own file.

By that count, you might get somewhere near a 40x cache utilization improvement if you just used a real database like the rest of us do - even just an embedded database.

This of course before saying anything about transactional safety of writing directly to the filesystem

tdicola 5 days ago 1 reply      
Wow that's interesting that you use files to store the data. Is there any sharding across machines or is it all just one machine? Do you use big SSDs or old spinning disks?
bndr 5 days ago 6 replies      
Can someone explain why "Items moved from /12345 to /12/34/12345. HN now starts in one fifth the time" that increases performance? why is it better?
mariusz79 5 days ago 1 reply      
I just don't get one thing.. Don't you have dev and staging server, where you could develop, test, and pre-deploy everything without shutting down the website?
diafygi 5 days ago 2 replies      
Why worry about case-insensitive file systems if you are not using one currently?
tim333 5 days ago 2 replies      
Newbie question here - I'm just curious. Is it quicker to store the data this way in loads of files or to use Postgres?
gnurag 5 days ago 1 reply      
> and is why the site went down on June 18th.

Do you mean the site will go down on June 18th?

yiedyie 5 days ago 0 replies      
And the question for this answer:https://news.ycombinator.com/item?id=7872121
idoco 5 days ago 0 replies      
Thanks, I got so much work done today!
gdewilde 4 days ago 0 replies      
I love how hn doesn't load 150 circus elements. I can reload pages all day long.

I was just thinking.....

  function byId(id) {     return document.getElementById(id);  }    // hide arrows    byId('up_'   + item).style.visibility = 'hidden';    byId('down_' + item).style.visibility = 'hidden';
could be :

  function hide(id) {     document.getElementById(id).style.visibility = 'hidden';   }     // hide arrows     hide('up_'   + item);     hide('down_' + item);
Then it is 150 in stead of 185 chars, 19% smaller or 23% bigger.

And the function name is better of course.

sirtel 5 days ago 1 reply      
And, HN becomes responsive. ( '' ) /
bryanh 5 days ago 0 replies      
I bet some before/after load charts would be pretty impressive!
rafeed 5 days ago 0 replies      
It's definitely snappier and now looks responsive too! Thanks for the hard work kogir et al!
xenonite 5 days ago 1 reply      
Just curious: why are user names case sensitive?
apeace 5 days ago 1 reply      
Pardon if I'm ignorant here, but is there a blocker to open-sourcing HN? I'm sure the community would love to help.
topac 5 days ago 0 replies      
That's exactly how i would have changed things to make the website faster!!! -4 jan 1991-
ianstallings 5 days ago 0 replies      
Can we classify this as "archeology"?
Ask HN: Best way to know your ISP is throttling you?
12 points by geekam  2 days ago   6 comments top 3
zoowar 2 days ago 2 replies      
Have you tried any of the speed test sites, for example http://www.speakeasy.net/speedtest/. The conspiracy theorist in me thinks ISPs know all the speed test sites and will not throttle speed test packets.
seanp2k2 1 day ago 0 replies      
pchar gives really detailed statistics about each hop. I'd recommend running it ~every hour for a few weeks to spot patterns in what is happening: http://www.kitchenlab.org/www/bmah/Software/pchar/

Robtex.com can also be good for examining how autonomous systems interconnect.

jcr 2 days ago 1 reply      
The "easiest" solution requires some learning. The netstat(1) command onunix-based systems (including MacOS 10+) and possibly also ms-windowscan report the number of BYTES passing through a network interface. Onmost implementations the '-b' switch is used to show BYTES and the '-Iifacename' switch is used to define what interface you want to monitor.Since this only gives you one count of the bytes, you also want to usethe "wait" switch, typically '-w #" so the command continuously runsevery "#" seconds.

  $ netstat -bI tun0 -w 8
The reason to use a wait time of 8 seconds is the values you'll see willbe roughly equivalent to BITS per second for the given 8 secondperiod (1 byte is 8 bits). Since most networking throughput is measuredin bits per second, this makes your life easy. Also, using a wait timeof 8 seconds avoids putting mostly pointless load on your system whilegiving you a fairly solid average throughput value.

This method is very flexible. For example, if you're running one or moreVPN tunnels, you can monitor each tunnel individually, as well as theunderlying uplink connection. You just need to use the same command withdifferent '-I' interface names.

Additionally, unlike the inaccurate download speed values presented byweb browsers and similar applications, this is measuring the raw datapassing through the interface (i.e. with packet overhead), rather thanmeasuring how fast a file is being transfered (without packet overhead).

I just leave it running in a tmux window on my firewall so with just aglance I can always see what the connection is doing.

Haskell Haskell Everywhere
4 points by narendraj9  1 day ago   1 comment top
greenyoda 1 day ago 0 replies      
Here's a list of some companies that are using Haskell:


Hack your GitHub contributions calendar
16 points by ionicabizau  3 days ago   1 comment top
thiago_fm 5 hours ago 0 replies      
gratz, you have just ruined github contributions calendar.
Skype now censoring links
12 points by zwaly  3 days ago   6 comments top 4
greenyoda 3 days ago 1 reply      
Maybe they just have a spam filter. The words in that URL sound like they could have come right out of one of the e-mails in my spam folder. It's also possible that the domain itself has been associated with spam.
atmosx 2 days ago 0 replies      
I don't think they are banning 'porn'. My guess is they are trying to protect users from malware.

That said, it is crystal clear that Skype is probably the most heavily monitored form of IM/video/audio communication along with (plain text) email and Apple's Facetime/iMessage[1].

[1] http://www.zdnet.com/apples-imessage-encryption-claims-refut...

jmspring 2 days ago 1 reply      
Out of curiosity, try running the same link through a URL shortener and send it again. A brief local test seemed to work.
m_93 2 days ago 0 replies      
It looks like skype use domain ban. But what was reason of this is unknown. Curious is that another xxx pages is fully accessible via skype
Ask HN: How to get rid of cookie warnings?
3 points by AhtiK  1 day ago   2 comments top
Netflix Public API Program Closing November 14, 2014
8 points by jdlugo  2 days ago   3 comments top 3
cnanney 2 days ago 0 replies      
I was disappointed to get that email, I have an API key and am using it for an ongoing side project of mine.

It seems counter to everything else Netflix engineering promotes with its tech blog and open source contributions. To be so public and open on one hand, and then shut down the public API on the other seems strange.

themartorana 1 day ago 0 replies      
I hope this doesn't mean the end of Netflix availability reporting on moreflicks.com...
jdlugo 2 days ago 0 replies      
Yes, I agree. Frustrating to see the API go away, yet Netflix has a lot of interesting open-source contributions.
Ask HN: Any deaf or blind hackers?
7 points by GuiA  2 days ago   1 comment top
jcr 2 days ago 0 replies      
There's a vast spectrum of various vision and hearing impairments. Theseverity of each possible impairment is also variable, and often asingle person faces multiple types/severities of impairments. The endresult is a lot of variables, too many combinations, and the need tocustomize solutions on a per-person basis.

All health issues are extremely sensitive subjects, and the languageused can be extremely important. Words like "deaf," "blind," and"disabled" are tough, really tough. They're tough to admit, tough tosay, and tough to hear. I know people who insist on calling themselves"Hard of Hearing" (typically abbreviated "HoH") or "Hearing Impaired"rather than being called "deaf" --which they consider offensive. Othersare really easy-going about the terms used, so yes, this is yet anothervariable. And again, some are willing to speak publicly about it, whileothers prefer to just quietly pretend to normal on the Internet likeeveryone else.

You really need to add your email address to the 'about' section ofyour HN profile since many would only discuss it with you privately.

As for ideas, I have more than a few. Some are hardware. Some aresoftware. But none of them seem profitable from a business perspective.Accessibility is subject to the same market forces as everything else inthe world. Given the dizzying number of possible combinations of typesof impairments with many requiring customized solutions as well as thecomparatively small number of disabled people, providing accessibilityis often ignored. Even HN itself has major accessibility issues thatprevent some people from using the site.

Free ideas are generally worth what you pay for them, but here's one; apin grid display. Imagine every pixel on a normal display as a pin thatcan be raised or lowered. You could "see" the screen with yourfingertips. It would be a world's first. You'd make pictures accessibleto the blind, along with text, fonts, and formatting (layout/design).

With enough hardware, software, and mechanical engineering prowess, apin grid display may now be possible to do, but it would be difficult.Just getting the raising and lowering of tightly packed pins right wouldtake a lot of effort, but the idea can be expanded to include vibration,temperature, and possibly other tactile feedback.

This is long enough for now, but yes, my email address is in my profile.

Tell HN: .guru domains don't work on iOS Safari. Is the TLD system broken?
8 points by andrewstuart  4 days ago   15 comments top 7
0x0 4 days ago 1 reply      
You might have to type http:// in front, but those domains you listed may not have been set up with a www server? Mobile safari works fine to open for example http://nic.guru/
benologist 4 days ago 1 reply      
I don't think this is specific to iOS, I can't access "apple.guru" in opera on os x.
shritesh 4 days ago 0 replies      
Now this is the reason Mozilla built the Public Suffix List.https://publicsuffix.org/list/
kjs3 4 days ago 1 reply      
iOS just knows .guru is a stupid TLD and acts appropriately.
caffeinewriter 4 days ago 0 replies      
That's much more likely to be a specific DNS-server error. Try swapping out the DNS servers for one that's known to already work with the .guru TLD like Google's public DNS servers.

( &

blazespin 4 days ago 1 reply      
test.guru worked in yosemite Safari without http:// Anyone install iOS 8 yet? Oh wait.. did I just break NDA... ooooops.
Ask HN: Ask for credit card at the start or end of free trial?
3 points by iosnoob  2 days ago   9 comments top 4
philiphodgen 2 days ago 1 reply      
At the end.

Find some method for disabling future data entry at the end of the test drive but make it freely available in its frozen state and easily exportable.

If the user likes your service and wants to continue, the request for a credit card will be welcomed.

If the user doesn't want your service anymore, you will generate good will by allowing export of the data. The person either will export data and delete the account, just delete the account, or walk away and leave the data to rot on your servers.

Basecamp does it NEARLY right. Except they lock the user data behind the wall and won't let you export it. I have two Basecamp accounts right now for two different businesses. One is the unlimited $150/month account. The other one expired at the end of 60 days. It is much smaller.

I will become a paying customer for the second but the fact that they locked me out of my own data adds just a smidgen of hate in my heart for Basecamp. Add that to the fact that my employees are not terribly thrilled with Basecamp (they find it hard to use for the types and numbers of projects we have) means it is probably that Basecamp has pointed me toward a competing product over the semi-near term -- for both businesses.

That's one user's anecdote about Basecamp. I suggest you attempt to go through life trying to piss people off as little as possible. That's a reasonable business model to pursue.

saturdayplace 2 days ago 2 replies      
I have no experience, but here's my reasoning:

At the moment you don't have a lot of traffic, so you likely don't have a lot of users, and you don't really know if you have something they'll pay for. You don't really know what problems they experience using your app. You don't really know where else in the process they might fall out of the funnel. Putting the CC requirement at the beginning will even further restrict the flow of users through your funnel and make it harder for you to learn where your stuff is broken.

When you do have traffic, A/B test to find out which one works better for you BTW: there is likely more than one axis with which you'd measure what is "better". You'll have to decide for yourself what those are. Is it better than you have less tire-kickers and more seriously committed users? Is it better to have more people in the funnel in total so you can optimize the trial experience? Is it better to have pre-authorized the credit card and remind them that you're going to start charging them tomorrow if they don't cancel their account?

japhyr 1 day ago 0 replies      
A cc up front feels like a trick. It feels like you're hoping I'll forget to cancel the service if I try it, I'm unsure about it, but then I forget to go back and cancel.

You want committed users, not people who gave you their cc for a free trial and then forgot to cancel.

pettycashstash 2 days ago 0 replies      
personal opinion..at endif they like it they will purchase...otherwise you risk alienating users
Our startup is failing, but we have a powerful team
9 points by failbomber  4 days ago   13 comments top 10
JSeymourATL 4 days ago 0 replies      
If you want to stay together as a team, shift into business development/sales mode now. Can you find 10 likely companies that can use your help? Pitch your services/skills on a contract basis. Have the team member best at interfacing with clients, start reaching out to top-decision makers. Everyone else, give him support. It's important this is a coordinated effort. Your start-up just pivoted.
GFischer 4 days ago 0 replies      
Why do you think you would you drift apart if you take on client work?

I think there's strong demand for iOS and Android dev, you probably can work out if you're good at that.

You could take on client work and meanwhile try to work out a pivot for your startup? I went to a talk by a succesful company that did just that (they were failing, took on client work while working part-time on their products, then found an opportunity and gambled at the iPad launch, then became succesful and sold out).

It probably sucks to remove your focus from your startup, but it seems it's not going to grow in its current incarnation.

If you took on outside money, it's a whole different story.

Take it as random advice from a guy on the Internet that hasn't had a startup yet :) but I hope at least I asked some interesting questions.

soneca 4 days ago 0 replies      
YC is a good fit, no? A powerful team is all they look for. The odds are against you, but I would try, even without a strong idea.

In the meantime, doing client work sounds like a good idea. Why not realistic?

originalgremlin 4 days ago 0 replies      
We're a new startup looking for a few extra developers to help build a backend-as-a-service platform. You're a bit front-end heavy for our needs but we could still possibly absorb all of you. Check out http://www.storycloud.co/careers/ and reply to the email address at the bottom if it seems at all like something you would consider.
randomflavor 4 days ago 1 reply      
I have a few startups with funding right after a great exit in NYC - and would love to engage a passionate team like yours. We are technical, lean, design and brand focussed. More b2b->consumer however. How do I message you?
Im_Talking 4 days ago 0 replies      
But you have 60,000 unique users that have-used/use your technology. Can't you contact them to determine how you can change to support them more fully? Or to determine, at least, why they are not utilizing your technology, and therefore, not paying enough to sustain your business?

I just think you have a goldmine there that can be accessed.

akg_67 4 days ago 0 replies      
Figure out how to make current startup financially viable, pivot, or consider pursuing another startup idea. I agree client/consulting work may make team drift apart as there is no cohesive vision in client work that can keep everyone excited about what they are doing. Also good product development team don't tend to make good service delivery team.

From personal experience, after our startup failure, we three founders tried to continue together with consulting but within a year we drifted apart. We were never able to pursue anything else together again afterward. We drifted apart geographically, career direction, and life stage.

The best outcome for you may be to, if everyone wants to stay together, brainstorm together on another startup idea and continue on.

anthonys 4 days ago 0 replies      
Anyway of contacting you?
js7 4 days ago 0 replies      
ignasl 4 days ago 1 reply      
Do another startup :)
Ask HN: I Just Got A Used MacBook Pro. What To Install?
15 points by tronium  5 days ago   25 comments top 17
jevinskie 5 days ago 5 replies      
Divvy lets you easily resize windows to a grid pattern. There may be similar free utilities but I found that it was worth the $14.


If you are interested in binary objects/executables, check out MachOView. Think of it as an excellent GUI version of nm/readelf (for MachO, obviously) with search.


celias 1 day ago 0 replies      
SourceTree from Altassian git and mercurial client, free


CodeRunner from Nikolai Krill for easily running/testing code snippets in any language, $9.99 on the App Store


hansy 4 days ago 0 replies      
For the people who use Alfred (http://www.alfredapp.com/), I'm curious to know Alfred's advantages over the native Spotlight (which IMO works fairly well) or other similar apps like Found (https://www.foundapp.com/) or Quicksilver (http://qsapp.com/download.php)?

Oh and to add my two cents to the OP's question:

HyperDock (http://hyperdock.bahoom.com/): Windows 7 functionality to preview individual windows

vincentbarr 4 days ago 0 replies      
These are my 'must-haves', or very close to it, and most of them are free or offer a free version.

Alfred 2 (search and a lot more)

aText (text expansion)

Adium (Chat)

Adapter (audio/video filetype conversion)

Caffeine (prevent display from dimming or sleeping)

Chrome (browser)

Colloquy (IRC client)

Dash (documentation and snippet browser)

Dashlane (password management)

Doubleplane (window resizing)

Dropbox (cloud storage)

Evernote (notes, bulky)

Firefox (browser)

F.lux (smart display brightness)

Handbrake (video transcoder)

Hazel (file/folder automation)

iTerm (terminal replacement)

Jumpcut (store and recall clipboard history)

MailMate (email)

Mou (markdown editor with live preview)Readkit (RSS reader)

Screenmailer (free, easy screencast creation and sharing)

Simplenote (notes, lean)Skype (calls)

Spark (hotkey)

Sublime Text Editor 3 (text editor)

TicToc (time tracking)

VLC (media player)

shawnreilly 4 days ago 0 replies      
Lately I've become a fan of isolating multiple environments. This way I can run different IDE environments on the same machine without conflicts or dependency problems. There are quite a few ways you could do this, ranging from entire VM's (something like virtualbox), to VM containers (something like docker), to language specific isolated environments (something like virtualenv for python or rvm for ruby), to prebuilt environments (something like bitnami). Each one has different pro's and con's (too heavy, too complex, etc) but the general idea is the same; Having the ability to build multiple isolated environments makes it easier for me to maintain those environments. It also gives me the flexibility to test different environment variables with some sort of fallback if something goes wrong. So it's something I would recommend, but YMMV. Another recommendation I would make (not software, but still a must IMO) is to install an SSD and max out the RAM. Feels like a whole new machine! Good luck and have fun.
karangoeluw 4 days ago 0 replies      
marmarlade 3 days ago 0 replies      
Some great submissions here already (second/third the usual suspects Divvy, Alfred, VLC, Sublime Text et al.)

Depending on what you use for productivity, you might find a Pomodoro Timer useful. There are loads, and I quite like this one: https://itunes.apple.com/gb/app/pomodoro-timer-focus-on-your... (or just use the Chrome app http://tomato-timer.com/)

And for writing creatively, I can highly recommend OmmWriter. http://www.ommwriter.com/

Croaky 4 days ago 0 replies      
https://github.com/thoughtbot/laptop will install Homebrew, Tmux, Silver Searcher, Postgres, Redis, a few programming languages, and other items.

https://github.com/thoughtbot/dotfiles sets up a bunch of slick aliases and plugins for Vim and ZSH to make development productive.

jmagnusson 4 days ago 1 reply      
Alfred App is an absolute essential in my book (especially custom web searches) http://www.sequelpro.com/

Sublime Text. Makes u feel like a magician. http://www.sublimetext.com/

Sequel Pro. Best db manager out there. Wish they just supported more than MySQL. http://www.sequelpro.com/

iTerm2. The built in terminal in OS X kind of sucks. http://www.iterm2.com/

Homebrew. The missing package manager for OS X. http://brew.sh/

BillyParadise 4 days ago 0 replies      
Lets see... I recently went Mac for the first time, and what do I have on there?

For "serious" work-related things, I have Sublime Edit and MacPorts. That's everything. I picked up Omnigraffle but it's just not all that useful to me with a small screen. I'll look at using it again when I replace my desktop with a mac (or when I get an external monitor for the MBA)

Oh, and I have MSDN access, so I put Office on there. But honestly, I never use it.

(Disclaimer, I'm an old school "only have 1 page of apps on my iPhone" kind of guy)

rgawdzik 4 days ago 0 replies      
The other recommendations are awesome.

For me, I like using a lot of desktop window management, however the Mission Control transitions are too slow for me, with the fact that are bulky and uncustomizable.

There is TotalSpaces2, which basically is similar to Ubuntu/etc spaces, but you can customize the transitions, hotkeys, locations, etc. Even though I don't have any transitions (so my switching is instant), you can have cube transitions, etc, very similar to Gnome. Downside to the program: $18, with a trial. If you miss proper desktop management, do it. Combined with Spectacle (A tiling window manager), I have functionality similar to XMonad, so I can use my mac effectively.

ken_laun 3 days ago 0 replies      
You have a good older brother.

I recommend these apps.


    iTerm2    Firefox    Sublime Text    Cyberduck    Xcode    Gimp(Image)    Skitch(Image)

    Evernote    Dropbox    Alfred    Memory Clean    1Password

british_geek 4 days ago 0 replies      
Guardian Angel is pretty cool, it locks your Mac when you walk away so you don't need a password to lock / unlock it. Definitely worth checking out for $4 - https://itunes.apple.com/us/app/guardian-angel/id657241260?m...
xauronx 4 days ago 0 replies      
I'm a fan of Sip, it lets you grab colors off the screen and generates code for you.
collyw 4 days ago 1 reply      
itazula 3 days ago 0 replies      
Notational Velocity
2close4comfort 3 days ago 0 replies      
       cached 16 June 2014 04:05:01 GMT