|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
On January 17 2018 16:58 dsyxelic wrote:Show nested quote +On January 17 2018 16:26 Manit0u wrote:On January 17 2018 14:26 dsyxelic wrote: to those working in a particular field and/or have your mind set on a particular field, how did you get to that spot? (ex. frontend/backend/fullstack web, mobile, devops, systems, etc.)
trying everything else and see which one you liked best? and to what extent (coursework? projects? internship?)
got exposed to one thing and kept following it since it seemed decent?
etc?
I'm curious how people got to where they are as I feel like I should start specializing in something. For the most part I've done a bit of coursework and/or minor projects in a bunch of areas but not sure if I should commit harder when exploring or if I should look even broader. The only thing I know for sure is that I don't like systems programming or anything very low level.
I also welcome anyone sharing why they like their area of choice to me since your reasons for choosing your respective area might resonate with me. Before I knew what I wanted, I wanted to do front-end. Started with full-stack web and gradually moved to the back-end pretty much exclusively (front-end is fucking boring). How did you decide on wanting to do front-end? And did you look for a full-stack job or did it just happen that you got a full stack job and/or your skillset naturally fit it so you ended up there? For me at the moment my skillset is so broad (or in a negative way, lacking) and unfocused and so are my interests. I guess that is because I'm only a student, but at the same time I feel like most of my peers have an idea of what field they want to go into and even intern listings seem to be more focused. It is mostly at large companies where there are more generalized roles but even there there are tons of specialist roles that it seems like I should aim to specialize soon. I've done at least one small project + a course in a bunch of fields but nothing really seemed to click. If I had to attempt to explain what was the most fun for me in the past, I'd say something that automates large tedious tasks. For ex. a program that constantly checks multiple sites for the latest news on a specific person/thing. Basically anything that takes something super large and turns it into something small.
At the time I didn't know shit and thought front-end would be easy (LOL). Anyway, I got an offer for full-stack so I went with that. This gave me an opportunity to do a little bit of everything and see what I liked best. I just rolled with that.
|
Backend is boring for me, frontend is much more fun, two sides to each story. But I'm also a full stack dev for fun, now architect/strategist/optimizer professionally.
|
On January 17 2018 20:31 Blisse wrote:Show nested quote +On January 17 2018 14:26 dsyxelic wrote: to those working in a particular field and/or have your mind set on a particular field, how did you get to that spot? (ex. frontend/backend/fullstack web, mobile, devops, systems, etc.)
trying everything else and see which one you liked best? and to what extent (coursework? projects? internship?)
got exposed to one thing and kept following it since it seemed decent?
etc?
I'm curious how people got to where they are as I feel like I should start specializing in something. For the most part I've done a bit of coursework and/or minor projects in a bunch of areas but not sure if I should commit harder when exploring or if I should look even broader. The only thing I know for sure is that I don't like systems programming or anything very low level.
I also welcome anyone sharing why they like their area of choice to me since your reasons for choosing your respective area might resonate with me. My first internship was a QA position at a local startup that hired lots of interns. I did very well, so they asked me to come back for a random dev internship. I did. I started learning Windows dev because I had a Windows Phone. I lucked into a really good mobile internship position because I _missed_ the deadline, so my application competed with much weaker intern candidates. I got the job without any technical interviews. Because I worked on Windows, I got an interview with Microsoft, got lucky with a technical question when I was super excited to find the solution, and got a Microsoft internship doing mobile. I did okay, but they gave me a return offer, and I asked to intern on a Windows team doing C++, which went great! I wanted to do more Windows mobile dev, but realized the platform was dying, so I switched over to Android. I interviewed at a local start-up doing Android, and they gave me the position without a technical interview because I already had many internships. I took a year off, but I'm now working on Android at Square because I recalled the start-up using lots of Square libraries in the app. I have one of the most varied intern work history compared to almost all my classmates and friends. I had no clue what I wanted to do, and honestly at the time I didn't care and didn't plan it in any way. I just tried to find the best, most interesting opportunities to me at whatever point in time. I got an offer to return to Microsoft on Windows, but I declined because I felt it was in my best interest to diversify, but maybe someone else wouldn't feel the same way. My capstone project ended the same manner, jumping projects, from helping a teacher to writing a research paper to programming a technical solution, over a year and a half of project time. Our professor uses our capstone as an example of not being afraid to _not_ commit until it feels right. I took courses that I felt were interesting: distributed systems, computation, security, real-time operating systems, UI, criminal law, geology. I dropped courses that didn't seem interesting after a few classes (b/c of teachers, coursework). I attended some of my friend's lectures, like etymology, genetics, music in film. Some were useful, some were fun, I feel better about expanding my horizons in this way, finding out all the things I liked, disliked or found interesting. This style fit closer to the type of person I am. Go for the opportunities that you feel will bring you the best outcomes. Paul Graham calls this upwind. Read the whole post.Show nested quote +Instead of working back from a goal, work forward from promising situations. This is what most successful people actually do anyway.
In the graduation-speech approach, you decide where you want to be in twenty years, and then ask: what should I do now to get there? I propose instead that you don't commit to anything in the future, but just look at the options available now, and choose those that will give you the most promising range of options afterward.
It's not so important what you work on, so long as you're not wasting your time. Work on things that interest you and increase your options, and worry later about which you'll take.
Wow awesome response. Your first few sentences is pretty much me - I transferred in as a sophomore (and switched majors) so i didn't have much options but managed to get a QA internship at a really local and convenient place. The experience was overall positive and I was invited back to be a dev intern. However this is where we diverge as when I had a talk with my manager and discussed such opportunities, he gave me the honest advice that it would be within my best interest to explore and try a different internship at some place really different so I can figure out more of my interests in terms of work/environment. I agreed since I wasn't too in love with our tech stack (microsoft/C#) and it was a very traditional and old non-profit organization which was a bit too slow and chill for me. I was the one always trying to find something to do and asking for more work while everyone wanted to just take it slow.
I've been having a tough internship search this past year as the QA internship was not as valuable (at least on the resume) as I thought. I got a couple interviews and managed to get to final rounds at some decent companies, but nothing really panned out. I had an offer at another local place a little bit back but decided not to take it since it seemed rather similar to my first job and my goal was to get something different. I was thinking to myself whether I was being greedy or stubborn but hey I might as well try more and see what happens.
I like how you approached your work options though - evaluating options when you get them and taking what seems best at the time. Perhaps I should not think too far ahead.
Either way, thanks that was a super insightful post.
Also thanks @ Excludos and Manit0u, appreciate sharing your experience with me. I definitely got some food for thought.
|
+ Show Spoiler [just ranting, please ignore] +ffs, DNS sucks and everything remotely related to web development fucking sucks and askdjasldkjsaldjasldkasjldkasjdlkasjdlaskdjaslkdjaslkdjasldkjasldkasjdlkasdjlaskdj
Just put up an SSL certificate on a server, everyone can access https:// just fine, I'm the only one getting ERR_CONNECTION_REFUSED in Chrome. I googled the shit out this evening, cleared cache, cleared local DNS cache, re-installed chrome, checked my host file in windows/system32 to make sure it's not blocked, I'm totally out of ideas right now.
Website host company support (HostEurope, part of GoDaddy.com) says "yo just wait 2 days until DNS stuff finished and then call us again"
Does that sound familiar to anyone? Because I have like 0 ideas how to continue.
|
On January 18 2018 00:34 ShoCkeyy wrote: Backend is boring for me, frontend is much more fun, two sides to each story. But I'm also a full stack dev for fun, now architect/strategist/optimizer professionally.
It's all cool and dandy until some asshole comes along and wants you to do one of those "pixel perfect" projects...
Also, JavaScript is bullshit.
|
On January 18 2018 23:57 Manit0u wrote:Show nested quote +On January 18 2018 00:34 ShoCkeyy wrote: Backend is boring for me, frontend is much more fun, two sides to each story. But I'm also a full stack dev for fun, now architect/strategist/optimizer professionally. It's all cool and dandy until some asshole comes along and wants you to do one of those "pixel perfect" projects... Also, JavaScript is bullshit. 
Untill you have to use php...
|
Does anyone here know how good dynamic TSP algorithms actually store old paths and/or path segments in memory?
In my mind I see vastly more memory efficient methods as being something like
1.) storing old paths as trees beginning at start nodes
or
2.) Something like using a hashmap where each key is an edge (to, from) and the result is a sequence of the "occurence numbers" where that path showed up. Then if you wanted to see If a path was previously visited you could iterate the edges of the path, looking them up in the hashmap, and see if they all share an "occurence number".
3.) tuples in a set
1. is probably the worst of the 3. It seems like it is probably about as good as 2 memory wise, but much slower. 2. seems interesting and decent but still pretty inefficient in terms of speed. 3. clearly blows the others away in terms of speed but is horrendous in terms of memory.
so yeah, these are just things off the top of my head. I am trying to look at research papers but I am not seeing how dynamic algorithms are actually storing information. I am seeing some stuff about bitmasking, I think it is something I must learn.
And another problem:
Let's say I have a set of edges where every node in my graph is visited once. That is to say that for every edge (to, from) in my set, and for every node in my graph, we can find exactly one edge where the given node == to, and exactly one edge where the given node == from.
What is the best way to detect if this set is a hamiltonian circuit? Is there no other way than to traverse all the edges until we have either completed the hamiltonian cycle or completed a subcycle?
|
@travis: It seems you really got hard to TSP. I wouldn't like to dishearten you but I think this problem can't really be solved with the data structures we have at our disposal at this moment (at least not in a timely manner). I mean, there are plenty of really brilliant people trying to solve this problem all the time and no one has found a satisfying solution for over a hundred years now... I don't know how's your graph theory and your knowledge about minimal Hamilton circuits, but you should get like PhD in that before you even attempt to tackle TSP. But that's just my opinion.
I only hope that (for your sake) you're doing it using functional programming and not iteration through loops.
And for dynamic algorithms, you should look to languages like Lisp, where you can write code that rewrites itself during execution. For example, even people who created the original algorithm for Xbox Kinect have absolutely no idea what this algorithm is actually doing at the moment because it has rewritten itself so much that it's beyond their comprehension.
|
Well I am doing it because I really enjoy the puzzle and I feel like I am learning a lot.
As for functional programming, aren't loops faster?
|
On January 19 2018 02:58 travis wrote: Well I am doing it because I really enjoy the puzzle and I feel like I am learning a lot.
As for functional programming, aren't loops faster?
It's not a matter of speed. It's a matter of consistency, being less error-prone and ease of translation into maths (which algorithms boil down to).
|
How can a loop in any programming language be faster? They run on the same CPU. Same CPU instructions? Unless compiler/interpreter messes it up.
|
Good functional languages are compiled into highly performant instructions that might not resemble the original code very much. You need to know how to write functional code in a way that can be optimized well, but it's not much harder than the same thing for procedural code. Performance is not a question of paradigm.
|
On January 20 2018 02:25 sc-darkness wrote: How can a loop in any programming language be faster? They run on the same CPU. Same CPU instructions? Unless compiler/interpreter messes it up.
It depends entirely on how the compiler handles it. In most regular languages it's not implemented well and recursion will end up consuming a lot more of the stack (And can even lead to stack overflow). It looks fancy, but not really super useful. You need to find a language which supports tail recursion..which I'm not sure about right now. I would think certain versions of Lisp does.
Quick google: Scheme, Prolog, all the MLs (SML, Caml, OCaml), Haskell, Erlang, Elixir are all optimized for tail calls. Apparently Common Lisp is not.
|
On January 20 2018 03:08 Excludos wrote:Show nested quote +On January 20 2018 02:25 sc-darkness wrote: How can a loop in any programming language be faster? They run on the same CPU. Same CPU instructions? Unless compiler/interpreter messes it up. It depends entirely on how the compiler handles it. In most regular languages it's not implemented well and recursion will end up consuming a lot more of the stack (And can even lead to stack overflow). It looks fancy, but not really super useful. You need to find a language which supports tail recursion..which I'm not sure about right now. I would think certain versions of Lisp does. Quick google: Scheme, Prolog, all the MLs (SML, Caml, OCaml), Haskell, Erlang, Elixir are all optimized for tail calls. Apparently Common Lisp is not.
Clojure does not have proper TCO either, but allows some specific recursive forms.
A lot of functional programming can be done without recursion though and often recursion wouldn't be an idiomatic solution in mixed paradigm languages anyway.
|
Initial thoughts: Microsoft SQL Server 2017 seems difficult to install. MySQL installer seems simple... I found some video how to do it. Shame you can't easily figure out how to connect when you have a CS degree. That said, I already know MySQL so I'm probably not completely fair.
|
On January 19 2018 02:58 travis wrote: Well I am doing it because I really enjoy the puzzle and I feel like I am learning a lot.
As for functional programming, aren't loops faster?
It depends on what you want to do with your code. With functional programming it's easier to paralellize things. You'll be consuming more peak memory but will be able to traverse graphs asynchronously.
For TSP for example you could either use some form of Scatter-Gather pattern or something like that:
Process starts at node 0. It goes to next node, stores all the visited nodes in order. When it finds a branching node it chooses one of the branches at random to proceed and spawns new processes for all the other branches, passing them visited node list up to that point. Each of the processes then follows this pattern. When one process reaches the destination you pause it and all other processes compare themselves to it with each visited node. If a process has more nodes in the list than the process that reached the destination you kill that process (we're no longer interested in this path). When another process reaches the destination and it has less nodes than the paused process, you pause that one and kill the paused process. The solution to TSP will be the last process standing.
For most of the processes this won't even be an O(n) problem. And it won't ever be greater than O(n) for any of them.
It's way more efficient than looping because you're checking multiple paths simultaneously. Languages like Erlang and Elixir have really light processes that can communicate with each other even across different machines in the cluster.
This, in my opinion, would be way better than any imperative/synchronous solution you can come up with. But I'm pretty noob at algos and I might be completely wrong. I'm also sure that this could be optimized somehow.
|
Has anyone got Entity Framework and Microsoft SQL Server experience? I've got a task after an interview to create an ASP.NET MVC project and another one which will have to provide endpoints (this is the project which will use Entity Framework). One of requirements is that both projects should work when they're on a different host each. I'm not entirely sure what they mean. I can provide a config file to configure host, but it's the weekend and I can't ask for clarification. Has anyone got an idea what they mean? Requirement seems a bit vague to me.
|
On January 21 2018 06:41 sc-darkness wrote: Has anyone got Entity Framework and Microsoft SQL Server experience? I've got a task after an interview to цреате an ASP.NET MVC project and another one which will have to provide endpoints (this is the project which will use Entity Framework). One of requirements is that both projects should work when they're on a different host each. I'm not entirely sure what they mean. I can provide a config file to configure host, but it's the weekend and I can't ask for clarification. Has anyone got an idea what they mean? Requirement seems a bit vague to me.
I used to do .NET a lot.
Here is my interpretation.
The first project is an MVC application. (This is the front end application for the web using the MVC framework)
The second project is a Rest service. (This probably also uses a controller to configure rest endpoints) The second project should use Entity Framework to access data from the database
You can launch(execute) both projects independently. You can think of this as having two "executables" that you can launch from different servers. Since this is a .NET project, it will most likely run in IIS. However, if it is an owin project, then you can launch this in either IIS or as an executable.
|
On January 20 2018 19:25 Manit0u wrote:Show nested quote +On January 19 2018 02:58 travis wrote: Well I am doing it because I really enjoy the puzzle and I feel like I am learning a lot.
As for functional programming, aren't loops faster? It depends on what you want to do with your code. With functional programming it's easier to paralellize things. You'll be consuming more peak memory but will be able to traverse graphs asynchronously. For TSP for example you could either use some form of Scatter-Gather pattern or something like that: Process starts at node 0. It goes to next node, stores all the visited nodes in order. When it finds a branching node it chooses one of the branches at random to proceed and spawns new processes for all the other branches, passing them visited node list up to that point. Each of the processes then follows this pattern. When one process reaches the destination you pause it and all other processes compare themselves to it with each visited node. If a process has more nodes in the list than the process that reached the destination you kill that process (we're no longer interested in this path). When another process reaches the destination and it has less nodes than the paused process, you pause that one and kill the paused process. The solution to TSP will be the last process standing. For most of the processes this won't even be an O(n) problem. And it won't ever be greater than O(n) for any of them. It's way more efficient than looping because you're checking multiple paths simultaneously. Languages like Erlang and Elixir have really light processes that can communicate with each other even across different machines in the cluster. This, in my opinion, would be way better than any imperative/synchronous solution you can come up with. But I'm pretty noob at algos and I might be completely wrong. I'm also sure that this could be optimized somehow. To be fair you can do all the same parallelism using loops and similar constructs. Avoiding race conditions just comes more naturally with many functional languages because of enforced immutability.
|
On January 21 2018 12:31 Neshapotamus wrote:Show nested quote +On January 21 2018 06:41 sc-darkness wrote: Has anyone got Entity Framework and Microsoft SQL Server experience? I've got a task after an interview to цреате an ASP.NET MVC project and another one which will have to provide endpoints (this is the project which will use Entity Framework). One of requirements is that both projects should work when they're on a different host each. I'm not entirely sure what they mean. I can provide a config file to configure host, but it's the weekend and I can't ask for clarification. Has anyone got an idea what they mean? Requirement seems a bit vague to me. I used to do .NET a lot. Here is my interpretation. The first project is an MVC application. (This is the front end application for the web using the MVC framework) The second project is a Rest service. (This probably also uses a controller to configure rest endpoints) The second project should use Entity Framework to access data from the database You can launch(execute) both projects independently. You can think of this as having two "executables" that you can launch from different servers. Since this is a .NET project, it will most likely run in IIS. However, if it is an owin project, then you can launch this in either IIS or as an executable.
If it runs in IIS, do you mean it could be IIS Express and then I can probably hardcode it to a specific port number? E.g. localhost:1234?
Also, I'm still confused about database access. I'm still new to Microsoft SQL Server, and it seems you can use it in many different ways - named pipe, TCP/IP, etc. I don't see how this will work on another machine without specifying credentials or something. Maybe I need to read a bit more about this.
|
|
|
|