Why developing an HTML5 game is too damn risky - <AUTHOR> http://ektomarch.com/blog/?p=36

<comment><USER2> >And what about those people that use the beta (e.g., me) and see the bugs and glitches as a result of your incompetence?

This line discredited the whole article for me. Firstly, you're writing a video game inside a browser. This is like making a space ship that does surgery. You've got two complex systems working together of course there will be bugs.

Also why on earth would you expect the browser to play the game exactly the same over the course of time. Every update to iOS or android introduces new bugs into the system. I don't understand where you come of saying that an update should never break anything ever.

Canvas is massively different across browsers. Its your job to figure out the difference and account for it. The spec isn't even finalized yet.

I honestly expected the author to touch on some important issues like the fact that your game is naturally open source. But this seems more like a frustrated developer expecting too much from a platform.

<comment><AUTHOR> Honestly, people "stealing" my source code isn't that much of a worry for me. People already have ten million dollar games cracked and distributed before they're released, and honestly, I don't think somebody taking my code would change much. If they try redistributing it, I still have legal rights to it whether or not they got uncompiled code.

My biggest problem is that you can have a completely working project that's literally broken overnight with a silent update. Operating system updates generally require the user to knowingly upgrade and there's always the implied risk of something strange happening. Developers can easily publicly announce incompatibilities with certain OS updates on their download page to warn new users, while an HTML5 game requires you to test every single release of every browser ever, and since everybody uses a slightly different version of a slightly different browser, it only takes one glitch for one person for your entire market to be scared off.

I never said I didn't anticipate things going wrong, but that when things _do_ go wrong, it can completely out of control in the browser world. My development of games in HTML5/Javascript has been 98% pure bliss, but the thought of a single dangerous bug making it past the testing phase gives me nightmares. I knew what I was getting into and it was primarily a test of "can I do it?", but it doesn't mean I can't complain. ;)

</comment></comment><comment><USER3> Been there, it's no fun. I spent last year making an HTML5 game. On the day we delivered the final beta, a silent Chrome update caused an error and all of our sprites started losing their z-index and thus flickering like mad. But only in Chrome, in the newly released version. I had to tell the publisher to use Safari or Firefox while we figured it out... Which was not what they wanted to hear.

That said, I enjoy developing for the platform and think the huge benefit in audience size for social games makes life on the bleeding edge worth the pain. These are the early days. It'll settle down.

</comment><comment><USER4> Maybe you can try to library for sound. SoundManager 2 does html5 sound and falls back to flash. <http://www.schillmania.com/projects/soundmanager2/>

Apparantly there are issues with looping (<http://www.schillmania.com/projects/soundmanager2/demo/api/>) but it points to (<http://www.flickr.com/photos/schill/4499319436/>) as a way to fix sound loops.

Regarding other technical problems: I've had that issue too with Chrome beta, using csstransforms caused my textboxes to be unclickable(but still tab-able). My solution was to downgrade to the normal Chrome version and hoped it'll be fixed by the time it hit stable.

</comment><comment><USER5> Chrome has bugs and so do all the other browsers - not sure it is fair to single it out here in this post.

Overall, sure, browsers have bugs and it is a tricky platform because of that. But, it also reaches far more people than any other platform. That's a tradeoff, if it makes sense for you, make a game for it, if not then don't.

</comment><comment><USER6> Just a heads up, look in to using the Web Audio API on Chrome instead of the <audio> tag. It's far better and pretty bulletproof in my experience, if missing one or two features <audio> had.

<comment><USER7> I haven't heard of the Web Audio API, so forgive me if this sounds ignorant, but isn't this the kind of thing that should piss off anyone who's interested in consistent web-standards across all browsers?

Aren't browser specific API's the kind of thing that led to IE becoming such a hated piece of software?

</comment></comment><comment><USER8> Uh yeah, of course html5 sound is awful. I'm hoping projects like areweplayingyet.org will gain traction to help solve this.

</comment><comment><USER9> These all sound like problems that can occur on _any_ system, let alone browser-based, html5/javascript games (and often _do_ occur in cross-platform games). I fail to see a problem here.

DISCLAIMER: I work for an html5/javascript gaming company.

<comment><USER10> That is clearly not true, when does a game that worked one day to stop working the next day on for any native desktop program, or on a mobile or console platform?

The only conceivable time that I could imagine it happening is when my phone does a major version update, which happens a maximum of once in the entire phone's lifetime, is very visible to me (it would be clear to me that it isn't completely the developer's fault), meanwhile chrome updates every week silently. If any website works one day and not the next I would always assume the developers had pushed a bad build.

<comment><USER9> How about when an OS ships an update? A library you're using (you didn't write that whole audio and gfx layer yourself, did you?) ships an update? A crippling bug gets exposed in some API you use? This is by and large not the first time we've run into problems like this before--is the Internet's memory so short that DLL Hell is a forgotten concept? Any time you rely on _any_ third-party code _anywhere_ you run the risk of something working one day and not the next, just by virtue of an update.

<comment><USER10> You explicitly are talking about historical issues which are mostly resolved. When you deploy an application that uses Direct X you target exactly one version, and you will never be using a different version of it unless you as the developer choose for it to happen.

OS shipping updates causing games to break is a pretty rare thing, several orders of magnitude less likely to occur than a browser shipping with a change in behavior of an HTML5 feature.

The risk clearly does exist everywhere, but its mostly a solved problem on Windows, and it's certainly a solved problem on Xbox. It's a monthly issue in browsers.

<comment><USER9> Historical issues for who, exactly? The way it was solved was to keep a copy of every DLL ever released on your system--I don't exactly call that solved; it's more like treating a cold with medicine that stops you from coughing (you're no longer coughing, but you're still sick). You can't really expect to use that solution for all possible situations.

It's absolutely unacceptable to keep around support for every version of HTML and JavaScript and CSS ever, especially when some of the versions are contradictory. The real solution is to make a clean break, learn from your mistakes, and do it better the second time around. Unfortunately, that means losing a lot of content if you can't automatically update it to new formats.

As for being a solved problem on one specific and unchanging platform, that's like saying networking is a solved problem so long as you stick to TCP/IPv4 and never have more nodes than you can have addresses. That's not a solution, it's a cop-out. Requirements change, specifications change, and most certainly, performance characteristics change.

As for being a solved problem on windows, the solution is just as bad as the problem--the difference is where the pain point lies. On my w7x64 machine, the windows folder takes up somewhere around 15gb of space (I don't have it handy to check the exact amount). That is absolutely unacceptable for an OS _without_ any applications installed.

As for being a "monthly" issue for browsers, how frequently do you think it was an issue for major OS vendors until the specifications were finally more- or-less set in stone? Because I assure you, it did not happen overnight.

<comment><USER10> > Historical issues for who, exactly?

Historical issues for developers like me.

You are literally describing a solution, it might be a solution that you don't like but it is a solution that makes it so developers don't have to worry about random things breaking for no reason. AFAIK the solution is to have the applications install the version of the dll that they use, if Windows is 15gb with no applications (which seems like an exaggeration to me) then I think that is largely incidental.

> for major OS vendors until the specifications were finally more-or-less set > in stone

Again explicitly invoking historical events.

> It's absolutely unacceptable to keep around support for every version of > HTML and JavaScript and CSS ever, especially when some of the versions are > contradictory

That is totally fine, but it makes browsers something that no developer other than bleeding edge early adopters and crappy social media game developers can reasonably support.

No one cares if they are as painful as desktop development was 15 years ago, developing for 1997 desktops isn't an option today, my entire point is that developing games on the web today are like developing games in 1997 which is _awful_. In 1997 you had no other choice; the options are any of a dozen mature platforms (desktop, mobile apps, consoles, handhelds) or else trying to juggle about 6 wildly incompatible and buggy browser environments where all of them are either too old to even support features that you want, or else a moving target that is changing literally every week in a way that is transparent to the user, which means you get blamed for the breakage when you could have done nothing to avoid it.

</comment></comment></comment></comment></comment></comment><comment><USER11> Isn't this true of any platform? Apple can (and does) pull the rug out at any time. Microsoft has a history of being responsive to devs, but they're certainly not immune from bugs. And Linux and Android are so fragmented in hardware and software, that all bets are off when it comes to user experience. (I'm aware that this is a sweeping generalization.)

Ultimately you have to factor in not only the quality of the platform, but also the responsiveness of the company and devs who maintain the platform. And the good news is, Google and Mozilla are usually pretty responsive. But platforms _have_ to move slow to prevent destabilizing their other citizens, and sometimes your project gets caught in the middle. So it goes.

</comment><comment><USER12> Surprising conclusion at the end: "I'll consider development in Lua in the future." Interesting.</comment>


Gesellian Socialism and Money [pdf] - <AUTHOR> http://hal.archives-ouvertes.fr/docs/00/11/91/92/PDF/BlancAccelerated.pdf

<comment><AUTHOR> Here is the part I like: "Indeed, the inherent problem with Gesell's system is the existence, in modern economies, of different means of payment. In Gesell's system, only one sort of means of payment exists (stamped notes) since deposits cannot be used as bank money. Yet neither in Gesell's times nor today is this assumption realistic. If bank money does exist, it can replace the stamped notes, not only as a store of wealth, but also as a means of payment, since bank money is not saddled with carrying costs."</comment>


Solving Intractable Performance Problems Through Vertical Engineering - <AUTHOR> http://www.alex-ionescu.com/?p=323 <comment><USER2> This is an article by a Microsoft guy who says Microsoft is trying to provide better software by following Apple's footsteps in "owning the vertical" (kernel, compiler toolchain, file formats, ...) and ends by implying that Apple still does better because it owns the silicon, too.

After a few days of Microsoft failures, all I can say is: If this cheap stuff makes an impression on you, buy Apple.</comment>


Odyssey.js: a tool to publish stories that combine narratives with maps - <AUTHOR> https://github.com/CartoDB/odyssey.js

<comment><USER2> Wish there would be easing like the one in Mapbox's Sherlock demo

[https://www.mapbox.com/tutorial-sherlock/](https://www.mapbox.com/tutorial- sherlock/)

</comment><comment><USER3> It would be lovely if the next / previous buttons stayed in the same place between slides.</comment>


Real-Time Point-Based Global Illumination - <AUTHOR> http://www.aduprat.com/portfolio/?page=articles%2FPBGI <comment><USER2> A bit of more information: with global illumination (GI) a point is shaded by considering the light coming in from all directions to that point. It is the integral over Omega in the rendering equation [1]. This is expensive to compute. Especially since it is recursive to infinity, if the incoming light was reflected by a surface. The author uses pre-computation and keeps the geometry static, which is quite a common approach.

[1]: [https://en.wikipedia.org/wiki/Rendering_equation](https://en.wikipedia.org/wiki/Rendering_equation)

<comment><USER3> > It is the integral over Omega in the rendering equation [1]. This is > expensive to compute.

The approach would be just exhaustive summation, I suppose. Would symbolic integration be equally expansive for simple enough geometry? Simplified approximations to the geometry, i.e. bounding boxes, would probably not look real enough. I get, there are all kinds of approaches.

I heard Monte Carlo method used to limit the search space to a random subset.

<comment><USER4> Symbolic integration, or more often called "analytic integration" (as opposed to numeric integration or sampling) is usually much more expensive. But the benefit is that you can get a much more accurate result, if you need an accurate result. There is no known analytic / symbolic integral for arbitrary geometry like curved surfaces, but I believe it can be done with purely polygonal scenes.

A lot of work has been done on using analytic integration techniques, as well as higher quality numeric approximations, for global illumination, in particular with radiosity methods. [https://en.m.wikipedia.org/wiki/Radiosity_(computer_graphics...](https://en.m.wikipedia.org/wiki/Radiosity_\(computer_graphics\))

[http://www.mi.uni- koeln.de/c/mirror/www.cs.curtin.edu.au/uni...](http://www.mi.uni- koeln.de/c/mirror/www.cs.curtin.edu.au/units/cg351-551/notes/restricted/lect13e1.html)

[http://dl.acm.org/citation.cfm?id=74367](http://dl.acm.org/citation.cfm?id=74367)

</comment></comment></comment><comment><USER5> UE4 demonstrated it as well:

[https://www.youtube.com/watch?v=VHbHOQ1NRuw](https://www.youtube.com/watch?v=VHbHOQ1NRuw)

And so did Unity:

[https://www.youtube.com/watch?v=ouJNRJ2uPmY](https://www.youtube.com/watch?v=ouJNRJ2uPmY)

<comment><USER6> Both of the above demos are done with the commercial product Enlighten. Would be great to have an open source alternative to it that people can customize. :)

<comment><USER7> This isn't that though. The geometry is static and the interaction between points is precomputed. The cone tracing into voxels approach ends up being much more reasonable since:

1\. The color is quantified into evenly spaced segments (ie a 3 dimensional image)

2\. Because it is a 3 dimensional image the GPU's filtering hardware can do efficient lookups over a volume using mip mapping techniques.

The approach was originally described in a siggraph paper and there have been a lot of variations (which is usually another sign that something works well). Someone could create an implementation on their own, it isn't much of a stretch. You just rasterize into a voxel image then do a few cone traces at every pixel you shade, guided by the BDRF (a good one to look at would be ggx).</comment></comment></comment>


The No Excuse List - <AUTHOR> http://noexcuselist.com/ <comment><USER2> It should answer the question "why?" As in "why are those the best?" Or at least carry a short review to help users choose.

For example, while not recommended, MIT Open Courseware is fairly high on the list but it's not very good for self-study. I even remember reading somewhere that it's actually targeted at teachers.

Other than that, it's a fine list.

</comment><comment><USER3> You can be very smart but have no connections and no money and be unable to find a job. Who you know matters way more than what you know.

This list is only an excuse for not being smart, not for being unable to get a good job.

<comment><USER4> No where on the website does it mention not having a job or being unemployed.

</comment></comment><comment><USER5> I suppose "time" would still be a valid excuse.

Wasn't expecting to see some resources on Bass, though. That'll be handy when my brain is mush after several hours of programming exercises. Thanks!

</comment><comment><USER6> send this to my friends whiners</comment>


Join the Resistance – A Hacker's Guide to Health & Fitness - <AUTHOR> http://adamnuttall.co.uk/index.php/join-the-resistance-a-hackers-guide-to-health-fitness/

<comment><USER2> I was expecting rollerblading - or skateboarding in a trenchcoat.

<comment><AUTHOR> I think that is next week's post.

</comment></comment><comment><USER3> paragraphs are overrated

</comment><comment><USER4> dope one there! am in for it, as I've personally been doing my own hacker- workouts from my room every once in a while. normally, i just point rythmbox at some trance or hardcore techno from last.fm and dance myself to fitness for like 30-45 min. sometimes i love it so much i just decide to continue dancing for fun for an extra 30 min! we all need it :)</comment>


China brings Star Wars to life with 'laser AK-47' that can set fire to targets - <AUTHOR> http://m.scmp.com/news/china/diplomacy-defence/article/2153310/china-brings-star-wars-life-laser-ak-47-could-set-fire <comment><USER2> What a perfect blinding weapon. I am sure this would be capable of permanently blinding hundreds of people silently. But no worries, China signed the Geneva Blinding Weapons protocol. Lol. China will do whatever they want.

</comment><comment><USER3> "AK-47" \- Clearly someone has no idea what "AK-47" stands for.</comment>


Chinese minister insists Google obey the law - <AUTHOR> http://www.sfgate.com/cgi-bin/article.cgi?f=/n/a/2010/03/12/financial/f012200S17.DTL&tsp=1 <comment><USER2> Google looks worse the longer they keep censoring results. Once they made their decision, they should have realized that there was no point in "negotiations" with a government that enthusiastically shoots dissidents. They should have gotten all non-Chinese employees out of the country as discreetly as possible, then simultaneously turned off google.cn filtering and issued their public statement.

<comment><USER3> The folks working in the China office have extended families and lives that are rooted in their country. You can't expect to uproot everyone, and for them to like it. Their action was appropriate. Because the China employees were left in the dark, they can say they had no part in it (important not to look like a dissident here), and they can leave while saving face.

<comment><USER4> The OP said "non-Chinese residents".

<comment><USER3> Wouldn't it look a little suspicious if they whisked out all the foreigners?

</comment></comment></comment></comment><comment><USER5> Google should obey the law. If they don't like the current law, they should work from within, talk to legislators, see if they can't drum up grassroots support to change the law.

Oh, wait....

<comment><USER6> Nobody cares enough about Google in China for there to be grassroots anything for it. They are the Yahoo of China. I know most Americans love to imagine that Chinese people are so horribly oppressed. It gives them comfort in the face of a rising economic power. There's lots of oppression going on, but internet censorship is grossly exaggerated by the American press.

<comment><USER7> Could you cite an example of exaggeration? Are Chinese citizens free to access any information on the internet?

</comment></comment></comment><comment><USER8> Insisting Google obey the law when there is no rule of law is a little funny. No one else is required to obey the law unless it serves the party.</comment>


Scientists Invent New Way to Control Light - <AUTHOR> http://today.ucf.edu/scientists-invent-new-way-control-light-critical-next-gen-super-computing/ <comment><USER2> This article is horrible. The paper is here: [http://www.opticsinfobase.org/oe/abstract.cfm?URI=oe-22-21-2...](http://www.opticsinfobase.org/oe/abstract.cfm?URI=oe-22-21-25788)

First off, the reason you want light for transmission on chips isn't because it is "faster", it is because it is less susceptible to electromagnetic interference. The speed of light in a medium is the speed electronic signals travel, and the speed light waves travel. However, electronic signals bleed interference, and light waves don't. You also can switch light waves on and off at theoretically higher rates, with less power, so optical signals can break the 4 GhZ barrier we are currently stuck at.

Secondly, they can't bend light without loss. Just with less loss. But the interesting part of the paper is the fact that the turning is selective depending on polarization (one polarization turns, and one doesn't). They are also able to turn light very quickly, compared to the wavelength of the light. So the radius of curvature divided by the wavelength of the light is around 6.4 for this paper.

</comment><comment><USER3> > A device resembling a plastic honeycomb yet infinitely smaller than a bee's > stinger ...

"Infinitely smaller"....? That's horrible scientific reporting!

<comment><USER4> It's literally infinitely smaller!

</comment></comment><comment><USER5> can anybody explain why this is better than a mirror?

<comment><USER6> Mirrors absorb and transmit light. This article from wiki explains what a perfect mirror would be: [http://en.wikipedia.org/wiki/Perfect_mirror](http://en.wikipedia.org/wiki/Perfect_mirror)

I believe the most important part of the article is:

"The team then ran light beams through the lattices and confirmed that they could flow light (without loss) through turns that are twice as tight as any done previously."

If you can bend light without loss, I imagine that is very valuable. All that said, IANAP (I am not a physicist) so if someone else can correct me or add more information, I'm sure that would be helpful.

<comment><USER2> It can't bend light without loss... It actually is pretty lossy (the paper references an attenuation of 270 cm^-1, or 1/e loss per 270 cm.)</comment></comment></comment>


IP Address Shown During Mr. Robot Premier Reveals Fsociety Website - <AUTHOR> http://22.214.171.124 <comment><USER2> Great find.

I don't know how I feel about this. I love the idea but I've never seen a hacker organization website with a countdown timer like that. After all, the ransomeware screen would likely be embedded in the virus.

It's these little tiny differences that break the immersion for me. It's a kind of uncanny valley.

Also, the graphic is different than the one from the episode.

Spoiler warning ...

As an aside, did the files ever get decrypted since he went through with the demands. It seems to me that the organization would be better served by destroying the files than some propaganda video with the CTO burning some money.

<comment><AUTHOR> SPOILERS:

Regarding the uncanny valley effect, the reality illusion isn't broken for me since it _so much more_ realistic than any popular media depiction of infosec/hacking.

A lot of the details are correct: leading spaces to omitting bash commands, the use of Kali Linux by Darlene, and the basic concepts of the first season's attack. Certain corporate names are changed ("Steel Mountain" for example), but trivially refer back to real entities.

Compare it to the Matrix Reloaded, in which Trinity broke into a physical location to run an ssh exploit, with no explanation.

Regarding the website, I think it's just an humorous easter egg. There are a lot in the show. For example, the premier also contains a QR code that briefly appears in Elliot's journal. If you scan that QR code it will point you to conficturaindustries.com

Follow the white rabbit (or Google) from there. 52. Don't worry, that number will be clear later.

They don't say whether the files were decrypted. The ransom note and call imply that they did, but it was never revealed explicitly. Darlene's character is an anarchist, so it's also possible she didn't.

<comment><USER2> In general I agree. The show's attention to detail is amazing.

</comment></comment></comment><comment><AUTHOR> View source for the page shows an ASCII art comment...

YOU ARE NOT ALONE</comment>


Fairy Tales - <AUTHOR> http://xkcd.com/872/ <comment><USER2> Applying math and geekness to unrelated topic stories is getting old.</comment>


Ask HN: Best books for startup hiring? - <AUTHOR> I'm a big believer in reading a few months ahead of what you need to do. I'm in the midst of creating a startup and we are about to start fundraising. I've read <i>Venture Deals</i> by Brad Feld and feel comfortable with that aspect of it, but the next step will be hiring. Does anyone have recommendations on good books to read for the post-seed, early hiring phase of a startup? <comment><USER2> Quite controversial but basically the blueprint of how I want to build the company I work for: "Why employees are always a bad idea"

</comment><comment><USER3> I don't have any good book recommendations sorry, but as a serial entrepreneur and current CTO for a backed startup I can give a few pieces of advice.

1\. Hire for what you need now, try not to overhire for too many future ideas. You just burn cash and it hurts the business.

2\. In the early stages hire more for culture than just pure raw talent. If you have a person who is a 10/10 technically but a 7/10 culture, but you have a 10/10 culture and 7/10 technical, take the culture fit first. You need people who can be flexible and work with the team more than one person who happens to be an amazing engineer or whatever.

3\. Look for people who share an understanding about startups. Meaning they won't feel demeaned if you ask them to clean up the bathroom before an important client/investor visit. I always had this as a standing rule in my teams, I'll be the first to take the worst job, but everyone has to help do it in the early days. If they get this, they are a team player, if they are too good for it, pass on them. I can't stress this enough in the early days. Later on, not so critical but I always will favor #2 and #3 people.

4\. Try to hire specialized generalists in the beginning whenever possible. Sounds like an oxymoron but it isn't. You want someone who is say deep in one area but is capable of helping across the spectrum and is happy to do it. Kinda goes with #3.

5\. When hiring business people, always always always hire culture. They are the face and voice to the client, if they don't share the values of the team you are done from the start.

6\. Don't get hung up on where someone went to school or what degree they do or don't have. Look at the people applying, treat them with respect and your companies name will spread quickly. If everyone who interviews with you walks away and says damn, I didn't get that job but man I sure would like to work with them, you've done excellent.

7\. Focus on treating people right and doing what is right more than what is easy or expedient. We use the value of "people first" where I am at now, and it is a value I take to every environment I lead in. Does that mean we have never screwed up and upset someone, NO. Does it mean we have always done our best to put the person over the easier options, yea, we have tried.

8\. Don't disrespect engineers and give them a "test" to do at home and send to you. This is a major red flag to me for any employer, but it is not uncommon in SV. If you want to test them, respect their time and yours and talk to them. You want to test their ability to read code and deal with it, show them code and have them talk to you about it and what it does/doesn't do and what is wrong/right with it. Along with this one, don't do meaningless whiteboard problems asking them to reverse a string, who cares. Ask real questions.

9\. Asking real questions in interviews is important. There is a trend right now in SV where they like to separate "culture fit" interviews from "Engineering" interviews. This is crap. Doing them separately is a waste of time and isn't realistic. Combine them into a conversation, sit with your candidates (phone, in person whatever) and talk with them like they are a team member, ask them hard questions, find out what they know and don't know, but do it as a team member and you'll learn all you need to know about their culture fit and technical skills and save multiple rounds of interviews. This also means you'll get to candidates while other startups are wasting time scheduling more and more rounds. Early on, if there are two of you founding the company, there should be at max two rounds besides an initial phone screen. If there are 3 or more, you need to make it two-three rounds max, and make all hiring decisions in say 7-10 days at max. Don't do the wait and see if something better comes along, you'll lose time waiting, if you find a good fit they are a good fit.

Ok I could write a book, sorry, bit of a passion thing for me on hiring. Always happy to share experiences and answer questions I can, 20+ years of building teams has let me make a lot of mistakes to learn from.</comment>


An Interview with Jose Valim, Creator of Elixir - <AUTHOR> https://www.welcometothejungle.co/en/articles/btc-elixir-jose-valim <comment><USER2> I know it's been said by many, but I will repeat once again.

Elixir is a very cool and powerful language for building web apps.

Having built my first product ([https://retrochat.xyz](https://retrochat.xyz)) in Elixir, I can wholeheartedly recommend it to anyone who is not happy with their current backend language(Ruby, Python, Js, etc).

Docs, functional programming, OTP, ecosystem(Phoenix, Ecto, Mix) are really top notch. In my opinion, you will be able to reach much higher productivity (especially long term) in Elixir than in Ruby, which is known for it's high level of productivity. Sounds like a fairy tale, right? Well, that fairy tale can become a reality with Elixir.

The only thing that is a bit of pain is a good release support, but that has been changing for better.

<comment><USER3> I'd be interested in hearing more about this. I'm keen on learning Elixir, but have fallen back to Rails at least 2 times when starting something fresh, because I'm very comfortable with Rails ops. It's simple enough for my case and rails console is just a blessing to dig around when something weird is going on.

<comment><USER4> It's mostly two things:

1\. The stuff that never goes down (gets automatically restarted with last- known good state) and the amazing runtime in general. Not to mention it's much faster than Ruby or Python or PHP... In some cases it's faster than Javascript although JS and Erlang/Elixir are, on average, tied on performance.

2\. A switch in philosophy and the way you troubleshoot your app: from magic/implicit to explicit. Many people cannot cope with this one because the force of habit is extremely hard to overcome. I for one enjoy knowing what exactly is going on in my app and exactly where but many others disagree. Again, it's a philosophical thing; you either are into it or you are not. There is also the objectively technological aspect: zero magic and implicitness mean much easier bug fighting. You no longer have to dig around in callbacks and installed on-start handlers.

Make no mistake: it's harder to start with an FP language. Nobody is disputing that. The benefits to be sown after the initial culture and brain shocks however are a lot.

<comment><USER5> > Not to mention it's much faster than Ruby or Python or PHP... In some cases > it's faster than Javascript although JS and Erlang/Elixir are, on average, > tied on performance.

By what metric? Phoenix on Elixir doesn't perform any better than Ruby and a similarly lightweight framework like Roda: [https://www.techempower.com/benchmarks/#section=data-r18&hw=...](https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=db&l=zg21a7-f&f=zik0z3-zik0zj- zik0zj-zik0zj-zhxjwf-zik0zj-zijbpb-zik0zj-zik0zj-e7)

NodeJS is also much faster than Elixir in other circumstances thanks to the V8 JIT.

Elixir's and Erlang's strengths over other dynamic languages aren't really performance. It's mostly just that Phoenix performs much better than Rails.

<comment><USER6> I can only speak from my own experience but here is a data point (note that I do not use Elixir only, but also other technologies, in production).

For instance, I implemented a HTTP "business proxy" last year, which needs to be able to keep a large number of concurrent connections & proxy the call to a slow responding remote server.

I made multiple implementations (including Go, Node, Ruby with Roda, JRuby, Elixir, Crystal).

In this specific case I had, Elixir throughput & stability was by far the best. The gap (under load) between min & max was also the best (all this without tuning), and so was the CPU use.

Of course, YMMV, make your own experiences!

<comment><USER4> I'd be _extremely_ interested if you open sourced all those repositories. I thought of doing something very similar and your shared experience would be invaluable.

<comment><USER6> I know (you are not the first to ask!) but honestly, sorry, I won't and I will let anyone truly interested to do their own experiments :-)

This type of topic is too prone to endless debates on the validity of this and that, and the fact that anyone proficient in whichever stack I tested could definitely improve it (including me on the subpart of those stacks which I'm most proficient with!).

I don't want to lose any energy with this, and I have made my decision for that business case (in this case, a very happy one).

<comment><USER7> > I know (you are not the first to ask!) but honestly, sorry, I won't and I > will let anyone truly interested to do their own experiments

You made an extraordinary claim, yet refuse to provide any evidence. Either backup your claims with data or don't make blanket statement perhaps?

As to your points regarding scrutiny.. that's the whole point. How else would be able to measure the metrics?

<comment><USER6> I don't have any obligation here! I'm just sharing my own little experiment, which you are free to disregard.

While providing little details, it is actually providing value to some here.

In terms of measuring success & picking stacks, I have also a good experience (after 35 years of coding - I hate to mention that and this is no "call to authority", but I've seen a fair bit of stacks), and Elixir is a good investment at the moment for my use-cases.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Elixir, the language, the frameworks, and the community have been a blessing to my professional life.

If allowed me to learn the paradigm of functional programming and build systems quicker than ever before. Combined with the Phoenix framework, I prototyped a tool within a few days that would end up changing my life. I turned it into a SaaS business (called FeedbackPanda) with my partner, and it has been turning my life around for the better.

Thank you Jose for being such a key person in all of that without knowing it. Your insights and determination to leverage new tech combined with a proven software paradigm. Spot on!

<comment><USER9> Also, don't forget... huge props to Chris McCord, the creator of the Phoenix Web Framework which is the main reason for me to completely come on board in the Elixir ecosystem.

<comment><USER8> I had the joy of taking part in a Phoenix workshop that Chris held here in Berlin at ElixirConf EU. It was insightful, and you can really tell Chris is in it with his heart and soul.

</comment></comment></comment><comment><USER10> Can someone post/comment a more critical analysis of elixir if they can?

It's really hard to figure out how useful it is because people always build up hype when it's not always worth it. All I ever see is how wonderful and magical elixir is and how it's literally life changing. I want to believe but I've seen technologies with lots of hype that didn't live up to it. Plus elixir is different enough that I have a really hard time jumping into it to try it out.

\----

I'll also add that recently I had to build a backend for a long term project I've been working on. I seriously looked at elixir/phoenix, but from my research it didn't seem like the pros outweighed the cons. Like there are some technologies that are so useful they're worth the lack of a robust ecosystem or the steep learning curve that may be necessary. And I am not sure Elixir meets that criteria.

There's already existing technologies like python/ruby for fast development, java/groovy for stability and groovy for modern features, and finally golang which is really good for concurrency and building web related microservices. Golang in particular is nice because it solves issues like python's slowness and it's slimmer than java in many ways. And these solutions are already pretty good. It's not like it's all that hard to write a backend. Like the productivity gains from js to typescript are huge because js can be bad enough that there's a lot of room for improvement. Whereas how much faster and MORE productive can someone really be in elixir?

And I am not even going to get into functional programming which is a whole other beast. It requires significantly different style of thinking, making a lot of my experience less valuable, I don't think it solves solutions for an oop system that's well designed, and often times the implementation can be bad if the right tools aren't there. From my limited experience, FP provides some really powerful features, but at the builtin cost of being more rigid when I don't need it to be.

<comment><USER11> Here are a few legitimate complaints about Elixir (and in some cases, its host VM, the BEAM):

* No mutation support means that for some CPU-heavy tasks, it's not as performant as languages that allow mutation. Some optimized algorithms that rely on mutation can't be expressed directly in Elixir or Erlang, and instead need to be linked in through a foreign function interface.

* It's not on the JVM so we don't get to piggyback on the thousands of dev-years of VM optimization and ecosystem around it.

* It isn't invented at, supported at, and marketed by a FAANG-type company. Money moves mountains and Ericsson doesn't spend as much on Erlang/BEAM as, say, Google spends on Go.

* Comparison across types is not a runtime exception, so you need to guard against crap like `nil > 1 == true` yourself.

* Erlang standard library, which is idiomatic to use from Elixir in the same way of using Java classes from Clojure, is a bit of a junk drawer of tools. There's good stuff, but you may have to dig for it.

* Elixir still hasn't nailed the balance between creating small, independent pieces of code ("applications" in Erlang-speak) and wrangling them so they can be used as dependencies from monorepos, multi-repos, etc. Umbrella projects were an attempt, I don't like them.

* There is an impedance mismatch between Erlang/Elixir's configuration system and 12 Factor® ENV-style configs. (Full disclosure, I wrote a library for this: [https://github.com/appcues/config_smuggler](https://github.com/appcues/config_smuggler))

* The built-in Elixir code formatter removes trailing commas from multiline lists. I mean, come on!

<comment><USER12> Could you use a nif for the heavy compute tasks?

<comment><USER13> Yes. Rust with [https://github.com/rusterlium/rustler](https://github.com/rusterlium/rustler) is one popular option.

<comment><USER12> I'm using rustler currently!

I wasn't positive if the erlang VM restricted resource access in anyway.

I'm not doing anything CPU intensive, just bringing over a library I'm not smart enough to build in elixir :)

<comment><USER12> Or maybe, too smart to build. But probably not.

</comment></comment></comment></comment></comment></comment><comment><USER14> As a C# developer I've learned the basics of Rust/Elixir/Go and found that while they're all nice languages, my knowledge of the .NET platform is so deep that for kind of applications I develop (APIs mostly), the tradeoffs of using something new isn't worth it. I haven't come across a problem I couldn't solve with C#. I don't work at Google/FB/Apple, so I don't really deal with scalability issues. F# is interesting, but honestly it's so poorly supported by MS and the community that unless you work at Jet.com it's not worth it.

Don't get me wrong, I love learning new languages/tools, but the cost of learning them deeply is a price that's hard to pay for when you have to get things done at an ever-increasing pace.

<comment><USER15> I'd love to give you a challenge: Write a live-updating web dashboard -for anything- in Elixir with Phoenix LiveView. Then think about how you would do that in C#. Sure you can do it, but you can't do it _as fast_ , and what you come out with in 5 weeks as an expert in C# (which should take you 3 days - including beautiful html documentation and all the unit tests - if you're an expert elixir programmer, or, maybe a week and a half if you're a noob) will not have the uptime.

<comment><USER16> I will guarantee you that an expert C# developer could write the same system in same or less amount of time than Elixir with Blazor or even SignalR. C# ecosystem is so big and robust at this time that almost all big problems have already been solved.

<comment><USER15> Huh, blazor looks pretty good! Nice to know. Thanks!

</comment></comment></comment></comment><comment><USER17> I built a personal project on Elixir, Phoenix, and Postgresql(currently on hiatus).

It have a somewhat steep learning curve with the ORM Ecto. Debugging Ecto, changeset, etc.. is not fun. Dumping whatever Ecto returns can be a puzzle because by default other than the main tables are not preloaded and it loaded with meta data. Also how you deal with Ecto and forms in phoenix is not clear, lots of gotchas. The common thing is that you have a form template that update/edit and new/create share. The problem here is if you don't know what you're doing one of your template will expect a changeset and the other will expect a list. I forgot which one gotta look into my code but it was an annoying gotcha.

The lack of things baked into Phoenix makes it a hunt to find packages/libraries to add features to it.

Examples are Laravel having rate limiting router built in and signed links built-in. I don't believe the html form is as good as other frameworks; can be at time confusing. I think while Phoenix may not be aiming to be full features as Laravel, I believe security measure such as rate limiter and signed links should be built in.

Deploying is also a learning curve. You need to compile Elixir in production server and then the folder layouts is different than development. So hunting for the root web folder of your application is a thing I did and learning about the layout of production.

Having said all that, I enjoy coding in Elixir and using Phoenix. It is fun getting better at it. While there aren't many thing baked in like Laravel, it made me more educated in the things I've taken for granted. I re-did the authentication system 3 times. I tried jwt, did more research and realize when to use session and when to use them.

I enjoy coding in Elixir more than PHP. I see myself building my side web projects in Elixir in the foreseeable future. I do recognize that it's a smaller community with less contributors so I hope this come off as a constructive criticism of something I love and know well enough.

</comment><comment><USER18> I am so appreciative of his accomplishments. Knowing the history of ruby and functional languages, figured early on he found the right solution to the right problem and the impact of this language has been huge very quickly

</comment><comment><USER19> How does one get motivated enough to say - you know what, I'm going to create a new programming language? How do they keep it going when they face hurdles? How long did it take to develop this?

I'm struggling to start any in-depth project. I can do stuff - make a small app - here and there. But the thought of starting something is so daunting and intimidating. The irony is that I built a small but working language as part of the compilers course in college. I feel like I know so much more know but can't bring myself to develop something that reflects that.

<comment><USER20> I personally started the whole thing for learning purposes. I don't have a computer science background, so it was exciting to learn all of the different concepts. Most of it was initially driven by curiosity and challenge.

But it is also worth saying my first attempt (at Elixir) sucked and it demotivated me to work on the project for 6 to 8 months. It was only later I learned/figured out some of the answers or possible solutions to the problems I was having and that motivated me to work on it again. Once I asked my partners to let me work part-time on the language, I prepared myself it would have to be a long term effort (at least 2 years). Then people started using it and that in itself kept me going (and it has been like that for almost 9 years now).

In all fairness, I also do struggle with motivation when starting hobby projects, even more larger ones, and especially if most of the challenges have been addressed. Also what keeps me motivated changed throughout the years, so I try to be mindful of that.

</comment></comment><comment><USER21> As a beginner, who has never touched Elixir, where should I start? My issue is tutorials NEVER have production quality code. How do know what my code structure looks like? How does linking works? If I/m using database, how can I use connection pooling. Stuff like that. I can look up the basics, but I have always struggled to learn how use X language in production. But I guess this is can applied to any programming language.

<comment><USER22> First thing I'd do is go through the Getting Started guide on the main page: [https://elixir-lang.org/getting-started/introduction.html](https://elixir- lang.org/getting-started/introduction.html) to get a feel for Elixir. For setting up an Elixir environment, I'd use ASDF - this guide is good: [https://gist.github.com/rubencaro/6a28138a40e629b06470](https://gist.github.com/rubencaro/6a28138a40e629b06470) \- but the getting started guide's instructions will work too. The easiest editor for Elixir is probably VSCode with the ElixirLS extension.

After tinkering around in IEX and doing the Getting Started Guide, I'd do Dave Thomas's course ([https://codestool.coding-gnome.com/courses/elixir-for- progra...](https://codestool.coding-gnome.com/courses/elixir-for-programmers)) and read Elixir in Action by Sasa Juric. Dave Thomas's course will get you through the basics of the language and the important concepts step by step. Elixir in Action will go further into the concurrency model that makes Elixir unique.

Finally if you want to build a web app I'd go through the Phoenix Guides: [https://hexdocs.pm/phoenix/overview.html#content](https://hexdocs.pm/phoenix/overview.html#content) . Those guides will give you a good example of what a real Elixir/Phoenix Web Application looks like using a database with pooling and request concurrency out of the box. The Programming Phoenix book will take that further ([https://pragprog.com/book/phoenix14/programming- phoenix-1-4](https://pragprog.com/book/phoenix14/programming-phoenix-1-4)).

If you want more practice writing functions and algorithms I'd recommend Exercism's Elixir track: [https://exercism.io/tracks/elixir](https://exercism.io/tracks/elixir) or Project Euler ([https://projecteuler.net](https://projecteuler.net)).

</comment></comment><comment><USER23> It's a shame elixir never really seemed to take off. I've been a huge fan of the language and recent Phoenix framework for three years or so. However, it seems like specializing in this Lang would be more of a hinderance than asset. Great for personal projects and a joy to work with, but for some reason a lions share of developers seem to be scared of functional programming.

<comment><USER15> I am using elixir for a very important part of a project where I work. The project leader who is giving up their repsonsibility over a half-baked python/django effort that is currently in prod asked me if it's risky because we're increasing our exposure by using a product that is not battle tested. Then i told him that our at work documentation (slab) and our soon-to-be site reliability early warning system (pagerduty) oh yeah and our corporate card (divvy) all are or Elixir/Phoenix so we _already_ have exposure to the risks in adopting it.

</comment></comment><comment><USER24> The great thing that José really inspires is his energy. The moment while I'm learning Elixir slower than he's adding things to it, is the realization. Then I occasionally have a creepy habit where I like to stalk his git commits, to see what he's doing.

I stay with Elixir. Thanks!

</comment><comment><USER25> I've heard a lot from senior devs getting into Elixir, or former Ruby devs. How about junior devs? What's their experience like?

<comment><USER22> I was about 2 years into professional development when I started getting into Elixir. Recursion was a week or two of "err what?" then I got it. Functional composition is way easier to reason about than OOP design patterns (and should be since OOP design patterns are just over-complicated Category Theory).

The tooling gets out of the way, so a newbie is less likely to run into roadblocks. IEX is the best REPL I've worked with. Phoenix is much simpler to reason about than similar frameworks like Rails. And the docs are clean and consistent (+ dark mode). It was really easy to navigate through the docs, try things out in IEX, and get things working. It's just modules and functions. There's no classes, base-classes, abstract-classes, inheritance, instantiations and what-not. Just modules and functions. I doubt there's a better way to learn back-end development (DBs, Queues, Concurrency, PubSub, Distributed Systems, etc.) than Elixir.

A buddy of mine has been getting into Elixir recently while going to school for CS. The school's curriculum is mostly C#, Java, PHP, and what-not. He says Elixir demotivates him from some of the homework because everything in Elixir would be way easier.

</comment></comment><comment><USER26> What is the font used on this website?, looks very legible. Searching on myfonts.com with a screenshot didn't work.

</comment><comment><USER27> To the Phoenix newbs, don't forget to learn how to write a GenServer!

</comment><comment><USER28> OT and FWIW [https://trends.google.com/trends/explore?date=all&geo=US&q=E...](https://trends.google.com/trends/explore?date=all&geo=US&q=Elixir%20lang,Go%20lang,Rust%20lang)

<comment><USER29> Comparing Elixir and Go is reasonable, but I don't think Elixir and Rust have much overlap in the types of projects you would choose them for.

<comment><USER30> In fact the opposite is true! Rust is a pretty popular choice for writing native code (NIFs) for Elixir. (Similar to Ruby FFI).

See [https://github.com/rusterlium/rustler](https://github.com/rusterlium/rustler)

Discord especially has several real world use cases where they've implemented native code in Rust.

</comment></comment></comment><comment><USER31> I write CRUD apps for a living , how is Elixir gonna make it easier for me? It can't and it won't. Not saying it's bad or anything, just has nothing for me personally.

<comment><USER4> If you elaborate on what you find underwhelming then perhaps people would not downvote you? They may even engage in a discussion.

<comment><USER32> A quote from pg's beating the averages ([http://www.paulgraham.com/avg.html](http://www.paulgraham.com/avg.html)) seems relevant here to me:

As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.</comment></comment></comment>


The Complete List of Who's Been Charged in the College Admissions Scandal - sahin-boydas https://finance.yahoo.com/news/complete-list-charged-college-admissions-211212373.html <comment> sahin-boydas The 'ringleaders': William Rick Singer, owner of Edge College & Career Network and CEO of the Key Worldwide Foundation

Mark Riddell

Rudolph Meredith, the former head women's soccer coach at Yale University

John Vandemoer, head sailing coach at Stanford University

David Sidoo, Vancouver businessman and former Canadian Football League player

The 'clients': Lori Loughlin, actress known best for her roles on Full House, Fuller House, and 90210.

Ali Khosroshahin, former USC women's soccer coach

Elisabeth Kimmel, owner and president of a media company

Marjorie Klapper, co-owner of jewelry business

Toby MacFarlane, former senior executive at a title insurance company

Steven Masera, accountant and financial officer for the Edge College & Career Network and the Key Worldwide Foundation

William McGlashan, founder and managing partner at private equity company TPG Growth

Gregory Abbott, founder and chairman of food and beverage packing company International Dispensing Corp.

Marcia Abbott, wife of Gregory Abbott

Gamal Abdelaziz, former Wynn Resorts and MGM Resorts executive

Diane Blake, executive at a retail merchandising firm

Todd Blake, entrepreneur and investor

Jane Buckingham, founder and president of consumer insights firm Trendera

Amy Colburn

Gregory Colburn, a radiation oncologist

Igor Dvorskiy, director of a private elementary and high school and a test administrator for the College Board and ACT

Manuel Henriquez, founder, chairman and CEO of a publicly traded specialty finance company

Douglas Hodge, former CEO of investment management company

Felicity Huffman, actress known best for her roles on Trans America, Christmas with the Kranks, and Raising Helen

Agustin Huneeus Jr., owner of wine vineyards

Bruce Isackson, president of real estate development firm WP Investments

Davina Isackson

Michelle Janavs, former executive of Hot Pockets

Laura Janke, former assistant coach of women's soccer at the University of Southern California.

Gordon Ernst, former head coach of men and women's tennis at Georgetown University

William Ferguson, former women's volleyball coach at Wake Forest University

Robert Flaxman, president of a private tennis academy in Houston

Gordon Caplan, co-chairman of an international law firm based in New York City;

Michael Center, head coach of men's tennis at the University of Texas at Austin

I-Hsin "Joey" Chen, operates a provider of warehousing and related services for the shipping industry

Martin Fox, president of a private tennis academy in Houston

Mossimo Giannulli, fashion designer at Mossimo, sold at Target

Donna Heinel, senior associate athletic director at the University of Southern California;

Elizabeth Henriquez

Rudolph Meredith, the former head women's soccer coach at Yale University

Marci Palatella

Jorge Salcedo, former head coach of men's soccer at the University of California at Los Angeles

Mikaela Sanford, employee of the Edge College & Career Network and the Key Worldwide Foundation

Peter Jan Sartorio, founder and president of Nate's and PJ's Foods

Stephen Semprevivo, Chief Strategy and Growth Officer, Cydcor, LLC</comment>


Am I (Un)Hireable As A Coder? - <AUTHOR> http://www.flatplanetmedia.com/am-i-unhireable-as-a-coder.html <comment><USER3> I'm not a hiring manager, but if your self-description is accurate (see comments re: impostor syndrome for the possibility it isn't), I wouldn't want to work on a team with you. The problem doesn't seem to be that you're not smart or technical or industrious enough, but that you're not conscientious enough:

 _I figure out what needs to be done in order to get something to work reasonably well, and if I can't do it myself I google it till I find snippets of code that mostly do what I need, then I modify them and hack around till I get something that works decently enough._

To me this is a much bigger problem than your ability to implement a linked list or describe big-O notation -- I'd be worried that I'd always be cleaning up after your messes.

The good news is that this is a solvable issue. Start collaborating with people, maybe via open source. Find a project of yours that's useful but maybe not profitable, open source it, and start handling requests for features and submissions. Learn how to deal with bad incoming code, and how to deal with your code being confusing to other people. Maybe read some of the classics on code as collaborative effort, like the Pragmatic Programmer or Clean Code.

Or maybe just decide that this isn't for you! There are lots of jobs oriented around achieving specific goals with throwaway code that you might be happier in than being a slave to the CI server, and they aren't less valuable. But if you want to be hireable in a code-oriented company, I think you have to change some things.

<comment><USER4> "There are lots of jobs oriented around achieving specific goals with throwaway code that you might be happier in than being a slave to the CI server, and they aren't less valuable."

Hi, would you mind elaborating on this? I am a self-taught coder since this year with exactly one webapp project to show. I'm in no position to say for sure, but I think I would enjoy writing throwaway code more than highly technical code. That is, getting stuff done is more satisfying to me than the nitty gritty details. If left on my own I'd probably develop into a coder with a portfolio much like the OP. I think we're more interested in what we could do with code, than the technicals of it. So I'm wondering what kinds of jobs out there for people like me, or am I looking at building small but profitable projects to make a living. Thanks.

Edit: If it matters I have an engineering background (MSEE) and can understand some of what's going on under the hood. If I had to pass a CS exam I would just cram like for any other test. But, I found I'm more motivated by the business end.

<comment><USER5> It is worth your while to learn OOP if you haven't and at least some of the technical stuff. I am a lot like you, engineering background as well.

However, if you try to just freestyle even a medium sized project without any knowledge it will become unmanageable in only a few months.

Most things you can just learn to do by doing plus some google, but there are better ways to do a lot of these things and you should at least try and do something like program chess in C++/C#/java/obj-c with OOP and inheritance. It will significantly speed up your ability to do subsequent projects and increase the scope of projects that you are capable of doing.

<comment><USER4> Thanks for the advice and I agree with the chess idea. I'm familiar with OOP but my usage of it is very loose. Especially since my webapp is mostly, "if this happens, do this." The only objects I really created were to store into the database. I have learned Java at university 10 years ago (Python and Javascript self taught), so OOP was what I learned from the start.

</comment></comment></comment></comment><comment><USER6> Honestly, with resume fodder like SEO software (yes, I'm in that market too!) and "PHP Programming for Affiliate Marketers", I think you would make a strong living selling info products and sites geared toward the IM (Internet Marketing) market.

Run a few WSO's (Warrior Special Offers) on the Warrior Forum, and teach marketers how to code and build software businesses. That's where many marketers want to go anyway. Heck, write a course about what to look for in a programmer or how to hire a programmer. That crowd eats that up.

I think you're more suited being a Tech God in the IM world vs. being Yet Another PHP Guy in the HN world. And you'll make more money doing so.

(Also: Add some contact info to your HN profile now that you're on the front page, so people know how to contact you here.)

<comment><AUTHOR> I've done a lot of this...I run a blog at MarketingFool.com and have an insiders club at Insiders.MarketingFool.com where I teach people my affiliate marketing tactics and how to use PHP...I even released a book recently at Amazon called "PHP Programming for Affiliate Marketers" [http://www.amazon.com/PHP-Programming-Affiliate-Marketers- eb...](http://www.amazon.com/PHP-Programming-Affiliate-Marketers- ebook/dp/B00A2TTNR0/ref=la_B009VHEOKU_1_1?ie=UTF8&qid=1354226386&sr=1-1)

It was a #1 best seller for a few hours in its category.

Been there, done that...ready for bigger challenges...

</comment></comment><comment><USER7> We've reached the point where the glam jobs are no longer those quick and dirty websites that everyone and their dog wanted up until recently. The bar has since been raised significantly, such that people want scaling and maintainability, something you can't do without a very disciplined team.

You've been able to slide along like this due to an accident of circumstance (internet boom, dotcom booms), and in fact you could continue to do so for quite some time yet if you wanted to, although the quality of your customers will continue to decrease as time goes on. The cool projects of today are like the cool projects of the early-to-mid 90s in that you need a team to make an impact. And to work in a team, you need to produce maintainable code and architectures.

Your story reads a lot like mine. I, too, started programming on a C64 at age 8. I then learned assembler and C, and graduated to an Amiga 500. By the time I entered college, I already knew everything. And by "everything", I mean "nothing", because I lacked any and all discipline, which I spent the next 18 years building.

I still couldn't explain what a red-black tree is (or even a heap, to my shame), but I am extremely careful to ensure that the architecture makes sense, that the code is cleanly written and tested, fully documented, and entry points are very clearly laid out and orthogonal. I realize that far more time will be spent by other people reading my code than I will read it myself, and I'd much rather they have a pleasant experience with it and not spend weeks cursing my name for some piece of shit I wrote without any consideration for others.

Is my code super hot shit? No, but I'm constantly seeking to improve my craft. If I can keep the praise mail rate higher than the hate mail rate from people who use my code, I figure I'm doing OK. I'll never reach perfection, but I'll keep striving for it anyway.

tl;dr Doing things right is hard work.

</comment><comment><USER8> Have you checked out the HN 'Who's Hiring' threads?

I, too, have an unorthodox background, and I also wonder if I can land a normal software job. This week, I got pulled into a slow IM conversation one night, so I read through the most recent hiring thread[1] to pass the time. There are 102 comments in that thread. I emailed five people who sounded like they had interesting offerings, and in each email included something like "I know I have an usual background, but . . ." along with a link to my github account. I had one phone interview already and I've got another one later this week and one next week.

That doesn't solve the problem of passing the interview, but if you include a candid note in your email, anyone who decides to interview you will be doing it knowing about your 'problems'; it helps to filter out companies that wouldn't be interested anyway.

If you want to pass a more traditional interviewing process, think of it as passing the final to some class. Here, I'm assuming that you've managed to pass at least one academic class in your life. This algorithms book[2] is free, and exactly what you want (it doesn't cover everything in the world; just in the important stuff, and it has good exercises that are approximately difficult as what you'll see in interviews). Pretend that's the textbook for a class you need to pass, and work through exercises until you can solve ones you haven't seen before fluently[3]. Just like cramming for an exam, you'll probably forget 90% of the material a week later, but you won't need that stuff for the vast majority of jobs anyway.

Good luck!

[1] <http://news.ycombinator.com/item?id=4727241>

[2] <http://www.cs.berkeley.edu/~vazirani/algorithms.html>

[3] If you get stuck, feel free to shoot me an email (see my profile). In theory, I ought to be able to answer your question cold. If I can't, that's a sign I need to do some review and I'd be happy to re-read the relevant material so I can explain it.

<comment><AUTHOR> Thanks I'll check out that book...

<comment><USER9> One of the authors of that book taught a class earlier this year at Berkeley. If you learn best listening, the lectures might help. I found them a bit easy, but a nice overview of the book.

[http://webcast.berkeley.edu/playlist#c,d,Computer_Science,EC...](http://webcast.berkeley.edu/playlist#c,d,Computer_Science,ECFA7F9DF3120C47E5)

</comment></comment></comment><comment><USER10> If I was your TA, I would be worried about this. And, unfortunately, I have had senior level students who I've had to dissuade that cut+paste code is not a valid methodology past year 1.

They way to think about things is like this: code is an expression of a problem. It's no coincidence we call them programming _languages_. They're not write-once, any code you write will be read an order of magnitude more than it will be written to.

The way you write things makes me feel like you don't recognize _Computer Science problems_ , and that you are beginning to realize that the code by itself doesn't constitute the problem. This is a common thread through undergraduate CS students, and it will take some people a long time before this clicks naturally (especially when it feels like writing code is a struggle alone, once you become more fluent code will no longer be the barrier).

You aren't hirable as someone in mindset you are in, but you're moving closer to someone who can be. Continue on your mental journey of seeing problems first. Start working harder at following best practices. You'll get there.

</comment><comment><USER11> Yes. You are unhireable. At least by the type organization that would make decisions based on a technical interview.

You need to find a place where you can hack for a living. Find someplace where you can make a mess of great ideas and then hand the mess over to trusted co- workers to cleanup. (There are people that like that sort of thing!)

What about a consultancy that builds prototypes, proofs-of-concepts, etc? (Can't think of one off hand but I'm sure they exist)

</comment><comment><USER12> Sigh. Too bad you don't say more about this:

 _"I can DO things, I can get things done; always…but I don't really know what I'm doing.

Ever."_

Why do you let that condition persist?

You are just as problematic as a musician who can't read music. You'd think that it would be crazy to have a musician who can't read music, after all its what they do _play music_ but in fact there are lots of them. They picked up an instrument and just sort of goofed around and now if they hear something they can kinda pick it up and recognize that what their playing isn't what they were hearing, and adapt. Great for playing at the camp fire, or covers at a wedding or Bar Mitzvah, but nobody is going to hire you to be part of their symphony band or the work in the theatre district adding music to broadway plays. And the reason is simple, you _can_ get to an answer, you _cannot_ predict how long that is going to take.

If you want to work as a coder you should start by going through the core parts of a computer science curriculum, algorithms, data structures, compilers, interpreters, OS design, and data bases. You need to take the time to learn how the structure in the first part influences how you get to the later parts, so that when you're given a problem you will know how to attack it and get to a solution, and you'll know that you're not getting closer and to change course and how. Because you will know what you're trying to achieve and understand why what you're doing isn't achieving it. It is going to be painful at first because you might have to unlearn some stuff you picked up along the way.

Now don't confuse (Un)Hireable with "You can't make a living at it." As you've demonstrated there are lots of services you can do, especially if they aren't schedule driven based on when you'll be done with your coding. Just like someone who can play the piano by ear can make a living in a bar playing 'live music' for the guests. But if you are passionate about becoming someone who can design software you really need to understand what software is.

Lucky for you there are lots of great free college classes now you can do online at your own pace. Good luck.

<comment><USER13> "you cannot predict how long that is going to take."

This is perhaps a bit nitpicky, but in my experience even people who know what they're doing (in either of these fields) cannot reliably predict how long something is going to take.

But they _can_ at least see the trailhead of the path that they need to follow, which is very important, and seems to be lacking in the OP's case.

<comment><USER12> Its a fair point, although for some definition of scope its fairly straight forward to predict reasonably accurately.

</comment></comment></comment><comment><USER14> "Fatal error: Out of memory (allocated 10223616) (tried to allocate 77824 bytes) in /home/jps/public_html/wp-includes/nav-menu-template.php on line 224"

Yes :-)

<comment><AUTHOR> Yeah, we're allocating more memory...didn't realize this would make it to front page HN...should be back up in a jiff....

<comment><USER15> Nope: <http://www.flatplanetmedia.com/contact>

>Fatal error: Out of memory (allocated 10485760) (tried to allocate 19456 bytes) in /home/jps/public_html/wp-content/plugins/akismet/akismet.php on line 268

<comment><AUTHOR> weird...it's working on my end and the server says we're at 14% of available memory...

</comment></comment></comment></comment><comment><USER16> You sound plenty hire-able to me, based on your story. Your best bet will be getting a job through a personal connection, somebody who _knows_ how you work and wants you (or is willing to strongly refer you). Barring that, not all companies will make you do sorting algorithms and brain teasers for a job interview.

My problem is that I have the memory retention of a gnat. I learn quickly, then discard the information to make way for new stuff. Six years ago, I was a full time .NET programmer (for years!) and I can barely remember anything about .NET at the moment. This makes certain types of technical interviews difficult for me.

My team runs a moderately high traffic web site. Learning quickly, being flexible, and fiercely persistent matter much more to us than a deep understanding of computer science concepts. Now that I am in a position where I do the hiring, I try to accommodate people like us. Unconventional background, hate whiteboarding in public, terrible memory. Whatever. Can you produce something of value in a reasonable time frame? That is all we care about.

The way I hire people now days is to give them a simple challenge to do (at home, on their own time). Basically, take a small data set and display it on a web page. Depending on the level of interviewee, I will ask for more or less features (make it sortable, derive additional data points according to some algorithm you must devise).

The challenge has no time limit or rules. You can use your own resources and do it on your own pace. When it gets sent back to me, I evaluate the candidate based on the final product. I don't much care how they got there. If the product is good, we bring you in for an interview.

During the interview, I ask you to work on _your_ code. The code you provided to get the interview. Essentially, we pair program. Adding features, fixing bugs. Whatever seems the most fun.

If you show me that you can code on your own codebase, using your tools and process, and you are pleasant enough to work with side-by-side for several hours, you've got the job.

I know you said you don't want to move, but we are hiring developers here where I work in NYC. Drop me a line if you are interested jdslatts at fzysqr dot com.

</comment><comment><USER17> As someone who has been in the position of maintaining code written by someone who 'can make it work' but doesn't understand why, yes. Yes you are, because you're not the only one who has to work on your code.

</comment><comment><USER18> Sounds like a case of impostor syndrome to me, or maybe an unrealistic estimation of how good working programmers tend to be in practice.

</comment><comment><USER19> As someone who has (more or less) gone down this path myself, here's my take: you are totally hireable. But the fact is you're a cowboy programmer looking to settle down in town, so there's going to be some cleaning up to do. If you approach it that way, you'll be fine.

If I was in your position my approach would be to either work as a contractor (preferably a temp-to-hire job) or try to get a job a small- to medium-sized startup, something like 10-50 employees. Your value is that you are clearly a self-starter and don't need to be handheld through every difficulty, but you WANT to work in a team and learn how to do that. It's important to be upfront about where you are at, but don't discount what you do know.

Be sure to have a "beginner's mind" because for a lot of things you are a junior developer, but none of them should be hard to learn if you are open to it. Every company has different wrinkles in how they comment code or do QA, so you would need to learn these anyway. Don't be shy about asking questions if you don't know the proper term for something or understand what someone is talking about - it can feel a little embarrassing but if you ask once it'll fix the problem and will help you communicate better.

Don't worry about not getting jobs where they focus so much on algorithms and data structures because that's simply not a good fit for you right now. You want to work at a place where they need to Get Shit Done and are still establishing formal processes.

Finally, I wouldn't waste time learning new languages or going nuts with interview books or working on open source (unless you want to) unless you've already tested the market. Have some confidence and realize that this Internet industry is pretty darn new and many, many of the people that built it came from a background exactly like this.

</comment><comment><USER20> "And besides, the climate here in America has turned so decisively anti-small business that not only is it not fun anymore; it's almost dangerous.

And who knows what's up with health insurance now. I don't have the energy to dig into that cesspool to find out what my small business has to do to cover itself in that department. Think I'd rather just chuck the whole thing."

I think that these two paragraphs are the most interesting part of the whole post - I've occasionally tossed around the idea of joining a scrappy startup, or even running my own company, but I always come to the conclusion that I'm not confident that I could cope with that much risk. I'm admittedly much more risk averse than the HN community, but sometimes I wonder if I would have the nerve to do it if it weren't for an environment that seems so toxic to small business.

<comment><USER5> Can you explain what you're talking about? I run a small business and my understanding is that unless you have like 50+ employees this insurance stuff doesn't even effect you.

Honestly though if it is a business killer(which you know, I don't really see how it could be unless I am running a minimum wage fast food drive through and not a tech company)I will just drop my employees' wages and tell them it is to pay for their health insurance. I really doubt I will need to do this though.

<comment><USER20> Maybe I'm just a victim of my own FUD - Whenever I think about setting out on my own, I get all kinds of doubts about what kinds of taxes that I would owe, avoiding a patent minefield, how to make insurance work, etc.

To be honest, now that you've actually called me on it, I think that those are really just surface concerns. I think my real concern is more about being able to cope emotionally - I've seen multiple discussions here about significant depression symptoms in startups.

<comment><USER5> Honestly what a lot of the hip startup people with the blogs in silicon valley do scares the hell out of me as well, and I guess that is a lot of Y combinator.

I worked as a developer for awhile so I have some money, and now I am bootstrapping some stuff and I have hired another dev and we also do contract mobile work to supplement. We outsource most of the design work. I have been doing this since around May and I need to check the finances but I am either slightly in the black or slightly in the red(this includes my living expenses). At the current revenue I have a runway of like 50 years though so I'm not too concerned.

We have a bunch of cool stuff cooking in development and have partnered with some other companies on some stuff so hopefully we can stop the contract work early next year.

These kids doing all these startups with little runway, no clear method of generating revenue and basically no experience out in the valley are crazy imo. I think the only people making real money are the VCs and a very few lucky founders. It kind of seems exploitative to me but I'm not out there so maybe it is much better than I think.

</comment></comment></comment></comment><comment><USER21> My answer is that you are probably not hireable as a coder at the moment. That's not to say you don't have a lot of value to offer and potential as a future hireable coder.

To put it simply: You are good at developing your own ideas and shipping them but that's not what a coder does. When a coder is hired, it is their job to develop and ship other people's ideas.

One limitation you likely face is that your lack of programming prowess limits your ideas or, at least, which of your ideas get developed. By the same token, if I asked you to build Product X (say, a Google-like indexing engine), I'm guessing you'd be hitting walls pretty quickly because your breadth of knowledge is, frankly, limited.

If you want to become a good coder, you probably just need to fill in the gaps. You need to take the time to learn the essentials of computers and programming. Most devs get this through formal study but many also are self- taught. The trick is you need to put in the effort to be self-taught. You need to come at your education with the goal of learning a wide base of knowledge instead of just learning what is needed to solve today's problem.

My personal recommendation for a starting point would be to read and thoroughly study Programming Interviews Exposed: Secrets to Landing Your Next Job (2nd Ed.). This book just offers a wide range of topics all of which need to be mastered to be a "good" programmer and be able to handle many challenges that are given to you.

[http://www.amazon.ca/Programming-Interviews-Exposed- Secrets-...](http://www.amazon.ca/Programming-Interviews-Exposed-Secrets- Landing/dp/047012167X)

</comment><comment><USER22> >I've created unique and intricate php heavy, mysql powered websites with ease

When I hit the site first time I got "banner-widget.php out of memory" or something :P

<comment><AUTHOR> yeah, this is just my personal blog...it's not geared up for the heavy hit of traffic from HN that I didn't expect to get...I've beefed it up a bit, it should be working now.

</comment></comment><comment><USER23> Coders aren't fungible. Web dev isn't embedded systems isn't databases isn't enterprise business isn't application dev isn't front-end JS.

So you need to isolate what you want to do. However, realize that I - <USER2> others like me I've met - key off of theoretical grounding and consider that the foundation to great software development practice. To interview successfully with us - regardless of the position - , you need to be able to speak comfortably about data structures, algorithms, big-O, and some level of formal language theory. Loosely, that's 2-3 courses in the CS curricula.

With _your_ background, I would be looking for you to have spent some time to grasp the theoretical concepts and be able to apply them in practice. I would also be expecting you to have a rock-solid - hardcore - foundation of in-the- trenches software development principles.

</comment><comment><USER24> If technical interviews are a problem that the author is aware of, why not take action to shore up the missing knowledge? Take a few hours to read about some data structure, then try implementing it. Read Programming Pearls. Interview somewhere and see what they ask, then read more on those subjects.

<comment><USER25> I too was entirely self-taught and had very little opportunity to work with other programmers, right up until I got a job writing system software.

I simply made it my priority to become obsessed with data structures, algorithms, and software engineering. I read every such book I could find and wrote code to implement things. It was harder back then, before the internet. There were far fewer books at the bookstores. Nearly everyone told me I could never be a software developer without a CS degree.

This is a solveable problem, if you really want to solve it.

</comment></comment><comment><USER26> I frankly don't understand how you can build software without understanding what you do.

Then again, can you FizzBuzz? :-)

<comment><USER27> I've come across at least one person that felt into that description, in the past. He was _most definitely_ un-hireable - if anyone spent _a second_ studying his (fake) past experience or his (non-existing) technical ability/interest on learning - had no idea what he was doing, but somehow managed to not just join a "big corp", but stay under the radar for _years_ until he got promoted to a management position (where I believe he is today).

</comment></comment><comment><USER27> Judging by other posts on his blog ([http://www.flatplanetmedia.com/thats- john-we-dont-know-what-...](http://www.flatplanetmedia.com/thats-john-we-dont- know-what-he-does-here.html) / [http://www.flatplanetmedia.com/im-learning- ruby-on-rails-bec...](http://www.flatplanetmedia.com/im-learning-ruby-on- rails-because-im-weak-willed-and-stupid.html)), he's either using a "persona" to try and get clicks from newbies (to buy the book he wrote for "PHP newbies and marketing") or he likes the feeling of "being a complete incompetent, but somehow managing to get paid" (a lot of self-derogatory posts there, most of them including the usual "but whatever", "but I like to do like that", etc).

Fishy...

</comment><comment><USER28> Have you actually tried to get hired? If you've never been through any technical (or even non-technical) interviews, you'll likely have a hard time.

So are you Un-hireable? Probably yes. But can you become hireable? Absolutely yes, but with necessary effort.

Start applying. With a list of successful projects like that, you'll get some people taking the bait. Go through interviews, even if you'll fail. Especially if you aren't even interested in working for them. You still get something out of it (practice), which will help you the next time you interview again. Eventually, that next time will be a place you actually want to work at.

(Also, listen to the other comments here about learning version control and doing open source. Those will all be helpful.)

</comment><comment><USER29> I would say that an inability to communicate with other developers in the same terms (including in code, because I suspect your code may look very different from others) is a serious barrier to working in a team, no matter how brilliant and talented you may be.

There's no question you can do the job, but it's a big question if you can do the job together with other developers, or how much time and effort (not just from you, but your coworkers) it would take to get there.

I say this as both a hiring manager and a self taught developer. As the latter, the most important part of my development as a programmer was to learn to express myself (and my code) in common terms and patterns so I could work with others.

</comment><comment><USER30> Really enjoyed your post. I'm in a similar situation and have been reading up on how to learn the formal CS concepts necessary to ace a technical interview and thought I'd share what I've found.

This answer on Quora summarizes the general topics to look into: <http://qr.ae/1h6xx> More thorough summaries can be found here: [http://www.starling-software.com/employment/programmer- compe...](http://www.starling-software.com/employment/programmer-competency- matrix.html) and here: <http://matt.might.net/articles/what-cs-majors-should- know/>

</comment><comment><USER31> I think you should look for marketing/digital agencies and showcase your talents. I don't know anything about these companies but they seem to be examples in your area of what I mean (<http://www.fusion92.com/home.aspx> | <http://www.jbchicago.com/> | <http://www.thisisplanb.com/>).

It would be a good way for you to get more work, be involved with teams, start to learn how to mentor and digital agencies/marketing companies tend to be less about formal experience and more about unit productivity.

<comment><AUTHOR> Good tip, I'll look into that!

</comment></comment><comment><USER32> > but I'd probably utterly fail any type of formal interview where they asked > me to write or explain code on the spot.

If you've gotten any sort of software project to work the way you wanted it to, which it sounds like you have, I doubt this quote is true. Any company worth working for is more interested in hearing/watching you break down problems into pieces and describe how to solve them. Often times this can be done in 'pseudo-code'. If interviewers are going to nitpick your code for trivial syntax issues (i.e. things that can be fixed with 10-seconds of google-fu), there's a good chance you won't want to work for that company anyway.

<comment><AUTHOR> Hm that's a good point, I never thought of it in those terms...

</comment></comment><comment><USER33> I apologize, but this post bugs me. You can google code snippets but you can't google how to do well in a programming interview? There are books for this. There are tons of online resources. I wouldn't hire you on the simple fact that you couldn't figure this out on your own. I can't imagine making such a post that has my name attached to it, on the internet. That will make you even more less likely to get a job. Based on what I saw on your website you should be able to sell yourself a little better, even if you don't feel like you're a good coder.

</comment><comment><USER34> I looked at your personal blog and came across your post about trying to learn Rails:

[http://www.flatplanetmedia.com/im-learning-ruby-on-rails- bec...](http://www.flatplanetmedia.com/im-learning-ruby-on-rails-because-im- weak-willed-and-stupid.html)

How did that go? I wouldn't learn Rails just because it's the hot thing of the month, but to understand why frameworks are valuable and to be able to use one to quickly prototype client work. Are you handcoding your PHP sites?

<comment><AUTHOR> Ruby seemed pretty easy. I flew threw the codecademy class in a couple hours with no problems whatsoever. I never got around to playing with Rails tho...

Yeah, I hand code my php stuff.

</comment></comment><comment><USER34> > _Frankly I don't even know where to start. I'm most proficient in PHP, but I > can pick up anything really. I breezed through the codecademy.com Ruby and > Python tutorials in an afternoon but I've never done anything in Ruby or > Python._

If you're experienced as you say you are, then you shouldn't be learning new languages via tutorials...but rather through things like O'Reilly's "Cookbook" series. That should get you up to speed much faster.

<comment><AUTHOR> I've got a shelf of those books...I've always used them.

<comment><USER27> How come you always "used books" and yet could never even *understand what you're doing"?

This makes zero sense...

</comment></comment></comment><comment><USER35> > I can build software that's happily used by millions of people, but I > couldn't describe how I did it, and if I looked at the code later – I > probably couldn't make heads or tails out of it without really studying it > for a while (comments? who has time to bother commenting code!).

Pretty much like every legacy project I've ever touched, wrote by people who got the job. Sounds fine for me.

</comment><comment><USER36> The term "make things and show people" comes to mind. It's basically the way many of the best tech jobs are landed. Instead of worrying about all the things you don't know how to do, focus on the things you've made and the myriad skills you gained in doing so.

Wish I could find the original article that quote comes from, I must be mangling it. But you get the gist.

<comment><AUTHOR> Yeah I've got a pretty long list of things I've built...software, web sites, etc.

</comment></comment><comment><USER27> The most scary thing is the author claims to be completely void of any theory or even ability to explain simple things ("explain something as simple as a nested array"?) one could learn in _a day_ with quick look at a "learn whatever in 21 days"... but yet, he has _published a technical book_ on PHP. Something smells in that story.

<comment><AUTHOR> its for marketers...just explains VERY basic concepts...variables, if/then/else...things like that. Aimed at affiliate marketers who want to punch up their websites with a little PHP. I'd hardly call it a technical manual. And besides, I can explain things when I have reference material in front of me...but on the fly in an interview would be totally unable to.

</comment></comment><comment><USER37> Cache: [http://webcache.googleusercontent.com/search?q=cache%3Ahttp%...](http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2Fwww.flatplanetmedia.com%2Fam- i-unhireable-as-a- coder.html&oq=cache%3Ahttp%3A%2F%2Fwww.flatplanetmedia.com%2Fam-i-unhireable- as-a-coder.html)

</comment><comment><USER38> "the climate here in America has turned so decisively anti-small business that not only is it not fun anymore; it's almost dangerous."

In what way is this actually true?

I completely sympathize with people who have impostor syndrome but I am having trouble seeing this long rant as anything but a 'pity-me' advertisement.

</comment><comment><USER39> You are at an advantage, because your mind is not poisoned by unnecessary baggage. "Just" build and offer stuff that works reliable, with better quality. Demonstrate that, prove that, measure that. It's not the tools and techniques that matter, it's the results.

</comment><comment><USER40> On the flip side, if you have had success doing those things, why do you want a "job" where someone tells you what to do? Maybe you just need to learn a little bit about sales and marketing so that you can make money from your own successful efforts?

<comment><AUTHOR> I've done well for 16 years...it's time for a change.

<comment><USER41> If you dont mind me asking how large your revenues were at its peak? Or more generically were you well of or dragging along?

</comment></comment></comment><comment><USER42> You sound like every contractor being hired everyday in the DC Metro area.

</comment><comment><USER43> Read books. I'm a Maths grad now at my first Software Dev job. Yes, I'm a Software Developer not a Coder.

You need to learn the basics. Use C/C++, learn why Java is crap and why PHP takes up too much memory. Make sure you get a few Signal 11s and learn what you did wrong. How do you protect yourself from it next time?

The particular choice of languages is irrelevant of course. The point is there is a lot more to software development than hacking out code. There are principles of development. There are advantages/disadvantages to each of the tools we use. There are mathematical underpinnings of data structures. A brief understanding of it all is important. A deeper understanding may be required.

<comment><USER44> Java is crap? It was the first language i learned in uni and i would advice anyone to start with it to get basic oo programing skills and design patterns fast.

</comment></comment><comment><USER45> Only way to know for sure is to apply for some jobs and see what happens :)

I have no doubt you could get a job, the question is, can you get one doing what you want that pays what you want

</comment><comment><USER46> Would you hire yourself as a coder? If so, then someone else will, too. If not, build stuff (even if it sucks) until you would hire yourself. Game, set, match.

<comment><AUTHOR> I've built lots of stuff that doesn't suck. I'd still bomb a technical interview.

<comment><USER47> Step 1:

Throw out this attitude. It's utterly useless.

Step 2:

Go bomb five technical interviews and learn from them.

Step 3:

Ace the sixth.

<comment><USER48> This applies to any type of interviews/beginnings. Since op listed himself as an entrepreneur who has sold companies, I'd expect this concept to not be novel. Probably, just a matter of regaining some confidence.

</comment></comment></comment></comment><comment><USER49> The short answer is "no".

The longer one is "probably brush up on formal CS stuff before you start going to interviews, but you're probably fine in this hiring environment."

</comment><comment><USER50> Where's your GitHub

1\. Acquire GitHub

2\. Upload lots of nice code

3\. ???

4\. Employers are impressed

<comment><AUTHOR> I've never understood GitHub...I just write code in notepad and then sftp it into my server to deploy...why go through github?

<comment><USER51> I just started using Git and Github myself... and for me, github itself is useful as an online backup for a repository (git itself being incredibly useful in terms of organizing projects) and just having a github profile looks better on your resume, etc than not having one. At the very least, your code is right there to be looked at.

<comment><AUTHOR> I don't want my code to be looked at though...it's proprietary. It powers the software that I sell to make a living...why would I spread it around? Though I get your general gist...

<comment><USER52> A git repository doesn't have to be public, though you do have to pay for private repositories on GitHub. GitHub is great for the "network effects" of it having a lot of developers on there, maybe wanting to help out with your (public) software, but if you just want some free, private Git hosting, <https://bitbucket.org> is fine.</comment></comment></comment></comment></comment>


Yonomi connects with your favorite smart things - <AUTHOR> https://www.yonomi.co/supported-devices/ <comment><AUTHOR> So many smart devices these days.

I assume there is little to no security on these things. So keeping all the smart devices on a separate home network would probably be a good idea.</comment>


A family of 5 goes digital nomad - <AUTHOR> http://nomadicbrood.com/liftoff/

<comment><USER2> I was excited to read this, but unfortunately it was more "here's what's going to happen" rather than "here's what has happened, here's how our lives have changed, here are the pros/cons, and here are the lessons learned". Looking very much forward to the "during" and "after" articles.

<comment><AUTHOR> Yeah they're just kicking off now. Looking forward to reading more myself. Thought it was a good "first post" to outline the ambitions / purpose of the journey.</comment></comment>


Assange Case: Evidence Destroyed Over and Over Again - <AUTHOR> http://radsoft.net/news/20101001,01.shtml <comment><USER2> Wow! Don't know what to say. Surely the DA in Sweden is aware of these facts

</comment><comment><USER3> Meh. She doesn't even look any hot at all.</comment>


How React Increased Animation Performance Using Fiber - <AUTHOR> https://engineering.hexacta.com/didact-fiber-incremental-reconciliation-b2fe028dcaec <comment><USER2> Author here. Nice to see this on HN. Let me know if you have questions.

</comment><comment><USER3> Awesome post!

Related - Lin Clark has an amazing talk on explaining React Fiber:

[https://www.youtube.com/watch?v=ZCuYPiUIONs](https://www.youtube.com/watch?v=ZCuYPiUIONs)

</comment><comment><USER4> > Author here. Nice to see this on HN. Let me know if you have questions.

Heads up, looks like the authors post is dead as of this comment. ( /u/pomber )</comment>


Android-apktool: reverse-engineer Android apps - <AUTHOR> https://code.google.com/p/android-apktool/ <comment><USER2> Rather ironically the source code for the tool is not available. You'd have to use a Java disassembler to reverse-engineer how the reverse-engineer tool works.

<comment><USER3> Apparently the author isn't happy with the messiness of his current build process, but plans to release the source eventually:

[https://code.google.com/p/android- apktool/issues/detail?id=7...](https://code.google.com/p/android- apktool/issues/detail?id=71&colspec=ID%20Stars%20Type%20Status%20Priority%20Milestone%20Owner%20Summary)

</comment></comment><comment><USER4> Sounds like .NET Reflector for Dalvik. I'm curious how well it works. They make it sound like it'll practically generate compilable source code.

I wonder how long it'll be until we see obfuscation tools available for developers.

<comment><USER5> Existing java bytecode obfuscators should work. The one I worked on does. The Dalvik compiler translates the .class into dalvik bytecode. You can obfuscate the java bytecode and the obfuscation survives the translation layer.</comment></comment>