Details
- 
						AboutNothing really😂
- 
						SkillsAndroid
- 
						LocationIndia
- 
						Github
Joined devRant on 5/4/2017
			Join devRant
Do all the things like
				++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
				Sign Up
			Pipeless API
 
				From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
				Learn More
			- 
				    
				    Samsung be like...
 -- 8GB ram
 -- 64GB storage.
 
 Buy phone...
 Open settings...
 -- 50+ system apps
 -- 2gb ram left
 -- 12gb storage remaining20
- 
				    
				    A sidebar.
 Literally just a sidebar.
 And yes, this was in Hell.
 
 Its code was spread across at least 40 files, and it used a bunch of freaking global variables to unfurl accordion sections, hide other sections/items, highlight the active item, etc. These were set (and unset!) in controller actions, so if you didn’t unset one, it remained open and highlighted until another action unset it.
 
 Some of the global variable checks (and permissions checks) were done in the individual views, some outside of the `render` statements that include them. Some of them inherited variables from the parent, some from the controller, some from globals. Getting a view to work was trial and error. Oh, and some had their own inline css, some used css classes.
 
 Subsections were separate views, so were some individual items, both sometimes rendered using shared templates, and all of the views and templates had the exact. same. filename. (They were located in different directories, and thus located automagically via implicit relative paths.) So, it was a virtually endless parade of`render partial => “sidebar”`. Which file does that point to? Good luck figuring it out!
 
 Also, comments in several places said adding a new section required a database migration. I never did figure out why.
 
 Anyway, I discovered this because I had an innocuous-sounding ticket to rearrange the sidebar, group some sections/items under different permissions, move some items to another menu, and nest some others differently.
 
 It took me two bloody weeks, and this was when I was extremely productive every day.
 
 Afterward, I was so disgusted by it that I took a day and removed every trace of the sidebar I could find, and rewrote it. I defined the sidebar in a hash, and wrote a simple recursive builder to generate the markup. It supported optional icons, n-level nesting, automatic highlighting of the current item and all parent nodes, compound and inherited permissions, wrapping of long names, hover and unfurl animations, etc. Took me a couple hundred lines of Ruby at the most, plus about the same of css.
 
 Felt so good to remove that blight.5
- 
				    
				    Me: GET /sleep
 Baby: 307 Temporary Redirect
 Baby: 204 No Content
 Me: 200 OK
 
 Me: GET /sleep
 Baby: 307 Temporary Redirect
 Baby: 413 Payload Too Large
 Me: 102 Processing
 Me: 200 OK
 
 Me: GET /sleep
 Baby: 307 Temporary Redirect
 Baby: 444 Connection Closed Without Response
 Me: 200 OK
 
 Me: GET /sleep
 Baby: 307 Temporary Redirect
 Baby: 444 Connection Closed Without Response
 Me: 429 Too Many Requests
 
 Me: GET /sleep
 Baby: 307 Temporary Redirect
 Me: 101 Switching Protocols
 Me: 408 Request Timeout
 GF: 102 Processing
 
 Me: GET /sleep
 Sleep: 404 Not Found
 Me: 406 Not Acceptable
 
 (Morning)
 Me: 501 Not Implemented19
- 
				    
				    Android development is like:
 - 30% of the time is coding & debugging
 - 70% of the time is waiting for Gradle to build16
- 
				    
				    HR: How many years you've been developing on Android ?
 Me: Two years, with many projects on my own.
 HR: So, you're familiar with Android Studio?
 Me: No, I've been using "Paint" to code.37
- 
				    
				    When the developers are told to implement the given design without questioning whether a design makes sense at all
 ... 11 11

 
		
		
	





