One Piece Dream Pointer Developer

0 views
Skip to first unread message

Eddie Listner

unread,
Jun 30, 2024, 11:24:40 AM6/30/24
to plictelamo

Looking to hire smart programmers who get things done? Stack Overflow Talent is a fully-customized sourcing solution that helps you understand, reach, and attract developers on the platform they trust most. Find the right candidates for your jobs. Learn more.

For my day job, I'm the co-founder and CEO of Stack Overflow, the largest online community for programmers to learn, share their knowledge, and level up. Each month, more than 40 million professional and aspiring programmers visit Stack Overflow to ask and answer questions and find better jobs. Stack Overflow is also the flagship site of the Stack Exchange network, 160+ question and answer sites dedicated to all kinds of topics from cooking to gaming. According to Quantcast, Stack Overflow is the 30th largest web property in the United States and in the top 100 in the world.


Suddenly, the majority of the students in the class were in deep trouble. For some reason, some people just do not seem to be able to write code with pointers in it. They were born without the part of the brain that does indirection, I guess.

It would just be such a dream to create something like a HashMap, and just keep pumping values into it forever without any thought to 4GB limits and cross-canister calls and managing all of that craziness.

That limit is imposed by the state of affair in WebAssembly, and we might find a solution there, too, in the future. All of these proposals might allow a canister to store more than fits in to a single 32 bit memory somehow:

It seems like the limit could still be abstracted away by DFINITY. Are you saying that because this limit will likely be addressed by a future Wasm feature, DFINITY is choosing to wait for that and not to abstract it away in the meantime?

In the days of 32-bit operating systems, the 4GB process address space limitation could be worked around (e.g., spawn a separate process), but it was a pain. But that was merely a memory limit, you still had the whole hard drive to store data on. A 4GB limit for both memory and storage (persistent memory), if you require more than that, is even more of a challenge to deal with.

In the days of 32-bit operating systems, the 4GB process address space limitation could be worked around (e.g., spawn a separate process), but it was a pain. But that was merely a memory limit, you still had the whole hard drive to store data on.

One important difference: a physical hard drive still has a relatively low size limit, and I/O limitations as long as its on the same physical disk. A distributed data structure on IC will likely have different performance characteristics/limitations than a hard drive, for better or worse.

IMO everyone should depend on an abstract Map type that can be satisfied by a HashMap for now and BigMap when ready for primetime. The exact Map can be dependency injected with various implementations in the future (depending on tradeoffs desired, e.g. redundancy/cost/latency).

wasm64 and multiple memories may help to increase the canister memory limit, but I also believe we could implement virtual memory that the protocol takes care of itself. This would really help us achieve the original vision of deploying apps to an infinitely scalable virtual machine with the best developer experience possible. the 4GB canister limit hinders that vision in a major way.

Let me know if I am getting any of this wrong, but BigMap will be a simple key-value store. What type of ordering will be possible with BigMap? Can you order the keys? Even without different types of ordering, BigMap will be excellent for some use cases, but not for many others.

You are right, BigMap is supposed to be a simple key-value store. In the current implementation the objects are ordered (using BTreeMap) but based on the sha256 of the key, so the keys themselves are not ordered. And I agree that ordered keys can be useful for some applications.

Upgrades are another big factor. When you deploy a new version of your canister, the whole linear memory is discarded. We do it because if you change your program a bit and recompile, the effects on the memory layout are unpredictable. We experimented with deploying minimal changes (add one function call) without discarding the linear memory, with no success. Upgrade instruction limit will not allow one to shift around gigabytes of data when you deploy a new version of your canister, so using linear memory only for transient data is probably the way to go for canisters that need to handle large amounts of data.

But, you seem to have conflicting constraints here. Getting your first developer job is hard. You need to show that you have skills equivalent to a person with a 4 yr degree. That takes time and effort.

To be extremly precise, i take literally half the timestamp that OSSU provides, so for example, if the course requires 8 weeks, i literally take it in 4 weeks, 2 days max. I am planning to do even better, quite better, but i do not know what to do currently to enhance my learning speed.

I hope that i find out, at least one that can make things much simpler, faster and is much updated. of course there is something that an expert might know and can tell me that will enhance my learning somehow (just hoping).

I have a BSc. in Electrical and Communication Degree. I am extremly good at math. (I tutored even when i was a student other University students and i was very good (DO NOT MEAN TO PRAISE MYSELF AT ALL ) but unfortunately, this does not serve my programming purpose.

There are infinite things to learn, but only finite time to learn it. You can strategize and optimize all you want, but it wont replace the work put in over time. Companies know this. Hiring someone who just spend 8 months grinding 16 hours a day to build all their stuff shows promise and drive, but they will still lack experience. There is no way around that, and that assumes you get things you can show off in that time.

Ultimately, your goals might be a bridge too far. You might not be able to change your circumstance, or deadlines, but you can determine how far of a bridge you actually need, rather than trying to get there ASAP. The last thing you want is to find yourself well short of your goal with time running out. The stress you have is inherently less compared to what it will be months from now. So make use of the time you have now to understand the risk your taking, and setting your goals accordingly.

I see your point, I have alternatives, I can join university and that might lead to an internship; furthermore, there is GSoC even for post graduates; that is why i was asking for a simple solution because i really believe in what you are saying, 8 months is, no doubt, not enough.

Other platforms like FCC such as AppAcademy gives the promise of working after 24 weeks with salary not less than $50k but they ask for too much IMO, I do not need their resources or tutors as almost everything is free here and in OSSU and they cover lot more than they do; but they only provide the work opportunity, unlike FCC and OSSU.

Becoming a professional dev is a long and difficult process. This is going to take years. I too had a math/engineering background with a little programming experience, and it still took me a few years. #ymmv

Second, I have stated literally what are the forced circumstances out there in the comments that made me think in this way. (3.5 years of conscription + very low wages in my country + startups dreamland is US)

To be honest, I am too much of a pragmatic, I love mathematics (to the extent that I can be compared to my Prof or even surpass some of them), I mean by love that I tend reason about everything; Yet, I will never continue in that field for realistic purposes (as I do not see what being a mathematician can help me in my life). (This is not a praise to myself, I am just saying that I do not stick with what I love or what I hate)

My history with coding goes back to Sept, 2019, not a very good history because of the exerted effort that never outweighed the benefits. The reason was extremely quite simple, I was a caveman and I never knew how to reach a mentor; tried in my college to reach professors to guide me but you will be shocked by their mediocre knowledge.

Guess what feelings you will get from programming after all of this scenario? exactly, hatred! to be honest, I hate programming but I am still continuing to do so for pragmatic reasons as I stated. It does not matter how I feel towards it because the circumstances will worsen your suffering.

I am working alternatively on this issue by self studying an entire CE BSc. (OSSU) then I will pick multiple resources to learn my Full Stack (I have Udacity content, TOP, FCC, free AppAcademy, and whole lot more).

This clip is recorded in the simulator - on the actual device, it wavers between 40 and 50 fps, varying depending on your viewpoint. It'd be sick if I could get it to maintain 50 fps on the Playdate, but it's feeling less and less likely as I add more stuff, lol. I'll probably end up locking it to either 30 or 40 fps, even if it's "sometimes" able to go higher.

I'm definitely interested in fitting some more-standard blitting into the renderer, but it's tough because pretty much everything depends on per-pixel info! Walls/floors are based on raycasting, and those plus the sky are using the dither texture as per-pixel thresholds instead of it being a blittable sprite - and then for the 3D mesh parts like the car, I currently have to do per-pixel occlusion checks against the walls...when I wasn't doing that, I was able to do a similar "splat a pattern to the screen in 32-bit strips" trick (meshes use blittable patterns instead of the blue noise comparisons) and that was definitely faster, but the per-pixel occlusion is important for stuff like this finish-line banner:

d3342ee215
Reply all
Reply to author
Forward
0 new messages