HNHacker News
TopNewBestAskShowJobs

fayyazkl

27 karma · joined May 15, 2012

Software developer with Embedded and TCP/IP protocol development experience of over 7 years. Worked on carrier grade equipment involving multicore network processors as well as a variety of embedded platforms such as ARM, MIPS, PPC etc. Have been programming in c for about 10 years along with several languages such as C++/Python/C# etc.

Recent experience was in value added services for cellular networks involving SMPP protocol as well as streaming software.

Have also been a free lancer for many years writing high performance applications and a good deal of open source software such as VLC, dnrd to name a few.

submissionscomments
fayyazkl··on Ask HN: Has anyone else been unemployed for over two years?
You are missing the point that a director level resource, could only apply to a relatively smaller number of roles. Entry level IC might not be worth applying. So despite what they say, the limitation factor might also be number of posted jobs.

I know they said they applied to anything - but still anything for that profile might be a bit more broad - entry level IC to FANG may be which pays better or a role that is open to leveling or start up or any other combos.

fayyazkl··on Guido van Rossum joins Microsoft
Thats certainly invalid. People with 20 years of experience or more, are asked questions based upon the role they are interviewing for.

If you are applying for a principal or higher engineer role and your job involves coding, you are asked coding questions. May be not just focused on a complex bookish algorithm only, but rather more close to a real life distributed programming / synchronization problem etc. for example.

fayyazkl··on Guido van Rossum joins Microsoft
Every body is asked some thing close enough. At higher levels, often focus is not on coding, but enough depth of design where a person of such profile might end up educating the interviewer - while satisfying their requirements.

That being said, ability to solve coding problems efficiently (not necessarily spit A* graph algo in sleep), but a decent close to real life coding challenge is fair game.

fayyazkl··on Ask HN: Who is hiring? (February 2015)
for the senior C++ engineers and the likes, any chance for visa cum relocation?
fayyazkl··on Cello – Higher Level Programming in C
The last part might not be true. Though i won't generalize, let's just say that i have been writing industry code for almost a decade, 90% C (because of domain) and at least a quick review tells me, porting this to a couple of major platforms could be very practical and useful IF IF, it does not sacrifice the performance.
fayyazkl··on Cello – Higher Level Programming in C
Well coming from an industry c programmer (embedded, networking, high throughput stuff, where c is the only choice), i am really thinking this could be of a great use. Specially for large products developed and maintained for many years and have big teams, this could be priceless if actually ported / extended. I would probably look at this and try to contribute when i can. Thank you so much, great work
fayyazkl··on Ask HN: Who is hiring? (December 2014)
you said must be eligible to work in Canada. Do you mean that you cannot process people who are say on closed work permit in Canada and would need a new permit to work for you?
fayyazkl··on Network Neutrality
Until we find a way to truly achieve network neutrality which also means (from service provider's perspective) to throttle and keep in reasonable usage limit applications such as video streaming, specifically illegal torrent usage which chokes carriers bandwidth and prevents normal users too, this debate will continue. I don't see any thing principally wrong with providers point of view (i might be biased because i work in the industry that provides these tools/software. But logically, the word "neutral" to me should equate both sides - not prioritizing some high paying customer's traffic, but at the same time not allowing a regular user to eat every one else's bandwidth to download his favorite pirated content. I feel the discussion on the topic is mostly targeted at the former only. A side effect of such capability could also be better utilization of network resources i.e. charging customers ONLY when and what they use - there by decreasing costs as well.
fayyazkl··on An Interview With Eric Lippert
He has great insights and uses classical analogies to explain ideas. Here is his stackoverflow profile

http://stackoverflow.com/users/88656/eric-lippert

containing a lot of answers, worth reading even if you are not exactly looking for solution to the problem at hand.

A classic one http://stackoverflow.com/questions/6441218/can-a-local-varia...

fayyazkl··on Is the Toilet Free?
Moreover, the concept is quite abstract and has many similar applications. I used to work in a scenario when there was a specific gateway resource that was needed to be run by every developer for executing his code, was very expensive and people would annoy each other by suddenly remote logging into machine and disturbing others. Then we came up with a resource locking / waiting and current state showing software, along with estimates of when which machine would be free, so you could request a reserve slot. Some sophistication included things like how much of it was actually used by you vs reservation time so it could adjust appropriately.
fayyazkl··on The Worst Part of YC
The best I think that can be done is to tell objectively why you didn't fund a company so either they focus on resolving those issues or at worst quit asap or move to a new idea. I dont know how much feedback is provided currently but it is immensely important even to those who got selected so they can focus on their strengths and fix their issues
fayyazkl··on Ask HN: any advice for someone changing career to become a software engineer?
I beg to differ on this point. Embedded software development in general needs more of core CS/CE curriculum than any normal application development does (web, desktop, mobile). You might get away with learning to program for say android, or say Dekstop apps in .net without knowing OS, Automata, Compilers, C/Assembly language, TCP/IP. But you can't do without those in embedded. Besides, learning languages such as C or C++ would require more time and effort. So unless this guy has gone through much of those in EE already, this is a bad idea in my opinion. I would also argue that even if he had, still going through all those courses in theory is different from going through them with a programming mindset.
fayyazkl··on The Stony Brook Algorithm Repository
Skiena has a very different style of introducing algorithmic problems. Generally all comprehensive books tend to follow a pattern. Never have i seen a book in which while just being a university student i tried solving a problem described in first chapter, kept reading through seeing my attempts fail and finally learn it was the famous TravellingSalesman NP-hard problem. Always loved that approach.
fayyazkl··on Lessons from a Silicon Valley job search
I never tried stating it was hard, or making it look like it is main stream. I just said that depending upon the domain you work in, Algorithms and data structures might be more important and you might encounter them more often then in web or desktop, than an average programmer does.

So the whole line of reasoning is irrational to me. Never tried saying systems programming is more main stream then web or desktop or enterprise.

Talking about renowned, Yes people who have written kernels, operating systems, network stacks / protocols - there is huge list of renowned ones. Do you want me to spell the names out starting with Torvalds or Stallman?

fayyazkl··on Lessons from a Silicon Valley job search
Really? may be you didn't have an actual example so had to get sarcastic about it. So let me put a real scenario here.

How about a gateway device receiving some minor 3-4 millions subscribers traffic and processing like 40-50Gigs per second. I suppose worrying about hashing those ips to access individual records is a waste of time, and a simple list should work? right?

The scenario is not as common as may be building a website. But it a whole industry and a whole bread of programmers exist who do this all day. You should go out more :)

fayyazkl··on Lessons from a Silicon Valley job search
I sort of agree to most. Being able to write recurrence out of master theorem is never kind of thing really needed here. Even if you know conceptually the running time of a loop (nested ones etc.) and be able to apply that practically is sufficient.

Ah... yeah for the design statement :) i can't say much beyond that for most of the companies with established practices - you have to write a design document, often down to the level of writing data structures and function names - run through debates with others to justify your choices BEFORE you can even start to write first line of code.

I understand this partially because of being in Embedded, C/C+ domain where you can literally shoot yourself in the foot due to wrong choices and often product models are different.

E.g. at one place that i worked, code reviews and conventions were very rigid, some what more than say Linux kernel, because the product was an RTOS and associated stacks, which were sold to companies WITH SOURCE since the customers were actually developers developing end applications using our APIs. So even one comment not written according to company's coding convention often won't pass a peer code review - but i believe this is a pure exception rather than the norm.

fayyazkl··on Lessons from a Silicon Valley job search
Depending upon what sort of industry and scale you write code for, very often, it is a HUGE part.

I accept the point that over optimizing is the root of all evil and the rest of the philosophy along those lines. But knowing algorithms and data structures inside out, because where and when you have to choose what - i doubt one can be called a programmer without all that.

And i would say again, i am yet to find some body renowned, who has made their mark as a programmer, and doesn't regard all of this stuff high enough.

Having said all that, if you work in a high level language and develop client facing / application layer desktop/web related stuff - and not involving too much scaling, you won't need these things most of the times. But if not, you can't live with out these.

Lastly, since college and probably since learning to program, the best of the breed usually were the guys who went on to acm and top coder kinda stuff. It is true that building products is not synonymous, but it definitely plays an undeniable part albeit i must agree that it is slightly over valued, nothing else.

fayyazkl··on Lessons from a Silicon Valley job search
You might be working in a scenario where you can't just look those things up. You have to code them through. Learning them then through general concept AND THEN implementing is too much. For instance, if you work in the embedded domain, you won't have the liberty to use public / standard / open source libraries.
fayyazkl··on Lessons from a Silicon Valley job search
For all the arguments against the algorithmic type questions - i would add that in my ~16000 hours of professional programming, i have had to worry about O(n) to choosing Hash tables, quiet a lot of times.

Although not too often (compared to factors mentioned already), but it depends upon the domain too. I worked in embedded for the most part where the liberty of using frameworks, libraries - is far scarce, so it matters which area / programming environment are we talking about in general.

Also, i am yet to run into a good interviewer + programmer (whether more experienced or junior) who doesn't value these things as a good predictor of some one's coding ability.

And we are not talking about only scale of companies like Google or Facebook and in my humble opinion, those might get a bit tooo algorithmic as well.

But you should be able to recognize that a design you did won't scale when you have say 100k or more packets (instances) of inputs thrown at it. It won't be a problem ONLY UNTIL your list of traversal, get big enough, and frankly any software worth being discussed - gets big enough at some point.

Or that your linear traversal should dramatically improve if you could code and use a hash table instead.

Ah - and yes, loved the idea of 'can do serious work for at t least four hours a day', but wonder if there is a way to determine that.

fayyazkl··on My Hardest Bug
Oh, so you mean the openbsd version doesn't suffer from these issues / features? :) I would definitely like to take a look. Thanks
fayyazkl··on My Hardest Bug
Apparently, most of the ones categorized hard seem to be some thing related to hardware i.e. not a software mistake of some programmer. I would narrate a couple which were not the case.

a) I used to work on deep packet inspection software for a multicore network processor. It was kind of c but with restricted api's and some unique concepts related to multicore. Among the concepts was, same binary being run on multiple cores to process packets, but still no hardware locks, because there was an implicit tag - a kind of a hash computed on 5 tuple (src/dst ip, ports, protocol) to ensure only one core gets packets from one session / 5 tuple.

So the scenario was a protocol parser whose job was to parse some other info along with ip, call an external api to add a subscriber. When this parser was ran for like 10-15 minutes on live setup, it used to seg fault after processing some 60-70 million packets. The behavior was reproducible, but was not occurring at the same time, nor in the same piece of code.

Narrowing down didn't exactly work, since it stopped occurring with either of the subscriber addition api call OR the parser was commented. But each worked perfectly on its own.

Finally, after a couple weeks of long debug cycles and notes, it turned out to be AN IMPLICIT tag switch inside the subscriber addition api. Since we were not locking through apis, the tag switch would lead to same packet being sent to multiple cores, and any where along the line in the follow up code, an allocation (which turns redundant) or a shared mem access or deletion (free) it could turn into a seg fault.

Now implicit switch of locks in the subscribe api was also a documented and needed feature of hardware. Just that it should have been DOCUMENTED in BOLD on the api, which was not the case.

b) In the same dpi product, once we added two fields to look for in the incoming traffic which should not have matched but were still matching in results. Unique thing was, they only fail when those were together and would work fine independently.

Going deeper in their code, showed a strncpy which was intended to use as a safety against strcpy, but with MAX_STRING_SIZE. So basically when the actual string was much shorter, it would just wipe off the entire length with padded zeros in the buffer, there by over writing the originally appended fields to look for. The author seemed to have missed the following comment in strncpy's definition.

"If the end of the source C string (which is signaled by a null-character) is found before num characters have been copied, destination is padded with zeros until a total of num characters have been written to it."

Since then, i have been really careful in choosing to use strncpy instead of strcpy as often mistakenly advised in general.

fayyazkl··on oDesk to merge with Elance
As long as there was competition, they were forced to maintain standards as well as individuality to retain separate policies. From a contractor's perspective only on one site, it would be positive in the sense that you can use the same credibility to bid for projects from other side ONCE they unite.
fayyazkl··on oDesk to merge with Elance
Just to balance the concept, usually people who have maintained good ratings for a long time, don't do this. I have worked for like 5-6 years at odesk part time, done around 40 jobs of varied sizes (hourly as well as fixed prices), never even once held back code or any thing, and barely once received some what negative feedback in which case i believe it was still my fault. So all sorts of people exist and work online. Those who have build reputations over years value it far more than the money, and an employer can easily trash the reputation with feedback. That being said employers from the western world are generally nice or may be it was just my experience :)
fayyazkl··on Would Paul Walker survive had he been riding a Tesla?
Okay, when i read the news i was thinking like, may be if he (driver) was slower and still caught fire, they might have been saved in a Tesla due to better fire prevention. The pictures show wreckage in a poor shape so its hard to realize whether the state was achieved mainly due to impact OR fire. I also read some where they people risked their lives trying to take them out. This makes me think whether it was possible to survive (or at least get to hospital alive) if there was controlled fire at least as expected some what with a Tesla. Of course disregarding its cost, but then it really makes it worth the cost if you are relatively safer.
fayyazkl··on Why are software development estimates regularly off by a factor of 2-3?
That's a very interesting sort of analogy. Among most of the discussed issues,

a) For one, giving enough time to come up with a project estimate is often rare. Usually people try to ask for those upfront.

b) Usually we try to add a general buffer for any unseen issues. However, the deeper you go and list tasks against time, the closer to realistic is the total.

c) Often it is just a customer giving a requirement needed at date x, or a management guy setting goal for a date y. When all you can do is to cut features but have to deliver by a given date.

d) No matter what we say, but at the back of our minds, we are not enough prepared to defend a timeline when giving it in the first place. Implementing feature x needs a week? gosh boss would say it should take a day. Latter it turns out the assumption was based upon a library which for just internal implementation reason (that you only discover upon learning it enough through actual code) is completely useless and it should actually be planned for 3 weeks at least.

fayyazkl··on Ask HN: If money no object, how do I find the very best freelancers?
Another option is to look at credible free lance sites such as odesk, elance etc. Generally you can search for contractors with 1) top notch past feedback in projects of area you are looking for 2) scores on relevant tests on those websites 3) Interview candidate and possibly assign a paid test job.
fayyazkl··on What does SVN do better than git?
Yes, but i think it initially teaches dvcs by going exactly the opposite route i.e. there is nothing central. Then latter when you get to mix central again into the concept, it gets a little (let's just say) polluted i.e. harder to get around your head specially if you have been used to something simpler in the past conceptually like svn.
fayyazkl··on What does SVN do better than git?
I must admit i liked mercurial a lot. The simplicity that is underrated (of svn) is found in tons in mercurial. In fact dvcs initially was hard to get my head around conceptually with git. Keep in mind the unlearn part is harder from years of svn. Then i actually read a tutorial on Joel Spolksky's website about mercurial and how FogCreek uses it. That really helped me conceptually with dvcs.
fayyazkl··on What does SVN do better than git?
Though it might be a lot to write, but just a small case as an example. If you have two different variables initialized on same line number in svn, it is possible that in merging two different branches (not revisions), svn quietly puts them BOTH in the code which doesn't even produce a compile time error and it takes ages to find out the actual cause. I have actually been through this since we used to have a dpi product whose separately developed branches for different target platforms needed to be merged and it was all svn. At best svn would give you manual conflicts to resolve. With git, the number of conflicts to be resolved by hand is far less. For a general list, take a look at http://stackoverflow.com/questions/2471606/how-and-or-why-is...
fayyazkl··on What does SVN do better than git?
Nothing wrong, just the fact that you cannot latter push ONLY a sub section of code from local branch (while leaving many other changes done in local for local needs) as opposed to svn. This is further mentioned in other comments
Page 1 of 2Next →