Polyglot hacker and architect on multiple languages and platforms.
Handled logistics and system administration for the organization. Presented in public seminars and training events. Wrote open source Java/J2EE software.
Writes feature articles and speaks about various technical topics.
Quora Top Writer 2014 - https://www.quora.com/Miguel-Paraz
Key talks:
2010 - Mobile Asia Congress Hong Kong: Mobile Rich Web
2000 - APRICOT Seoul: Asia-Pacific ISP Tutorial
1997 - INET Kuala Lumpur:
Developing a Viable Framework for Commercial Internet Operations in the Asia-Pacific Region: The Philippine Experience.
Aged care software product development.
Balancing my personal technology stack with Moovd, an online video app that turns your words into animated text.
Dedicated to customer projects for NeuStar NGM, Smart Communications, WAC, Globe Telecoms and Bharti Airtel.
Started the Android Development practice as well as other R&D practices within the company.
Solves problems in the domain of Unix/Linux, Enterprise Java, and IP networks.
Consults for telecommunications and fixed-mobile convergence projects within the company.
Trains and mentors technical staff members.
Joined the company in its startup phase.
Consults on Software Architecture for the Strategic Business Development (SBD) group. This ranges from the large-scale (Service Delivery Platform) to the small-scale (mobile devices).
The flagship project for devices is the SMART Netphone, which is built on Android with customizations.
Represents SMART in the Wholesale Applications Community (WAC). Joined an onshore team in the WAC USA office to build the Network API infrastructure. The initial product was a carrier billing payment API. SMART was the first operator to go live. Prior to this, worked on integrating the WAC Web Widget products with SMART device and server infrastructure.
Worked on the WAC predecessor, the Open Mobile Telecom Platform (OMTP), defining the mobile web/widget application strategy for SMART. Led the OMTP BONDI workstream for Web Runtime (for widgets) profiling and optimization for low-end platforms.
Represents SMART to the World Wide Web Consortium (W3C) for mobile web/HTML5 related activities. Performs research on mobile web/HTML5 initiatives to adapt them into commercial products.
Assigned to work onsite at NeuStar NGM (Next Generation Messaging) in Haifa, while working for Novare Technologies.
The customer used a proprietary Instant Messaging platform, with an integration layer based on Enterprise Java. The stack was deployed on Solaris 10 servers.
The projects included analysis, design, implementation and deployment of the different integration layers required by different mobile operators. Troubleshooting older production systems was needed occasionally.
Developed C code for Linux-based digital video recorders based on proprietary hardware.
Helped build and customize Linux distributions for customer products.
Maintained an existing Enterprise Java/JBoss content platform for Mobile Value Added Services products using SMS and MMS.
Improved performance of existing mobile content delivery mechanisms.
Integrated the content platform telco interface with the Smart Communications Value Added Services platform.
Integrated the content platform application interface with external content partners in the Interactive Media business.
Administered Solaris 9 and 10 systems on Sun Fire hardware. Performed installations and routine maintenance.
Integrated the Ateneo de Manila University campus network and the Smart Communications Value Added Services IP network, together with the telco provider and Campus Network Engineering. Set up the IP routing infrastructure.
Open source work: Improved Roller Weblogger blog aggregator to support geo-aggregation.
On top of the activities performed as Consultant, set the strategy and direction of the AJWCC's initiatives.
Performed research and development in new mobile and web products.
Taught an elective course, Enterprise Java (CS 119.2), for computer science and management information science senior students.
Implemented an outsourced security camera and digital video recording for a US-based software company and local partners. Implementation used a combination of Apache Tomcat, interfaces to proprietary hardware in C, and XMLHttpRequest (what is now known as "AJAX").
Gave training for new engineers in Linux system administration and Perl scripting to a leading software outsourcing company.
Worked on Java-based web/mobile banking solutions. Integrated with banking systems.
Started building a product based on XMPP instant messaging.
Performed corporate training for network security.
Open source work:
Improved FreeRADIUS to support Python authentication modules.
Did Systems and Network design.
Headed research and development for Inter.net Philippines. This company was spun out of PSINet Philippines.
Open source work:
Improved flow-tools analysis tool for Netflow traffic analysis for Cisco routers, to give better information on network optimization.
Was voted into the board, and chosen as president of the Philippine Linux Users Group. http://plug.linux.org.ph
Oversaw IP networks and systems administration for delivering Internet services.
Integrated the systems and networks of two local ISP's (IPhil Communications and I-Next) which were acquired by PSINet.
Performed offshore system integration work for PSINet Hong Kong.
Helped start up the company in late 1994. Worked on network and OS design, IP routing, and corporate Internet solutions. Wrote custom and open source software to manage Linux-based systems.
Helped other startup Internet providers and companies get started. Grew the company into one of the largest Internet Service Providers in the Philippines. Sold the company to the US-based ISP, PSINet, in 2000.
Open source work:
RADIUS client for Linux for Linux-based Dialup Network Access Servers.
RADIUS server enhancement to support PAM (Pluggable Authentication Modules).
Squid Web Cache bugfix and documentation
data MaybeNot t = Failed t | Succeeded
16:00:59 CAM-1 Stalling, we're falling!
16:01:00 CAM-2 Larry, we're going down, Larry....
16:01:01 CAM-1 I know!
02:14:23 (Robert) Damn it, we’re going to crash… This can’t be happening!
02:14:25 (Bonin) But what’s happening?
02:14:27 (Captain) Ten degrees of pitch…
15:30:21 HOT-1 got any ideas?
[...]
15:30:23 CAM-2 actually not.
Fitch: I'll tell you what, we'll have a beer when this is all done.
Haynes: Well I don't drink, but I'll sure as hell have one.[Haynes later related that]: "We were too busy [to be scared]. You must maintain your composure in the airplane or you will die. You learn that from your first day flying."
She recounted how her husband would give her a stack of papers at the end of every academic year to throw away.http://www.sify.com/finance/in-m...
"One year out of curiosity, I checked the bundle and found them to be his lecture notes of the previous year. I went over and asked him if he knew what it was that he had handed to me," she remembered.
"'They are indeed my notes. I don't want to burden my new students with the same thoughts. Every year I wish to start anew'," she recalled CK as saying in her emotion-laden speech, filled with an abiding fondness for the husband, thinker and teacher she knew.
J. Walter Thompson chairman and chief executive Gustavo Martinez was recorded making a rape joke about African Americans during a meeting of top agency executives in 2015, a lawyer for Erin Johnson has confirmed.Johnson, JWT's chief communications officer, filed a 28-page discrimination lawsuit against Martinez, JWT and WPP on Thursday. In that suit, Johnson describes a meeting at a Miami hotel in 2015 in which Martinez joked about being raped "but not in a nice way" by black hotel guests."What is in the complaint, particularly paragraphs 39 and 40, which describe what was said at that meeting, where there were 60 people — including management and HR — was from the tape," said Anne Vladeck, one of the lawyers representing Johnson in the case.Those sections of the document state that Martinez "made numerous comments about rape" at that meeting, which sources said took place at the Viceroy Hotel and reference a "Miami Life" hip-hop party held at the hotel pool the evening before.Martinez said he "found … different and strange characters in the elevator," according to the suit. "I was thinking I was going to be raped at the elevator," but "not in a nice way."Those sections of the suit also allege that at that same meeting Martinez "warned JWT employees to be careful at the hotel" and to "check all your luggage" and "all your stuff."The recording also includes statements not included in the lawsuit, according to sources who are familiar with it. Before the rape remarks, Martinez, four months into his tenure as CEO, jokingly apologizes to Suzanne Siegel, an executive project manager, for how much activity had taken place in her hotel room the night before."I want to apologize to Suzanna [sic] ‘cause I know that she had a very, very troubled night," he said, according to sources. "So on behalf of Charlie, Jane, and myself, sorry. Because your room was being very visited tonight.""Charlie" and "Jane" refer to Charlotte Ibarra, Martinez’s global communications assistant, and Jane Arginteanu, his executive assistant, sources said.The theme of the May retreat in question, a multiday gathering to introduce agency executives to a new companywide work process, was "Pioneering Process," sources said.A representative for WPP did not immediately return a call for comment. Johnson referred calls to her lawyer.Johnson, who has been with the company since 2005, shocked the ad industry last week with a lawsuit filed in federal court in New York alleging that Martinez repeatedly made racist and sexist comments that rendered it "impossible for her to do her job." According to the suit, Martinez said, "Come here [Johnson] so I can rape you in the bathroom" in front of colleagues; occasionally grabbed her by the neck or throat when speaking to her; and more than once referred to "fucking Jews" and talked about black people as "black monkeys" in public settings.Martinez immediately issued a statement denying the accusations in the suit, which was originally reported by the New York Post. "I am aware of the allegations made against me by a J. Walter Thompson employee in a suit filed in New York Federal Court. I want to assure our clients and my colleagues that there is absolutely no truth to these outlandish allegations, and I am confident that this will be proven in court," he wrote.That same day, WPP sent a memo to agency executives saying the holding company had been investigating the matter and had not yet found any evidence supporting the accusations detailed in Johnson’s suit. "WPP’s lawyers have been conducting an enquiry into previous correspondence on these matters since February 25 and have found nothing, as yet, to substantiate these charges."The lawsuit apparently referred to Campaign US editor in chief Douglas Quenqua at one point, outlining a February meeting at which Martinez told "a reporter" that he had moved out of Westchester because it had "too many Jews." Quenqua addressed his possible involvement in the suit in a column on Thursday.JWT clients, including Johnson & Johnson, Ford, Kellogg, JP Morgan Chase, Macys, Unilever and Coca-Cola, have so far either declined comment, referred calls to WPP or not returned calls.
We estimate that in 2012, there will be 90 million end-users in American workplaces. Of these, we anticipate that over 55 million will use spreadsheets or databases (and therefore will be potential end-user programmers), while over 13 million will describe themselves as programmers.
Some of the countries who have been at the height of the refugee crisis including Eritrea, Iraq, Afghanistan, Sudan, Somalia, and Iran with people from these countries having acceptance rates for first time asylum applications in the last quarter of 2015 at over 45% according to the European Commission. Other nationalists with successful asylum claims percentages over 10% include Pakistan, Mali, Ukraine, Russia, Guinea, Democratic Republic of the Congo, Sri Lanka, Côte d’Ivoire, and China.
A field study by the Women’s Refugee Commission in Jordan found that 75% of refugees with disabilities were unable to prepare their own food. Among Iraqi refugees with disabilities in Jordan, 41% said they were completely unable to access health services. This contrasts with 23% who said they had access to health services specific to their disabilities.
varis available to you (e.g. because you must support old browsers that don't have
letand
constand also can't use something like BabelJS for some reason), you should never declare variables in a loop (or in any other type of block except the function block).
varisn't block-scoped, it's function-scoped: no matter where you say it in the function, it's equivalent to just declaring that name at the top, and then merely initializing it where you think that your declaration is.
var someFn = function () {
for (var i = 0; i < 5; i++) {
console.log(i);
}
}
var someFn = function () {
var i; // ...and all others you'll use
for (i = 0; i < 5; i++) {
console.log(i);
}
}
int i = 42;
for (int i = 0; i < 5; i++) {
printf("%d\n", i);
}
printf("%d\n", i);
iin the loop is local for that block, and doesn't affect anything else outside of it. But, in JavaScript, this:
var i = 42;
for (var i = 0; i < 5; i++) {
console.log(i);
}
console.log(i);
i-s next to each other would have been obvious - or this:
let i = 42;
for (let i = 0; i < 5; i++) {
console.log(i);
}
console.log(i);
ishould probably be a
const, but this is not the point of this answer)
I just finished reading Application Testing with Capybara for a review requested by the publisher, Packt Publishing.
I know actually know very little about Ruby on Rails, since most of my time on web frameworks is spent in the Java world – and even then, I don’t do much interactive web apps. Mostly web APIs. APIs are so much easier to test.
Interactive web apps for humans are harder to test. This is where Capybara comes in, along with its collaborators Cucumber for the test description, and the integrations with Rack and Selenium WebDriver for the web testing backend.
While I know Selenium since it can be used for different target web platforms, I know less about Rack and Rails infrastructure. Fortunately, the book explains enough about these pieces for a relative newbie, and walks through worked examples that are more complete than the tools’ web documentation.
While Application Testing with Capybara is short, it goes straight to the point into what someone would need to know about the topic. Those with more time could rely on the free documentation.
Packt Publishing sent me a review copy of Instant Wijmo Widgets How-to.
I guess I was chosen since I worked with widgets before – but those were W3C-type Web Widget apps, in a different project. These Wijmo widgets appear to be widgets in the traditional sense – decorations for a website. They also seem to be based on jQuery.
To be updated with the actual review.
Update: I decided not to proceed with this review. The book has serious problems.
The publisher, Packt, gave me a review copy of this book.
Continuous Delivery and DevOps: A Quickstart Guide by Paul Swartout.
http://www.packtpub.com/devops-quickstart-guide/book
I am personally interested in DevOps. I have done both development and operations – and like being of value in both. I am immersed in software development – enterprise software at the job, and startup-type stuff as a hobby. Delivering is important. I am a fan of startups, where building things quickly and well is important. I am also aware of the problems raised by the contrasting priorities of Development and Operations.
The book opens with a story of a fictional “web-based software business” – or “cloud or SaaS,” since those types of setups are driving the culture and need for Continuous Delivery and DevOps. It walks through its evolution from a small shop to a mature organization through an acquisition. This allows the narrative to illustrate the conditions and problems that are specific to both types of company setups. The software delivery flow goes through three levels: a very simple one (Have a great idea -> Develop it -> Deploy it), an overly complicated one, and finally a reasonable flow given the evolution of the company. I feel the first chapter sets the tone that the book is trying to talk to everyone but might miss out on reaching to some audiences who won’t be able to relate. For example, while I believe the book should be readable by a non-technical project manager, it drops some jargon in an example.
The story moves on to identifying the “Elephant in the Room” and finding the causes of problems in software delivery by engaging the people involved. The investigation techniques are Value Stream Mapping, Retrospectives, and the Timeline Game – actual games. After the information is gathered, plans are made to setting and communicating the goals and vision, to lead the plan of attack on implementing Continuous Delivery and DevOps. This is done by standardizing the vocabulary and language (watch the jargon!), operating as a business change project, working with a dedicated team, acting as an evangelist, making decisions with courage, understanding the cost of change, and seeking advice from those with similar experience. I find that these actions, while all good, belong to different roles and am not sure as to who the book is talking to.
After the setup, implementation is next. This is using source control (which is already standardized in many places, with the help of services like GitHub that promote it); keeping changes small, frequent and simple; having clean consumer/provider separation (software architecture advice, actually); open and honest peer working practices (tied up with corporate culture); failing fast through test-driven development; automated building and testing and continuous integration. The story then goes back out to architecture: how component-based architecture with loosely-coupled pieces works better, separated by layers of abstraction – clearly aimed at the software architect role. This is followed by advice on environments, tooling, provisioning systems and monitoring – a common responsibility of Development and Operations.
The book then turns around to talk about culture and behaviors – a chapter that reads like an Agile Methodology advocacy mixed with Software Engineering Management and general management. A key point here is getting rid of a culture of blame, and bring it up to a culture of trust. While this is important for any organization, the speed DevOps brings highlights this need.
The last chapters talks about the hurdles that need to be overcome and ways to overcome them, and then measuring success and staying successful. This part reads like a software engineering management advice book, and not specific to Continuous Delivery and DevOps.
My main criticism of the book is that it rapidly switches between technical and non-technical topics. It doesn’t seem too sure of which audience it audience it wants to address. I believe that it would have been more effective if the technical and non-technical parts were separated into different sections such that the reader can easily choose the relevant topic. A lesser criticism is that the book often drifts into advocacy or evangelizing the need for Continuous Development and DevOps, when it may already be preaching to the choir who already believes in the concept.
The benefit of the book is that it gives some good starting points that the aspiring practitioner can take action on.
This answer is so good it should be broken out of the Quora signup-wall.
Answer by Michael O. Church:
- The processes that result in quality software are almost impossible to control or manage. There's an expectancy-variance tradeoff in creative work, including software. If you want greatness, you hire excellent people and give them full autonomy, with the understanding that you won't always get the features you want on the schedule you expect, but that everything that is actually important will be done by a very smart, competent person in time. (Think of it as akin to Eventual consistency (wikipedia.org). It's not always what you want, but if you can afford to wait, you get good results.) With this approach, you get excellent average-case performance (expectancy) but a lot of variability, especially in the short term. On the other hand, if you want reliable mediocrity, you hire a lower quality of engineer in larger numbers, and micromanage. Your expectancy drops, but you're minimizing variance. The first produces an R&D environment that produces great work in the long term, but has variable output and can be politically messy (people envy the engineers for having better jobs in their R&D environments, and eventually it becomes An Issue). The second is much more tenable in the typical corporate environment. You can define "deliverables" and know who to fire if the schedule slips.
- Enterprise projects tend naturally toward Bigness, and Big Software is rarely of high quality. (See: Java Shop Politics (wordpress.com)). Competent software engineers like modularity, small programs, and simple interfaces. This is the essence of the Unix philosophy: large problems should be solved with systems and given the respect that systems require, and not with massive single programs with poorly specified and undocumented communication protocols. Good engineers make the software environment better by writing small programs– executables, utilities, libraries– and only create Big Things when absolutely necessary. However, this type of effort is hard to track, because one programmer might work on 20 different programs in a given year. Management has no idea what its best people are doing. Managerial dinosaurs feel more secure when the programmer:project relationship is reversed– many-to-one instead of one-to-many– because they can control the allocation of efforts when they get together and fight over "headcount". Unfortunately, Big Programs tend to collapse under the weight of their complexity, especially when they change hands.
- Birdshit syndrome. This is related to #2. Imagine a square-mile canvas, laid down in a park, that you intend to paint on. Before you're done, it's overwhelmingly likely that it will be ruined by birdshit, on account of the massive size of the canvas. Enterprise software projects need to constantly market themselves within the organization, and the increasing visibility (surface area) also drives up the risk of attracting nonsensical requirements (birdshit) from on high. If the project seems to be at risk of becoming actually important, everyone who has the power to slow the project down expects a hand-out. These requirements are akin to the never-ending and often escalating outflow of bribes and extortions that are required to do business in a politically-undeveloped country. If there are 18 people who have the power to stop the software project, then there are 18 directions from which nonsensical feature expectations and requirements can come, usually before the project is established or mature enough for its managers to say "No". After a few years, the conceptual integrity of the project's original design is gone.
- Lack of career incentives. Big Software projects are good for the manager's career, because he can put on his CV that he managed a large team. Having 20 reports is more impressive than having 4, regardless of whether the team of 4 engineers accomplished more. These projects are bad for engineers' careers, because per-person productivity is so low, and because you don't really learn much if you're not in a leadership or architectural role on such an effort. On Big Software projects, 10 to 20 lines of code per day is about average, 80 percent of the work is maintenance even before the thing launches, and it's not uncommon to go two months without checking in a line of code. Worse yet, the engineers gain none of the visibility that they might have if they, for example, maintained or started an open source project. This is a good environment for maxed-out, bored engineers who want to milk the clock for 5 years (long enough to make a manager-level external promotion inevitable) and not get fired, but the better and more ambitious engineers tend to realize when a project won't do anything for their careers, and they start planning their exits.
- "Uncanny Valley." Good software engineers either want to be directly in the line of business in high-impact roles (startup founder, trading algorithms, data scientist, CTO) or they want to be far away from it in a blissful R&D land with full autonomy over how they spend their time. The first provides the way to higher social status and credibility, better compensation, and most importantly, the chance to have an impact. Work in the direct line-of-business is often unpleasant– even (if not especially) for high-status players– but the upshot is knowing that your work actually matters. The second category of environment (R&D) gives the engineer the right to direct his efforts and optimize for learning, career growth, and long-term impact. Most IT organizations live in an uncanny valley between these two states, where the engineers' lives and quality-of-work is affected by the line of business, but in which they're second-string players, treated as cost centers rather than profit generators. Good engineers, if they're going to accept the compromises that come with being in the line of business, also want the "key player" status and credibility that can come with it. Most IT organizations have the compromise but not the status.
- Talent bleed. This is related to #4 and #5. The best engineers don't want to work on projects that have lost their conceptual integrity, because projects that get to that point are bad for an engineer's career. About 50% of those over-ambitious enterprise projects fail completely, and the other 40% are held up by a "too big to fail" sunk-cost mentality, but become disparaged legacy systems that not only harm the reputations of those who worked on them, but also erode the reputation of IT in general, creating the impression that "our engineers can never do anything right". (Weirdly, people who manage bad projects always seem to be OK. They "took one for the team" in attempting them, even though they delegated all the crap work.) When good engineers end up on these projects, they either negotiate for more autonomy (which often cannot be afforded) or more compensation (which is hard to get when the manager already has to fight hard for headcount). The only way a typical enterprise effort can keep its most talented people is to give them "special projects" (see #5) outside of the line of business, but very few IT managers have the "headcount" to afford that. Occasionally, however, one of these "special projects" will turn out to be really cool and take on a life of its own. Then, it needs additional support in order to meet the standards imposed by the business. Then it has to fight for headcount… the Cycle begins anew.
- A vicious cycle of low status leading to crappy results. Because most companies can't keep talent in their IT organizations, the result is that these highly ambitious Big Software projects tend overwhelmingly toward mediocrity. They build all-or-nothing systems that just barely work, but people don't have the right not to use them (as would occur on the market) because that would be politically messy. In the long term, this elephant graveyard of crappy Big Software brings down the status of IT, and reduces its autonomy within the organization even further.
Yesterday I got inspired by the 18th Anniversary of Philippine Internet and Netscape running on an old computer. I decided to try Mosaic on my Linux box. Mosaic, the predecessor of Netscape and so many other browsers.
Here is how I built it on Ubuntu Precise Pangolin (12.10) beta 64-bit:
Then, run ./Mosaic. It will have errors like Warning: Cannot convert string “-adobe-courier-medium-r-normal-*-14-*-*-*-*-*-iso8859-1″ to type FontStruct which don’t seem to prevent it from running.
On some sites, I get a core dump. I think it’s because the code was linked against the current libpng.h, but I don’t have time to investigate it. Take a look!
libpng warning: Application was compiled with png.h from libpng-1.0.6 or earlier
libpng warning: Application is running with png.c from libpng-1.0.58
libpng error: The png struct allocated by the application for reading is too small.
I haven’t been updating here, so I should say: I’ve been doing most of my writing on Miguel Paraz’s Quora page.