Guide for Technical Development - <AUTHOR> https://www.google.com/about/careers/students/guide-to-technical-development.html <comment><USER2> The message: You don't have to learn much to be a software engineer just master the discrete fields of object oriented programming, web development, ux design, artificial intelligence, building compilers, and cryptography.

If you master one of these fields, you'll be doing well. I agree on taking an intro to each of these, but only to figure out which one you want to specialize in later on and because it's nice to know something about other related fields. You won't master all of these in your career, so don't let the list intimidate you.

<comment><USER3> What is Google even trying to say with this?

You don't need a CS degree because you can learn everything for free on the internet?

<comment><USER4> They're trying to increase the pipeline of software developers. One way to solve the problem of not being able to hire the workforce you need is to train more workforce. This guide is a very inexpensive way for them to increase the top end of the funnel at basically zero cost or obligation to themselves. The topics are pretty specific to the types of work you'd do at Google; they're good, although the field of software engineering is much broader than what's listed here.

</comment></comment></comment><comment><USER5> I wonder who at Google wrote this. HTML is listed as a programming language, and JavaScript is written as two words.

<comment><USER6> I was thinking the same thing. This is sloppy writing. It reads as though it was written by someone unfamiliar with the content, and possibly translated from another language. Some of the grammar is a bit off from what you'd expect from an official release of some kind from Google.

The capitalization of the word "university", and missing the capital H in GitHub. The "Artificial Intelligence" bullet has a formatting error. Missing articles ("work on project").

Not to mention it is vague. The "Learn other programming languages" bullet lists several options, but doesn't say anything about how unrealistic it might be to try and learn all of those languages (it says "and" instead of "or")

<comment><USER7> These examples on their own discredit the post so much that it's a shame it has "google.com" as a domain of origin.

<comment><USER8> Why is so much importance to written language? Why not practice casual writing like casual speaking. I think many of these expectations put lot of pressure on the people who wants to communicate in writing but that language to be written is not mother tongue or might not even gone to high school.

<comment><USER9> The expectations are higher when it comes from a major company like Google, especially when it's speaking from a position of authority on a topic like what to do with your life.

</comment></comment></comment></comment></comment><comment><USER7> For anyone reading this. I strongly recommend to find a better resource than w3school, suggested by Google.

The link is even broken, but this is a tiny detail.

W3School have bad reputation [1] and is considered bad.

[1] [http://www.w3fools.com/](http://www.w3fools.com/)

<comment><USER10> For example: [https://developer.mozilla.org/en- US/Learn/HTML](https://developer.mozilla.org/en-US/Learn/HTML)

But really, if you want to learn html+CSS, you need to spend a bunch of time just making layouts if you want to get a mental model into your head. It is just too finicky to reason about otherwise

<comment><USER11> I prefer W3Schools over MDN since W3Schools gets right to the point. MDN would rather have you read three paragraphs on the history of the feature you're trying to use, but I usually don't need a full history on my reference cards.

<comment><USER12> MDN contains both guides[1] and reference documentation[0] (which I happen to have read some minutes ago). While I have seen the occasional digression on a particular history point that explains some particular design choice, I found references to be often concise, complete, to the point, and correct (even across browsers, providing details if need be). BTW w3schools apparently contains squat about MutationObserver.

[0]: [https://developer.mozilla.org/en/docs/Web/API/MutationObserv...](https://developer.mozilla.org/en/docs/Web/API/MutationObserver)

[1]: [https://developer.mozilla.org/en- US/docs/Web/Guide](https://developer.mozilla.org/en-US/docs/Web/Guide)

</comment></comment></comment></comment><comment><USER13> Hmm, I was a little disappointed with the list for a few reasons

\- Mostly just stuff that you learn along the way if you remotely like coding and go to an engineering school

\- Doesn't talk about what to NOT spend/waste too much time on in favour of the listed things

\- Doesn't list getting familiar with any version control systems. Obtuse as they may be, it's a must-learn skill for a software developer before being able to contribute to production code.

<comment><USER14> You seem to be contradicting yourself -- "just stuff that you learn along the way" vs "Doesn't list getting familiar with any version control systems". Aren't version control systems "stuff that you learn along the way" in your opinion?

IMO, any resource like the one in the OP is going to get bashed ("not the way I would learn stuff"). Might as well learn something from it.

<comment><USER15> No, you pretty much don't need to bother with version control systems unless you're writing code on a team with others. And even then, students will likely never deal with any of the complexities that arise in the real world like branch merges, continuous integration, etc.

In general, school teaches you the content without the tradecraft. You'll need both to be a "rockstar" developer, and I don't see how you could ever get the tradecraft without working in the industry.

<comment><USER16> I can't see any decent school not teaching version control. It's immensely valuable even to the solo developer. Hell, my shitty school taught us Microsoft SourceSafe, which was hilarious because two team members couldn't work on the same file simultaneously. You'd get lots of late night phone calls: "Check in the damn file so I can edit it!"

<comment><USER17> That's a misconception. If you set the VSS 'lock on checkout' flag, then yes it sucks. Its a mistake to set that on a project, yet its the default (?!)

There are adequate merge tools available in VSS, like any other source control tool. Disabling them is silly.

I consider source control to BEGIN when two people check out the same file. If you can't do that, then its really version control.

</comment></comment></comment></comment></comment><comment><USER18> Eh, I agree with most other commentators, saying that it's quite dissappointing and fairly confused why it got 300+ upvotes. Probably the influence of google.com domain. I even double checked the URL if it's not some publicly editable page that happened to be under google.com.

If I had to pick one tip for a junior developer, I'd say slow down when it comes to adopting methodologies, techniques and use your own judgement. What's the benefit of doing? What are alternatives?

When you learn about OOP design patterns, it's easy to suddenly see them everywhere. Factory here, singleton there, and with a bit of imagination observer goes here. Not everything should fit into one pattern or another. One of the benefits of the patterns is that it might make the solution cleaner, easier to understand. If it increases the complexity - don't (or at least think more about it)!

When you learn about Agile (although nowadays it's a very ambiguous term and loads of stuff goes under this label), it's tempting to start organizing standup meetings, plan everything under sprints, assign story points, do TDD, etc. But think twice before going for it. What do you get back? Maybe the morning standups are not beneficial for the team, and just distracts everyone? Maybe story points are not worth the overhead of agreeing on, allocating them, etc and your team can do just fine without them?

If some methodology doesn't really stick to your team, maybe it's an indicator that they are totally fine without it? For example, maybe you haven't had a morning standup for a week and no one has brought it up, everything's going smoothly. Not saying that the listed methodologies are wrong, they are not, just sometimes they are not beneficial.

Same goes for a new language, a new promising framework, etc.

Be critical.

</comment><comment><USER19> Interesting they don't mention any Database related tech ie set theory relvars and PL/SQL et all (plus the no sql query language)

<comment><USER20> Databases weren't part of the core CS curriculum at least when I was a student. I still don't understand why since it seems as core to understanding modern software as anything to me.

<comment><USER19> No wonder some told me that new devs often cant write a simple SELECT statement or use a database from the command line.

<comment><USER21> It doesn't just stop there. They tend to rewrite a lot of things that you could do in SQL on NoSQL databases(Irony..) albeit the implementations are half written, buggy and break on adhoc inputs.

Even more worse, these sort of things come and bite people while these design schemas. After NoSQL database fashion has taken off, schema design, performance tuning et all are rapidly getting rare skills to find people with. This results in all kinds tech debt.

Much could be avoided by having good SQL skills.

<comment><USER22> > They tend to rewrite a lot of things that you could do in SQL on NoSQL > databases(Irony..)

You do realize most "NoSQL" databases are "Not only SQL"?

</comment></comment></comment></comment></comment><comment><USER23> I second the recommendation of Udacity's Software Testing course and Software Debugging course. Software Testing is taught by the author of csmith, and Software Debugging is taught by the author of delta.

I feel that most CS curriculums could be improved by teaching more of testing and debugging. Do you know why it is not done?

<comment><USER24> > I feel that most CS curriculums could be improved by teaching more of > testing and debugging. Do you know why it is not done?

I always thought this kind of skills was learned best through experience, by writing buggy code first, then fixing the bugs, then realizing that some testing could have helped to find the bug much earlier on...

</comment></comment><comment><USER25> Even Google knows that it's called "Javascript", not "Java Script": [http://i.imgur.com/kEpux5f.jpg](http://i.imgur.com/kEpux5f.jpg)

<comment><USER26> I cringed when I read "Java Script".

</comment></comment><comment><USER27> Learn UX, AI, Cryptography, parallel programming, compilers, maths... lol don't let those guys/girls or HR write those guides they put all the keywords in there

</comment><comment><USER28> Interesting, when I use the phrase "learn xyz" i mean "become very proficient at xyz" (maybe a notch below expert).

This post and the comments here seem to indicate that most people take it to mean "get an intro to xyz" (a notch above novice).

</comment><comment><USER29> UX Design is just one mobile Android course.

[https://www.udacity.com/course/ud849](https://www.udacity.com/course/ud849)

Design has become so important that it would be nice to see a lot more resources. Learning to program is relatively easy these days because of the large number of resources. Design is still a dark art.

</comment><comment><USER30> This is a guide for technical development. What I think is useful is DevOps knowledge and knowing your way around Unix or even Windows. Spinning up VMs and setting up your dev environment is often times more than just following directions because there's always some special case you run into that requires some knowledge and experience to solve.

</comment><comment><USER31> I realize it's not a guide for the exact same thing, but How To Become A Hacker[1] has many things to say about leveling up.

The 'hacker attitude' is especially well summed up, imo.

[1] [http://www.catb.org/~esr/faqs/hacker- howto.html](http://www.catb.org/~esr/faqs/hacker-howto.html)

</comment><comment><USER32> I bet that if this list would be published on other domain rather than G, it would be not even taken serious.

</comment><comment><USER33> Does the advice of "just learn to use a few different languages and build a CRUD app that has a cloud hosted database" not hold true anymore?

A really good learning experience is having a crack at making the same app for both android and IOS (much frustration with objective c) For a newbie stuff like persistence storage, learning MVC, learning objective c, java, android and iOS, sqlite, and all the other stuff in between (Xcode is awful).

aAl of the other CS stuff is valid. Although i feel like you probably won't have the necessary buy in to learn algorithms and data structures well if you don't have a degree / GPA on the line.

<comment><USER34> Do you still need to buy an Apple computer in order to develop iOS apps? As long as that's true, I don't think "make an iOS app" belongs in any general- purpose advice for aspiring developers.

<comment><USER33> True, most schools run both, or at least my university did/does. but for the self taught, go android, more phones thus cheaper to get into the game.

</comment></comment></comment><comment><USER35> Does anybody else notice and question the lack of functional programming on that list?

<comment><USER36> It's Google. They're notorious for using... less than advanced languages, to put it nicely. (C++, Java, Python, Go) Obviously it works for them. But just imagine if the founders had been more inclined to a LISP or an ML.

<comment><USER37> We'd still be using yahoo?

</comment></comment></comment><comment><USER38> I compiled a list of online courses on Computer Science and Electrical Engineering the other day. The curriculum is based on my old CS college syllabus. Maybe it can be useful for students. Feel free to add something on the comment.

[https://docs.google.com/spreadsheets/d/1oZ6eY7WqVNGgyRSF9F8L...](https://docs.google.com/spreadsheets/d/1oZ6eY7WqVNGgyRSF9F8Lqf4vCGWaHcWYLGgjfmWj3PU)

</comment><comment><USER39> I don't see much about scientific computing, such as the topics covered in the Numerical Recipes books, many of which are relevant to data scientists.

</comment><comment><USER40> It's nice to see a curriculum that hand picks courses from a few different MOOCs and other relevant resources - that has definitely been a weak point of MOOCs as most of them don't have enough depth/breadth on their own for you to learn all of these things.

I also think this is a great point:

"Work on project outside of the classroom. Notes: Create and maintain a website, build your own server, or build a robot."

</comment><comment><USER41> It's interesting to compare this list with the topics covered by the Software Engineering Book of Knowledge or the Software Engineering PE exam. Requirements engineering, formal documentation, estimation, project management, and ethics all seem to be overlooked in Google's guide.

I guess this is sufficient to be an engineer at Google, but this wouldn't be close to sufficient in other industries.

<comment><USER42> That's software engineering 101. Everyone learns that in school. Of course Google still needs all of that, just like everyone else. But you can pick up the knowledge part (that is actually tested in exams) very, very quickly.

<comment><USER43> No, you can't pick it up "very, very quickly." That is a dismissive and indirect way to assert that engineering is somehow easier or requires less intellectual rigor than "higher" disciplines like CS or math.

<comment><USER42> I tried to make it very clear that you can pick up the knowledge-based part - or that part that you can learn at school or using books, which is also the part that is tested in exams - quickly. In that respect it is indeed easier.

What may not be that easy is the experience to make good decisions. But there is no clear path for that, except being an engineer for a sufficiently long time. This piece was targeted at students and you can't just tell them: "Keep working somewhere else for 10 years".

</comment></comment></comment></comment><comment><USER44> I think for parallel computing, this udacity course is very nice too: [https://www.udacity.com/course/intro-to-parallel- programming...](https://www.udacity.com/course/intro-to-parallel-programming-- cs344)

</comment><comment><USER45> Hmm. They have something on testing, but nothing on requirements writing or project management.

</comment><comment><USER46> This is explicitly a guide for university/college students, and maybe that should be reflected in a title edit. Otherwise the article could be read as Google assuming that a university context is the only time and place to learn.

</comment><comment><USER47> The message: these are the kinds of employees we want to hire.

If you follow these guidelines there is a good chance we would hire you.

Universities: make sure you are teaching students these skills if you want us to hire your students.

</comment><comment><USER48> Lots of criticism here, but very little of it constructive. Please could those people criticising the list explain exactly what is missing, or what should not be on the list?

<comment><USER6> Regardless of what should or should not be on this guide, it's on Google's Career pages and is being served up to students interested in a career at one of the most admired employers in the world. Not only is it on the career section, it's on a section specifically targeting software engineers, which are considered a key component to Google's success. And the page is incredibly sloppy, both to those in the industry and probably many who don't even code but are in the industry (recruiters, non-technical hiring managers, etc.).

<comment><USER19> Google need to think about this from a "Brand" perspective.

Likewise some of Googles published API's are "in need of improvement" \- which is polite civil service speak for your on a PIP

</comment></comment></comment><comment><USER49> I wonder why Go is not in the list of recommended languages

<comment><USER50> Maybe a lack of resources out there or Google thinks if you learn a more generic language you will mold easier

<comment><USER51> Maybe they're a large company and Go is a system's language used by a subset of the company. And maybe it's not important to learn for general technical development with no specific problem to solve.

</comment></comment></comment><comment><USER52> IT makes me sad that they have to specify this: "Checking off all items in this guide does not guarantee a job at Google"

</comment><comment><USER53> This reminds me of my 0 to web developer guide:

www.developingandrails.com/2015/01/crash-course-on-modern-web-development.html

</comment><comment><USER54> > Add to your repertoire - Java Script, ...

Should I ignore this as a typo? How am I to rely then on this as a classified information?

</comment><comment><USER55> Surprised, computer networks and protocols are not listed. Isn't that knowledge essential?

</comment><comment><USER37> This seems mostly fine, a robust undergraduate education should cover most of those bases.

</comment><comment><USER56> Lisp and Scheme? Scheme is a Lisp. I think they wanted to say Common Lisp and Scheme.

</comment><comment><USER57> Grammar and spelling aside, this is a good reference for those Ask HN "How do I get an internship/first job" posts.</comment>


Should you use incremental repair in Cassandra? - <AUTHOR> http://thelastpickle.com/blog/2017/12/14/should-you-use-incremental-repair.html <comment><USER3> Learning Cassandra was really fun, it's very complicated behind the scenes but also incredibly powerful and the ideas behind it helped me learn a lot about what databases are really doing under the hood. Thinking about table shapes (which is effectively the output your application needs to consume in the right order) up front is very difficult but in return you can scale to almost as many writes as you need. Recommended.

<comment><USER4> Just curious... At what scale have you run Cassandra? We're running a cluster containing around 50 TB of data and we see massive issues around compaction and repair. While I agree Cassandra is impressive, it definitely comes with a lot of management overhead.

<comment><USER3> Yes, I've just played around with it, even if what I built was fairly complex and well tested. I assume you are running with a lot of extra servers - <USER2> need extra capacity for the operations you suggest (they move data around right) that might amount to a constant 20% over provisioning from normal use at the times these operations run, obviously also adding and removing servers adds overhead too. It's not like a normal database with provisioning at all.

I'd actually like a mode where Cassandra made itself artificially slower forcing you to over provision and then removed said slowness during operations that need the extra performance.</comment></comment></comment>


Live Current (Auctomatic parent) in trouble -- stock down 80% since purchase - <AUTHOR> http://www.techcrunch.com/2008/11/20/live-current-media-in-trouble-raising-cash/

<comment><AUTHOR> Chart: [http://finance.google.com/finance?chdnp=1&chdd=1&chd...](http://finance.google.com/finance?chdnp=1&chdd=1&chds=1&chdv=1&chvs=Logarithmic&chdeh=0&chdet=1227219954251&chddm=66079&q=OTC:LIVC&ntsp=0)</comment>


Show HN: Subform, a UI layout tool - <AUTHOR> https://subformapp.com/ <comment><AUTHOR> Hi HN, author here (along with RyLuke).

We launched Subform on Kickstarter in 2016, but are just now opening up our beta to the public.

Subform's focus is on layout. Dynamic layout systems are pretty functionally complex, but creating them is more of a visual process that really benefits from direct-manipulation and a tight feedback loop. (Rather than the endless tweak-reload/recompile-tweak-reload/recompile cycle)

We started with flexbox, but ended up designing our own layout system, which is both simpler and more expressive.

For HN folks who like thinking about conceptual design: [https://medium.com/subform/why-not-flexbox- ddbe60396163](https://medium.com/subform/why-not-flexbox-ddbe60396163)

Or if you just want to check out the layout system in code, there's a WebAssembly build: [https://github.com/lynaghk/subform- layout](https://github.com/lynaghk/subform-layout)

Beyond the layout semantics, we've also spent quite a bit of time on the user experience for adjusting layout and hierarchy in the app: [https://medium.com/subform/dynamic-layout-at-design- time-91d...](https://medium.com/subform/dynamic-layout-at-design- time-91d3bbda64e3)

<comment><USER3> This seems like a good place to say I really enjoyed watching the video of your talk from Deconstruct Conf 2017 ([https://www.deconstructconf.com/2017/kevin-lynagh- choosing-f...](https://www.deconstructconf.com/2017/kevin-lynagh-choosing- features), referenced in your medium post) about your design process in removing CSS - gave me some nice insight into the thought that should go into the complexities you expose to users.

Definitely worth a watch for people interested in designing software for use by other people.

<comment><AUTHOR> Thanks!

I should also say that I think CSS is great --- there's nothing like trying to come up with your own solution to make you appreciate the tradeoffs that other folks have made.

We had the advantage of starting from scratch in a more constrained problem space of UI layout, rather than CSS's reflowable documents + UI sometimes + 20 years of backward compatibility.

Daniel Jackson's work on conceptual design ([http://sdg.csail.mit.edu/projects/conceptual/](http://sdg.csail.mit.edu/projects/conceptual/)) is a great starting place for thinking about this kind of thing.

</comment></comment></comment><comment><USER4> Not in the target demographic, but it certainly looks interesting. Over the years I grew used to CSS, and generally find it's good enough for my needs.

I find it incredibly refreshing to see you guys openly point out use-cases where the tool might not be a good fit.

Any plans to license the layout engine? If you decide to go down that path, I'd ask you to consider allowing free non-commercial usage. I probably wouldn't consider paying for a library unless I got to try it first, but if it's a good fit it can be well worth the cost. e.g. At my previous job we ended up buying a Highcharts license by my suggestion, since I'd had positive prior experiences and it was a good fit for our problem.

Here's one complaint I have with some designers: they always design for the perfect scenario. They don't consider what should happen when a value is too long or short, as well as what should happen when dealing with an empty collection, or worse, a large one. Having a way to specify all those kinds of variations would be absolutely amazing.

<comment><AUTHOR> The runtime engine already free for non-commercial usage: [https://github.com/lynaghk/subform- layout/blob/master/LICENS...](https://github.com/lynaghk/subform- layout/blob/master/LICENSE)

Or am I misunderstanding your question?

Re: designing for the perfect scenario, I'd say devs are guilty of that too --- I'm in Australia right now, and it's obvious when an app or site has only been tested on localhost =)

Specifying dimensions in the "application state space" along which to vary is a tricky problem. It's not clear to me how much of that can work in a GUI tool vs. programming languages and stuff like Clojure.spec, property-based testing, concolic testing, etc.

</comment></comment><comment><USER5> First, this tool is brilliant. I've been a Front end dev for 7 years and I still google "centering in the unknown" every time because it's easier than remembering the properties. The whole process of being expressive in HTML and CSS is so broken and the tools today are broken right along with it. Thanks for trying to make it better!

Second, charging for a beta...what a great idea. I've signed up for 7 competitors this week and can't remember their names and will never again login. But if I have to decide this problem is big enough to make a monthly commitment, I'm damn sure going to log back in to get my money's worth. I hope y'all crush it. Thanks.

<comment><USER6>
      display: flex;
      justify-content: center;
      align-items: center;

<comment><USER7> [•] OP's point confirmed.

<comment><USER6> He's been a frontend dev for 7 years -- he can learn _three_ new CSS properties that he claims would solve a major problem of his.

Beyond that, all of the CSS that he writes on a daily basis would become more robust once he learns a few more values (space-between, space-around, space- evenly, flex: 1;, etc.).

<comment><AUTHOR> Please give the OP the benefit of the doubt and assume that he or she is a competent professional.

Here are some situations where _you_ may want to test your understanding of centering in CSS:

\+ Center an absolute positioned element whose width and height are unknown (e.g., it's an <img>).

\+ Does anything change if the parent element has padding?

\+ Create an element that's width 50%, height 50%, and center it in a parent of unknown size.

\+ Do any of these solutions still work if all elements have a 10px border?

\+ Which of these solutions will remain centered if the parent has smaller width/height than the child?

How confident are you in any of these solutions without being able to run them?

CSS is quite complex. It was built up incrementally by reasonable, intelligent people trying to solve hard problems.

If you're convinced that things are easy or that other people struggle simply because they are lazy, then you'll never be able to learn and grow your own skills.

<3

<comment><USER6> You are right. My answer was lazy and not representative of real-world scenarios. For that I apologize.

The article OP mentioned[0] is from 2011 and antiquated unless you're writing for IE8 or below (which, of course, could still be a requirement).

I was merely trying to point out a better solution to OP's face-value problem and suggest a new CSS pattern that I personally have grown to love.

@iambateman - feel free to email me if you want some help learning some of these CSS techniques. I'll gladly walk you through them and answer any questions that I can.

@lynghk - cheers, thanks for your comment.

[0] [https://css-tricks.com/centering-in-the-unknown/](https://css- tricks.com/centering-in-the-unknown/)

<comment><USER5> Thanks for this. The discussion has been fascinating. Just wanted to add that the tweak-save-check-repeat pattern is awfully tedious and probably the bigger issue.

Making changes directly on an element in a way that makes sense is the holy grail, and remains an unsolved problem in my opinion. Browsersync can help, and Webflow (et al) is trying to help, but none of the tools allow real direct manipulation.

<comment><USER8> I also found this thread very interesting, and then I got here and thought I recognized your username. Turns out you asked to try the alpha of my own tool Cicerone ([http://cicerone.co](http://cicerone.co)). Hi!

Cicerone doesn't yet do the kind of thing discussed here because it is originally designed to be a rich structured content editor with customizable HTML/CSS components, as opposed to a design tool. However the more I use it myself, the more I find that designing anything in CSS is the biggest PIA, and it would be really cool if I could bring a little sanity there. So I've been thinking a lot about how to do this. Stay tuned (but don't hold you breath, it'll be a while.)

PS: and if you do get around to poking around with Cicerone, do let me know your thoughts: good, bad, or random, I'm happy to nerd out on tools. Cheers Stephen.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> I consider myself a big fan of design tools. I really want to try yours, but I can't bring myself to pay for a beta. I might consider a paid trial ($5/2 weeks) or something, since I appreciate your transparency and cause. Just some feedback is that despite the transparency and your willingness to refund no questions asked, I still am having trouble getting over the mental barrier

<comment><USER10> They already raised 112k on Kickstarter [https://www.kickstarter.com/projects/298226251/subform-a- mod...](https://www.kickstarter.com/projects/298226251/subform-a-modern-tool- for-digital-product-designer)

Note: I wish the kickstarter video was on the website linked here. The video is very compelling.

<comment><USER11> There is a video still on that page. You just have to scroll down. It's on the second image.

</comment></comment></comment><comment><USER12> Nice, [https://huu.la](https://huu.la) implements a similar idea, but for web pages -- for anyone that's interested.

</comment><comment><USER13> Looks super cool!

I'm curious why you decided on a monthly subscription model. Apart from support and updates, what is the ongoing value? Other desktop tools like this I've seen (Sublime Text, Paw, xScope) are available for a bit higher, one-time price.

Just curious what your guys' thought process was.

<comment><USER14> I believe they're aligning themselves to revenue models similar to Sketch[1], Figma[2], Framer[3], and a quite a few other competitors in the same space

[1] [https://www.sketchapp.com/](https://www.sketchapp.com/)

[2] [https://www.figma.com/](https://www.figma.com/)

[3] [https://framer.com/](https://framer.com/)

<comment><USER15> The issue is that Subform is 3x the price of Sketch (which lets you keep your current version when your license runs out) and 2x as expensive as Figma Pro and Framer.

Subform is in beta, and the others are finished and offer free trials.

<comment><USER16> Subform is more niche than Sketch or Figma. It's natural that the pro tool for a limited audience is more expensive, just like AutoCAD costs 10x what Illustrator does.

Also, Figma and Framer are backed by venture capital. They're going for marketshare and don't need to make any money from licenses. I appreciate that the Subform authors are upfront about their position on the order page: they're two people who need to make a living, and you can choose to support that or go elsewhere.

<comment><USER17> Still, having the whole adobe suite costs ~$25/month (if you wait until a promotion) Having the whole Jetbrains Suite costs ~$25/month Sublime costs ~$70 Leonardo (a drawing program similar to photoshop) $39 (paid once) - developed by 1 person.

The cost of subform is truly on the higher side. I understand that it's catered to a niche target group - how niche is it though? if it's managed by 2 people, 1000 customers would bring in $25.000 monthly before tax. I cannot imagine that they aim for 1000 customers only, though.

<comment><USER16> The market for tools that bridge design and development is large in theory, but quite difficult to reach in practice. Designers are busy and overworked already — they don't have the time nor interest to learn new tools that would require major workflow changes. Developers are accustomed to all dev tools being free, and they're deeply suspicious of anything that would tilt their creative freedom over to the design side.

I tried — and failed — to make a living in this market with two products, Neonto Studio [1] and React Studio [2]. Reaching one thousand subscribers was a distant dream. Nowadays we just give away the base product, and the real business is focused purely on customizing the software for enterprise in-house development where the pain is much greater than with what one might call "competent teams" (i.e. practically anyone reading HN).

[1] [http://neonto.com/nativestudio](http://neonto.com/nativestudio) [2] [https://reactstudio.com](https://reactstudio.com)

</comment></comment></comment></comment></comment></comment><comment><USER18> Looks like a well thought out tool. Though to get me or my team to adopt it I'd need at least a sprint or two of a free trial. I hope it gains adoption. It probably says more about me than the business strategy, but I don't think I've ever bought a tool that I couldn't try or play with first for free.

What I'm not sure it does, and would hope it does, is provide a WYSIWYG way of CSS layout. I.E. under the hood it's using css3 to layout, but in a way I don't have to think about it, and could output it after I get the design the way I want.

<comment><AUTHOR> Check it out, and if it doesn't work for your team we'd be happy to issue a refund.

Re: WYSIWYG CSS, we initially started w/ flexbox but things like the difference between margins, padding, and absolute positioning confused tons of designers coming from Photoshop/Sketch.

We ended up implementing our own layout system, which can be used directly in production (if you want to ship a runtime), otherwise it's possible to map layouts to something like flexbox+grid or native engines if your designers stay away from things that are hard to implement on those platforms (e.g., aspect ratio).

Our goal is to help people think about layout directly, not try to hide the inherent complexity from them. At the end of the day, most all digital products require close collaboration between designers and implementors.

<comment><USER19> Why not open it to a free trial? I'd like to try it out as well. I don't like the whole refund song & dance game.

<comment><AUTHOR> We need to focus on folks who're sufficiently motivated to solve this problem. If a refundable $25 is too high a hurdle, it's unlikely those folks will actually attempt to use the tool, reflect on their workflow, or otherwise help us build a compelling product.

<comment><USER20> Disagree.

First, I won't say your product is a commodity, but there are many, many, many layout and design tools out there. I'm not going to pay $25 to evaluate each one. It's as much about the sign-up-and-hand-over-the-credit-card process as it is about the money.

Second, the fact that it's refundable doesn't matter. I'm never going to ask for a refund. The hassle and the back-and-forth isn't worth $25 to me.

Third, I'm willing to pay _way_ more than $25 if your tool actually solves my problem. There are tons of UI tools out there, but I haven't found the _one_. It's totally worth it to me if you save me hours of work.

So don't add any friction to the process. Feel free to time-limit or cripple the tool so I have to pay to do any real work, but don't waste my time, and don't make me pay you for the privilege of sinking a bunch of my time into determining if your product works or not.

Find a way to do free trials, and do it in such a way that your costs are minimal. It's worth it.

<comment><USER21> I don't understand the downvoting going on here. Even if you don't agree with the comment, it's still a valid point.

</comment></comment></comment></comment></comment></comment><comment><USER22> Looks great and I may well give it a try. I have one question though which I can't seem to find any mention of from the site - is there any way to define breakpoints for responsive layouts?

Speeding up laying out elements is really nice but it's difficult to communicate responsive designs to production without having to duplicate artboards.

</comment><comment><USER23> So, what's the difference between this and Webflow?

<comment><AUTHOR> Webflow is an web-specific IDE.

It's great for production work where you are explicitly targeting the web --- we've actually pointed some of our Kickstarter backers to Webflow after they explained their needs and we realized it'd be a better fit for them.

Subform doesn't target a specific platform. Its focus is to help folks explore layouts and design ideas easily. If you are familiar with industrial design, an analogy would be that Subform is somewhere between SketchUp or Inventor/SolidWorks, and Webflow is closer to a CAM tool.

<comment><USER24> Webflow is only useful for landing pages and classic websites and blogs, but even landing pages are gaining interatcive app like features, like integrated checkout or onboarding features. It doesn't make much sense seperating web and app development from a design perspective anymore going forward. A landing page is an app.

With this in mind, how could Subform fit into a modern workflow, or how would a end to end workflow that leverages Subform on all platforms (web, mobile, desktop) look like?

What I'm looking forward to is a living stylable styleguide that includes layouts and translates into code, like a visual Babel.

</comment></comment></comment><comment><USER25> Very pleased to see something come out of the Kickstarter. I was very impressed by the demo at the time but didn't back it having been burned by too many projects that went nowhere.

This doesn't look like it does everything in the Kickstarter video, but keen to be proven wrong!

Edit: Also re your website, a comparison with other tools to highlight what Subform can do that others (Invision Studio etc) can't would be very helpful.

</comment><comment><USER26> Is this similar to Pagedraw ? [https://pagedraw.io/](https://pagedraw.io/)

</comment><comment><USER27> Kudos for releasing it on Windows too, too many desing / UX tools simply exclude it.

Also, I appreciate the honesty here: [https://subformapp.com/why-not- subform/](https://subformapp.com/why-not-subform/)

</comment><comment><USER28> Looks super useful. Great work.

From a copywriting perspective, I think you can you to find a more descriptive/useful sub headline. I've read the page and I get and need what your service does, but I still have no idea what the sub headline means.

<comment><USER29> Thanks, Nick. You're not the first person to mention this, we'll take a crack at reworking it. ;)

</comment></comment><comment><USER30> [https://github.com/lynaghk/subform- layout](https://github.com/lynaghk/subform-layout) (with CodePen link!)

</comment><comment><USER31> I've been subscribed to your newsletter for a long time - years, I think - <USER2> it's wonderful to see your hard work pay off!

</comment><comment><USER32> Any education discount? It looks like a good tool for teaching UX. Sketch and other many UX tools have education discount.

</comment><comment><USER33> iOS only?

<comment><AUTHOR> Subform is a desktop app, it works on Windows and OS X. The runtime layout engine is very low-level and essentially just does arithmetic, it can probably be made to run easily on any platform w/ an LLVM backend.

<comment><USER34> What language did you write it in?

<comment><AUTHOR> The desktop app is mostly Clojure, with a handful of Rust for OS interop for things like the clipboard access and file watching. The embeddable engine is written in Rust.</comment></comment></comment></comment>


Show HN: JapanConnect iPhone app - <AUTHOR>

I'm the co-founder of FilmFest (filmfest.me) and we had just done an app for the San Francisco International Asian Asian American Film Festival (http://caamedia.org).
The Festival was in full swing when the quake hit. We've responded in one of the only ways we could - by building an app. (http://goo.gl/IKbQj)
Right now it's very simple and the content comes from our WordPress site with links to news sources and stories as well as to googles people finder database and other ways to get involved.
I'd love to hear what people are reading and get connected with people who have something to contribute or have ideas on how we can help from here in San Francisco.
Humbly yours,
- Andy
@japanconnect
japanconnect.org
email@example.com
PS. We are working on an Android version and updates to the iOS version. <comment><USER2> Great work! We were also busy to come up with something last week. <http://tsunami-homes.woisy.com> wants to crowdsource private resources for aiding people affected by the tsunami.

</comment><comment><USER3> Very cool. Glad to see other developers creating an easy way for people to stay connected, provide aid, and keep information about the cleanup and humanitarian efforts in one place.

</comment><comment><USER4> Clickable:

<http://www.japanconnect.org/>

Keep up the good work.</comment>


AutoGraph converts Python into TensorFlow graphs - <AUTHOR> https://medium.com/tensorflow/autograph-converts-python-into-tensorflow-graphs-b2a871f87ec7 <comment><USER2> Hi, I'm one of the authors, happy to answer any questions!

<comment><USER3> what is the advantage of the example showing that it is possible to do the whole training in-graph [https://colab.research.google.com/github/tensorflow/models/b...](https://colab.research.google.com/github/tensorflow/models/blob/master/samples/core/guide/autograph.ipynb#scrollTo=gzP1oMcy5gSp)

does this speed up significantly the training, and in what way? or is it more to show that it is feasible</comment></comment>


Nim Programming Language v0.16.0 released - <AUTHOR> http://nim-lang.org/news/e029_version_0_16_0.html <comment><USER2> Nim is a language I really want to like. Having looked for a language that's 1) Cross-platform, 2) Script-like syntax and 3) C Speeds, Nim should be my ideal language. What I find though is a sense of frustration that grows over time when using it. Sometimes this stems from the quality of the documentation and other times from obscure problems that's hard to Google and get an answer for.

I do appreciate Nim, and bought Dom's book, but I feel it's missing a trick in its current state. No doubt I'll try it again as I'm ever the optimist :-)

<comment><USER3> When you say C speeds do you mean absolutely C-like or just a lot faster than Perl/Python/Ruby? Would e.g. OCaml work?

<comment><USER4> In my (admittedly very poor) testing, Nim can get to within 5% or so of C speeds for simple benchmarks-it compiles to pretty decently optimized C, and then can use LLVM/Clang as a backend to take advantage of all the amazing optimization work being done there, so in the end you have code that is very similarly performant to C.

</comment></comment></comment><comment><USER5> Some articles on Nim for those that haven't encountered it:

Nim by example: [https://nim-by-example.github.io/](https://nim-by- example.github.io/)

Getting started with Nim: [https://akehrer.github.io/posts/getting-started- with-nim/](https://akehrer.github.io/posts/getting-started-with-nim/)

What is special about Nim: [https://hookrace.net/blog/what-is-special-about- nim/](https://hookrace.net/blog/what-is-special-about-nim/)

What makes Nim practical: [https://hookrace.net/blog/what-makes-nim- practical/](https://hookrace.net/blog/what-makes-nim-practical/)

Introduction to metaprogramming: [https://hookrace.net/blog/introduction-to- metaprogramming-in...](https://hookrace.net/blog/introduction-to- metaprogramming-in-nim/)

Writing a 2D platformer with SDL2: [https://hookrace.net/blog/writing-a-2d-platform-game-in- nim-...](https://hookrace.net/blog/writing-a-2d-platform-game-in-nim-with- sdl2/)

</comment><comment><USER6> I have love-hate relationship with Nim. It's the best C alternative I can find for our high performance supercomputing needs, yet it breaks my code [0] (yes, it's broken with 0.16.0 now) every single new release for the past year.

[0] [https://github.com/jxy/tpl](https://github.com/jxy/tpl)

<comment><AUTHOR> Sorry about that. Have the changes which break your code been documented in the changelog? If not please report them[0], if this is a regression then it should be fixed quickly.

0 - [https://github.com/nim-lang/Nim/issues/new](https://github.com/nim- lang/Nim/issues/new)

<comment><USER6> It's a problem with macro heavy code in Nim currently. Macros on typed NimNode still touch too many undocumented/unspecified Nim internals, that it always takes me some time to actually figure out what is the culprit.

On the other hand, code without much typed macro transformations is really solid now, c.f. [0], the repo you are watching.

[0] [https://github.com/jcosborn/qex](https://github.com/jcosborn/qex)

<comment><AUTHOR> I see. I would guess that macros on typed NimNodes are indeed unstable and underused :\

Please don't give up on us. I see that you've already created a couple of issues, if we forget about them then please keep pinging us on GitHub or IRC.

</comment></comment></comment></comment><comment><USER7> I've been doing as much Nim as I can recently and really enjoying it. I just took a week to put together a proof of concept Python module wrapper around Nim code and I'm really looking forward to implementing some optimized inner loops for our main Python application at work.

</comment><comment><USER8> I really like Nim, it is fantastic creation. That said, I didn't use it nearly as much as I would like and people complaining about bugs are probably right. Thank you contributors for your work.

If it could carve a small use case for itself, it would help it's momentum. Something to be recognized for.

</comment><comment><USER9> Nim comes very close to be the perfect language for me (game development, machine learning etc.). Some things I experimented with including some links to show what I tried as follows:

\- Fully controllable and plugable GC: I can decide for myself when the GC runs and for how long. Very important for games. If I do not like the GC I can even write my own or choose one of the many existing ones. See: [http://forum.nim-lang.org/t/2646](http://forum.nim-lang.org/t/2646)

\- Meta-programming, templates, concepts etc.: To be able to write a machine learning library I needed something that can replace simple code (DSL) with more complex code using scalar math, SIMD, SPIR-V, OpenCL or Cuda. I also wanted to be able to automatically generate bindings for scripting. See: [http://forum.nim-lang.org/t/2654](http://forum.nim-lang.org/t/2654) and [http://forum.nim-lang.org/t/2635](http://forum.nim-lang.org/t/2635) . As I understood by reading the forums they will soon merge in many concept improvements. See: [http://forum.nim-lang.org/t/2396](http://forum.nim- lang.org/t/2396)

\- Nim itself can be used as an embedded scripting language: Nim as a scripting language is used by the compiler to run Nim while compiling to generate new code. Nim as a scripting language can also be used as a more advanced configuration language (like Lua in the beginning). It can be used as an embedded or standalone scripting language as well. See: [http://forum.nim- lang.org/t/2647](http://forum.nim-lang.org/t/2647) and [https://github.com/komerdoor/nim-embedded- nimscript](https://github.com/komerdoor/nim-embedded-nimscript)

\- Compiling to C89 code (useful for creating libraries and cross-platform support etc.): I want my games to compile on platforms not supported by GCC or Clang/LLVM (actually I am sure they can support them all after some patching) but with their own C89 compiler. After compiling to C it is easier for me to see what the code will actually do. Still if I really want to I can choose to compile to Javascript, C++, Objective-C and LLVM (not officially included yet) as well. See: [https://github.com/arnetheduck/nlvm](https://github.com/arnetheduck/nlvm)

\- Pretty good functional programming support (as far as compiled code allows for): For this I created a library that use the zero-overhead iterators. There are many alternatives as well and I like to be able to choose between multiple implementations of higher level functionality. See: [https://gist.github.com/komerdoor/70d9c25820952624cf797890a1...](https://gist.github.com/komerdoor/70d9c25820952624cf797890a18f9cd5) . Of course a better implementation is possible by combining this with concepts, generic dynamic method binding and all other of Nim's features. See the following again: [http://forum.nim-lang.org/t/2654](http://forum.nim- lang.org/t/2654)

\- Easy integration of existing C code: I wrote part of my code in C (low- level) and another part in Nim (mid-level).

Some things which may get new Nim users in shock but I learned to love:

\- Use of indentation using spaces for grouping like Python: I never really liked this but I cannot ignore that this made my code easier to read and discourages my preference for one-liners (yes I know bad habit and does not work well inside editors and with source-control).

\- Multiple ways to write the same identifier (case/underscore insensitive): Liked this from the beginning. I am really consistent to choose a single style but all my C code is written using underscore (ex.: typens_do_something(x)) while in Nim in prefer to use camel case (ex.: typensDoSomething(x)) or fully drop the namespace entirely (ex.: doSomething(x) or x.doSomething()).

\- Multiple ways to call methods: Both "abc".toUpper() and toUpper("abc") are the same. There are no namespace conflicts because Nim uses the best match for toUpper like: func toUpper(c: char): char or toUpper(s: string): string. It also makes it easier to add new methods for existing types while still being able to call the methods like if OOP is being used.

\- Minimal support for OOP but encouraging composition over inheritance

<comment><USER9> Sorry people for the missing punctuation marks and paragraphs. It looks like there is a bug in Hackers News that does not allow me to edit my post. Tried different browsers even. Update: It seems I am able to edit this one

<comment><USER10> You can only edit a post for up to an hour after you've posted it.

<comment><USER9> It was within the hour and the edit button was still there. I already reported this to the HN team and someone updated the post for me.

</comment></comment></comment></comment><comment><USER11> I don't want to be that guy but I don't see this language as usable. Not because of technical reasons but because... I mean... look at it. I can't understand what's going on. It's way too complicated.

       type Vector* {.importcpp: "std::vector", header: "<vector>".}[T] = object

       template `[]=`*[T](v: var Vector[T], key: int, val: T) =
         {.emit: [v, "[", key, "] = ", val, ";"].}

What the hell does that mean?How the hell do I check this is correct at a glance?

I know "it's easy", "you'll get used to it", "after you learn the syntax it'll be great" but I mean... no one is going to buy that.

I get that it's supposed to be condenced but I don't necassarily buy that as being the end-all-be-all of language construction. I think that's actually quite harmful to programmers. If a single character means the same as 10 lines of a simpler language then you're more likely to hide a mistake in your code.

I'm not saying it's wrong either, I'm just saying a majority of programmers will be afraid of it. I rather like what swift is trying to do with condensing well-known operations but I don't think Nim and many other ML-inspired languages do it in an approchable way.

<comment><USER12> Macros implemented with ... string interpolation? This looks like a suboptimal idea.

Edit: I spoke too soon. This looks like code generation, and I guess that you ultimately have to do stringy things at some point. But couldn't there be some kind of type-safe mechanism for this?

<comment><USER13> There are basically three ways to do meta programming in nim. Simple replacement of tokens:

        const debug = true
        template log(msg: string) =
          if debug: stdout.writeLine(msg)

You could also use other concrete types, generics and type checked or unchecked expressions instead of string.

Macros are syntax tree transformations, similar to rust compiler plugins:

        import macros, strutils

        macro readCfgAndBuildSource(cfgFilename: string): typed =
          let inputString = slurp(cfgFilename.strVal)
          result = newStmtList()

          for line in inputString.splitLines:
            # Ignore empty lines
            if line.len < 1: continue
            var chunks = line.split(',')
            if chunks.len != 2:
              error("Input needs comma split values, got: " & line)
            let entry = quote do:
              const cfg`chunks[0]` = "`chunks[1]`"
            result.add(entry)

          if result.len < 1: error("Input file empty!")

        readCfgAndBuildSource("data.cfg")

This reads a file and creates constants from it at compile time.

Emit is a tad more complex. Nim is compiled to another language like c, c++ or llvm. Emit lets you emit code in the host language, mostly to wrap libraries. Don't think there is any way to make that typesafe.</comment></comment></comment>


Amazon, Microsoft and other tech giants urge WA to pass eviction reform - <AUTHOR> https://www.geekwire.com/2019/amazon-microsoft-expedia-industry-titans-urge-washington-state-pass-eviction-reform/ <comment><USER2> Far easier to virtue signal than to actually work towards solving the shortage of housing.</comment>


Spammers Abusing Trust in US .Gov Domains - <AUTHOR> http://krebsonsecurity.com/2016/03/spammers-abusing-trust-in-us-gov-domains/ <comment><USER2> Bit.ly could follow the links, see if they redirect, and if they do then don't flag them as ".gov" if they don't terminate on a ".gov" site.

Ultimately however it would be better to eliminate these insecure redirects because even without bit.ly spammers can use .gov websites to make their link seem more legitimate.

<comment><USER3> Or a step further: don't use the usa.gov URLs for any link that appears to contain an embedded URL (e.g, contains "[http://"](http://") or "[https://"](https://")).

</comment></comment><comment><USER4> This is clearly a public safety issue. Private industry should set up a licensing board that regulates government use of technology, contingent on some demonstration of competence.</comment>


The Rat Race - <AUTHOR> http://techcrunch.com/2012/04/09/the-rat-race/

<comment><USER2> To quote Charlie Munger, "Envy is a really stupid sin, because it's the only one you could never possibly have any fun at."

</comment><comment><USER3> Very timely post as thousands of entrepreneurs silently envy Instagram's huge acquisition.

</comment><comment><USER4> There will always be someone bigger, faster, stronger, smarter and more successful.</comment>


Ask HN: How do you keep up the energy to work on side-projects after work? - <AUTHOR> Curious about what other people do to maintain the energy (and money) to work on side projects after work. What's your side project working schedule like? <comment><USER2> An omnipresent underlying sense of anxiety and rage caused by something or other in my past that is useful for work but not useful for building relationships!

<comment><USER3> Michael Jordan was great at doing this. His hall of fame speech is filled w/ anecdotes about him turning slights into motivation: [https://www.youtube.com/watch?v=XLzBMGXfK4c](https://www.youtube.com/watch?v=XLzBMGXfK4c)

</comment></comment><comment><USER4> My strategy is just to push myself to get _something_ done, even when I don't want to. So, the other night I wrote an SQL query. It was probably 20 mins of work, but it brought me closer to finishing the project. Other days, I'll end up "feeling it" and putting in several hours on a project. So, small increments plus the occasional big push.

<comment><USER5> true. my whole side project output yesterday was a shell script that monitors if another process is running and lights an led on the raspi if yes :P 40 min work. But one step closer to the goal

<comment><USER6> What is the goal?

<comment><USER5> Self riding rc car :-) i thought it would be a 'simple' side project... 2 months ago

</comment></comment></comment></comment><comment><USER7> I don't, I would also like to know. I get home, feel like satan drained my soul all day and sedate myself to continue the vicious cycle the next day.

<comment><USER8> Sounds like you are in the wrong job or the wrong company. If the day is that bad every day you need to consider moving.

<comment><USER9> Either that, or it's just mentally exhausting to be productive for a full day. It might not be that the job is bad, but rather that the amount of energy for certain kinds focus and tasks is limited.

In that case, if the desire to do side projects is great enough, I suppose the correct solution would be to try going for a somewhat shorter work week.

<comment><USER7> I think I have reached a critical point in my career where I have to choose whether I work to live or live to work. I prefer the prior, so I will be going that route. I'll be resigning on Wednesday.

</comment></comment></comment></comment><comment><USER10> I have an hour commute to my real job, so I use that to hack on my side project before and after work.

Setting small goals has always helped me keep up the energy to move it forward. When you're working in really small time chunks, it's important to make sure you have something achievable to accomplish. You're not going to be able to do things like "finish the sign up flow" in one night, but you can do things like "finish the authByPassword() method" and still be moving forward.

As for the money aspect of it, that's simple, just don't spend any. Bootstrapping is all about doing more with less, so don't spend anything until you absolutely have to. When you do finally start writing checks, make sure you're spending on things that will have the highest impact.

<comment><USER11> I tried that last year when I had a 2 hour commute.

It doesn't work well if you have to get off every half an hour to switch trains. Or if you can't get a seat.

</comment></comment><comment><USER12> Why do you want to work on a side-project?

1\. If it's to learn more, I would instead suggest focusing on learning on the job. It's more realistic, you can get more resources, etc.. E.g. I've found learning new programming languages much easier at work than in my spare time: [https://codewithoutrules.com/2017/09/09/learn-a-new- programm...](https://codewithoutrules.com/2017/09/09/learn-a-new-programming- language/)

2\. If you want to create a side business, I've done some combination of working half an hour each morning and increasing my personal time by negotiating a part-time job. An interview with someone who has negotiated shorter workweek at many companies: [https://codewithoutrules.com/2018/01/08/part-time- programmer...](https://codewithoutrules.com/2018/01/08/part-time-programmer/)

</comment><comment><USER13> I don't usually go home. I stay in the office and use a separate laptop or go to a coffee shop. I know if I go home I'm just going to sleep immediately. Then Ig et up in the middle of the night and get more tired.

Using S.M.A.R.T. goal system ([https://www.yourcoach.be/en/coaching- tools/smart-goal-settin...](https://www.yourcoach.be/en/coaching-tools/smart- goal-setting.php)) is helpful, too.

"I will resolve this 1 bug." "I will scope out this feature" "I will wireframe this UI" "I will start and tabulate this survey with these 2 questions"

These are all helpful and can be easy to finish.

</comment><comment><USER14> Regarding energy, I do what I can when I can, and I don't stress about things taking a long time.

Regarding money, I don't spend any. Between free services, free/promotional tiers of paid services, and open source tools, there's rarely a need to spend anything until your project is generating cold hard cash.

</comment><comment><USER15> Some things have made a difference for me:

\- Working on side projects that have less overlap with work and scratch technical and creative itches that aren't a part of my day job.

\- Getting in the habit of sitting down to do some small task every day. Some days that turns into a multi-hour super-productive hack fest, sometimes it's writing a piece of copy and that's it. Now that I'm in that habit, I put in a really productive session about 2x per week on average, but I try to not care about that statistic.

\- Setting easily achievable goals every week, and trying to consistently surpass them (examples: add an 'about' section, write a query)

\- Getting serious about working out and eating mostly right fixed the afternoon doldrums for me. I normally do weights and cardio in the morning before work and a jog/yoga/swimming after.

</comment><comment><USER16> I work from home which gives me about 30-60 mins extra compared to those that commute. Often I'll work a bit in the morning. Then at night once my 7mo old goes to bed I work for another 1-2 hours before sleeping. I leave all my editor and terminal windows open so I can quickly switch back to my side project as needed during lunch or while other software is building or off the clock.

I always make sure to workout, sleep plenty and eat right which tremendously helps my mental fatigue. Also I quit my high stress job and work for a company with much more relaxed work environment so my daytime work is fun and doesn't burn me out.

But I agree, it's not easy balancing life, family, passions, future aspirations. It's like a wheel you're trying to keep balanced and round and things will always give and take.

</comment><comment><USER17> Sometimes I do mornings, but then I don't have enough focus capacity left for work.

Best so far is 4 day work week - Friday is exclusive for me, weekends for family. Pay-cut is 20% but I gain 50% more time off, time is money too.

<comment><USER18> I have asked for a 4 day week at my company but they wouldn't do it. This would be my dream.

<comment><USER12> Like I said elsewhere, it's possible (though not _easy_ ). This guy has done it multiple times over past 15 years: [https://codewithoutrules.com/2018/01/08/part-time- programmer...](https://codewithoutrules.com/2018/01/08/part-time-programmer/)

(I also wrote a book with more stories and advice, with a whole chapter on negotiating part time work based on my experience and that of others: [https://codewithoutrules.com/saneworkweek/](https://codewithoutrules.com/saneworkweek/))

</comment></comment></comment><comment><USER19> Work on things you enjoy/want/need and don't feel like you have put any more effort into it than you find rewarding (from whatever metric matters to you: fun, money, etc.) It is a side-project after all and not your main gig.

If you're feeling too exhausted/no time/other is getting in your way, identify what exactly the issue is:

\- is it other personal stuff/hobbies? (ask yourself why your side projects rate below these... are you willing to re-prioritize?)

\- is it family? (unless you have buy-in/support from them, you may be screwed esp. if you have a S.O./kids... sorry)

\- is it the day job? (ask yourself if its really work maxing you out or pressure you're putting on yourself. If it's truly external pressure from work, devote all of your free time to getting the hell out of there ASAP: life's too short)

\- etc. etc.

The bottom line is to figure out where your time/energy is going. Assuming that the side-project is something you want to do, it should not be too difficult to find at least some time for it or understand exactly why you're not making progress.

Having covered all that, here's what I'm thinking might be going on from the way you phrased the question: do you really _want_ to do the side-project(s) or do you just feel like you should because it seems like everyone else has theirs? If that's the case, you really shouldn't be bothering with a side- project... it's not for everyone.

</comment><comment><USER20> I've always found huge success in the mornings and huge flops in the evenings.

<comment><USER21> Morning side-project hacking here too, even though I'm not a morning person. 5am your brain is fresh from sleep, there is no social obligations, no phone calls to answer, and you have a time limit for motivation so often plan your projects better.

</comment></comment><comment><USER22> The way I see it, when I have some free time I have some choice in which ways to spend it. If I spend it doing some things, I end up with something to show for it, something I can look at later or point to and say "I did that." Other ways leave me with almost nothing. And I just get bothered by that. Now, it's important to note that I am very broad in my sense of 'something to show for it.' Being well-read, having a wide experience with cinema, etc are things that I credit as artifacts worth accumulating. So most of my time gets split between learning and building things (software, mostly, as that's where my talents lie).

</comment><comment><USER23> I take the opposite approach. It's NOT good to work on side projects after work. That's reserved for the weekends. Spend your after noons doing other stuff. Excercise, other hobbies, talking with ppl at a bar, etc.

</comment><comment><USER24> I tried doing it nights and weekends for 3.5 years and with a young family, I made advances in my skills but never produced anything meaningful. I'm working with someone else now to create a product and so I took a week of annual leave to try out what it was like doing my own thing full-time and vlogged about it.

[https://youtu.be/-VkkZOiIL10](https://youtu.be/-VkkZOiIL10)

It was so good the next day back at work I handed in my notice which is what the following video is about!

[https://youtu.be/rrP_yHV19bA](https://youtu.be/rrP_yHV19bA)

</comment><comment><USER25> I'm lucky since I am by nature an early bird. I work on my side project for an hour or so _before_ work. Also a few hours in the morning on the weekend.

IIRC this was how Scott Adams found time to draw Dilbert when he had a full- time job.

</comment><comment><USER26> Buy a PS4 and put it next to your PC. At least to me, playing video games give me some energy and some escape after work. After that, I tackle small 30 minute tasks. Don't take side-projects too seriously!

</comment><comment><USER27> The key to keeping up motivation is some sort of success or reason to think you'll be successful. In the beginning, us entrepreneurs are filled with confidence (or dillusions depending on how you look at it). It's this confidence that keeps you going. But, as reality sets in and no one uses your app, you begin to realize it's not going to work.

I guess thats why they always recommend release soemthing early , so you can get some small measure of success: at least get some positive feedback to validate your idea.

</comment><comment><USER28> Sheer force of will. After working at a computer all day, sitting at a computer and working late into the night is the last thing I want to do. Thinking of the alternative, which is spending my life working for someone else, is my main motivator. I can't see myself doing that forever, and I know things won't change unless I put in the work. So I do my day job from 9 - 5, hang out with the family from 6 - 9, then work until 2am.

<comment><USER12> As I mentioned in another comment, you can negotiate a shorter workweek. I've done it, others have as well - see link in my other comment.

</comment></comment><comment> ha-shine A hack I found that's useful for me is to keep a daily log. I list down what I have achieved in a day no matter how small they may be, e.g adding contents to company wiki, clearing a jira ticket, reading an interesting article, etc. I keep the log in a simple text file for each day, in a repo on github. I always find the urge to add something to this log whenever I get back home.

</comment><comment><USER29> I'm also a morning person, sometimes I devote my morning time to side projects first. And I leave my actual work to the later part of the day.

But if I need to work on my sides during the evening, one trick I found is making my room extremely bright, making me think that it was still daytime. I also force myself to be away from my bed. As soon as I lay down, there is no way I can get up and be productive.

</comment><comment><USER30> Don't try to do anything meaningful if you have less than 2 hours in a sitting to devote to your project. Block off a 4-hour window every weekend, and take a day off once per month where you put in a full day.

I find trying to work on projects after work just leads to a bunch of time wasted context switching, and 'not unwinding' can be seriously bad for your mental health.

</comment><comment><USER31> I just do stuff because I believe in the idea and the stuff needs to get done for the idea to materialize.

</comment><comment><USER32> Only work 4 days. I put more value on my free time and learning than on money I don't spend anyway.

</comment><comment><USER33> I find that NOT turning on the TV and NOT cracking open a beer helps me to focus on the side project. ymmv

<comment><USER34> If I can hold my willpower together for the first 30 minutes after I get home, I usually do alright.

If I open absolutely any distraction within the first 15 minutes after I get home, my night is shot.

It's funny how much of my time is dictated by momentum alone. In a sad, "Do I actually have free will?" kind of way.

</comment></comment><comment><USER35> > Curious about what other people do to maintain the energy

I work on something that's actually fun.

</comment><comment><USER36> Do something you are really excited about. Excitement and inspiration bring you energy.

</comment><comment><USER37> Want to learn more things and earn money

</comment><comment><USER38> learn to recharge whenever you want and you can. take powernaps, or go for a walk or a shower

</comment><comment><USER39> I have felt whenever i had to push myself for the side project it always failed. The drive for me came from inside because the road ahead is long. Also waking up early helped alot</comment>


HN Request: Marketing and Sales for Hackers - <AUTHOR> We're a startup composed of all hackers. We've built our product, and tested with real customers. We're ready to start spreading the word about our startup, where should we start?
Is there an MVP-like strategy to sales and marketing? Best way to get press releases? Which blog do we ask first to write about us? Will asking one blog to write about our launch hurt our chances with other blogs? What other methods can we use that have a good ROI? How do we sustain a stream newsworthy articles over a longer period of time?
Blog articles? Twitter? Facebook? And when can we best expect a visible ROI on each? We need a "Sales and Marketing for Hackers" book. <comment><USER2> This is a pretty hefty document but I highly encourage you to read the whole thing. You will learn a lot and will be much better off.

[http://www.seomoz.org/blog/the-noob-guide-to-online- marketin...](http://www.seomoz.org/blog/the-noob-guide-to-online-marketing- with-giant-infographic-11928)

</comment><comment><USER3> Well there's one simple advice: be authentic, have a voice.

Apart from that it's hard work. A simple guide can be found on kissmetrics that I'll post below. Check out @soundcloud and @david community management to learn from one of the best in the market.

[http://blog.kissmetrics.com/ultimate-online-marketing- recipe...](http://blog.kissmetrics.com/ultimate-online-marketing-recipe/)

</comment><comment><USER4> I actually have found many great examples searching through the archives of HN. What I would prefer is something that helps hackers get out from behind their computer and effectively sell to potential clients, in person. Something that helps hackers effectively communicate with others, in person. Things like this would be helpful to me...

<comment><USER5> If it's a problem with talking to people and communication then one way to start would be to read some sales/communications books. \--How to win friends and influence people by Dale Carnegie \--How I raised myself from failure to success in selling by Frank Bettger

The more you talk to people the easier it gets. There's no magic pill. There are plenty of strategies and advice but the main thing is just to practice, and get out there and talk to people. It's a numbers game. It doesn't matter if you mess up or freeze up once or twice, in the long run it won't be that big a deal. I hope this helps.

</comment></comment><comment><USER6> Hi, I am looking to employ the services of a hacker are you able to help? email email@example.com

</comment><comment><USER7> Great idea. Here's how we market our website, may be helpful: <http://feefighters.com/blog/how-to-market-your-website/></comment>


Not quite another OpenSSL erratum - <AUTHOR> http://marc.info/?l=openbsd-tech&m=139929943120228&w=2

<comment><USER2> Also interesting is Theo's follow up email on the same thread: [http://marc.info/?l=openbsd- tech&m=139930973824927&w=2](http://marc.info/?l=openbsd- tech&m=139930973824927&w=2)</comment>


The End of the Portfolio Megastars - <AUTHOR> http://unintuitive.com/blog/the-end-of-the-portfolio-mega-stars

<comment><USER2> That Stephen Fry quote to open the article is absurd. It's a great example of a quote from someone who has never built or led.

It's like my neighbor who can tell me how he'd never make those passes across the middle -- of course he's never even played high school football, much less be one of the best QBs to ever play the game.

It's just annoying beyond belief how little appreciation people have for how hard it is to build software. Even those that claim they are tech savvy think that yelling at people to "wow" them will suddenly create a great product.

<comment><USER3> I couldn't find the context of the quote, but the quote alone doesn't imply it would help to complain, only that it would feel good.

<comment><AUTHOR> The quote is from this article [http://www.stephenfry.com/2008/12/11/gee-one- bold-storm-comi...](http://www.stephenfry.com/2008/12/11/gee-one-bold-storm- coming-up/)

</comment></comment></comment><comment><USER4> Its good to look back at what people thought at the time, so many articles are written after the fact and fail to take into consideration the prevailing thought at the time.</comment>


Ask HN: Thoughts on OpenID? - <AUTHOR>

Do you think OpenID is a good choice for user management if you were launching a new site today?  Or is it still too confusing a concept for an average audience?<p>I'm not sure - as a user registering on a new site, I think I would prefer it so I could have one less username / password to worry about.  On the other hand, I fear that users' current mental model of registering for a site may scare them from using something like OpenID. <comment><USER2> I think that OpenID is too confusing, until presented well to the user. I'd include a short piece of text on yuor registration/login page about OpenID - and make it clear to the user that they probably already use an OpenID-enabled service (such as Google Accounts or Yahoo! which actually tell you now). Try to present it as a way to speed up registration - less fields etc.

Right now, I'd still use a classical registration system, but show off OpenID as an alternative system and allow existing registrations to link OpenIDs. I still view it as an alternative, rather than a replacement.

<comment><USER3> Good point. Don't sell the security. Focus on ease-of-use.

</comment></comment><comment><USER4> Coming from a security background, I think there's something intrinsically wrong with that type of authentication system.

I like to use 1Password: a different, complicated, virtually uncrackable password on every site I use.

<comment><USER5> How do you log in if you are away from your mac though? Is there a web interface to 1Password?

<comment><USER3> A unique password for each site. One password to remember.

Sounds like PwdHash.

<comment><USER6> Sounds like SuperGenPass, too.

      http://supergenpass.com/

</comment></comment></comment></comment><comment><USER7> I don't think it's reached the point where it should be the only authentication system offered by any service.

I think it's still very confusing to the average joe, but if you stressed something like "login with your google account", with an easy button to use the Google OpenID provider to authenticate, it might make it easier for the average joe to understand. Something similar to <http://www.postrank.com/login> would probably be effective with most average users, IMO.

</comment><comment><USER8> biggest issue i see is that initial effort hump required of new users. the more difficult it is to create a new account, the fewer people will tend to do it. i'd compare it to the standford marshmallow test.</comment>


UBS Whistleblower Finds Himself in Federal Prison - <AUTHOR> http://www.cnbc.com/id/41257962 <comment><USER4> I've got a perspective here that will likely run contrary to the dominant view, but I encourage you to think about for a moment -

I'm of the belief that the ability to keep your work, voluntary exchanges, and assets private contribute to a free society in the same way that attorney/client privilege, priest/community, and spousal privilege all exist.

Now, in the United States, we don't have that and people know that and live with that. But people doing business in Switzerland are under the impression that they have a very private, safe relationship with their banker, the same way you'd have with your lawyer, psychiatrist, priest, or spouse. This man breaching that is doing a very serious thing.

This goes beyond politics. When you have a private relationship with a professional, sanctioned by the local law, that says that you have private confidence and that's betrayed... that's serious. If you don't believe in the Swiss banking system, not working there is acceptable. Protesting it is acceptable. Taking on a fiduciary duty of loyalty and confidence, and then breaching it... that's serious.

The average American might not think this way, because they don't have a private relationship with their banker. But generalize this to all duty - <USER2> man pledged duty, people were under the impression that he had a duty of confidence to them, and he breached that. This doesn't get into right/wrong, but it's something worth thinking about.

<comment><USER5> Taxation is at the heart of what makes the state possible, and it's the state, as a guarantor of justice and peace, which makes creating and keeping wealth possible. The wealthy benefit more from this arrangement, and it's fair that they are taxed more as a result. I presume you're not arguing against the existence of the state, or the need for taxation for its upkeep.

Given the need for taxation, making taxation fair requires information about economic transactions. But there's a balance to be struck here: having the state be informed about the details of every transaction, tied to each individual, would probably be too dangerous for liberty. But on the other hand, lack of oversight will lead to evasion and free-riding. So it seems that it's best to put effort in investigation in proportion to detecting potential free-riders.

Large amounts of money held in opaque arrangements abroad would seem to me to have a high probability of abuse; and with the numbers of people involved being small, the instrumental loss of liberty in having these arrangements investigated seems to me small compared to the free-riding risk.

I also object to the argument you've used; it gives me a slimy feeling reading it. You've tried to drag in this notion of privacy and respect by association with "professionals", attorneys, priests and spouses (!), to what amounts to hired thugs protecting a box of valuables. Banks spend a lot on appearances because they need to give their customers the impression that they're safe places for their customers' money, but at the end of the day, they're out to extract as much of that money as they can. Banking isn't a respectable business, particularly these days. They're a necessary part of the economic infrastructure, a bit like water supply and sewers are to cities.

<comment><USER6> Could a system such as a national sales tax, provide privacy _and_ revenue at the same time?

We need to collect data b/c the gov't has to know about your income, your investments, etc, etc. But how about a (hypothetical) system where you only pay taxes when you purchase goods. There wouldn't seem to be any fundamental reason to keep information on _who_ purchased what. Just the fact that the transaction occurred.

<comment><USER7> "Hypothetically", in Italy, lots of cash transactions with no receipts happen because of the VAT, which is something like a sales tax.

<comment><USER8> Brazil tried to move this into the banking system - all withdrawals were taxed. It was not very popular, but it was effective and devilishly hard to dodge.

OTOH, companies routinely exchange services and that kind of transaction is very hard to tax.

</comment></comment></comment></comment></comment><comment><USER9> While this seems a strange way to encourage whistleblowers to come forward, for perspective -

<http://www.nytimes.com/2008/06/20/business/20tax.html>

 _Mr. Birkenfeld pleaded guilty to helping Mr. Olenicoff evade $7.2 million in taxes on $200 million in hidden offshore assets. Mr. Birkenfeld will be sentenced in August. Mr. Olenicoff pleaded guilty last year to filing a false 2002 tax return._

<http://en.wikipedia.org/wiki/Brad_Birkenfeld>

 _"With regard to whistleblowers: those who seek to be treated as true whistleblowers need to know they must come in early and give complete and truthful disclosures.... Mr. Birkenfeld did not come in and give complete and truthful disclosures. Therefore, he is not entitled to whistleblower status."_

[http://www.bloomberg.com/apps/news?pid=newsarchive&sid=a...](http://www.bloomberg.com/apps/news?pid=newsarchive&sid=aqRUmD2LzH.E)

 _Zloch, who didn't explain his reasoning, could have given Birkenfeld a maximum five-year term. Prosecutors had noted that Birkenfeld didn't initially reveal his role in the scheme when he first came forward as a whistleblower._

<comment><USER5> The earlier a whistleblower comes in, he will both be (a) less implicated in whatever dirty business was going on, and (b) he will have less valuable information.

In effect, such rules help conspirators, because they can use it against one another: if you break the conspiracy, the US govt will use your lateness in coming forward, and your compliance with the conspiracy up to date, against you.

<comment><USER9> To repeat the quote:

 _"With regard to whistleblowers: those who seek to be treated as true whistleblowers need to know they must come in early and give complete and truthful disclosures.... Mr. Birkenfeld did not come in and give complete and truthful disclosures. Therefore, he is not entitled to whistleblower status."_

Late as he came forward, if it had been the truth, the whole truth and nothing but the truth, he would have been entitled to whistleblowing protection. It wasn't, which is why he's in prison, but was of value which is why he's doing less time than he could have been.

<comment><USER5> I'll repeat it again:

> _With regard to whistleblowers: those who seek to be treated as true > whistleblowers need to know they must come in early_

> Late as he came forward, if it had been the truth, [...] he would have been > entitled to whistleblowing protection

It seems you are drawing a conclusion that isn't warranted by the quote.

IMO, there is no way to give the whole truth about any situation. That edict is disingenuous and always has been; it's easy to elicit more details by drilling down, and it's similarly easy to interpret words in a way that they weren't meant to give the wrong impression - selective quoting is an art mastered by tabloids everywhere. And also, it's natural to be reticent about implicating oneself in a crime - in fact, there are laws permitting silence on risk of self-incrimination for very good reasons. It seems that you suggest whistleblowers should be denied this.

<comment><USER9> There are two criteria for protection in the quote:

* Come in early

* Give complete and truthful disclosures

Come in early is a clear problem, I agree, partly because as I recall the way penalties are structured means everyone has an incentive to let it happen for as long as they can be confident that no-one else will implicate them.

However, the information we have is that he _didn't_ initially reveal that he was a part of the illegal scheme.

The whole point of whistleblowing legislation is to permit those involved with conspiracies to come forwards and expose their fellow conspirators in exchange for their own liberty. I apologise for inadvertent selective quotation but he was trying to have his cake and eat it; to gain the credit for exposing the wrongdoing of others while withholding details of his own wrongdoing, thus distorting the evidential picture. Whistleblowing law is designed to let people in his situation bring down others by breaking the devil's pact of mutual downfall that would otherwise result, and so by definition to gain this unusual protection requires candid self-incrimination.

</comment></comment></comment></comment></comment><comment><USER10> I thought this story was fascinating, so I did a little bit of background digging, since this article is pretty thin.

There are a bunch of relevant legal documents and news stories up at [http://www.pogo.org/pogo-files/alerts/whistleblower- issues/w...](http://www.pogo.org/pogo-files/alerts/whistleblower-issues/wi- wp-20090825.html) Note that this is very much a pro-whistleblower site, and so is slanted towards the idea that Birkenfeld shouldn't be in prison. I'm not so sure, though.

According to Birkenfeld's own request for clemency, the sequence of events that led to him going to the IRS was: after ~4 years of working with wealthy clients at UBS, in June 2005, he found an internal legal document prohibiting many of the actual practices of the bank. He wrote an internal memo to his superiors about the discrepancy, and then resigned in October 2005. When UBS didn't pay him a bonus he thought he was entitled to, in early 2006, he invoked whistleblower protection claiming that UBS was retaliating against him, in an effort to recover that bonus.

He didn't approach the IRS and DOJ, though, until early 2007, and didn't actually talk until June 2007. And while he described UBS's practices, he didn't go into specific details about clients except for one, Igor Olenicoff, for whom he had, among other things, smuggled diamonds in a toothpaste tube. It's his activity dealing with Olenicoff that he's in prison for, and he pleaded guilty to those charges.

Tellingly, though, Olenicoff was already under IRS investigation in - <USER3> - 2006 (<http://www.forbes.com/forbes/2006/1009/042.html>), and he eventually pleaded guilty to tax evasion in December 2007 and paid $52M in back taxes and fines (<http://www.irs.gov/newsroom/article/0,,id=212163,00.html>).

To me, Birkenfeld's actions look a lot more like CYA than principled whistleblowing.

<comment><USER11> This kind of analysis is why I read HN. Thanks for doing the legwork jfager!

</comment></comment><comment><USER12> It's somewhat fanciful to think the government, upon receiving this windfall of 'reappropriations' will turn around and put them toward paying the national debt (or at least reducing the deficits). More tax income doesn't reduce the individual 'working man' tax burden, spending just increases to cover the windfalls.

BTW, this is very revealing:

 _"I'm going out of my way," he said in a prison interview. "Risking my career. Risking my reputation. Risking my life. And trying to unfold the largest fraud in US history."_

versus

 _Birkenfeld's attorneys argue that he's entitled to a percentage of all the tax revenue recouped as a result of his whistleblowing._

<comment><USER13> At the same time, wasteful thoigh it might be government spending presumably doesn't just go down a black hole. The working man receives a service or at least the fringe benefit of that money being circulated back into the economy.

Either way, any use is more beneficial to ordinary americans than having the rich horde billions of taxable dollars in offshore accounts.

<comment><USER14> Hoarding money isn't actually bad for ordinary Americans. It removes money from circulation, which the Fed can make up for as necessary to regulate inflation.

</comment></comment></comment><comment><USER15> Birkenfeld, a US citizen, was helping US citizens commit tax fraud. He now expects the IRS to pay him a percentage of the money he helped steal from the US goverment/citizens?

He is crazy.

</comment><comment><USER16> It's important to remember tha whistleblower statutes protect you from retaliation by the company when you expose illegal behavior.

They do not protect you from prosecution for any illegal activity you've done.

That being said, often the DA or US Attorney (as appropriate) will offer lighter sentences and/or immunity to secure a prosecution.

</comment><comment><USER17> A lot of people seem to be saying that "he broke the law" and "he was a part of the scheme" , so he deserves a prison term.

But this is ridiculous.

Think about it: _all_ of his activities are a subset of the activities that UBS is accused of. He is being accused of helping 1 person hide his assets; but UBS helped 19000! So how can he be sent to prison, but _no one_ from UBS? Shouldn't there be other UBS executives being charged?

<comment><USER18> Some countries have adopted exceptionally sane methods for fighting antitrusts where the first company that comes forward with proof that law was broken will be pardoned from the law. Although the company itself was in the ring of bad guys and broke law, it still will not be facing any penalties.

I can not really see why this practice couldn't be applied to elsewhere.

</comment></comment><comment><USER19> Interesting article and interview from CBS 60 Minutes

[http://www.cbsnews.com/stories/2010/08/05/business/main67456...](http://www.cbsnews.com/stories/2010/08/05/business/main6745655.shtml)

</comment><comment><USER20> deal with cash, digital one - <http://bitcoin.org>: \- no central issuing center \- all transactions are open, but no information about ownership by particular person is shown \- almost no fees for money transfers \- and transfer itself takes as little as 10 minutes (if you trust another person - instantly) \- limited supply of bitcoins - meaning you will not loose value over time and inflation.

</comment><comment><USER21> Government asks you to spy on your neighbors all the time.

But report on big money doing something wrong and you are screwed.

Oh and the IRS just waived sanctions for offshore accounts recently too.

</comment><comment><USER22> I find it interesting that he never actually denies the allegations of tax fraud

</comment><comment><USER23> A lot of well written exchanges in this thread. Too bad much of it is an apologetic for the wealthy evading their civic obligations, yet again.

Meanwhile the average working American is lectured daily on the values of "personal responsibility."</comment>


Show HN: Putt Hosting – Simple, Affordable, Quality cPanel and VPS Hosting - <AUTHOR> https://www.putthosting.net <comment><AUTHOR> I am looking for appraisal of the offering. If you'd like to try it out you can use the following discounts...

20% off Shared Hosting - Nov16 || 50% off VPS Hosting - VPS50</comment>


How NatWest's IT meltdown developed - <AUTHOR> http://www.guardian.co.uk/technology/2012/jun/25/how-natwest-it-meltdown

<comment><USER2> Whilst they were quick tro deny offshoring was the issues the real crux is that this is old application software they are running and this has not happened in the past.

They also had a large UK array for IT staff, they do not now as they outsourced them.

From many many sources of ex and non-IT staff at the aforementioned bank have all said this type of failure should not of gone on for as long as it has and there is no explanation beyond incompetant IT staff being at fault.

Draw your own conclusion but it's like this. Just becasue your building has not caught fire is no reason to replace reliable/known to work fire extinguisher with a cheaper model that looks the part.

Dont get me wrong, I'm sure IT staff in outsourced countries are great, but you just can't buy in years of experience and local knownledge of how the IT infrastructure evolved and why and what its nuiances are.

Moral being - when you have a bunch of staff who mess up there job and casue the company to lose money - REPLACE THEM and not the IT staff who have been doing there job just fine.

Also when your offering out volintary redundancies please remember that it is the competant staff who know what they are doing and can easily get another job that will take you up on the option rather than work in a job that is being pissed upon by others mistakes.

It is what is not being made public about this whole mess that is more worrying, but lets see what happens and what is admitted too.</comment>


Ask HN: Do you feel bad conducting code reviews? - <AUTHOR> Lately I've been doing most of the code reviews on my team since I have the most experience with this part of the stack.
I can't help but to feel bad when code comes back 2+ times, sometimes for logic, but mostly for stylistic deficiencies.
How do I get myself to not feel bad, for what I imagine must be a frustrating process for the devs on my team? <comment><USER2> I do sometimes feel bad when I do code reviews. But only when I find out after code was merged, that I missed something when I approved the changes.

The process is frustrating on the other side, when reviews come back 2-4 times. Only because "I should be better than this!" If there's more than 2 rounds of comments on a pull/merge/patch, I'm upset that I didn't catch the small things the first time around, and that (even though only on a very small level, I'm wasting the time of the reviewer). Otherwise I'm happy to explain why my way is better, or when it's not. I learn something that makes me a better programmer, and the codebase gets better for it.

If the other devs on your team don't like code review, perhaps they need an assignment that doesn't require code review? Because if I'm reviewing your code and that bothers you... I'd be hard pressed to trust ANY of the code you write.

Also: If you find you're wasting a lot of time for style, mandate a code formatter. Then if you have CI, create a separate job for code style, you can check that first before you even start to review code, it'll save everyone time in the long run. Then, you'll only have to comment on logic. Style is VERY important when doing code review, every 1/1000th of a second I spend trying to parse the style conflicts takes away from the ability to notice an error in the code. If you're concerned about security or performance at all, you don't need additional overhead of having to read code through style errors.

<comment><AUTHOR> This is a great point. I don't know why we aren't running the linter via the CI

</comment></comment><comment><USER3> It is a frustrating process and it goes both ways.

You need to give feedback correctly both in how and why.

The developers learn to accept the feedback, but it will be a more painful experience for them more because nobody likes their work critiqued. (This is something that I've found trained artists are very good at, as they've been giving and receiving critiques from both peers and instructors from the time they were freshmen)

</comment><comment><USER4> Have your considered pairing with the other devs either full time or just once in a while to get on the same page? At one extreme you can just not do code reviews since you're pairing and at the other you can just do a weekly tech retro with the team, agree to style etc and stop wasting cycles on it during code reviews. We do both but weekly retros are magic for this type of problem.

</comment><comment><USER5> What do you mean by "stylistic deficiencies?" What fraction of the deficiencies is the coder equivalent of semantic quibbling (e.g. naming things or differences of opinion that have trivial impact on the code) versus something relevant?

Seems to me this is an opportunity for you as a senior developer to exercise some leadership: convene the team for a review and discussion about the style guides. The focus ought to be reinforcing alignment on the purpose of the guides, expectations about following them, and evaluating the items in them for relevance and importance.

</comment><comment><USER6> You shouldn't feel bad if it's part of your process and the code is not meeting the standards agreed upon.

<comment><AUTHOR> Yeah, and maybe that's part of the issue right now. There is only a tacit agreement on using public style guides</comment></comment>